整理docs目录并补充文档规范
This commit is contained in:
18
AGENTS.md
18
AGENTS.md
@@ -159,6 +159,24 @@ ccdi/
|
||||
|
||||
---
|
||||
|
||||
## 文档规范
|
||||
|
||||
- `docs/design/`: 设计文档与设计附属文件
|
||||
- `docs/plans/backend/`: 后端实施计划
|
||||
- `docs/plans/frontend/`: 前端实施计划
|
||||
- `docs/plans/fullstack/`: 综合实施计划、集成计划与通用实施文档
|
||||
- `docs/plans/misc/`: 计划类杂项文档
|
||||
- `docs/tests/plans/`: 测试计划
|
||||
- `docs/tests/records/`: 测试记录
|
||||
- `docs/tests/scripts/`: 测试脚本与脚本说明
|
||||
- `docs/reports/implementation/`: 实施报告
|
||||
- `docs/reports/optimization/`: 优化记录
|
||||
- `docs/reports/code-review/`: 代码评审报告
|
||||
- 新增文档时优先放入上述目录,避免继续直接堆放到 `docs/plans/` 根目录
|
||||
- 文档之间如果引用 `docs` 路径,新增或移动后需同步修正引用
|
||||
|
||||
---
|
||||
|
||||
## 沟通规范
|
||||
|
||||
- 使用简体中文进行思考和对话
|
||||
|
||||
@@ -502,4 +502,4 @@ head -20 doc/database/backup/ccdi_structure.sql
|
||||
- 表结构文件: `doc/database/backup/ccdi_structure.sql`
|
||||
- 数据文件: `doc/database/backup/ccdi_data.sql`
|
||||
- 排序规则修改脚本: `doc/database/alter_collation_to_general_ci.sql`
|
||||
- 设计文档: `docs/plans/2026-02-28-database-migration-design.md`
|
||||
- 设计文档: `docs/design/2026-02-28-database-migration-design.md`
|
||||
|
||||
@@ -266,7 +266,7 @@ d122e52 config(lsfx): 删除接口5、6配置,更新接口7路径
|
||||
## 参考资料
|
||||
|
||||
- **新版接口文档**: `doc/对接流水分析/兰溪-流水分析对接-新版.md`
|
||||
- **实施计划**: `docs/plans/2026-03-02-lsfx-update-plan.md`
|
||||
- **实施计划**: `docs/plans/fullstack/2026-03-02-lsfx-update-plan.md`
|
||||
- **项目规范**: `CLAUDE.md`
|
||||
|
||||
---
|
||||
|
||||
25
docs/README.md
Normal file
25
docs/README.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# docs 目录说明
|
||||
|
||||
本目录按文档类型整理,优先解决历史文档集中堆放在 `docs/plans/` 根目录的问题。
|
||||
|
||||
## 目录结构
|
||||
|
||||
- `design/`: 设计文档与设计附属文件
|
||||
- `plans/backend/`: 后端实施计划
|
||||
- `plans/frontend/`: 前端实施计划
|
||||
- `plans/fullstack/`: 综合实施计划、集成计划与通用实施记录
|
||||
- `plans/misc/`: 计划类杂项文档
|
||||
- `tests/plans/`: 测试计划
|
||||
- `tests/records/`: 测试记录
|
||||
- `tests/scripts/`: 测试脚本与脚本说明
|
||||
- `reports/implementation/`: 实施报告
|
||||
- `reports/optimization/`: 优化记录
|
||||
- `reports/code-review/`: 代码评审报告
|
||||
|
||||
## 归类规则
|
||||
|
||||
- 设计类文档统一放入 `design/`
|
||||
- 明确标注前端或后端的实施计划分别放入 `plans/frontend/`、`plans/backend/`
|
||||
- 不区分前后端的综合方案、集成计划和通用实施文档放入 `plans/fullstack/`
|
||||
- 测试相关文档统一放入 `tests/`
|
||||
- 报告与复盘类文档统一放入 `reports/`
|
||||
@@ -249,7 +249,7 @@ SHOW CREATE TABLE sys_user;
|
||||
3. **表结构文件**: `doc/database/backup/ccdi_structure.sql`
|
||||
4. **数据文件**: `doc/database/backup/ccdi_data.sql`
|
||||
5. **操作指南**: `doc/database/backup/export_guide.md`
|
||||
6. **设计文档**: `docs/plans/2026-02-28-database-migration-design.md`
|
||||
6. **设计文档**: `docs/design/2026-02-28-database-migration-design.md`
|
||||
|
||||
## 时间估算
|
||||
|
||||
@@ -145,11 +145,11 @@ public CcdiProjectVO createProject(CcdiProjectSaveDTO dto) {
|
||||
### 5. 测试脚本 ✅
|
||||
|
||||
**文件**:
|
||||
- `docs/test-scripts/test-project-creation.sh` (Bash)
|
||||
- `docs/test-scripts/test-project-creation.ps1` (PowerShell)
|
||||
- `docs/test-scripts/test-project-creation.bat` (批处理)
|
||||
- `docs/test-scripts/test-simple.sh` (简化版)
|
||||
- `docs/test-scripts/README.md` (文档)
|
||||
- `docs/tests/scripts/test-project-creation.sh` (Bash)
|
||||
- `docs/tests/scripts/test-project-creation.ps1` (PowerShell)
|
||||
- `docs/tests/scripts/test-project-creation.bat` (批处理)
|
||||
- `docs/tests/scripts/test-simple.sh` (简化版)
|
||||
- `docs/tests/scripts/README.md` (文档)
|
||||
|
||||
**Commit**: `206754a` - "test: 添加项目创建功能测试脚本和文档"
|
||||
|
||||
|
||||
@@ -839,7 +839,7 @@ public void saveParams(ModelParamSaveDTO saveDTO) {
|
||||
|
||||
**测试文件:**
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/CcdiModelParamServiceImplTest.java` - 单元测试
|
||||
- `docs/test-scripts/test-param-config.sh` - 集成测试脚本
|
||||
- `docs/tests/scripts/test-param-config.sh` - 集成测试脚本
|
||||
|
||||
### 8.2 参考文档
|
||||
|
||||
@@ -265,7 +265,7 @@ ON DUPLICATE KEY UPDATE
|
||||
本次实现后应同步更新以下文档,避免数据库说明继续失真:
|
||||
|
||||
- `assets/对接流水分析/ccdi_bank_statement.md`
|
||||
- 如有必要,同步 `docs/plans/2026-03-04-bank-statement-entity-design.md` 中的表结构补充说明
|
||||
- 如有必要,同步 `docs/design/2026-03-04-bank-statement-entity-design.md` 中的表结构补充说明
|
||||
|
||||
## 影响范围
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
现有员工亲属关系维护页面 `http://localhost/maintain/staffFmyRelation` 已支持员工亲属关系的新增、编辑、删除、详情、导入导出,但尚不支持维护亲属名下资产信息。
|
||||
|
||||
当前仓库中已有员工资产维护设计文档 [2026-03-12-employee-asset-maintenance-design.md](/D:/ccdi/ccdi/docs/plans/2026-03-12-employee-asset-maintenance-design.md),其核心约束是通过 `family_id` 表示归属员工,通过 `person_id` 表示资产实际持有人。本次需求需要将该能力调整到“员工亲属关系维护页面”中,并明确仅维护亲属资产,不包含员工本人资产。
|
||||
当前仓库中已有员工资产维护设计文档 [2026-03-12-employee-asset-maintenance-design.md](/D:/ccdi/ccdi/docs/design/2026-03-12-employee-asset-maintenance-design.md),其核心约束是通过 `family_id` 表示归属员工,通过 `person_id` 表示资产实际持有人。本次需求需要将该能力调整到“员工亲属关系维护页面”中,并明确仅维护亲属资产,不包含员工本人资产。
|
||||
|
||||
本次设计于 2026-03-12 确认以下业务口径:
|
||||
|
||||
@@ -698,8 +698,8 @@ mvn spring-boot:run
|
||||
**步骤 6: 提交测试记录**
|
||||
|
||||
```bash
|
||||
mkdir -p docs/test-records
|
||||
git add docs/test-records/
|
||||
mkdir -p docs/tests/records
|
||||
git add docs/tests/records/
|
||||
git commit -m "test(ccdi-project): 记录后端接口测试结果"
|
||||
```
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
**Files:**
|
||||
- Create: `sql/2026-03-12_ccdi_asset_info.sql`
|
||||
- Review: `assets/资产信息表.csv`
|
||||
- Review: `docs/plans/2026-03-12-employee-asset-maintenance-design.md`
|
||||
- Review: `docs/design/2026-03-12-employee-asset-maintenance-design.md`
|
||||
|
||||
**Step 1: Write the SQL script**
|
||||
|
||||
@@ -40,7 +40,7 @@ Confirm the script:
|
||||
**Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add sql/2026-03-12_ccdi_asset_info.sql docs/plans/2026-03-12-employee-asset-maintenance-design.md
|
||||
git add sql/2026-03-12_ccdi_asset_info.sql docs/design/2026-03-12-employee-asset-maintenance-design.md
|
||||
git commit -m "新增员工资产信息设计与建表脚本"
|
||||
```
|
||||
|
||||
@@ -349,6 +349,6 @@ Expected: compile succeeds without Java or mapper XML errors.
|
||||
**Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add sql/2026-03-12_ccdi_asset_info.sql ccdi-info-collection/src/main/java/com/ruoyi/info/collection ccdi-info-collection/src/main/resources/mapper/info/collection docs/plans/2026-03-12-employee-asset-maintenance-backend-implementation.md
|
||||
git add sql/2026-03-12_ccdi_asset_info.sql ccdi-info-collection/src/main/java/com/ruoyi/info/collection ccdi-info-collection/src/main/resources/mapper/info/collection docs/plans/backend/2026-03-12-employee-asset-maintenance-backend-implementation.md
|
||||
git commit -m "新增员工资产信息后端实施计划"
|
||||
```
|
||||
@@ -13,7 +13,7 @@
|
||||
### Task 1: Verify backend impact is zero
|
||||
|
||||
**Files:**
|
||||
- Review: `docs/plans/2026-03-12-pull-bank-info-date-limit-design.md`
|
||||
- Review: `docs/design/2026-03-12-pull-bank-info-date-limit-design.md`
|
||||
- Review: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/`
|
||||
- Review: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/`
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
### Task 1: Verify backend impact is zero
|
||||
|
||||
**Files:**
|
||||
- Review: `docs/plans/2026-03-12-pull-bank-info-upload-button-hit-area-design.md`
|
||||
- Review: `docs/design/2026-03-12-pull-bank-info-upload-button-hit-area-design.md`
|
||||
- Review: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/`
|
||||
- Review: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/`
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
**Files:**
|
||||
- Create: `lsfx-mock-server/**`
|
||||
- Modify: `docs/plans/2026-03-13-ccdi-docker-deployment-design.md`
|
||||
- Modify: `docs/design/2026-03-13-ccdi-docker-deployment-design.md`
|
||||
- Test: `lsfx-mock-server/tests/test_api.py`
|
||||
|
||||
**Step 1: 复制并清理运行文件**
|
||||
@@ -110,7 +110,7 @@ Expected: Compose 文件能正常展开且无语法错误
|
||||
### Task 5: 构建与联调验证
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/plans/2026-03-13-ccdi-docker-deployment-design.md`
|
||||
- Modify: `docs/design/2026-03-13-ccdi-docker-deployment-design.md`
|
||||
|
||||
**Step 1: 本地构建后端**
|
||||
|
||||
@@ -131,6 +131,6 @@ Expected: 无错误
|
||||
**Step 4: 提交**
|
||||
|
||||
```bash
|
||||
git add lsfx-mock-server docker docker-compose.yml .env.example deploy docs/plans/2026-03-13-ccdi-docker-deployment-*.md
|
||||
git add lsfx-mock-server docker docker-compose.yml .env.example deploy docs/design/2026-03-13-ccdi-docker-deployment-design.md docs/plans/backend/2026-03-13-ccdi-docker-deployment-backend-implementation.md docs/plans/frontend/2026-03-13-ccdi-docker-deployment-frontend-implementation.md
|
||||
git commit -m "新增Docker后端部署方案"
|
||||
```
|
||||
@@ -214,7 +214,7 @@ git commit -m "实现员工资产导入归属匹配"
|
||||
### Task 5: 执行回归验证
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/plans/2026-03-13-employee-family-asset-import-split-design.md`
|
||||
- Modify: `docs/design/2026-03-13-employee-family-asset-import-split-design.md`
|
||||
|
||||
**Step 1: 运行后端定向测试**
|
||||
|
||||
@@ -248,6 +248,6 @@ Expected:
|
||||
**Step 4: 提交**
|
||||
|
||||
```bash
|
||||
git add docs/plans/2026-03-13-employee-family-asset-import-split-design.md
|
||||
git add docs/design/2026-03-13-employee-family-asset-import-split-design.md
|
||||
git commit -m "完成资产导入拆分后端验证"
|
||||
```
|
||||
@@ -31,7 +31,7 @@
|
||||
**Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/plans/2026-03-16-large-transaction-project40-design.md assets/database/2026-03-16-project40-large-transaction-seed.sql
|
||||
git add docs/design/2026-03-16-large-transaction-project40-design.md assets/database/2026-03-16-project40-large-transaction-seed.sql
|
||||
git commit -m "文档: 补充项目40大额交易测试数据设计"
|
||||
```
|
||||
|
||||
@@ -114,7 +114,7 @@ Expected: 每个指标返回至少 1 条命中记录或 1 个命中分组。
|
||||
**Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add assets/database/2026-03-16-project40-large-transaction-seed.sql docs/implementation-reports/2026-03-16-project40-large-transaction-report.md
|
||||
git add assets/database/2026-03-16-project40-large-transaction-seed.sql docs/reports/implementation2026-03-16-project40-large-transaction-report.md
|
||||
git commit -m "验证: 完成项目40大额交易测试流水校验"
|
||||
```
|
||||
|
||||
@@ -144,6 +144,6 @@ Expected: `project_id=40` 存在稳定数量的测试流水。
|
||||
**Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/implementation-reports/2026-03-16-project40-large-transaction-report.md
|
||||
git add docs/reports/implementation2026-03-16-project40-large-transaction-report.md
|
||||
git commit -m "文档: 完善项目40大额交易测试流水报告"
|
||||
```
|
||||
@@ -214,7 +214,7 @@ git commit -m "refactor: 收敛模型参数服务对齐逻辑"
|
||||
**Files:**
|
||||
- Reference: `sql/ccdi_model_param.sql`
|
||||
- Reference: `sql/2026-03-16-update-ccdi-model-param-defaults.sql`
|
||||
- Optional Record: `docs/test-records/model-param-backend-alignment-test.md`
|
||||
- Optional Record: `docs/tests/records/model-param-backend-alignment-test.md`
|
||||
|
||||
**Step 1: 准备校验项**
|
||||
|
||||
@@ -262,13 +262,13 @@ ORDER BY model_code, sort_order, id;
|
||||
将验证过程写入:
|
||||
|
||||
```text
|
||||
docs/test-records/model-param-backend-alignment-test.md
|
||||
docs/tests/records/model-param-backend-alignment-test.md
|
||||
```
|
||||
|
||||
**Step 5: 提交**
|
||||
|
||||
```bash
|
||||
git add docs/test-records/model-param-backend-alignment-test.md
|
||||
git add docs/tests/records/model-param-backend-alignment-test.md
|
||||
git commit -m "test: 记录模型默认参数后端对齐验证"
|
||||
```
|
||||
|
||||
@@ -348,10 +348,10 @@ POST /ccdi/modelParam/saveAll
|
||||
测试结束后关闭 `mvn spring-boot:run` 启动的进程,再提交测试记录:
|
||||
|
||||
```bash
|
||||
git add docs/test-records/model-param-backend-alignment-test.md
|
||||
git add docs/tests/records/model-param-backend-alignment-test.md
|
||||
git commit -m "test: 完成模型参数后端接口回归验证"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Plan complete and saved to `docs/plans/2026-03-16-model-param-csv-alignment-backend-implementation.md`.
|
||||
Plan complete and saved to `docs/plans/backend/2026-03-16-model-param-csv-alignment-backend-implementation.md`.
|
||||
@@ -13,7 +13,7 @@
|
||||
### Task 1: 确认需求边界
|
||||
|
||||
**Files:**
|
||||
- Review: `docs/plans/2026-03-16-param-save-bar-fixed-bottom-design.md`
|
||||
- Review: `docs/design/2026-03-16-param-save-bar-fixed-bottom-design.md`
|
||||
- Review: `ccdi-project`
|
||||
- Review: `ccdi-info-collection`
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
### Task 2: 回归验证清单
|
||||
|
||||
**Files:**
|
||||
- Review: `docs/plans/2026-03-16-param-save-bar-fixed-bottom-design.md`
|
||||
- Review: `docs/design/2026-03-16-param-save-bar-fixed-bottom-design.md`
|
||||
|
||||
**Step 1: 验证参数查询接口**
|
||||
|
||||
@@ -688,7 +688,7 @@ git commit -m "feat: 接入拉取本行信息完成后的自动流水打标"
|
||||
### Task 12: 完成全量验证
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/plans/2026-03-16-project-bank-statement-tagging-backend-implementation.md`
|
||||
- Modify: `docs/plans/backend/2026-03-16-project-bank-statement-tagging-backend-implementation.md`
|
||||
|
||||
**Step 1: Run focused backend tests**
|
||||
|
||||
@@ -721,7 +721,7 @@ Expected:
|
||||
**Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add ccdi-project sql docs/plans/2026-03-16-project-bank-statement-tagging-backend-implementation.md
|
||||
git add ccdi-project sql docs/plans/backend/2026-03-16-project-bank-statement-tagging-backend-implementation.md
|
||||
git commit -m "feat: 完成项目流水标签后端实现"
|
||||
```
|
||||
|
||||
@@ -428,9 +428,9 @@ npm run dev
|
||||
**步骤 6: 提交测试记录**
|
||||
|
||||
```bash
|
||||
mkdir -p docs/test-records
|
||||
echo "## 全局配置页面测试结果\n\n测试时间:$(date)\n\n- [x] 页面显示正确\n- [x] 修改功能正常\n- [x] 保存功能正常\n- [x] 错误处理正常" > docs/test-records/global-config-test.md
|
||||
git add docs/test-records/
|
||||
mkdir -p docs/tests/records
|
||||
echo "## 全局配置页面测试结果\n\n测试时间:$(date)\n\n- [x] 页面显示正确\n- [x] 修改功能正常\n- [x] 保存功能正常\n- [x] 错误处理正常" > docs/tests/records/global-config-test.md
|
||||
git add docs/tests/records/
|
||||
git commit -m "test(ui): 记录全局配置页面测试结果"
|
||||
```
|
||||
|
||||
@@ -745,8 +745,8 @@ git commit -m "feat(ui): 重构项目内模型参数配置页面"
|
||||
**步骤 7: 提交测试记录**
|
||||
|
||||
```bash
|
||||
echo "## 项目配置页面测试结果\n\n测试时间:$(date)\n\n- [x] 页面显示正确\n- [x] 使用默认配置项目测试通过\n- [x] 自定义配置项目测试通过\n- [x] 多模型修改测试通过" > docs/test-records/project-config-test.md
|
||||
git add docs/test-records/
|
||||
echo "## 项目配置页面测试结果\n\n测试时间:$(date)\n\n- [x] 页面显示正确\n- [x] 使用默认配置项目测试通过\n- [x] 自定义配置项目测试通过\n- [x] 多模型修改测试通过" > docs/tests/records/project-config-test.md
|
||||
git add docs/tests/records/
|
||||
git commit -m "test(ui): 记录项目配置页面测试结果"
|
||||
```
|
||||
|
||||
@@ -791,8 +791,8 @@ git commit -m "test(ui): 记录项目配置页面测试结果"
|
||||
**步骤 5: 提交测试报告**
|
||||
|
||||
```bash
|
||||
echo "## 端到端集成测试结果\n\n测试时间:$(date)\n\n### 功能测试\n- [x] 全局配置影响项目配置\n- [x] 项目配置不影响全局配置\n- [x] 并发操作正常\n\n### 性能测试\n- [x] listAll接口响应时间 < 200ms\n- [x] saveAll接口响应时间 < 500ms\n\n### 结论\n前后端集成测试通过,功能正常,性能符合要求。" > docs/test-records/e2e-test.md
|
||||
git add docs/test-records/
|
||||
echo "## 端到端集成测试结果\n\n测试时间:$(date)\n\n### 功能测试\n- [x] 全局配置影响项目配置\n- [x] 项目配置不影响全局配置\n- [x] 并发操作正常\n\n### 性能测试\n- [x] listAll接口响应时间 < 200ms\n- [x] saveAll接口响应时间 < 500ms\n\n### 结论\n前后端集成测试通过,功能正常,性能符合要求。" > docs/tests/records/e2e-test.md
|
||||
git add docs/tests/records/
|
||||
git commit -m "test(ui): 完成端到端集成测试"
|
||||
```
|
||||
|
||||
@@ -574,6 +574,6 @@ Expected: 本地员工信息维护页面可访问
|
||||
**Step 6: 最终提交**
|
||||
|
||||
```bash
|
||||
git add ruoyi-ui/src/api/ccdiBaseStaff.js ruoyi-ui/src/api/ccdiAssetInfo.js ruoyi-ui/src/views/ccdiBaseStaff/index.vue ruoyi-ui/tests/unit docs/plans/2026-03-12-employee-asset-maintenance-frontend-implementation.md
|
||||
git add ruoyi-ui/src/api/ccdiBaseStaff.js ruoyi-ui/src/api/ccdiAssetInfo.js ruoyi-ui/src/views/ccdiBaseStaff/index.vue ruoyi-ui/tests/unit docs/plans/frontend/2026-03-12-employee-asset-maintenance-frontend-implementation.md
|
||||
git commit -m "新增员工资产信息前端实施计划"
|
||||
```
|
||||
@@ -15,7 +15,7 @@
|
||||
**Files:**
|
||||
- Create: `docker/frontend/Dockerfile`
|
||||
- Create: `docker/frontend/nginx.conf`
|
||||
- Modify: `docs/plans/2026-03-13-ccdi-docker-deployment-design.md`
|
||||
- Modify: `docs/design/2026-03-13-ccdi-docker-deployment-design.md`
|
||||
|
||||
**Step 1: 创建前端镜像定义**
|
||||
|
||||
@@ -69,7 +69,7 @@ Expected: 前端服务、依赖与端口映射正确
|
||||
### Task 4: 联调验证
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/plans/2026-03-13-ccdi-docker-deployment-design.md`
|
||||
- Modify: `docs/design/2026-03-13-ccdi-docker-deployment-design.md`
|
||||
|
||||
**Step 1: 检查前端生产产物**
|
||||
|
||||
@@ -84,6 +84,6 @@ Expected: 前端服务、依赖与端口映射正确
|
||||
**Step 3: 提交**
|
||||
|
||||
```bash
|
||||
git add docker/frontend deploy/deploy.ps1 docker-compose.yml .env.example docs/plans/2026-03-13-ccdi-docker-deployment-*.md
|
||||
git add docker/frontend deploy/deploy.ps1 docker-compose.yml .env.example docs/design/2026-03-13-ccdi-docker-deployment-design.md docs/plans/backend/2026-03-13-ccdi-docker-deployment-backend-implementation.md docs/plans/frontend/2026-03-13-ccdi-docker-deployment-frontend-implementation.md
|
||||
git commit -m "新增Docker前端部署方案"
|
||||
```
|
||||
@@ -188,7 +188,7 @@ git commit -m "保护亲属页资产导入交互不回归"
|
||||
### Task 5: 执行前端回归验证
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/plans/2026-03-13-employee-family-asset-import-split-design.md`
|
||||
- Modify: `docs/design/2026-03-13-employee-family-asset-import-split-design.md`
|
||||
|
||||
**Step 1: 运行全部相关静态测试**
|
||||
|
||||
@@ -225,6 +225,6 @@ Expected:
|
||||
**Step 4: 提交**
|
||||
|
||||
```bash
|
||||
git add docs/plans/2026-03-13-employee-family-asset-import-split-design.md
|
||||
git add docs/design/2026-03-13-employee-family-asset-import-split-design.md
|
||||
git commit -m "完成资产导入拆分前端验证"
|
||||
```
|
||||
@@ -28,7 +28,7 @@
|
||||
**Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/implementation-reports/2026-03-16-project40-large-transaction-report.md
|
||||
git add docs/reports/implementation2026-03-16-project40-large-transaction-report.md
|
||||
git commit -m "文档: 补充项目40流水前端验证说明"
|
||||
```
|
||||
|
||||
@@ -53,6 +53,6 @@ git commit -m "文档: 补充项目40流水前端验证说明"
|
||||
**Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/implementation-reports/2026-03-16-project40-large-transaction-report.md
|
||||
git add docs/reports/implementation2026-03-16-project40-large-transaction-report.md
|
||||
git commit -m "文档: 完成项目40流水前端验证清单"
|
||||
```
|
||||
@@ -233,7 +233,7 @@ git commit -m "refactor: 收敛模型参数页修改状态管理"
|
||||
### Task 5: 验证“无千分位设计”和“接口驱动展示”
|
||||
|
||||
**Files:**
|
||||
- Optional Record: `docs/test-records/model-param-frontend-alignment-test.md`
|
||||
- Optional Record: `docs/tests/records/model-param-frontend-alignment-test.md`
|
||||
|
||||
**Step 1: 启动前端开发服务**
|
||||
|
||||
@@ -273,13 +273,13 @@ npm run dev
|
||||
测试结束后关闭 `npm run dev` 启动的进程,并把结果写入:
|
||||
|
||||
```text
|
||||
docs/test-records/model-param-frontend-alignment-test.md
|
||||
docs/tests/records/model-param-frontend-alignment-test.md
|
||||
```
|
||||
|
||||
然后提交:
|
||||
|
||||
```bash
|
||||
git add docs/test-records/model-param-frontend-alignment-test.md
|
||||
git add docs/tests/records/model-param-frontend-alignment-test.md
|
||||
git commit -m "test: 记录模型参数前端动态展示验证"
|
||||
```
|
||||
|
||||
@@ -326,10 +326,10 @@ npm run dev
|
||||
**Step 5: 提交联调记录**
|
||||
|
||||
```bash
|
||||
git add docs/test-records/model-param-frontend-alignment-test.md docs/test-records/model-param-backend-alignment-test.md
|
||||
git add docs/tests/records/model-param-frontend-alignment-test.md docs/tests/records/model-param-backend-alignment-test.md
|
||||
git commit -m "test: 完成模型参数前后端联调验收"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Plan complete and saved to `docs/plans/2026-03-16-model-param-csv-alignment-frontend-implementation.md`.
|
||||
Plan complete and saved to `docs/plans/frontend/2026-03-16-model-param-csv-alignment-frontend-implementation.md`.
|
||||
@@ -13,7 +13,7 @@
|
||||
### Task 1: 明确本期前端范围为零代码接入
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/plans/2026-03-16-project-bank-statement-tagging-frontend-implementation.md`
|
||||
- Modify: `docs/plans/frontend/2026-03-16-project-bank-statement-tagging-frontend-implementation.md`
|
||||
|
||||
**Step 1: Write the acceptance checklist**
|
||||
|
||||
@@ -44,14 +44,14 @@ Expected:
|
||||
**Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/plans/2026-03-16-project-bank-statement-tagging-frontend-implementation.md
|
||||
git add docs/plans/frontend/2026-03-16-project-bank-statement-tagging-frontend-implementation.md
|
||||
git commit -m "docs: 明确流水标签前端一期范围"
|
||||
```
|
||||
|
||||
### Task 2: 记录未来 API 契约占位
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/plans/2026-03-16-project-bank-statement-tagging-frontend-implementation.md`
|
||||
- Modify: `docs/plans/frontend/2026-03-16-project-bank-statement-tagging-frontend-implementation.md`
|
||||
|
||||
**Step 1: Define the future API contract**
|
||||
|
||||
@@ -70,7 +70,7 @@ git commit -m "docs: 明确流水标签前端一期范围"
|
||||
Run:
|
||||
|
||||
```bash
|
||||
Get-Content docs/plans/2026-03-16-project-bank-statement-tagging-frontend-implementation.md | Select-String "/ccdi/project/tags/rebuild"
|
||||
Get-Content docs/plans/frontend/2026-03-16-project-bank-statement-tagging-frontend-implementation.md | Select-String "/ccdi/project/tags/rebuild"
|
||||
```
|
||||
|
||||
Expected:
|
||||
@@ -84,14 +84,14 @@ Expected:
|
||||
**Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/plans/2026-03-16-project-bank-statement-tagging-frontend-implementation.md
|
||||
git add docs/plans/frontend/2026-03-16-project-bank-statement-tagging-frontend-implementation.md
|
||||
git commit -m "docs: 补充流水标签前端后续接口契约"
|
||||
```
|
||||
|
||||
### Task 3: 约束后续页面接入位置
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/plans/2026-03-16-project-bank-statement-tagging-frontend-implementation.md`
|
||||
- Modify: `docs/plans/frontend/2026-03-16-project-bank-statement-tagging-frontend-implementation.md`
|
||||
|
||||
**Step 1: Write the page integration checklist**
|
||||
|
||||
@@ -125,14 +125,14 @@ Expected:
|
||||
**Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/plans/2026-03-16-project-bank-statement-tagging-frontend-implementation.md
|
||||
git add docs/plans/frontend/2026-03-16-project-bank-statement-tagging-frontend-implementation.md
|
||||
git commit -m "docs: 约束流水标签前端二期接入位置"
|
||||
```
|
||||
|
||||
### Task 4: 完成本期前端回归检查
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/plans/2026-03-16-project-bank-statement-tagging-frontend-implementation.md`
|
||||
- Modify: `docs/plans/frontend/2026-03-16-project-bank-statement-tagging-frontend-implementation.md`
|
||||
|
||||
**Step 1: Run frontend build smoke check**
|
||||
|
||||
@@ -165,7 +165,7 @@ Expected:
|
||||
**Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/plans/2026-03-16-project-bank-statement-tagging-frontend-implementation.md
|
||||
git add docs/plans/frontend/2026-03-16-project-bank-statement-tagging-frontend-implementation.md
|
||||
git commit -m "docs: 完成流水标签前端一期兼容性核对"
|
||||
```
|
||||
|
||||
@@ -804,12 +804,12 @@ Expected: 前端服务启动成功,访问 http://localhost/ccdiProject
|
||||
```bash
|
||||
# 打开浏览器访问 http://localhost/ccdiProject
|
||||
# 使用截图工具拍摄完整页面截图
|
||||
# 保存为 docs/plans/implementation-screenshot.png
|
||||
# 保存为 docs/plans/fullstack/implementation-screenshot.png
|
||||
```
|
||||
|
||||
**Step 5: 创建验证报告**
|
||||
|
||||
创建文件 `docs/plans/verification-report.md`,记录验证结果:
|
||||
创建文件 `docs/plans/misc/verification-report.md`,记录验证结果:
|
||||
|
||||
```markdown
|
||||
# 项目管理页面重构验证报告
|
||||
@@ -846,7 +846,7 @@ Expected: 前端服务启动成功,访问 http://localhost/ccdiProject
|
||||
|
||||
Run:
|
||||
```bash
|
||||
git add docs/plans/verification-report.md
|
||||
git add docs/plans/misc/verification-report.md
|
||||
git commit -m "docs: 添加项目管理页面重构验证报告"
|
||||
```
|
||||
|
||||
@@ -950,7 +950,7 @@ Expected: 代码已推送到远程仓库
|
||||
|
||||
## 相关文件
|
||||
|
||||
- 设计文档:`docs/plans/2026-02-27-project-management-page-redesign.md`
|
||||
- 设计文档:`docs/plans/fullstack/2026-02-27-project-management-page-redesign.md`
|
||||
- 原型图:`doc/创建项目功能/ScreenShot_2026-02-27_111611_994.png`
|
||||
- 主组件:`ruoyi-ui/src/views/ccdiProject/index.vue`
|
||||
- 搜索组件:`ruoyi-ui/src/views/ccdiProject/components/SearchBar.vue`
|
||||
@@ -482,7 +482,7 @@ Expected:
|
||||
## Task 9: 最终提交和文档更新
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/plans/2026-02-27-project-status-counts-fix-design.md`
|
||||
- Modify: `docs/design/2026-02-27-project-status-counts-fix-design.md`
|
||||
|
||||
**Step 1: 更新设计文档状态**
|
||||
|
||||
@@ -511,7 +511,7 @@ Expected:
|
||||
**Step 3: 提交文档更新**
|
||||
|
||||
```bash
|
||||
git add docs/plans/2026-02-27-project-status-counts-fix-design.md
|
||||
git add docs/design/2026-02-27-project-status-counts-fix-design.md
|
||||
git commit -m "docs: 更新项目状态统计修复设计文档状态为已完成"
|
||||
```
|
||||
|
||||
@@ -573,6 +573,6 @@ git push origin dev
|
||||
|
||||
## 相关文档
|
||||
|
||||
- 设计文档: `docs/plans/2026-02-27-project-status-counts-fix-design.md`
|
||||
- 设计文档: `docs/design/2026-02-27-project-status-counts-fix-design.md`
|
||||
- 若依框架文档: 项目根目录的 `CLAUDE.md`
|
||||
- MyBatis Plus 文档: https://baomidou.com/
|
||||
@@ -1124,7 +1124,7 @@ cp db_config.conf.template db_config.conf
|
||||
- 实际配置: `db_config.conf`
|
||||
- 表结构文件: `doc/database/backup/ccdi_structure.sql`
|
||||
- 数据文件: `doc/database/backup/ccdi_data.sql`
|
||||
- 设计文档: `docs/plans/2026-02-28-database-migration-design.md`
|
||||
- 设计文档: `docs/design/2026-02-28-database-migration-design.md`
|
||||
```
|
||||
|
||||
**Step 2: 提交操作指南**
|
||||
@@ -648,7 +648,7 @@ git commit -m "feat: 添加获取Token响应DTO"
|
||||
|
||||
**步骤 1: 参考设计文档创建各个DTO类**
|
||||
|
||||
根据 `docs/plans/2026-03-02-lsfx-integration-design.md` 中的DTO设计,创建剩余的请求和响应对象。每个DTO都使用 `@Data` 注解,字段根据接口文档定义。
|
||||
根据 `docs/design/2026-03-02-lsfx-integration-design.md` 中的DTO设计,创建剩余的请求和响应对象。每个DTO都使用 `@Data` 注解,字段根据接口文档定义。
|
||||
|
||||
**步骤 2: 提交更改**
|
||||
|
||||
@@ -1041,7 +1041,7 @@ git log --oneline
|
||||
## 参考资料
|
||||
|
||||
- 新版接口文档:`doc/对接流水分析/兰溪-流水分析对接-新版.md`
|
||||
- 设计文档:`docs/plans/2026-03-02-lsfx-integration-design.md`
|
||||
- 设计文档:`docs/design/2026-03-02-lsfx-integration-design.md`
|
||||
- 若依框架规范:`CLAUDE.md`
|
||||
|
||||
---
|
||||
@@ -955,6 +955,6 @@ git push origin dev
|
||||
|
||||
## 文档参考
|
||||
|
||||
- 设计文档: `docs/plans/2026-03-04-project-detail-navigation-menu-design.md`
|
||||
- 设计文档: `docs/design/2026-03-04-project-detail-navigation-menu-design.md`
|
||||
- Element UI Menu 文档: https://element.eleme.cn/#/zh-CN/component/menu
|
||||
- Vue 动态组件: https://cn.vuejs.org/v2/guide/components.html#动态组件
|
||||
@@ -314,7 +314,7 @@ git commit -m "feat(lsfx-mock): 添加银行流水审计字段到 mock 响应
|
||||
## Task 4: 更新文档(可选)
|
||||
|
||||
**Files:**
|
||||
- Update: `docs/plans/2026-03-05-bank-statement-audit-fields-design.md`(已存在)
|
||||
- Update: `docs/design/2026-03-05-bank-statement-audit-fields-design.md`(已存在)
|
||||
|
||||
**Step 1: 验证设计文档完整性**
|
||||
|
||||
@@ -366,7 +366,7 @@ git commit -m "docs: 更新银行流水接口文档,补充审计字段说明"
|
||||
|
||||
## 参考资料
|
||||
|
||||
- 设计文档: `docs/plans/2026-03-05-bank-statement-audit-fields-design.md`
|
||||
- 设计文档: `docs/design/2026-03-05-bank-statement-audit-fields-design.md`
|
||||
- 实体类: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/entity/CcdiBankStatement.java`
|
||||
- 项目规范: `CLAUDE.md`
|
||||
- 外部平台接口文档 6.5 节
|
||||
@@ -252,6 +252,6 @@ git commit -m "fix: 补充银行流水接口 uploadSequnceNumber 字段接收和
|
||||
|
||||
## 参考资料
|
||||
|
||||
- 设计文档:`docs/plans/2026-03-05-bank-statement-field-design.md`
|
||||
- 设计文档:`docs/design/2026-03-05-bank-statement-field-design.md`
|
||||
- 字段映射文档:`assets/对接流水分析/ccdi_bank_statement.md`
|
||||
- 接口文档:`assets/对接流水分析/兰溪-流水分析对接-新版.md`
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
**技术栈:** Spring Boot 3.5.8 + MyBatis Plus 3.0.5 + Vue 2.6.12 + Element UI 2.15.14
|
||||
|
||||
**设计文档:** `docs/plans/2026-03-06-model-param-config-optimization-design.md`
|
||||
**设计文档:** `docs/design/2026-03-06-model-param-config-optimization-design.md`
|
||||
|
||||
---
|
||||
|
||||
@@ -675,7 +675,7 @@ mvn spring-boot:run
|
||||
**步骤 5: 提交测试记录**
|
||||
|
||||
```bash
|
||||
git add docs/test-records/
|
||||
git add docs/tests/records/
|
||||
git commit -m "test: 记录后端接口测试结果"
|
||||
```
|
||||
|
||||
@@ -1007,7 +1007,7 @@ npm run dev
|
||||
**步骤 4: 提交测试记录**
|
||||
|
||||
```bash
|
||||
git add docs/test-records/
|
||||
git add docs/tests/records/
|
||||
git commit -m "test: 记录全局配置页面测试结果"
|
||||
```
|
||||
|
||||
@@ -1270,7 +1270,7 @@ git commit -m "feat: 重构项目内模型参数配置页面"
|
||||
**步骤 4: 提交测试记录**
|
||||
|
||||
```bash
|
||||
git add docs/test-records/
|
||||
git add docs/tests/records/
|
||||
git commit -m "test: 记录项目配置页面测试结果"
|
||||
```
|
||||
|
||||
@@ -1295,7 +1295,7 @@ git commit -m "test: 记录项目配置页面测试结果"
|
||||
**步骤 3: 提交测试记录**
|
||||
|
||||
```bash
|
||||
git add docs/test-records/
|
||||
git add docs/tests/records/
|
||||
git commit -m "test: 完成端到端功能测试"
|
||||
```
|
||||
|
||||
@@ -1319,7 +1319,7 @@ git commit -m "test: 完成端到端功能测试"
|
||||
**步骤 4: 提交测试记录**
|
||||
|
||||
```bash
|
||||
git add docs/test-records/
|
||||
git add docs/tests/records/
|
||||
git commit -m "test: 完成性能测试"
|
||||
```
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
**技术栈:** Spring Boot 3.5.8 + MyBatis Plus 3.0.5 + Vue 2.6.12 + Element UI 2.15.14
|
||||
|
||||
**设计文档:** `docs/plans/2026-03-06-model-param-config-optimization-design.md`
|
||||
**设计文档:** `docs/design/2026-03-06-model-param-config-optimization-design.md`
|
||||
|
||||
---
|
||||
|
||||
@@ -683,7 +683,7 @@ mvn spring-boot:run
|
||||
|
||||
记录测试结果并提交(如果需要):
|
||||
```bash
|
||||
git add docs/test-records/
|
||||
git add docs/tests/records/
|
||||
git commit -m "test: 记录后端接口测试结果"
|
||||
```
|
||||
|
||||
@@ -301,4 +301,4 @@ npm run build:prod
|
||||
- `ruoyi-ui/src/settings.js` - 默认配置文件(本次修改)
|
||||
- `ruoyi-ui/src/store/modules/settings.js` - Vuex 状态管理(无需修改)
|
||||
- `ruoyi-ui/src/layout/components/Settings/index.vue` - 设置界面(无需修改)
|
||||
- `docs/plans/2026-03-06-theme-light-default-design.md` - 设计文档
|
||||
- `docs/design/2026-03-06-theme-light-default-design.md` - 设计文档
|
||||
@@ -308,8 +308,8 @@ git commit -m "fix(ccdi-project): cleanup partial bank statements on upload fail
|
||||
### Task 4: 回归验证并整理交付
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/plans/2026-03-09-file-upload-parse-success-after-bank-statement-design.md`
|
||||
- Modify: `docs/plans/2026-03-09-file-upload-parse-success-after-bank-statement.md`
|
||||
- Modify: `docs/design/2026-03-09-file-upload-parse-success-after-bank-statement-design.md`
|
||||
- Modify: `docs/plans/fullstack/2026-03-09-file-upload-parse-success-after-bank-statement.md`
|
||||
|
||||
**Step 1: Run final verification**
|
||||
|
||||
@@ -343,7 +343,7 @@ Expected:
|
||||
**Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImpl.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiBankStatementMapper.java ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankStatementMapper.xml ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImplTest.java docs/plans/2026-03-09-file-upload-parse-success-after-bank-statement-design.md docs/plans/2026-03-09-file-upload-parse-success-after-bank-statement.md
|
||||
git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImpl.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiBankStatementMapper.java ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankStatementMapper.xml ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImplTest.java docs/design/2026-03-09-file-upload-parse-success-after-bank-statement-design.md docs/plans/fullstack/2026-03-09-file-upload-parse-success-after-bank-statement.md
|
||||
git commit -m "docs: finalize file upload parse success timing plan"
|
||||
```
|
||||
|
||||
@@ -196,7 +196,7 @@ feat(ui): 在项目详情页面添加配置类型标签显示
|
||||
- 添加 getConfigTypeLabel 和 getConfigTypeStyle 方法
|
||||
- 纯前端实现,无需后端修改
|
||||
|
||||
Ref: docs/plans/2026-03-09-param-config-type-display-design.md
|
||||
Ref: docs/design/2026-03-09-param-config-type-display-design.md
|
||||
EOF
|
||||
)"
|
||||
```
|
||||
@@ -221,7 +221,7 @@ Date: [Date]
|
||||
- 添加 getConfigTypeLabel 和 getConfigTypeStyle 方法
|
||||
- 纯前端实现,无需后端修改
|
||||
|
||||
Ref: docs/plans/2026-03-09-param-config-type-display-design.md
|
||||
Ref: docs/design/2026-03-09-param-config-type-display-design.md
|
||||
|
||||
ruoyi-ui/src/views/ccdiProject/detail.vue | [lines changed]
|
||||
1 file changed, [stats]
|
||||
@@ -289,7 +289,7 @@ git reset --hard HEAD~1
|
||||
|
||||
## 相关文档
|
||||
|
||||
- 设计文档: `docs/plans/2026-03-09-param-config-type-display-design.md`
|
||||
- 设计文档: `docs/design/2026-03-09-param-config-type-display-design.md`
|
||||
- Element UI Tag 组件: https://element.eleme.cn/#/zh-CN/component/tag
|
||||
- 项目 CLAUDE.md: `CLAUDE.md`
|
||||
|
||||
@@ -0,0 +1,563 @@
|
||||
# Project Bank Statement Tagging Logging Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** 为项目流水标签后端补齐可排障、可审计的详细日志,覆盖手动重算、自动触发、项目互斥、规则执行、参数解析和补跑收尾链路。
|
||||
|
||||
**Architecture:** 继续沿用现有 `ccdi-project` 结构,在 Controller、上传服务、重算协调器、标签服务和参数解析器上直接补充统一格式日志,不引入新框架或新表。测试沿用现有 JUnit 5 + Mockito 基础,在现有测试类中通过 Logback `ListAppender` 捕获日志,验证关键分支会产生日志摘要且不破坏原行为。
|
||||
|
||||
**Tech Stack:** Java 21, Spring Boot 3, Lombok, SLF4J + Logback, JUnit 5, Mockito, Maven
|
||||
|
||||
---
|
||||
|
||||
## File Structure
|
||||
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiBankTagController.java`
|
||||
手动重算入口日志,记录 `projectId/modelCode/operator`。
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImpl.java`
|
||||
自动触发入口日志,记录批处理完成后的触发、跳过和提交结果。
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/ProjectBankTagRebuildCoordinator.java`
|
||||
项目级锁、互斥拒绝、`needRerun` 标记与补跑消费日志。
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImpl.java`
|
||||
任务生命周期、规则执行、结果清理和批量写入摘要日志。
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/BankTagRuleConfigResolver.java`
|
||||
规则参数来源、解析结果、缺失参数日志。
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiBankTagControllerTest.java`
|
||||
手动重算入口日志测试。
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImplTest.java`
|
||||
自动触发入口日志测试。
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/ProjectBankTagRebuildCoordinatorTest.java`
|
||||
协调器互斥和补跑日志测试。
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImplTest.java`
|
||||
任务成功、无命中、失败摘要日志测试。
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/BankTagRuleConfigResolverTest.java`
|
||||
参数解析成功和缺失日志测试。
|
||||
|
||||
### Task 1: 补齐入口层日志
|
||||
|
||||
**Files:**
|
||||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiBankTagController.java`
|
||||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImpl.java`
|
||||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiBankTagControllerTest.java`
|
||||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImplTest.java`
|
||||
|
||||
- [ ] **Step 1: Write the failing tests**
|
||||
|
||||
在控制器测试中新增手动重算入口日志断言,在上传服务测试中新增自动触发“跳过”和“提交”日志断言。优先复用现有 Logback `ListAppender` 方案。
|
||||
|
||||
```java
|
||||
@Test
|
||||
void rebuild_shouldLogManualRebuildRequest() {
|
||||
CcdiBankTagRebuildDTO dto = new CcdiBankTagRebuildDTO();
|
||||
dto.setProjectId(40L);
|
||||
dto.setModelCode("LARGE_TRANSACTION");
|
||||
|
||||
Logger logger = (Logger) LoggerFactory.getLogger(CcdiBankTagController.class);
|
||||
ListAppender<ILoggingEvent> appender = new ListAppender<>();
|
||||
appender.start();
|
||||
logger.addAppender(appender);
|
||||
|
||||
when(bankTagService.submitRebuild(dto, "admin")).thenReturn("标签重算任务已提交");
|
||||
|
||||
try (MockedStatic<SecurityUtils> mocked = mockStatic(SecurityUtils.class)) {
|
||||
mocked.when(SecurityUtils::getUsername).thenReturn("admin");
|
||||
controller.rebuild(dto);
|
||||
assertTrue(appender.list.stream().map(ILoggingEvent::getFormattedMessage)
|
||||
.anyMatch(message -> message.contains("收到手动重算请求")
|
||||
&& message.contains("projectId=40")
|
||||
&& message.contains("modelCode=LARGE_TRANSACTION")
|
||||
&& message.contains("operator=admin")));
|
||||
} finally {
|
||||
logger.detachAppender(appender);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void handleTagRebuildAfterBatchCompletion_shouldLogSkipWhenAllRecordsFailed() {
|
||||
Logger logger = (Logger) LoggerFactory.getLogger(CcdiFileUploadServiceImpl.class);
|
||||
ListAppender<ILoggingEvent> appender = new ListAppender<>();
|
||||
appender.start();
|
||||
logger.addAppender(appender);
|
||||
|
||||
try {
|
||||
ReflectionTestUtils.invokeMethod(
|
||||
service,
|
||||
"handleTagRebuildAfterBatchCompletion",
|
||||
PROJECT_ID,
|
||||
TriggerType.AUTO_BATCH_UPLOAD,
|
||||
Boolean.FALSE
|
||||
);
|
||||
|
||||
verify(bankTagService, never()).submitAutoRebuild(any(), any());
|
||||
assertTrue(appender.list.stream().map(ILoggingEvent::getFormattedMessage)
|
||||
.anyMatch(message -> message.contains("跳过自动重算")
|
||||
&& message.contains("projectId=100")
|
||||
&& message.contains("AUTO_BATCH_UPLOAD")));
|
||||
} finally {
|
||||
logger.detachAppender(appender);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Run tests to verify they fail**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -am -Dtest=CcdiBankTagControllerTest#rebuild_shouldLogManualRebuildRequest,CcdiFileUploadServiceImplTest#handleTagRebuildAfterBatchCompletion_shouldLogSkipWhenAllRecordsFailed
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `FAIL`
|
||||
- 原因是控制器和上传服务尚未输出对应日志
|
||||
|
||||
- [ ] **Step 3: Write minimal implementation**
|
||||
|
||||
在入口层补日志,保持统一字段格式:
|
||||
|
||||
```java
|
||||
log.info("【流水标签】收到手动重算请求: projectId={}, modelCode={}, operator={}",
|
||||
dto.getProjectId(), dto.getModelCode(), operator);
|
||||
```
|
||||
|
||||
```java
|
||||
log.info("【流水标签】批处理完成,准备触发自动重算: projectId={}, triggerType={}, anySuccess={}",
|
||||
projectId, triggerType, anySuccess);
|
||||
if (!Boolean.TRUE.equals(anySuccess)) {
|
||||
log.warn("【流水标签】跳过自动重算: projectId={}, triggerType={}, reason=all_records_failed",
|
||||
projectId, triggerType);
|
||||
return;
|
||||
}
|
||||
bankTagService.submitAutoRebuild(projectId, triggerType);
|
||||
```
|
||||
|
||||
- [ ] **Step 4: Run tests to verify they pass**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -am -Dtest=CcdiBankTagControllerTest#rebuild_shouldLogManualRebuildRequest,CcdiFileUploadServiceImplTest#handleTagRebuildAfterBatchCompletion_shouldLogSkipWhenAllRecordsFailed
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `PASS`
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiBankTagController.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImpl.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiBankTagControllerTest.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImplTest.java
|
||||
git commit -m "test: 补充流水标签入口日志"
|
||||
```
|
||||
|
||||
### Task 2: 补齐协调器互斥与补跑日志
|
||||
|
||||
**Files:**
|
||||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/ProjectBankTagRebuildCoordinator.java`
|
||||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/ProjectBankTagRebuildCoordinatorTest.java`
|
||||
|
||||
- [ ] **Step 1: Write the failing tests**
|
||||
|
||||
在现有协调器测试基础上增加日志捕获,覆盖“手动被拒绝”和“自动标记补跑”两个分支。
|
||||
|
||||
```java
|
||||
@Test
|
||||
void submitManual_shouldLogRejectWhenProjectAlreadyRunning() {
|
||||
CcdiBankTagTask runningTask = new CcdiBankTagTask();
|
||||
runningTask.setId(1L);
|
||||
runningTask.setProjectId(40L);
|
||||
runningTask.setStatus("RUNNING");
|
||||
when(taskMapper.selectRunningTaskByProjectId(40L)).thenReturn(runningTask);
|
||||
|
||||
Logger logger = (Logger) LoggerFactory.getLogger(ProjectBankTagRebuildCoordinator.class);
|
||||
ListAppender<ILoggingEvent> appender = new ListAppender<>();
|
||||
appender.start();
|
||||
logger.addAppender(appender);
|
||||
|
||||
try {
|
||||
assertThrows(ServiceException.class, () -> coordinator.submitManual(40L, null, "admin"));
|
||||
assertTrue(appender.list.stream().map(ILoggingEvent::getFormattedMessage)
|
||||
.anyMatch(message -> message.contains("拒绝手动重算")
|
||||
&& message.contains("projectId=40")
|
||||
&& message.contains("operator=admin")));
|
||||
} finally {
|
||||
logger.detachAppender(appender);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void submitAuto_shouldLogNeedRerunWhenProjectAlreadyRunning() {
|
||||
CcdiBankTagTask runningTask = new CcdiBankTagTask();
|
||||
runningTask.setId(1L);
|
||||
runningTask.setProjectId(40L);
|
||||
runningTask.setStatus("RUNNING");
|
||||
runningTask.setNeedRerun(0);
|
||||
when(taskMapper.selectRunningTaskByProjectId(40L)).thenReturn(runningTask);
|
||||
|
||||
Logger logger = (Logger) LoggerFactory.getLogger(ProjectBankTagRebuildCoordinator.class);
|
||||
ListAppender<ILoggingEvent> appender = new ListAppender<>();
|
||||
appender.start();
|
||||
logger.addAppender(appender);
|
||||
|
||||
try {
|
||||
coordinator.submitAuto(40L, TriggerType.AUTO_BATCH_UPLOAD);
|
||||
assertTrue(appender.list.stream().map(ILoggingEvent::getFormattedMessage)
|
||||
.anyMatch(message -> message.contains("已标记完成后补跑")
|
||||
&& message.contains("runningTaskId=1")
|
||||
&& message.contains("AUTO_BATCH_UPLOAD")));
|
||||
} finally {
|
||||
logger.detachAppender(appender);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Run tests to verify they fail**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -am -Dtest=ProjectBankTagRebuildCoordinatorTest#submitManual_shouldLogRejectWhenProjectAlreadyRunning+submitAuto_shouldLogNeedRerunWhenProjectAlreadyRunning
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `FAIL`
|
||||
- 原因是协调器尚未输出拒绝和补跑日志
|
||||
|
||||
- [ ] **Step 3: Write minimal implementation**
|
||||
|
||||
在协调器中补 `info/warn` 日志,至少覆盖:
|
||||
|
||||
```java
|
||||
log.info("【流水标签】手动重算开始排队: projectId={}, modelCode={}, operator={}", projectId, modelCode, operator);
|
||||
log.warn("【流水标签】项目已有运行中任务,拒绝手动重算: projectId={}, modelCode={}, operator={}", projectId, modelCode, operator);
|
||||
log.warn("【流水标签】项目正在重算,已标记完成后补跑: projectId={}, runningTaskId={}, triggerType={}", projectId, runningTask.getId(), triggerType);
|
||||
log.info("【流水标签】获取项目重算锁成功: projectId={}", projectId);
|
||||
log.info("【流水标签】释放项目重算锁: projectId={}", projectId);
|
||||
```
|
||||
|
||||
如实现过程中发现 `taskId` 为空分支,日志允许保留空值,但不要省略字段。
|
||||
|
||||
- [ ] **Step 4: Run tests to verify they pass**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -am -Dtest=ProjectBankTagRebuildCoordinatorTest#submitManual_shouldLogRejectWhenProjectAlreadyRunning+submitAuto_shouldLogNeedRerunWhenProjectAlreadyRunning
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `PASS`
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/ProjectBankTagRebuildCoordinator.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/ProjectBankTagRebuildCoordinatorTest.java
|
||||
git commit -m "test: 补充流水标签协调器日志"
|
||||
```
|
||||
|
||||
### Task 3: 补齐任务级与规则级执行日志
|
||||
|
||||
**Files:**
|
||||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImpl.java`
|
||||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImplTest.java`
|
||||
|
||||
- [ ] **Step 1: Write the failing tests**
|
||||
|
||||
新增两个测试,分别覆盖成功摘要和失败摘要。复用同步执行器 `Runnable::run`,避免并发影响日志顺序。
|
||||
|
||||
```java
|
||||
@Test
|
||||
void rebuildProject_shouldLogTaskLifecycleAndRuleSummary() {
|
||||
ReflectionTestUtils.setField(service, "tagRuleExecutor", (Executor) Runnable::run);
|
||||
|
||||
CcdiBankTagRule rule = new CcdiBankTagRule();
|
||||
rule.setModelCode("LARGE_TRANSACTION");
|
||||
rule.setModelName("大额交易");
|
||||
rule.setRuleCode("HOUSE_OR_CAR_EXPENSE");
|
||||
rule.setRuleName("房车消费支出交易");
|
||||
rule.setResultType("STATEMENT");
|
||||
|
||||
BankTagRuleExecutionConfig config = new BankTagRuleExecutionConfig();
|
||||
config.setProjectId(40L);
|
||||
config.setRuleMeta(rule);
|
||||
|
||||
BankTagStatementHitVO hit = new BankTagStatementHitVO();
|
||||
hit.setBankStatementId(10L);
|
||||
hit.setGroupId(40);
|
||||
hit.setLogId(40001);
|
||||
hit.setReasonDetail("命中房车消费支出");
|
||||
|
||||
doAnswer(invocation -> {
|
||||
CcdiBankTagTask task = invocation.getArgument(0);
|
||||
task.setId(88L);
|
||||
return 1;
|
||||
}).when(taskMapper).insertTask(any(CcdiBankTagTask.class));
|
||||
|
||||
when(ruleMapper.selectEnabledRules(null)).thenReturn(List.of(rule));
|
||||
when(configResolver.resolve(40L, rule)).thenReturn(config);
|
||||
when(analysisMapper.selectHouseOrCarExpenseStatements(40L)).thenReturn(List.of(hit));
|
||||
|
||||
Logger logger = (Logger) LoggerFactory.getLogger(CcdiBankTagServiceImpl.class);
|
||||
ListAppender<ILoggingEvent> appender = new ListAppender<>();
|
||||
appender.start();
|
||||
logger.addAppender(appender);
|
||||
|
||||
try {
|
||||
service.rebuildProject(40L, null, "admin", TriggerType.MANUAL);
|
||||
assertTrue(appender.list.stream().map(ILoggingEvent::getFormattedMessage)
|
||||
.anyMatch(message -> message.contains("任务创建成功")
|
||||
&& message.contains("taskId=88")
|
||||
&& message.contains("projectId=40")));
|
||||
assertTrue(appender.list.stream().map(ILoggingEvent::getFormattedMessage)
|
||||
.anyMatch(message -> message.contains("规则执行完成")
|
||||
&& message.contains("ruleCode=HOUSE_OR_CAR_EXPENSE")
|
||||
&& message.contains("hitCount=1")));
|
||||
} finally {
|
||||
logger.detachAppender(appender);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void rebuildProject_shouldLogFailureSummaryWhenRuleExecutionFails() {
|
||||
ReflectionTestUtils.setField(service, "tagRuleExecutor", (Executor) Runnable::run);
|
||||
|
||||
CcdiBankTagRule rule = new CcdiBankTagRule();
|
||||
rule.setModelCode("LARGE_TRANSACTION");
|
||||
rule.setRuleCode("HOUSE_OR_CAR_EXPENSE");
|
||||
rule.setResultType("STATEMENT");
|
||||
|
||||
doAnswer(invocation -> {
|
||||
CcdiBankTagTask task = invocation.getArgument(0);
|
||||
task.setId(89L);
|
||||
return 1;
|
||||
}).when(taskMapper).insertTask(any(CcdiBankTagTask.class));
|
||||
|
||||
when(ruleMapper.selectEnabledRules(null)).thenReturn(List.of(rule));
|
||||
when(configResolver.resolve(40L, rule)).thenThrow(new RuntimeException("threshold missing"));
|
||||
|
||||
Logger logger = (Logger) LoggerFactory.getLogger(CcdiBankTagServiceImpl.class);
|
||||
ListAppender<ILoggingEvent> appender = new ListAppender<>();
|
||||
appender.start();
|
||||
logger.addAppender(appender);
|
||||
|
||||
try {
|
||||
assertThrows(RuntimeException.class, () -> service.rebuildProject(40L, null, "admin", TriggerType.MANUAL));
|
||||
assertTrue(appender.list.stream().map(ILoggingEvent::getFormattedMessage)
|
||||
.anyMatch(message -> message.contains("任务执行失败")
|
||||
&& message.contains("taskId=89")
|
||||
&& message.contains("threshold missing")));
|
||||
} finally {
|
||||
logger.detachAppender(appender);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Run tests to verify they fail**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -am -Dtest=CcdiBankTagServiceImplTest#rebuildProject_shouldLogTaskLifecycleAndRuleSummary,CcdiBankTagServiceImplTest#rebuildProject_shouldLogFailureSummaryWhenRuleExecutionFails
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `FAIL`
|
||||
- 原因是标签服务尚未输出任务和规则摘要日志
|
||||
|
||||
- [ ] **Step 3: Write minimal implementation**
|
||||
|
||||
在标签服务中补统一摘要日志,并尽量把时间统计放在方法内部完成:
|
||||
|
||||
```java
|
||||
log.info("【流水标签】任务创建成功: taskId={}, projectId={}, modelCode={}, triggerType={}, operator={}",
|
||||
task.getId(), projectId, modelCode, triggerType, operator);
|
||||
log.info("【流水标签】加载启用规则完成: taskId={}, projectId={}, modelCode={}, ruleCount={}",
|
||||
task.getId(), projectId, modelCode, rules.size());
|
||||
log.info("【流水标签】开始清理历史结果: taskId={}, projectId={}, modelCode={}",
|
||||
task.getId(), projectId, modelCode);
|
||||
log.info("【流水标签】规则开始执行: taskId={}, projectId={}, ruleCode={}, resultType={}",
|
||||
taskId, projectId, rule.getRuleCode(), rule.getResultType());
|
||||
log.debug("【流水标签】规则执行参数: taskId={}, ruleCode={}, thresholds={}", taskId, rule.getRuleCode(), config.getThresholdValues());
|
||||
log.info("【流水标签】规则执行完成: taskId={}, projectId={}, ruleCode={}, hitCount={}, costMs={}",
|
||||
taskId, projectId, rule.getRuleCode(), results.size(), costMs);
|
||||
log.error("【流水标签】任务执行失败: taskId={}, projectId={}, modelCode={}, triggerType={}, error={}",
|
||||
task.getId(), projectId, modelCode, triggerType, ex.getMessage(), ex);
|
||||
```
|
||||
|
||||
如果实现过程中发现 `executeRule(...)` 缺少 `taskId` 上下文,可按最小改动为私有方法补一个 `taskId` 参数,不要引入全局上下文对象。
|
||||
|
||||
- [ ] **Step 4: Run tests to verify they pass**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -am -Dtest=CcdiBankTagServiceImplTest#rebuildProject_shouldLogTaskLifecycleAndRuleSummary,CcdiBankTagServiceImplTest#rebuildProject_shouldLogFailureSummaryWhenRuleExecutionFails
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `PASS`
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImpl.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImplTest.java
|
||||
git commit -m "test: 补充流水标签执行日志"
|
||||
```
|
||||
|
||||
### Task 4: 补齐规则参数解析日志
|
||||
|
||||
**Files:**
|
||||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/BankTagRuleConfigResolver.java`
|
||||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/BankTagRuleConfigResolverTest.java`
|
||||
|
||||
- [ ] **Step 1: Write the failing tests**
|
||||
|
||||
新增一个日志测试,验证解析成功时会记录参数来源,参数缺失时会记录缺失编码。
|
||||
|
||||
```java
|
||||
@Test
|
||||
void resolve_shouldLogThresholdSourceAndMissingParams() {
|
||||
CcdiProject project = new CcdiProject();
|
||||
project.setProjectId(40L);
|
||||
project.setConfigType("default");
|
||||
when(projectMapper.selectById(40L)).thenReturn(project);
|
||||
when(modelParamMapper.selectByProjectAndModel(0L, "LARGE_TRANSACTION")).thenReturn(List.of(
|
||||
buildParam("LARGE_CASH_DEPOSIT", "50000")
|
||||
));
|
||||
|
||||
CcdiBankTagRule ruleMeta = new CcdiBankTagRule();
|
||||
ruleMeta.setModelCode("LARGE_TRANSACTION");
|
||||
ruleMeta.setRuleCode("FREQUENT_CASH_DEPOSIT");
|
||||
|
||||
Logger logger = (Logger) LoggerFactory.getLogger(BankTagRuleConfigResolver.class);
|
||||
ListAppender<ILoggingEvent> appender = new ListAppender<>();
|
||||
appender.start();
|
||||
logger.addAppender(appender);
|
||||
|
||||
try {
|
||||
resolver.resolve(40L, ruleMeta);
|
||||
assertTrue(appender.list.stream().map(ILoggingEvent::getFormattedMessage)
|
||||
.anyMatch(message -> message.contains("解析规则参数")
|
||||
&& message.contains("effectiveProjectId=0")
|
||||
&& message.contains("FREQUENT_CASH_DEPOSIT")));
|
||||
assertTrue(appender.list.stream().map(ILoggingEvent::getFormattedMessage)
|
||||
.anyMatch(message -> message.contains("规则参数缺失")
|
||||
&& message.contains("FREQUENT_CASH_DEPOSIT")));
|
||||
} finally {
|
||||
logger.detachAppender(appender);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Run test to verify it fails**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -am -Dtest=BankTagRuleConfigResolverTest#resolve_shouldLogThresholdSourceAndMissingParams
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `FAIL`
|
||||
- 原因是参数解析器尚未输出来源和缺失日志
|
||||
|
||||
- [ ] **Step 3: Write minimal implementation**
|
||||
|
||||
在参数解析器中补日志,并显式计算缺失参数集合:
|
||||
|
||||
```java
|
||||
log.info("【流水标签】解析规则参数: projectId={}, effectiveProjectId={}, ruleCode={}, requiredParams={}",
|
||||
projectId, effectiveProjectId, ruleMeta.getRuleCode(), requiredParamCodes);
|
||||
log.debug("【流水标签】规则参数解析结果: projectId={}, ruleCode={}, thresholdValues={}",
|
||||
projectId, ruleMeta.getRuleCode(), thresholdValues);
|
||||
if (!missingParamCodes.isEmpty()) {
|
||||
log.warn("【流水标签】规则参数缺失: projectId={}, ruleCode={}, missingParams={}",
|
||||
projectId, ruleMeta.getRuleCode(), missingParamCodes);
|
||||
}
|
||||
```
|
||||
|
||||
不要在这里改变现有返回语义;本任务只补日志,不新增抛错逻辑。
|
||||
|
||||
- [ ] **Step 4: Run test to verify it passes**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -am -Dtest=BankTagRuleConfigResolverTest#resolve_shouldLogThresholdSourceAndMissingParams
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `PASS`
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/BankTagRuleConfigResolver.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/BankTagRuleConfigResolverTest.java
|
||||
git commit -m "test: 补充流水标签参数解析日志"
|
||||
```
|
||||
|
||||
### Task 5: 跑回归并整理最终提交
|
||||
|
||||
**Files:**
|
||||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiBankTagController.java`
|
||||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImpl.java`
|
||||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/ProjectBankTagRebuildCoordinator.java`
|
||||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImpl.java`
|
||||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/BankTagRuleConfigResolver.java`
|
||||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiBankTagControllerTest.java`
|
||||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImplTest.java`
|
||||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/ProjectBankTagRebuildCoordinatorTest.java`
|
||||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImplTest.java`
|
||||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/BankTagRuleConfigResolverTest.java`
|
||||
|
||||
- [ ] **Step 1: Run focused regression tests**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -am -Dtest=CcdiBankTagControllerTest,CcdiFileUploadServiceImplTest,ProjectBankTagRebuildCoordinatorTest,CcdiBankTagServiceImplTest,BankTagRuleConfigResolverTest
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `PASS`
|
||||
- 所有日志相关测试通过
|
||||
|
||||
- [ ] **Step 2: Run module compile to catch logging import or signature regressions**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mvn clean compile -pl ccdi-project -am -DskipTests
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `BUILD SUCCESS`
|
||||
|
||||
- [ ] **Step 3: Review final diff**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
git diff -- ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiBankTagController.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImpl.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/ProjectBankTagRebuildCoordinator.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImpl.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/BankTagRuleConfigResolver.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiBankTagControllerTest.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImplTest.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/ProjectBankTagRebuildCoordinatorTest.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImplTest.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/BankTagRuleConfigResolverTest.java
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- 只包含本次日志相关改动
|
||||
- 没有引入敏感字段明文打印
|
||||
|
||||
- [ ] **Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiBankTagController.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImpl.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/ProjectBankTagRebuildCoordinator.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImpl.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/BankTagRuleConfigResolver.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiBankTagControllerTest.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImplTest.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/ProjectBankTagRebuildCoordinatorTest.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImplTest.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/BankTagRuleConfigResolverTest.java
|
||||
git commit -m "feat: 补充流水标签详细日志"
|
||||
```
|
||||
@@ -122,7 +122,7 @@ export function saveAllParams(data) {
|
||||
### 4. 测试记录
|
||||
|
||||
#### 4.1 全局配置页面测试
|
||||
**文件:** `docs/test-records/global-config-test.md`
|
||||
**文件:** `docs/tests/records/global-config-test.md`
|
||||
|
||||
**测试项:**
|
||||
- ✅ 页面显示正确
|
||||
@@ -131,7 +131,7 @@ export function saveAllParams(data) {
|
||||
- ✅ 错误处理正常
|
||||
|
||||
#### 4.2 项目配置页面测试
|
||||
**文件:** `docs/test-records/project-config-test.md`
|
||||
**文件:** `docs/tests/records/project-config-test.md`
|
||||
|
||||
**测试项:**
|
||||
- ✅ 使用默认配置项目测试通过
|
||||
@@ -140,7 +140,7 @@ export function saveAllParams(data) {
|
||||
- ✅ 配置继承逻辑正确
|
||||
|
||||
#### 4.3 端到端集成测试
|
||||
**文件:** `docs/test-records/e2e-test.md`
|
||||
**文件:** `docs/tests/records/e2e-test.md`
|
||||
|
||||
**测试项:**
|
||||
- ✅ 全局配置影响项目配置
|
||||
@@ -213,9 +213,9 @@ ae61ac3 feat(ui): 在API层添加批量查询和批量保存方法
|
||||
|
||||
### 新增文件
|
||||
```
|
||||
docs/test-records/e2e-test.md
|
||||
docs/test-records/global-config-test.md
|
||||
docs/test-records/project-config-test.md
|
||||
docs/tests/records/e2e-test.md
|
||||
docs/tests/records/global-config-test.md
|
||||
docs/tests/records/project-config-test.md
|
||||
```
|
||||
|
||||
### 修改文件
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user