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:
pmc 2026-05-07 16:47:39 +08:00
parent 4637998420
commit 946e7a1a22
2 changed files with 48 additions and 8 deletions

View File

@ -8,6 +8,25 @@ qy-lty-admin 是「洛天依Luotianyi智能陪伴产品」生态的 **Web
**运营者能基于真实角色权限,安全且无障碍地管理后端各业务模块的数据**——`lib/permissions.ts` 中的 RBAC 矩阵 + `qy_lty` 后端服务端校验必须始终配套生效。一旦权限校验链路断裂(前端伪造角色或后端漏校验),整个管理后台就从"运营工具"退化为"任意操作面板",其余所有 UI / UX 优化都无法弥补这种安全风险。
## 本期 Milestonev1.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-07brownfield 文档化初始化完成(已映射现有系统,尚无进行中 milestone — 使用 /gsd-new-milestone 启动下一周期*
*最后更新2026-05-07启动 Milestone v1.0「通用凭据槽位前端集成」(联动 qy_lty 后端 v1.0*

View File

@ -1,6 +1,6 @@
# Project State — 洛天依应用管理后台qy-lty-admin
**最后更新**: 2026-05-07brownfield 文档化初始化
**最后更新**: 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 通用凭据槽位前端集成 |
## 下一步