107 lines
4.4 KiB
Markdown
107 lines
4.4 KiB
Markdown
# 2026-04-20 Code Review Task List
|
||
|
||
## P0
|
||
|
||
- 修复 Windows 下 `logger.Sync()` 对 `stdout/stderr` pipe 的阻塞问题
|
||
- 为 `internal/pkg/logger` 补充 Windows 兼容回归测试,确保 `go test ./...` 可稳定通过
|
||
- 重新执行后端全量测试,确认 `internal/pkg/logger` 修复后无新增失败
|
||
|
||
## P1
|
||
|
||
- 修复管理端“删除全部未使用兑换码”只处理前 1000 条的问题
|
||
- 明确该功能应采用分页循环删除、后端专用批量接口,还是服务端单点清理命令
|
||
- 为该流程补充前端测试,覆盖“超过 1000 条未使用兑换码”场景
|
||
|
||
- 修复 `GenerateRedeemCodes` 的非事务性问题
|
||
- 明确幂等语义: 部分成功后应回滚、应返回已生成结果,还是应禁止重放生成
|
||
- 为兑换码生成补充失败注入测试,覆盖“部分创建成功 + 重试”路径
|
||
|
||
- 调整 `BatchDeleteRedeemCodes` 返回语义
|
||
- 明确接口是否应该失败即整体失败,或返回 `deleted` / `failed_ids` / `errors`
|
||
- 同步更新 handler、前端提示文案和现有测试断言
|
||
|
||
## P2
|
||
|
||
- 修复前端 `typecheck` 失败
|
||
- 处理 [SoraAdminView.vue](/D:/project/sub2api-merge/frontend/src/views/admin/SoraAdminView.vue) 中无效的 `Icon` 名称,或将停用页面排除出编译链
|
||
|
||
- 修复前端 `lint:check` 失败
|
||
- 处理 [AppSidebar.spec.ts](/D:/project/sub2api-merge/frontend/src/components/layout/__tests__/AppSidebar.spec.ts) 中的 `no-regex-spaces` 问题
|
||
- 清理当前 lint warning,避免门禁长期失真
|
||
|
||
## P3
|
||
|
||
- 盘点仍保留 mock 返回的管理接口
|
||
- 对每个接口确定策略: 实现、废弃、隐藏入口,或从路由移除
|
||
- 为仍需保留的接口补充契约测试,避免占位实现长期留在主分支
|
||
|
||
## Recommended Execution Order
|
||
|
||
1. 先修复 `internal/pkg/logger`,恢复后端全量测试可信度
|
||
2. 再修复兑换码两个批量操作问题,避免管理端误操作
|
||
3. 然后恢复前端 `typecheck` 和 `lint`
|
||
4. 最后清理低优先级占位接口
|
||
|
||
## Assignable Work Packages
|
||
|
||
### Backend
|
||
|
||
- `BE-LOGGER-001`
|
||
目标: 修复 Windows 下 `logger.Sync()` 对 pipe `stdout/stderr` 的阻塞
|
||
交付物: `logger.go` 修复、回归测试、`go test ./internal/pkg/logger` 通过
|
||
验收标准: `TestInit_DualOutput` 和 `TestInit_CallerShouldPointToCallsite` 不再超时
|
||
|
||
- `BE-REDEEM-001`
|
||
目标: 将兑换码生成从“逐条创建 + 部分成功可重试”改为可证明安全的语义
|
||
交付物: 服务层实现调整、失败注入测试、幂等路径验证
|
||
验收标准: 不存在“部分成功后同 key 重试超量生成”的路径
|
||
|
||
- `BE-REDEEM-002`
|
||
目标: 重构批量删除返回语义,明确成功、失败和跳过项
|
||
交付物: 服务层返回结构、handler 响应调整、测试同步
|
||
验收标准: 部分失败时 API 不再伪装为“完全成功”
|
||
|
||
### Frontend
|
||
|
||
- `FE-REDEEM-001`
|
||
目标: 修复“删除全部未使用兑换码”只删前 1000 条的问题
|
||
交付物: `RedeemView.vue` 实现调整、视图测试
|
||
验收标准: 超过 1000 条未使用兑换码时仍能完整删除或明确失败
|
||
|
||
- `FE-REDEEM-002`
|
||
目标: 对齐新的批量删除 API 语义和用户提示
|
||
交付物: API 类型、页面提示、异常和部分成功文案
|
||
验收标准: 用户能看到准确的删除结果
|
||
|
||
- `FE-QUALITY-001`
|
||
目标: 恢复 `typecheck`
|
||
交付物: 修复无效 `Icon` 名称或将停用页移出编译链
|
||
验收标准: `npm run typecheck` 通过
|
||
|
||
- `FE-QUALITY-002`
|
||
目标: 恢复 `lint:check`
|
||
交付物: 修复 `AppSidebar.spec.ts` 正则问题并清理 warning
|
||
验收标准: `npm run lint:check` 通过
|
||
|
||
### Testing
|
||
|
||
- `TEST-BE-001`
|
||
目标: 为 logger Windows 行为建立稳定回归测试
|
||
交付物: 针对 `Sync()`、stdout/stderr pipe、caller 输出的测试
|
||
验收标准: 可在 Windows 环境稳定执行,不依赖 10 分钟超时
|
||
|
||
- `TEST-BE-002`
|
||
目标: 为兑换码批量生成/删除建立失败路径覆盖
|
||
交付物: 服务层和 handler 层测试
|
||
验收标准: 覆盖部分成功、失败回滚、结果透出
|
||
|
||
- `TEST-FE-001`
|
||
目标: 为 `RedeemView` 补足批量删除流程测试
|
||
交付物: 视图级测试,覆盖分页循环和部分失败提示
|
||
验收标准: 批量删除流程不再依赖人工回归
|
||
|
||
- `TEST-FULL-001`
|
||
目标: 恢复全链路质量门禁
|
||
交付物: 后端 `go test ./...`、前端 `npm run test:run`、`npm run typecheck`、`npm run lint:check`
|
||
验收标准: 四项全部通过
|