Files
ccdi/docs/plans/backend/2026-03-27-project-list-reanalyze-confirm-refresh-backend-implementation.md

201 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Project List Reanalyze Confirm Refresh Backend 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/tags/rebuild` 提交能力,以及重算完成后的既有结果刷新链路。实施上不新增 controller、service、mapper 或 SQL而是聚焦现有接口边界核对、关键单测回归和文档留痕避免误把纯前端需求扩展成后端补丁工程。
**Tech Stack:** Java 21, Spring Boot 3, JUnit 5, Maven, ripgrep, Markdown 文档
---
## 文件结构与职责
**新增文件**
- `docs/tests/records/2026-03-27-project-list-reanalyze-confirm-refresh-backend-verification.md`
记录本次后端边界核对、执行命令与回归结果。
- `docs/reports/implementation/2026-03-27-project-list-reanalyze-confirm-refresh-backend-record.md`
沉淀“后端无需改造”的实施结论与影响范围。
**核对文件**
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiBankTagController.java`
确认 `/ccdi/project/tags/rebuild` 入口继续复用。
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImpl.java`
确认手动重算后仍会触发结果刷新。
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/ProjectBankTagRebuildCoordinator.java`
确认同一项目重复提交保护仍由后端承接。
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/ICcdiProjectOverviewService.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/CcdiBankTagServiceRiskCountRefreshTest.java`
**参考文件**
- `docs/design/2026-03-27-project-list-reanalyze-confirm-refresh-design.md`
- `ruoyi-ui/src/views/ccdiProject/index.vue`
## Task 1: 核对后端边界仍完全满足本轮需求
**Files:**
- Review: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiBankTagController.java`
- Review: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImpl.java`
- Review: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/ProjectBankTagRebuildCoordinator.java`
- Review: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/ICcdiProjectOverviewService.java`
- [ ] **Step 1: 用检索命令确认关键链路位置**
Run:
```bash
rg -n "tags/rebuild|submitManual|rebuildProject|refreshOverviewEmployeeResults|当前项目标签正在重算中" ccdi-project/src/main/java
```
Expected:
- 能看到 controller 入口、手动提交协调器、项目重算主链路和风险人数刷新调用
- [ ] **Step 2: 人工确认本轮不需要新增后端能力**
核对结论需要覆盖:
```text
1. 重新分析的实际接口仍是 POST /ccdi/project/tags/rebuild
2. 重复提交保护仍由后端协调器负责
3. 重算完成后的风险人数刷新仍由现有服务链路负责
4. 本轮只新增前端确认交互,不需要后端新增“确认”语义接口
```
- [ ] **Step 3: 若边界不满足则停止,不要补丁式扩后端**
若发现异常:
- 不要新增“重新分析确认”专用接口
- 不要新增冗余的刷新人数接口
- 先回到设计文档重新确认需求边界
## Task 2: 运行关键回归,证明现有后端链路仍可复用
**Files:**
- 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/CcdiBankTagServiceRiskCountRefreshTest.java`
- [ ] **Step 1: 运行聚焦回归测试**
Run:
```bash
mvn test -pl ccdi-project -Dtest=ProjectBankTagRebuildCoordinatorTest,CcdiBankTagServiceRiskCountRefreshTest
```
Expected:
- `PASS`
- [ ] **Step 2: 如果失败,先判断是否与本轮前端交互需求无关**
处理原则:
- 若失败与既有后端链路本身无关,先记录现象,不要顺手改后端
- 若失败说明现有重算或刷新链路确有缺口,再回到设计阶段补后端方案
- [ ] **Step 3: 确认本轮无需后端源码改动**
Run:
```bash
git diff --name-only -- ccdi-project ruoyi-admin ruoyi-common ruoyi-framework ruoyi-system
```
Expected:
- 无输出
- 或仅出现经确认必须修正文档引用时涉及的文档文件,不应出现后端源码改动
## Task 3: 补后端验证记录与实施记录
**Files:**
- Create: `docs/tests/records/2026-03-27-project-list-reanalyze-confirm-refresh-backend-verification.md`
- Create: `docs/reports/implementation/2026-03-27-project-list-reanalyze-confirm-refresh-backend-record.md`
- [ ] **Step 1: 新增后端验证记录**
`docs/tests/records/2026-03-27-project-list-reanalyze-confirm-refresh-backend-verification.md` 记录:
```markdown
# 项目列表重新分析确认刷新后端验证记录
## 检查目标
- 确认项目标签重算接口与结果刷新链路已满足本轮需求
## 执行命令
- rg -n "tags/rebuild|submitManual|rebuildProject|refreshOverviewEmployeeResults|当前项目标签正在重算中" ccdi-project/src/main/java
- mvn test -pl ccdi-project -Dtest=ProjectBankTagRebuildCoordinatorTest,CcdiBankTagServiceRiskCountRefreshTest
## 验证结论
- 后端现有链路可直接复用
- 本轮无需新增接口、服务、SQL
```
- [ ] **Step 2: 新增后端实施记录**
`docs/reports/implementation/2026-03-27-project-list-reanalyze-confirm-refresh-backend-record.md` 记录:
```markdown
# 项目列表重新分析确认刷新后端实施记录
## 结论
- 本次需求仅新增前端确认交互
- 后端继续复用 /ccdi/project/tags/rebuild
- 项目重算完成后的风险人数刷新链路保持不变
- 后端源码与数据库均无需改动
## 核查范围
- CcdiBankTagController
- ProjectBankTagRebuildCoordinator
- CcdiBankTagServiceImpl
- ICcdiProjectOverviewService
## 验证
- rg 检索关键链路
- Maven 聚焦回归测试
```
- [ ] **Step 3: 暂存前确认仅新增记录文档**
Run:
```bash
git status --short
```
Expected:
- 仅出现本任务新增的后端验证记录和实施记录
- 若发现无关文件已暂存,先移出暂存区
- [ ] **Step 4: 提交后端记录文档**
Run:
```bash
git add docs/tests/records/2026-03-27-project-list-reanalyze-confirm-refresh-backend-verification.md docs/reports/implementation/2026-03-27-project-list-reanalyze-confirm-refresh-backend-record.md
git commit -m "补充项目列表重新分析后端验证记录"
```
Expected:
- 提交成功,且不包含无关源码文件
## Done When
- 已确认 `/ccdi/project/tags/rebuild` 与现有风险人数刷新链路足以支撑本轮需求
- 已通过聚焦回归测试证明无需补后端旁路能力
- 后端源码、SQL、数据库均未因本轮前端交互需求发生改动
- 已补齐后端验证记录和实施记录