docs(qy-lty-admin): 启动 Milestone v1.0 通用凭据槽位前端集成
PROJECT.md 加入「本期 Milestone」段:在 /ai-model 页面集成 APP ID + Access Token 录入对话框,调用 qy_lty 后端 v1.0 锁定的 /api/v1/admin/credential-slot/ GET+PUT。 Active 段列出 CRED-FE-01~05(API 客户端 / RBAC / 入口 / 对话框 / 反馈)。 STATE.md 切换到 v1.0 状态,记录与后端 milestone 的联动依赖。 跨项目联动(互引):qy_lty 同期 commits ab3d728 / 8ae12ca / 4637998 启动后端 v1.0。
This commit is contained in:
parent
4637998420
commit
946e7a1a22
@ -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 通过 phase 推动这一段;移到 Validated 才算完成 -->
|
||||
|
||||
(暂无 — 本次 `/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)*
|
||||
|
||||
@ -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 通用凭据槽位前端集成 |
|
||||
|
||||
## 下一步
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user