Selaa lähdekoodia

docs(workhours): 归档重复与离职清理结果

malk 3 viikkoa sitten
vanhempi
commit
b343217817

+ 15 - 4
docs/superpowers/plans/2026-07-15-workhours-data-cleanup.md

@@ -8,6 +8,17 @@
 
 **Tech Stack:** Java 8, Spring Boot 2.1, JUnit 4, Mockito, DingTalk YiDa form APIs, Maven.
 
+## 2026-07-15 实际执行修订
+
+用户确认实际顺序调整为:隔离分支本地启动服务处理正式宜搭数据 → 更新文档归档 → 最后整理提交并部署。没有为了 dry-run 先部署生产服务。
+
+当前结果:
+
+- 重复记录删除 35 条,失败 0。
+- 离职日后记录删除 796 条,失败 0。
+- 删除后重复、离职后、未来日期三项 dry-run 的 `toDelete` 均为 0。
+- 两份业务文档已更新;最终生产部署仍待执行。
+
 ---
 
 ### Task 1: Deterministic Duplicate Resolver
@@ -335,7 +346,7 @@ Report target form, duplicate groups, duplicate delete count, offline delete cou
 - Modify after successful deletion: `/Users/malk/Desktop/Tech/claude/后端/阿科德斯/应填报工时月度计算.md`
 - Modify after successful deletion: `/Users/malk/Desktop/Tech/claude/临时/阿科德斯-应报工时修复-2026-07-15.md`
 
-- [ ] **Step 1: Delete valid-record duplicates after confirmation**
+- [x] **Step 1: Delete valid-record duplicates after confirmation**
 
 ```bash
 curl -sS 'http://127.0.0.1:9055/api/akds/workhours/cleanup-duplicates?dryRun=false'
@@ -343,7 +354,7 @@ curl -sS 'http://127.0.0.1:9055/api/akds/workhours/cleanup-duplicates?dryRun=fal
 
 Expected: `deleted == toDelete` and `fail == 0`.
 
-- [ ] **Step 2: Delete post-offline records**
+- [x] **Step 2: Delete post-offline records**
 
 ```bash
 curl -sS 'http://127.0.0.1:9055/api/akds/workhours/cleanup-after-offline?dryRun=false'
@@ -351,7 +362,7 @@ curl -sS 'http://127.0.0.1:9055/api/akds/workhours/cleanup-after-offline?dryRun=
 
 Expected: `deleted == toDelete` and `fail == 0`.
 
-- [ ] **Step 3: Re-run all read-only audits**
+- [x] **Step 3: Re-run all read-only audits**
 
 ```bash
 curl -sS 'http://127.0.0.1:9055/api/akds/workhours/cleanup-duplicates?dryRun=true'
@@ -361,7 +372,7 @@ curl -sS 'http://127.0.0.1:9055/api/akds/workhours/cleanup-future?dryRun=true'
 
 Expected: every response has `toDelete=0` and `fail=0`.
 
-- [ ] **Step 4: Update both workhours documents**
+- [x] **Step 4: Update both workhours documents**
 
 Record actual duplicate groups, duplicate deletions, offline deletions, verification results, commit IDs, and deployment state. Keep unmatched personnel and empty-source preservation rules explicit.
 

+ 12 - 2
docs/superpowers/specs/2026-07-15-workhours-data-cleanup-design.md

@@ -1,7 +1,7 @@
 # 应报工时重复与离职后数据清理设计
 
 > 日期:2026-07-15
-> 状态:设计已确认,等待 dry-run 精确统计与删除前二次确认
+> 状态:数据清理与删除后复查已完成,等待最终代码部署
 
 ## 目标
 
@@ -18,7 +18,7 @@
 - 人员档案的离职日期字段为 `dateField_mh8xhqc7`。
 - 写入前已有 `workDay > offlineDate` 过滤,离职日后不再新增应报工时。
 - 状态为离职但离职日期为空时,代码会整人防御跳过;当前数据不存在这种情况。
-- 线上离职清理 dry-run 扫描 43,851 条记录,识别 74 名有离职日期的员工、796 条离职日后记录。
+- 本地隔离服务连接正式宜搭执行 dry-run:扫描 43,851 条,识别 74 名有离职日期的员工、796 条离职日后记录。
 
 ## 重复记录判定
 
@@ -89,6 +89,16 @@ GET /workhours/cleanup-duplicates
 2. `/workhours/cleanup-after-offline?dryRun=true`,期望 `toDelete=0`。
 3. `/workhours/cleanup-future?dryRun=true`,期望 `toDelete=0`。
 
+## 实际执行结果
+
+- 重复数据:35 个重复组、70 条重复记录,按保留规则删除 35 条,失败 0。
+- 离职后数据:删除 796 条,失败 0;离职当天及之前记录保留。
+- 删除后现存 43,020 条,员工+日期唯一键 43,020 个。
+- 重复复查:`duplicateGroups=0`、`toDelete=0`、`skippedInvalidKey=0`。
+- 离职后复查:`toDelete=0`。
+- 未来日期复查:截止 2026-07-15,`toDelete=0`。
+- 本地服务完成后已停止;本次代码尚未部署到生产服务。
+
 ## 测试
 
 采用测试驱动实现,至少覆盖: