diff --git a/docs/dev-log.md b/docs/dev-log.md index 5c69d25..d76a1b7 100644 --- a/docs/dev-log.md +++ b/docs/dev-log.md @@ -699,3 +699,39 @@ cd ~/devops/aiops - 注入 48 条真实测试数据(2 台主机 × 24 小时,含业务时段负载模式)用于可视化验证 **关键修复点**: GORM 的 `Scan()` 方法无法将 SQLite `strftime()` 返回的文本格式日期自动解析为 Go `time.Time`,必须用 `string` 接收后手动 `time.ParseInLocation()`。 + + +## 2026-06-15 16:10 自动推进 + +### 任务: 发布管理全栈完善 + +**背景**: ReleaseManager.tsx 存在多个前后端不匹配问题和功能缺失:环境枚举值不一致(前端 `development/production` vs 后端 `dev/prod`)、硬编码 mock 应用列表、字段名错误(`deployer` vs `author`)、操作无 toast 反馈、部署/回滚无确认框、详情弹窗缺失。 + +**修改文件**: + +- `backend/internal/api/handlers/pipeline.go` — 新增 `RejectRelease` handler(38行):仅 `pending` 状态可驳回,状态置为 `rejected`,非 pending 返回 400 +- `backend/internal/api/routes/routes.go` — 注册 `releases.POST("/:id/reject")` 路由 +- `frontend/src/services/api.ts` — 新增 `releaseApi.rejectRelease(id)` 方法 +- `frontend/src/components/deploy/ReleaseManager.tsx` — 完整重写(553→581行): + - 修复环境值:`development` → `dev`、`production` → `prod`(与后端 `binding:"oneof=dev test staging prod"` 一致) + - 移除硬编码 `applications` mock 数组,改为自由输入应用名称 + - 修复字段名:`release.deployer` → `release.author` + - 新增 toast 反馈:create/approve/reject/deploy/rollback 全部有 success/error 提示 + - 新增确认框:deploy/rollback 操作前弹 ConfirmProvider 确认 + - 新增发布详情弹窗(原缺失,Eye 按钮点击无效 → 现展示完整详情) + - 新增空状态(无发布记录时显示 PackageOpen 图标 + "暂无发布记录") + - 新增 `rejected` 状态徽章 + - 主题感知:`bg-slate-800` → `var(--dg-bg-secondary)` 全量替换 + - 原生 `