Files
tokens-reef/docs/reviews/2026-04-20-code-review-task-list.md
pham ed642e8769
Some checks failed
CI / test (push) Has been cancelled
CI / golangci-lint (push) Has been cancelled
Security Scan / backend-security (push) Has been cancelled
Security Scan / frontend-security (push) Has been cancelled
fix logger and redeem admin review findings
2026-04-20 11:24:36 +08:00

107 lines
4.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.
# 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`
验收标准: 四项全部通过