docs(qy-lty-admin): 定义 Milestone v1.0 需求(CRED-FE-01~05)
通用凭据槽位前端集成 5 项 Active 需求: - CRED-FE-01 API 客户端 lib/api/credential-slot.ts(GET/PUT + adapter + 类型) - CRED-FE-02 RBAC 模块声明(lib/permissions.ts 加 credential-slot key,分配给超级管理员 + AI模型管理员) - CRED-FE-03 /ai-model 页面入口(按钮/卡片,按权限可见) - CRED-FE-04 编辑对话框(RHF + Zod + 留空保留旧值语义,避免回写脱敏假值) - CRED-FE-05 提交反馈(Sonner toast 成功 + error-handler 失败处理) 候选优先级段保留为下一周期参考。
This commit is contained in:
parent
946e7a1a22
commit
01634eea9a
@ -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「通用凭据槽位前端集成」*
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user