diff --git a/qy-lty-admin/.planning/PROJECT.md b/qy-lty-admin/.planning/PROJECT.md index c209e38..8fd14bc 100644 --- a/qy-lty-admin/.planning/PROJECT.md +++ b/qy-lty-admin/.planning/PROJECT.md @@ -8,6 +8,25 @@ qy-lty-admin 是「洛天依(Luotianyi)智能陪伴产品」生态的 **Web **运营者能基于真实角色权限,安全且无障碍地管理后端各业务模块的数据**——`lib/permissions.ts` 中的 RBAC 矩阵 + `qy_lty` 后端服务端校验必须始终配套生效。一旦权限校验链路断裂(前端伪造角色或后端漏校验),整个管理后台就从"运营工具"退化为"任意操作面板",其余所有 UI / UX 优化都无法弥补这种安全风险。 +## 本期 Milestone:v1.0 通用凭据槽位前端集成 + +**启动日期**:2026-05-07 +**联动**:与 qy_lty 后端 Milestone v1.0「通用凭据槽位」并行启动;前端集成测试需等后端 Phase 2(管理端读写接口)落地后才能跑通端到端。 +**目标**:在 `/ai-model` 大模型管理页面增加 APP ID + Access Token 录入/编辑窗口,调用后端 `/api/v1/admin/credential-slot/` 完成读写。 + +**目标能力**: +- API 客户端层:`lib/api/credential-slot.ts` 封装 GET/PUT + 类型 + 后端→前端适配器(沿用 `mapBackend*` 模式) +- 页面入口:在 `/ai-model` 页面合适位置加入"凭据槽位"按钮/卡片,点击打开编辑对话框 +- 编辑对话框:`app_id` 明文预填、`access_token` 仅显示末 4 位脱敏掩码并提示"如需更新请重新输入"、`updated_at` 只读显示;表单 React Hook Form + Zod 校验非空;提交触发 PUT +- RBAC 收敛:在 `lib/permissions.ts` 新增 `credential-slot` 模块 key,分配给"超级管理员" + "AI模型管理员"两个角色;`/ai-model` 页面入口与对话框入口都用 `hasPermission()` 收敛 +- 提交反馈:成功 Sonner toast,失败走 `lib/api/error-handler.ts` 统一错误处理 + +**关键约束**: +- API 契约由后端 v1.0 锁定(GET 返回脱敏 + PUT 全字段覆写),前端**不要**在响应中把脱敏掩码当作真值再回写 PUT;改为"留空保留旧值 / 重新输入才覆写"的表单语义,避免回写假值 +- Token 体系不变:调用 `/api/v1/admin/credential-slot/` 走 admin token(与现有 `apiClient` 一致) +- 复用现有适配器约定:后端字段 snake_case,前端类型 camelCase(如 `updated_at` → `updatedAt`),通过 adapter 转换 +- 修改记录:每个 phase 的代码改动**必须**追加到 `docs/修改记录.md` 顶部;与 qy_lty 同期 commit 互相引用条目 + ## 需求清单 ### 已交付 @@ -74,7 +93,13 @@ qy-lty-admin 是「洛天依(Luotianyi)智能陪伴产品」生态的 **Web -(暂无 — 本次 `/gsd-new-project` 仅做 brownfield 文档化。下次新增功能 / 子系统时使用 `/gsd-new-milestone` 启动新 milestone,把当时要交付的能力加到这一段,然后 `/gsd-plan-phase` 拆 phase。) +**Milestone v1.0 通用凭据槽位前端集成**(启动 2026-05-07): + +- [ ] **CRED-FE-01** API 客户端 `lib/api/credential-slot.ts`:导出 `getCredentialSlot()` / `updateCredentialSlot(payload)`,含响应适配器 `mapBackendCredentialSlot()`、共享类型定义 `CredentialSlot` +- [ ] **CRED-FE-02** RBAC 模块声明:`lib/permissions.ts` 加入 `credential-slot` 模块 key;`PERMISSION_MATRIX` 中分配给"超级管理员"和"AI模型管理员" +- [ ] **CRED-FE-03** `/ai-model` 页面入口:在合适位置渲染"凭据槽位"按钮/卡片,仅当 `hasPermission('credential-slot')` 为 true 时可见 +- [ ] **CRED-FE-04** 编辑对话框组件 `components/ai-model/CredentialSlotDialog.tsx`:基于 `components/ui/dialog.tsx`,React Hook Form + Zod 校验(app_id / access_token 非空);预填态 `access_token` 显示脱敏掩码 + 提示重输;提交触发 PUT;空字段语义"留空保留旧值"避免回写脱敏假值 +- [ ] **CRED-FE-05** 提交反馈:成功 Sonner toast(`useToast`)+ 失败走 `lib/api/error-handler.ts` 统一 toast 错误信息;对话框成功后自动关闭并刷新预填数据 ### 范围外 @@ -160,4 +185,4 @@ qy-lty-admin 是「洛天依(Luotianyi)智能陪伴产品」生态的 **Web 4. 用当前状态更新「背景上下文」 --- -*最后更新:2026-05-07,brownfield 文档化初始化完成(已映射现有系统,尚无进行中 milestone — 使用 /gsd-new-milestone 启动下一周期)* +*最后更新:2026-05-07,启动 Milestone v1.0「通用凭据槽位前端集成」(联动 qy_lty 后端 v1.0)* diff --git a/qy-lty-admin/.planning/STATE.md b/qy-lty-admin/.planning/STATE.md index 3aa9fbc..4051166 100644 --- a/qy-lty-admin/.planning/STATE.md +++ b/qy-lty-admin/.planning/STATE.md @@ -1,6 +1,6 @@ # Project State — 洛天依应用管理后台(qy-lty-admin) -**最后更新**: 2026-05-07(brownfield 文档化初始化) +**最后更新**: 2026-05-07(启动 Milestone v1.0 通用凭据槽位前端集成) ## 项目引用 @@ -8,18 +8,33 @@ **核心价值**:运营者能基于真实角色权限,安全且无障碍地管理后端各业务模块——`lib/permissions.ts` 的客户端 RBAC + qy_lty 后端服务端校验必须**配套生效**才完整。 -**当前重点**:暂无 Active milestone — 待 `/gsd-new-milestone` 启动下一周期 +**当前重点**:Milestone v1.0 通用凭据槽位前端集成 — `/ai-model` 页面新增凭据录入对话框,调用 qy_lty 后端 v1.0 的 `/api/v1/admin/credential-slot/` GET+PUT + +## 当前位置 + +``` +Phase: 未启动(定义需求中) +Plan: — +Status: 需求定义中(roadmap 待生成) +Last activity: 2026-05-07 — 启动 Milestone v1.0 +``` + +## 联动 milestone + +- **qy_lty 后端 v1.0「通用凭据槽位」**:3 个 phase(数据层 → 管理端读写 → 客户端读取+脱敏) + - 前端 PUT 路径依赖后端 Phase 2(管理端读写接口)落地 + - 前端集成测试需等后端至少跑完 Phase 2 ## 状态 | 项目 | 状态 | |------|------| | 代码库映射 | ✅ `.planning/codebase/` 7 文档(commit `a85b6a7`) | -| PROJECT.md | ✅ 已交付段已从 codebase 推断填充,进行中段空 | -| REQUIREMENTS.md | ✅ 已交付段已拆 REQ-ID,进行中段空,可追溯性待 phase 回填 | -| 路线图 | ⏸️ 暂未生成(无进行中需求 → 无 phase 可分) | +| PROJECT.md | ✅ 已加入 Milestone v1.0 段 + Active 5 项 | +| REQUIREMENTS.md | 🟡 Active 段待回填(CRED-FE-01~05),可追溯性待 phase 回填 | +| 路线图 | ⏸️ 待 gsd-roadmapper 生成 | | 当前 phase | — | -| 当前 milestone | — | +| 当前 milestone | v1.0 通用凭据槽位前端集成 | ## 下一步