docs(02-02): docs/修改记录.md 顶部追加 Phase 2 条目
- 在 line 26 锚点注释之后、Phase 1 条目之前插入 [2026-05-08] Phase 2 条目 - 完整 7 字段结构:元信息行(配套服务端 Phase + 覆盖前端需求 CRED-FE-02/03)+ 文件路径 + 修改类型 + 修改内容 + 修改原因 + 跨项目联动 + 服务端联动 - 跨项目联动字段逐字与 02-CONTEXT.md 锁定一致(无新跨项目契约 / 后端 46d72b8 互引仍有效 / Phase 3 再评估) - 纯追加 +32 行,0 删除,line 1-26 头部完全不变 - Phase 1 及更早历史条目逐字未动
This commit is contained in:
parent
15e725a32f
commit
2be1f1d505
@ -25,6 +25,38 @@
|
|||||||
|
|
||||||
<!-- 新的修改记录添加在此处下方,最新的在最前面 -->
|
<!-- 新的修改记录添加在此处下方,最新的在最前面 -->
|
||||||
|
|
||||||
|
### [2026-05-08] Phase 2(前端)RBAC 收敛 + AI 模型页凭据槽位入口
|
||||||
|
|
||||||
|
配套服务端 Phase:本 phase **不**触达服务端;与服务端 v1.0 Phase 2「管理端读写接口」commit `46d72b8` 既有契约保持兼容(不引入新契约)
|
||||||
|
覆盖前端需求:CRED-FE-02、CRED-FE-03
|
||||||
|
|
||||||
|
- **文件路径**:
|
||||||
|
- `lib/permissions.ts`(修改)
|
||||||
|
- `app/ai-model/page.tsx`(修改)
|
||||||
|
- **修改类型**: 修改(前端 RBAC 矩阵扩展 + 页面入口控件 + 占位 Dialog;纯前端,无新依赖、不动 lockfile)
|
||||||
|
- **修改内容**:
|
||||||
|
- `lib/permissions.ts`:
|
||||||
|
- `PermissionModule` union 末尾追加 `"credential-slot"`,扩为 14 项
|
||||||
|
- `PERMISSION_MATRIX["超级管理员"]` 数组末尾追加 `"credential-slot"`
|
||||||
|
- `PERMISSION_MATRIX["AI模型管理员"]` 数组末尾追加 `"credential-slot"`
|
||||||
|
- 其他 4 个角色(内容管理员 / 卡牌管理员 / 查看者 / 管理员)数组**逐字不变**
|
||||||
|
- `getModuleFromPath` 函数体完全不动(凭据槽位是 `/ai-model` 子能力,不占独立路由)
|
||||||
|
- 顶部「权限矩阵对照表」注释新增一行「凭据槽位」与代码同步
|
||||||
|
- `app/ai-model/page.tsx`:
|
||||||
|
- 文件 line 1 顶部新增 `"use client"` 指令,从 Server Component 转为 Client Component
|
||||||
|
- 新增 import:`useState` / `useEffect`(react)+ `Dialog` / `DialogContent` / `DialogDescription` / `DialogHeader` / `DialogTitle`(@/components/ui/dialog)+ `KeyRound`(lucide-react)+ `hasPermission`(@/lib/permissions)
|
||||||
|
- 函数体顶部新增 `mounted` + `isCredentialDialogOpen` 两个 `useState` + 1 个 `useEffect` 设 `mounted` 为 true(复用 `components/sidebar.tsx` mounted 守卫模式避免 SSR 水合不匹配)
|
||||||
|
- `DashboardHeader` 内部用 `<div className="flex items-center gap-2">` 包两个 Button:保留原有「添加新模型」+ 新增 `{mounted && hasPermission("credential-slot") && <Button variant="outline" onClick={() => setIsCredentialDialogOpen(true)}><KeyRound /> 凭据槽位</Button>}`
|
||||||
|
- `</Tabs>` 之后、`</DashboardShell>` 之前新增 controlled mode `<Dialog open={isCredentialDialogOpen} onOpenChange={setIsCredentialDialogOpen}>`,内含 `DialogTitle`「通用凭据槽位」+ `DialogDescription`「对话框真实内容由 Phase 3 落地」(占位,无表单)
|
||||||
|
- Tabs / TabsContent / Card / 卡片内的现有按钮等所有内容(line 18-441)逐字不变
|
||||||
|
- **修改原因**:
|
||||||
|
- 推进 Milestone v1.0「通用凭据槽位前端集成」第二步:让授权运营立即看到入口(已就位的 UX 收敛),未授权角色彻底看不到(DOM 中完全不存在的安全前置)
|
||||||
|
- 沿用 RBAC 单一来源原则(`lib/permissions.ts:hasPermission`)+ shadcn Dialog primitive,不重复造轮子
|
||||||
|
- 为 Phase 3 真实表单(CRED-FE-04 + CRED-FE-05)预留 Dialog 挂载点;Dialog 用 controlled mode 让 Phase 3 可在打开瞬间触发 `getCredentialSlot()`
|
||||||
|
- 注意:前端 RBAC 仅是 UI 礼貌,最终安全闭环依赖后端 `/v1/admin/credential-slot/` 的 admin 鉴权(PERM-06 / `qy_lty` 后端);本 phase 不消化该闭环
|
||||||
|
- **跨项目联动**: 无 — Phase 2 是纯前端 RBAC + UI 入口落地,不引入新跨项目契约;后端 commit 46d72b8 已建立的互引仍有效;Phase 3 引入实质 PUT 调用时若涉及新契约再评估
|
||||||
|
- **服务端联动**: 同上「跨项目联动」字段;后端 commit `46d72b8` 已建立互引闭环,本 phase 无需再次互引
|
||||||
|
|
||||||
### [2026-05-08] Phase 1(前端)凭据槽位 API 客户端
|
### [2026-05-08] Phase 1(前端)凭据槽位 API 客户端
|
||||||
|
|
||||||
配套服务端 Phase:[../qy_lty/.planning/phases/02-admin-rest/](../../qy_lty/.planning/phases/02-admin-rest/)(已落地,commit 46d72b8)
|
配套服务端 Phase:[../qy_lty/.planning/phases/02-admin-rest/](../../qy_lty/.planning/phases/02-admin-rest/)(已落地,commit 46d72b8)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user