From 614035325efac78502f42292d4dcb60515ceeee4 Mon Sep 17 00:00:00 2001 From: wxl Date: Thu, 21 May 2026 10:01:18 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=88=A0=E9=99=A4=E6=97=A0=E9=9C=80?= =?UTF-8?q?=E5=8D=8F=E4=BD=9C=E7=9A=84IDEA=E5=B7=A5=E7=A8=8B=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6=202=E3=80=81=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=9F=A5=E8=AF=86=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 94 ++++++++++ lab-ops/AGENTS.md | 38 ++++ lab-service-api/lab-file-api/lab-file-api.iml | 162 ----------------- lab-service-api/lab-lims-api/AGENTS.md | 42 +++++ .../lab-system-api/lab-system-api.iml | 163 ------------------ lab-service-api/lab-user-api/lab-user-api.iml | 163 ------------------ lab-service/lab-lims/AGENTS.md | 51 ++++++ 7 files changed, 225 insertions(+), 488 deletions(-) create mode 100644 AGENTS.md create mode 100644 lab-ops/AGENTS.md delete mode 100644 lab-service-api/lab-file-api/lab-file-api.iml create mode 100644 lab-service-api/lab-lims-api/AGENTS.md delete mode 100644 lab-service-api/lab-system-api/lab-system-api.iml delete mode 100644 lab-service-api/lab-user-api/lab-user-api.iml create mode 100644 lab-service/lab-lims/AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..0d7329f --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,94 @@ +# 后端 - SpringBlade(Spring Boot + Cloud) + +**技术栈:** Spring Boot 2.2.13, Spring Cloud Hoxton.SR11, MyBatis-Plus, Flowable 6.4.2, XXL-Job +**Java:** 1.8 | **构建:** Maven 3.8+ | **注册中心:** Nacos | **部署:** Docker(Harbor: 192.168.0.106) + +## 目录结构 + +``` +project_husbandry_back/ +├── lab-auth/ # 认证授权(OAuth2/JWT) +├── lab-common/ # 公共模块(Redis 缓存、配置、常量、工具类、启动类) +├── lab-gateway/ # Spring Cloud Gateway(路由、过滤器) +├── lab-ops/ # 运维模块(11 个子模块) +│ ├── lab-admin/ # 管理后台 +│ ├── lab-develop/ # 开发工具/代码生成器 +│ ├── lab-log/ # 审计日志 +│ ├── lab-mail/ # 邮件服务 +│ ├── lab-office/ # Office 文档处理 +│ ├── lab-report/ # 报表引擎 +│ ├── lab-resource/ # 文件/OSS 资源管理 +│ ├── lab-swagger/ # Swagger API 文档聚合 +│ ├── lab-turbine/ # Hystrix 监控面板 +│ ├── lab-xxljob/ # XXL-Job 分布式任务执行器 +│ └── lab-xxljob-admin/ # XXL-Job 管理后台 +├── lab-ops-api/ # 运维模块 Feign 客户端接口 +├── lab-plugin/lab-workflow/ # Flowable 工作流引擎 +├── lab-service/ # 业务服务模块 +│ ├── lab-capital/ # 资金/财务 +│ ├── lab-desk/ # 工作台/通知 +│ ├── lab-file/ # 文件管理 +│ ├── lab-iot/ # IoT 集成(已注释,未启用) +│ ├── lab-lims/ # LIMS 核心模块(最大模块,250+ Java 文件) +│ ├── lab-monitor/ # 监控 +│ ├── lab-repair/ # 维修管理 +│ ├── lab-system/ # 系统设置 +│ └── lab-user/ # 用户管理 +├── lab-service-api/ # 业务服务 Feign 客户端接口 +└── script/ # Docker Compose、SQL 迁移脚本、fatjar 脚本 +``` + +## 分层模式(每个模块) + +`controller/` → `service/`(接口)→ `service/impl/` → `mapper/`(MyBatis-Plus) +额外包: `entity/`, `vo/`, `dto/`, `wrapper/`, `feign/`, `excel/`, `utils/` + +## 快速定位 + +| 任务 | 路径模式 | +|------|---------| +| REST 控制器 | `lab-service/*/src/.../controller/*Controller.java` | +| 业务逻辑 | `lab-service/*/src/.../service/impl/*ServiceImpl.java` | +| 数据库 Mapper | `lab-service/*/src/.../mapper/*Mapper.java` | +| 实体类 | `lab-service/*/src/.../entity/*.java` / `lab-service-api/*/src/.../entity/*.java` | +| Feign 客户端 | `lab-service-api/*/src/.../feign/*Client.java` | +| 视图对象 | `lab-service-api/*/src/.../vo/*VO.java` | +| Excel 导出 | `lab-service/*/src/.../excel/*.java` | + +## 约定规范 + +- **包结构**: `org.springblade.{模块}.{领域}` — 如 `org.springblade.lims.capital` +- **API 版本**: 通过 `bladex.project.version` 管理(当前 2.8.1.RELEASE) +- **配置**: 每个模块有自己的 `application-{profile}.yml`,通过 Nacos bootstrap.yml 加载 +- **服务间调用**: 通过 `lab-*-api` 模块的 Feign 客户端实现 +- **认证**: JWT 令牌,网关层校验,通过请求头传播 +- **数据库**: MySQL + MyBatis-Plus(自动填充 createTime/updateTime) +- **日志**: SLF4J + Logback +- **Docker**: 每个可部署模块都有独立的 Dockerfile + +## 反模式 + +- 生产模块无单元测试(仅有 TestController/TestValue 空壳) +- `lab-iot` 和 `lab-plugin` 在根 pom 中被注释掉 +- `.idea/` 目录提交到了版本控制 + +## 常用命令 + +```bash +# 构建整个后端(跳过测试) +mvn clean install -Dmaven.test.skip=true + +# 运行某个模块 +cd lab-gateway && mvn spring-boot:run + +# Docker 打包 +mvn clean package -Dmaven.test.skip=true -Pprod +``` + +## 备注 + +- 最大模块: `lab-lims`(横跨 controller/service/mapper/entity,约 250+ Java 文件) +- `lab-common` 被所有模块共享 — 修改需谨慎 +- Docker 镜像标签格式: `${docker.registry.url}/${docker.namespace}/${artifactId}:${version}` +- 镜像仓库: 192.168.0.106:2375(Harbor,命名空间: lab) +- `lab-iot` 和 `lab-plugin` 在根 pom.xml 中被注释掉 diff --git a/lab-ops/AGENTS.md b/lab-ops/AGENTS.md new file mode 100644 index 0000000..8dd48df --- /dev/null +++ b/lab-ops/AGENTS.md @@ -0,0 +1,38 @@ +# lab-ops — 运维/基础设施模块 + +**路径:** `project_husbandry_back/lab-ops/` +**作用:** 11 个运维/基础设施 Maven 子模块 + +## 模块清单 + +| 模块 | 包名 | 用途 | +|------|------|------| +| `lab-admin` | `org.springblade.admin` | 管理控制台/仪表盘 | +| `lab-develop` | `org.springblade.develop` | 开发工具/代码生成器 | +| `lab-log` | `org.springblade.log` | 审计日志 | +| `lab-mail` | `org.springblade.mail` | 邮件发送服务 | +| `lab-office` | `org.springblade.office` | Office 文档处理 | +| `lab-report` | `org.springblade.report` | 报表引擎 | +| `lab-resource` | `org.springblade.resource` | 文件/OSS 资源管理 | +| `lab-swagger` | `org.springblade.swagger` | Swagger API 文档聚合 | +| `lab-turbine` | `org.springblade.turbine` | Hystrix 监控面板 | +| `lab-xxljob` | `org.springblade.xxljob` | XXL-Job 分布式任务执行器 | +| `lab-xxljob-admin` | `com.xxl.job.admin` | XXL-Job 管理后台(独立应用) | + +## 依赖关系 + +- `lab-ops-api/` 提供 `lab-mail-api`、`lab-resource-api` 的 Feign 客户端接口 +- `lab-xxljob-admin` 是嵌入的 XXL-Job 管理后台(非 SpringBlade 代码) + +## 约定规范 + +- **标准 SpringBlade 布局**: 每个模块都是 controller → service → mapper → entity +- **XXL-Job 内嵌**: 完整集成了 XXL-Job 管理后台作为子模块 +- **Swagger 聚合**: `lab-swagger` 汇总所有模块的 API +- **资源管理**: 文件上传/下载、OSS 集成 + +## 备注 + +- `lab-xxljob-admin` 包含大量静态资源(adminlte、codemirror 等)— 运维模块中文件数最多的 +- `lab-turbine` 服务于 Hystrix 监控(Spring Cloud Netflix 栈) +- 大部分模块是基础设施的轻量封装,业务逻辑较少 diff --git a/lab-service-api/lab-file-api/lab-file-api.iml b/lab-service-api/lab-file-api/lab-file-api.iml deleted file mode 100644 index fb3b85b..0000000 --- a/lab-service-api/lab-file-api/lab-file-api.iml +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/lab-service-api/lab-lims-api/AGENTS.md b/lab-service-api/lab-lims-api/AGENTS.md new file mode 100644 index 0000000..2609e51 --- /dev/null +++ b/lab-service-api/lab-lims-api/AGENTS.md @@ -0,0 +1,42 @@ +# lab-lims-api — LIMS API 接口 + +**路径:** `project_husbandry_back/lab-service-api/lab-lims-api/` +**包名:** `org.springblade.lims.*` +**作用:** Feign 客户端接口 + 服务间调用共享 DTO + +## 包结构 + +``` +org.springblade.lims/ +├── ao/ # 应用对象(2 个文件) +├── Cache/ # 缓存常量(1 个文件) +├── capital/ # 资金/财务 DTO(49 个文件) +├── entry/ # 实体定义(51 个文件) +└── feign/ # Feign 客户端接口(1 个文件) +``` + +## 关键包说明 + +| 包 | 文件数 | 用途 | +|----|--------|------| +| `entry/` | 51 | 共享实体类(JPA/MyBatis-Plus 映射) | +| `capital/` | 49 | 资金领域 DTO(VO、DTO、AO) | +| `feign/` | 1 | ILimsClient — 服务间调用的 Feign 接口 | +| `ao/` | 2 | 应用层 DTO | +| `Cache/` | 1 | 缓存键常量 | + +## 约定规范 + +- **单一 Feign 接口**: 所有 LIMS Feign 端点定义在 1 个客户端接口中 +- **实体共享**: `entry/` 包含跨服务共享的实体(不在实现模块中重复定义) +- **资金子域**: 拥有独立子包,49 个文件 — 重要的子领域 +- **无业务逻辑**: 纯 API 契约模块,不含 service/impl + +## 快速定位 + +| 任务 | 路径 | +|------|------| +| 查找实体定义 | `entry/*.java` | +| 查找资金模块 VO/DTO | `capital/vo/*.java` | +| 查找 Feign API 契约 | `feign/ILimsClient.java` | +| 添加跨服务 DTO | 在对应包中创建,然后同步 lab-lims 实现模块 | diff --git a/lab-service-api/lab-system-api/lab-system-api.iml b/lab-service-api/lab-system-api/lab-system-api.iml deleted file mode 100644 index 1bbc181..0000000 --- a/lab-service-api/lab-system-api/lab-system-api.iml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/lab-service-api/lab-user-api/lab-user-api.iml b/lab-service-api/lab-user-api/lab-user-api.iml deleted file mode 100644 index 44b9c88..0000000 --- a/lab-service-api/lab-user-api/lab-user-api.iml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/lab-service/lab-lims/AGENTS.md b/lab-service/lab-lims/AGENTS.md new file mode 100644 index 0000000..a5c640d --- /dev/null +++ b/lab-service/lab-lims/AGENTS.md @@ -0,0 +1,51 @@ +# lab-lims — LIMS 核心模块 + +**路径:** `project_husbandry_back/lab-service/lab-lims/` +**包名:** `org.springblade.lims.*` +**规模:** 后端最大模块(约 250+ Java 源文件) + +## 包结构 + +``` +org.springblade.lims/ +├── api/ # 内部 API DTO(3 个文件) +├── config/ # 模块级配置(2 个文件) +├── controller/ # REST 接口(47 个控制器) +├── demo/ # 演示/测试桩(2 个文件) +├── excel/ # Excel 导出处理器(13 个文件) +├── feign/ # Feign 客户端实现(1 个文件) +├── mapper/ # MyBatis-Plus Mapper(46 个文件) +├── Scheduled/ # 定时任务(1 个文件) +├── service/ # 业务逻辑(92 个文件) +├── tools/ # 工具类(1 个文件) +└── utils/ # 工具类(15 个文件) +``` + +## 领域控制器分类 + +| 领域 | 关键控制器 | +|------|-----------| +| 样品/委托 | Entrust、HandleSample、RetentionSample、Simple、SimpleRel、SimpleSet、LsReservedSample | +| 检测/检验 | Examine、ExamineItem、ExamineResult、ExamineTask、ExamineBasis、SimpleDoExamineLog | +| 安全/危化品 | DangerApply、DangerApplyLog、DangerMoveLog、DangerRecoveryLog、DangerStorage | +| 仪器设备 | Instrument、InstrumentMaintLog、InstrumentUseLog、TemperatureControl | +| 试剂/实验动物 | Reagent、ReagentUseLog、ExperimentalAnimal | +| 质量/标准 | QualityStandard、DetermineFormula | +| 合同/维修 | Contract、ContractSample、RepairApplication、ScrapApplication | +| 环境 | EnvDict、EnvLog、DisinfectLog、SewageDischargeLog | +| 模板/蓝图 | Template、TaskBlueprint、LsTemplateLog | +| 日志/审计 | LsAuditTrailLog、LsEventLog、LsTemperatureHumidityLog | +| 统计/大屏 | LsDataStatistic、LargeScreen | + +## 约定规范 + +- **CRUD**: 标准 SpringBlade 模式 controller → service(接口)→ service/impl → mapper +- **Excel**: 导出处理器放在 `excel/` 包下,每个实体对应一个 +- **Mapper**: MyBatis-Plus BaseMapper 扩展,XML 映射文件在 resources 中 +- **内部 API**: DTO 放在 `api/` 包中,仅供模块内部使用 +- **定时任务**: `Scheduled` 包存放 @Scheduled 任务(不在 service/ 中) + +## 反模式 + +- 无单元测试(仅有 `demo/` 空壳) +- `Scheduled` 包只有单个类 — 功能可能不完整