85 lines
3.4 KiB
Markdown
85 lines
3.4 KiB
Markdown
# 项目状态变更日志实施计划
|
||
|
||
> **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:** 统一在 `CcdiProjectServiceImpl` 中收口项目状态日志。项目创建时记录初始状态日志,后续通过 `updateProjectStatus` 处理的状态变更统一记录“变更前/变更后/操作人”日志,并在状态未变化时避免重复输出。
|
||
|
||
**Tech Stack:** Java 21、Spring Boot 3、MyBatis Plus、SLF4J/Logback、JUnit 5、Mockito
|
||
|
||
---
|
||
|
||
### Task 1: 明确状态变更入口
|
||
|
||
**Files:**
|
||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectServiceImpl.java`
|
||
- Check: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImpl.java`
|
||
|
||
- [ ] **Step 1: 盘点项目状态变更入口**
|
||
|
||
确认项目状态仅在项目创建默认置为“进行中”以及 `updateProjectStatus` 方法中发生持久化变更。
|
||
|
||
- [ ] **Step 2: 确认日志收口位置**
|
||
|
||
确保打标流程等调用方继续复用 `updateProjectStatus`,不在调用方分散新增重复日志。
|
||
|
||
### Task 2: 先补失败测试
|
||
|
||
**Files:**
|
||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectServiceImplTest.java`
|
||
|
||
- [ ] **Step 1: 为项目创建补日志测试**
|
||
|
||
编写测试验证创建项目成功后输出初始状态日志,日志内容包含 `projectId`、`projectName`、状态和值。
|
||
|
||
- [ ] **Step 2: 为状态切换补日志测试**
|
||
|
||
编写测试验证 `updateProjectStatus` 在状态真实变化时输出状态变更日志,并包含旧状态、新状态、操作人。
|
||
|
||
- [ ] **Step 3: 为重复状态写入补日志约束测试**
|
||
|
||
编写测试验证当目标状态与当前状态一致时,不重复输出状态变更日志。
|
||
|
||
- [ ] **Step 4: 运行单测确认先失败**
|
||
|
||
Run: `mvn -pl ccdi-project -Dtest=CcdiProjectServiceImplTest test`
|
||
|
||
Expected: 新增日志相关断言失败,证明测试覆盖到新增行为。
|
||
|
||
### Task 3: 实现统一日志
|
||
|
||
**Files:**
|
||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectServiceImpl.java`
|
||
|
||
- [ ] **Step 1: 为服务类补日志能力**
|
||
|
||
引入 `@Slf4j` 或等效 Logger,保持与模块现有日志风格一致。
|
||
|
||
- [ ] **Step 2: 在项目创建后记录初始状态**
|
||
|
||
在项目持久化成功后输出“项目状态初始化”日志。
|
||
|
||
- [ ] **Step 3: 在状态变更时记录统一日志**
|
||
|
||
在 `updateProjectStatus` 中记录“项目状态变更”日志,打印项目标识、项目名称、旧状态、新状态、操作人。
|
||
|
||
- [ ] **Step 4: 避免无效重复日志**
|
||
|
||
当旧状态与新状态一致时,不输出状态变更日志,但保留现有更新时间写入行为。
|
||
|
||
### Task 4: 补实施记录并验证
|
||
|
||
**Files:**
|
||
- Create: `docs/reports/implementation/2026-03-18-项目状态变更日志实施记录.md`
|
||
|
||
- [ ] **Step 1: 记录本次实施内容**
|
||
|
||
补充实施记录,说明状态日志覆盖范围、代码修改点和测试结果。
|
||
|
||
- [ ] **Step 2: 运行最终验证**
|
||
|
||
Run: `mvn -pl ccdi-project -Dtest=CcdiProjectServiceImplTest,CcdiBankTagServiceImplTest test`
|
||
|
||
Expected: 相关测试全部通过,确认状态日志不影响现有打标状态流转。
|