diff --git a/CLAUDE.md b/CLAUDE.md index 4cd78f6..4ef7318 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -34,7 +34,7 @@ POST http://localhost:8080/login/test?username=admin&password=admin123 | 后端技术 | 版本 | 前端技术 | 版本 | |-----------------------------|--------|------------|---------| | Spring Boot | 3.5.8 | Vue.js | 2.6.12 | -| Java | 17 | Element UI | 2.15.14 | +| Java | 21 | Element UI | 2.15.14 | | MyBatis Spring Boot Starter | 3.0.5 | Vuex | 3.6.0 | | MySQL Connector | 8.2.0 | Vue Router | 3.4.9 | | SpringDoc OpenAPI | 2.8.14 | Axios | 0.28.1 | @@ -114,7 +114,10 @@ ccdi/ ├── ruoyi-common/ # 通用工具 (annotations, utils, constants) ├── ruoyi-quartz/ # 定时任务 ├── ruoyi-generator/ # 代码生成器 -├── ruoyi-info-collection/ # 【核心业务模块】信息采集 +├── ccdi-info-collection/ # 【核心业务模块】信息采集 +├── ccdi-project/ # 【核心业务模块】项目管理 +├── ccdi-lsfx/ # 【核心业务模块】流水分析对接 +├── lsfx-mock-server/ # 流水分析模拟服务器 (Python) ├── ruoyi-ui/ # 前端 Vue 应用 ├── sql/ # 数据库脚本 ├── bin/ # 启动脚本 @@ -130,7 +133,11 @@ ruoyi-admin (启动模块) ├── ruoyi-common (共享工具) ├── ruoyi-quartz (定时任务) ├── ruoyi-generator (代码生成) - └── ruoyi-info-collection (信息采集模块) + ├── ccdi-info-collection (信息采集模块) + │ └── 依赖 ruoyi-common + ├── ccdi-project (项目管理模块) + │ └── 依赖 ruoyi-common + └── ccdi-lsfx (流水分析对接模块) └── 依赖 ruoyi-common ``` @@ -140,7 +147,7 @@ ruoyi-admin (启动模块) 3. 在 `ruoyi-admin/pom.xml` 中添加对新模块的依赖 4. 在新模块中按照分层规范创建 controller/service/mapper/domain 包 -### ruoyi-info-collection 业务模块 (核心) +### ccdi-info-collection 业务模块 (核心) 自定义业务模块,包含以下核心功能: @@ -158,14 +165,87 @@ ruoyi-admin (启动模块) **分层结构:** -- Controller: `ruoyi-info-collection/src/main/java/com/ruoyi/info/collection/controller/` -- Service: `ruoyi-info-collection/src/main/java/com/ruoyi/info/collection/service/` -- Mapper: `ruoyi-info-collection/src/main/java/com/ruoyi/info/collection/mapper/` -- Domain: `ruoyi-info-collection/src/main/java/com/ruoyi/info/collection/domain/` +- Controller: `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/controller/` +- Service: `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/` +- Mapper: `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/mapper/` +- Domain: `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/` - dto/: 数据传输对象 - vo/: 视图对象 - excel/: Excel导入导出实体 -- XML映射: `ruoyi-info-collection/src/main/resources/mapper/info/collection/` +- XML映射: `ccdi-info-collection/src/main/resources/mapper/info/collection/` + +### ccdi-project 业务模块 (核心) + +项目管理模块,用于管理纪检初核项目的全生命周期: + +**核心功能:** +- 项目创建、更新、删除、查询 +- 项目状态管理 (进行中、已完成、已归档) +- 项目统计(按状态统计数量) +- 模型参数配置管理 + +**主要 Controller:** +- CcdiProjectController: 项目管理 +- CcdiModelParamController: 模型参数配置 + +**分层结构:** +- Controller: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/` +- Service: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/` +- Mapper: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/` +- Domain: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/` +- XML映射: `ccdi-project/src/main/resources/mapper/ccdi/project/` + +### ccdi-lsfx 业务模块 (核心) + +流水分析平台对接模块,用于与外部流水分析系统交互: + +**核心功能:** +- 获取访问令牌 (Token) +- 上传流水文件并解析 +- 拉取行内流水数据 +- 查询解析状态和结果 +- 获取银行流水明细 + +**主要组件:** +- LsfxAnalysisClient: 流水分析平台客户端 +- LsfxTestController: 测试接口 + +**配置项 (application-dev.yml):** +```yaml +lsfx: + api: + base-url: http://localhost:8000 # 流水分析平台地址 + app-id: your-app-id + app-secret: your-app-secret + client-id: your-client-id + endpoints: + get-token: /api/auth/token + upload-file: /api/files/upload + fetch-inner-flow: /api/flow/inner +``` + +**分层结构:** +- Client: `ccdi-lsfx/src/main/java/com/ruoyi/lsfx/client/` +- Controller: `ccdi-lsfx/src/main/java/com/ruoyi/lsfx/controller/` +- Domain: `ccdi-lsfx/src/main/java/com/ruoyi/lsfx/domain/` + - request/: 请求对象 + - response/: 响应对象 +- Config: `ccdi-lsfx/src/main/java/com/ruoyi/lsfx/config/` + +### lsfx-mock-server (开发测试工具) + +Python 实现的流水分析平台模拟服务器,用于本地开发和测试: + +**用途:** +- 模拟流水分析平台的 API 接口 +- 提供测试数据和模拟响应 +- 支持错误场景模拟 + +**启动方式:** +```bash +cd lsfx-mock-server +python app.py # 默认监听 http://localhost:8000 +``` --- @@ -389,6 +469,55 @@ POST /login/test?username=admin&password=admin123 - **数据库索引**: 0 - **连接超时**: 10s +### 流水分析平台配置 + +项目集成了外部流水分析平台,配置项位于 `application-dev.yml`: + +```yaml +lsfx: + api: + base-url: http://localhost:8000 # 流水分析平台基础地址 + app-id: ccdi-app # 应用ID + app-secret: ccdi-secret-2024 # 应用密钥 + client-id: ccdi-client # 客户端ID + endpoints: + get-token: /api/auth/token # 获取令牌接口 + upload-file: /api/files/upload # 文件上传接口 + fetch-inner-flow: /api/flow/inner # 拉取行内流水接口 +``` + +**开发环境使用 Mock 服务器:** +- 本地开发时,将 `base-url` 设置为 `http://localhost:8000` +- 启动 `lsfx-mock-server` 提供模拟接口 +- 生产环境替换为真实的流水分析平台地址 + +### MCP 配置 + +项目使用 MCP (Model Context Protocol) 连接数据库,配置文件: `.mcp.json` + +```json +{ + "mcpServers": { + "mysql": { + "command": "npx", + "args": ["-y", "@fhuang/mcp-mysql-server"], + "env": { + "MYSQL_HOST": "116.62.17.81", + "MYSQL_PORT": "3306", + "MYSQL_USER": "root", + "MYSQL_PASSWORD": "Kfcx@1234", + "MYSQL_DATABASE": "ccdi" + } + } + } +} +``` + +**使用场景:** +- 通过 MCP 工具直接查询和操作数据库 +- 在开发过程中快速验证数据 +- 生成测试数据和调试 SQL + ### Druid 监控台 访问地址: `http://localhost:8080/druid/` @@ -405,8 +534,11 @@ POST /login/test?username=admin&password=admin123 |---------------|--------------------------------------------------------------------------------| | 应用入口 | `ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java` | | 安全配置 | `ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java` | -| 业务 Controller | `ruoyi-info-collection/src/main/java/com/ruoyi/info/collection/controller/` | -| 业务 Mapper XML | `ruoyi-info-collection/src/main/resources/mapper/info/collection/` | +| 信息采集 Controller | `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/controller/` | +| 信息采集 Mapper XML | `ccdi-info-collection/src/main/resources/mapper/info/collection/` | +| 项目管理 Controller | `ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/` | +| 项目管理 Mapper XML | `ccdi-project/src/main/resources/mapper/ccdi/project/` | +| 流水分析 Client | `ccdi-lsfx/src/main/java/com/ruoyi/lsfx/client/LsfxAnalysisClient.java` | | Vue 路由 | `ruoyi-ui/src/router/index.js` | | Vuex Store | `ruoyi-ui/src/store/` | | 前端 API | `ruoyi-ui/src/api/` | @@ -499,6 +631,15 @@ doc/ 3. 确认 Excel 模板格式正确 4. 检查必填字段是否为空 +### 流水分析平台连接失败 + +**检查项:** +1. 确认 `lsfx-mock-server` 已启动(开发环境) +2. 检查 `application-dev.yml` 中的 `lsfx.api.base-url` 配置 +3. 验证 app-id、app-secret、client-id 是否正确 +4. 检查网络连接和防火墙设置 +5. 查看后端日志中的 HTTP 请求错误信息 + --- ## MyBatis Plus 分页使用 diff --git a/assets/对接流水分析/ccdi_bank_statement.docx b/assets/对接流水分析/ccdi_bank_statement.docx new file mode 100644 index 0000000..70090b1 Binary files /dev/null and b/assets/对接流水分析/ccdi_bank_statement.docx differ diff --git a/ccdi-lsfx/src/main/java/com/ruoyi/lsfx/client/LsfxAnalysisClient.java b/ccdi-lsfx/src/main/java/com/ruoyi/lsfx/client/LsfxAnalysisClient.java index f2d57a4..0f08493 100644 --- a/ccdi-lsfx/src/main/java/com/ruoyi/lsfx/client/LsfxAnalysisClient.java +++ b/ccdi-lsfx/src/main/java/com/ruoyi/lsfx/client/LsfxAnalysisClient.java @@ -82,8 +82,7 @@ public class LsfxAnalysisClient { long elapsed = System.currentTimeMillis() - startTime; if (response != null && response.getData() != null) { - log.info("【流水分析】获取Token成功: projectId={}, 耗时={}ms", - response.getData().getProjectId(), elapsed); + log.info("【流水分析】获取Token成功: projectId={}, 耗时={}ms", response.getData().getProjectId(), elapsed); } else { log.warn("【流水分析】获取Token响应异常: 耗时={}ms", elapsed); } diff --git a/doc/design/2026-03-04-add-lsfx-project-id.sql b/docs/design/2026-03-04-add-lsfx-project-id.sql similarity index 100% rename from doc/design/2026-03-04-add-lsfx-project-id.sql rename to docs/design/2026-03-04-add-lsfx-project-id.sql diff --git a/doc/design/2026-03-04-create-project-integrate-lsfx-design.md b/docs/design/2026-03-04-create-project-integrate-lsfx-design.md similarity index 100% rename from doc/design/2026-03-04-create-project-integrate-lsfx-design.md rename to docs/design/2026-03-04-create-project-integrate-lsfx-design.md