Files
ccdi/docs/plans/backend/2026-03-18-项目状态变更日志实施计划.md
2026-03-18 17:03:23 +08:00

85 lines
3.4 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.
# 项目状态变更日志实施计划
> **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: 相关测试全部通过,确认状态日志不影响现有打标状态流转。