diff --git a/qy-lty-admin/.planning/REQUIREMENTS.md b/qy-lty-admin/.planning/REQUIREMENTS.md index 506fbd4..d3a92f9 100644 --- a/qy-lty-admin/.planning/REQUIREMENTS.md +++ b/qy-lty-admin/.planning/REQUIREMENTS.md @@ -80,19 +80,22 @@ ## Active(当前 milestone 目标) -**(暂无)** +**Milestone v1.0:通用凭据槽位前端集成** +启动日期:2026-05-07 +联动:qy_lty 后端 Milestone v1.0(3 个 phase,API 契约已锁定) +目标:在 `/ai-model` 页面集成 APP ID + Access Token 录入/编辑窗口,调用后端管理接口完成读写。 -本次 `/gsd-new-project` 是 brownfield 文档化,没有指定新 milestone。 +### 通用凭据槽位前端集成(CRED-FE) -下一次启动新功能开发时,请用: +- [ ] **CRED-FE-01** API 客户端 `lib/api/credential-slot.ts`:导出 `getCredentialSlot()`、`updateCredentialSlot({ app_id, access_token })`;含响应适配器 `mapBackendCredentialSlot()`(snake_case → camelCase);共享类型 `CredentialSlot { appId, accessTokenMasked, updatedAt }`;从 `lib/api/index.ts` 导出 +- [ ] **CRED-FE-02** RBAC 模块声明:`lib/permissions.ts` 加入 `credential-slot` 模块 key(`PermissionModule` 类型扩充);`PERMISSION_MATRIX` 把该模块分配给"超级管理员"和"AI模型管理员"两个角色;`getModuleFromPath()` 不需要新映射(凭据槽位是内嵌于 `/ai-model` 的子能力,不占独立路由) +- [ ] **CRED-FE-03** `/ai-model` 页面入口:在合适位置(如页头工具栏 / Header 右侧)渲染"凭据槽位"按钮或卡片;仅当 `hasPermission('credential-slot')` 为 true 时可见;点击触发对话框打开 +- [ ] **CRED-FE-04** 编辑对话框组件 `components/ai-model/CredentialSlotDialog.tsx`:基于 `components/ui/dialog.tsx`;表单 React Hook Form + Zod 校验;预填态显示后端返回的 `app_id` 明文 + `access_token` 末 4 位掩码 + 不可改的 `updated_at`;表单语义为"留空保留旧值,重新输入才覆写"(避免把脱敏掩码当真值回写);提交触发 `updateCredentialSlot()`,仅提交用户实际输入的字段 +- [ ] **CRED-FE-05** 提交反馈:成功调用 `useToast()` 弹 Sonner 成功 toast 并自动关闭对话框、重新触发 GET 刷新预填;失败走 `lib/api/error-handler.ts` 统一映射后端错误并 toast 提示 -``` -/gsd-new-milestone -``` +### 候选优先级(已转移自 brownfield 文档化阶段,本期不消化) -GSD 会引导你确认 milestone 目标、把新需求加到本段(带 REQ-ID),然后 `/gsd-plan-phase` 拆 phase。 - -**候选优先级**(来自 CONCERNS.md 与项目活动信号,按风险/价值排序,仅供参考): +下面是从 CONCERNS.md 转过来的潜在 milestone 候选,本期 v1.0 不处理,留作下一周期参考: 1. **极高** 验证 qy_lty 后端是否对所有 `/api/v1/admin/*` 接口独立校验角色(PERM-06)— 否则当前 RBAC 仅是 UI 礼貌,是真实安全漏洞 2. **高** 移除 `lib/api/client.ts`、`lib/api/upload.ts` 等的 console.log/warn/error 调试残留(暴露 token 前缀) @@ -130,4 +133,4 @@ GSD 会引导你确认 milestone 目标、把新需求加到本段(带 REQ-ID --- -*Last updated: 2026-05-07 after brownfield documentation pass* +*Last updated: 2026-05-07 启动 Milestone v1.0「通用凭据槽位前端集成」*