3.3 KiB
3.3 KiB
Goal:执行 7-76(AI 主体 · Web PAT · 鉴权硬化 · 用户级密码箱)
创建:2026-07-26
状态:P0–P1b DONE(P2 deferred;§12 部分 e2e 残留见设计稿 12.5)
设计 SSOT:design/07-ai/process/7-76-ai-principal-web-pat-and-auth-hardening-v1.md
触发:用户要求「设置 goal,开始执行 7-76」
Goal 文案(可贴任务板)
在 7-76 边界下,分阶段交付:开发对标生产鉴权、Web PAT 机机访问、AI 主体隔离面、一人一密码箱 + share-to-AI;本迭代先完成 P0(撤登录页快速登录后门并校准测试/文档/smoke 登录路径)。
成功标准(整条 7-76)
/auth无测试快速登录、无测试密码 DOM;开发与生产登录形态一致。- 外部 AI 可凭 Web PAT 在授权范围内完成笔记/树 CRUD,默认不接 Pi。
mnote-e2e为 AI 主体:私有笔记/知识库/vault;普通用户不可进。- 密码箱按用户隔离;share-to-AI 可验;admin 代签可审计。
- cookie / PAT / mnv1 / mnext1 分职。
阶段看板
| 阶段 | 内容 | 状态 |
|---|---|---|
| P0 | 删除快速登录;测试/文档/smoke 改标准登录或 API | done |
| P0.5 | api_access_tokens + Bearer 中间件 + /user/ai PAT UI(可复显) |
done |
| P1 | 用户级 vault root + owner + share-to-AI | done(复用既有一人一箱路径 + share-to-AI;补 Web 签发 vault token) |
| P1b | Admin 代签 PAT/vault token、AI 主体运营、审计 | done |
| P2 | exchange 短会话、break-glass、reveal 模式开关等 | deferred(非本轮阻塞) |
P0 Checklist
AuthPage移除快速登录按钮、TEST_ACCOUNT_*DOM、quickLogin 脚本分支gatewaySSR 测试:断言 不存在 快速登录与data-test-passwordscripts/tree-shell-smoke-helpers.jsUI 登录改为表单标准登录- 各 smoke 中「点击测试账号快速登录」改为表单/API(共享 helper)
AGENTS.md/TESTING_REFERENCE.md去掉「优先快速登录」cargo test -p mnote-web定向 auth 相关通过
当前切片
- 已完成: P0 → P1b 主交付(P2 延后)
- 实现要点: 见下节「交付清单」
交付清单(本轮代码)
- P0 撤
/auth快速登录;smoke 标准登录 helper - Web PAT:
/api/ai-tokens*签发/列表/复显/吊销;sealed 可复显 - Bearer
mnpat1.*中间件;PAT 忽略 cookie;scope 接线 notes/tree/tools /user/ai与/admin/aiUI:API 访问令牌 + 密码箱 AI 访问- vault agent token:
POST /api/vault/ai/token(本人/admin 代签 + 审计) - AI 主体:
mnote-e2e注册role=ai_service;用户列表principalKind - 密码箱 share-to-AI / 用户 vault 路径沿用 12-x 既有实现
变更记录
| 日期 | 说明 |
|---|---|
| 2026-07-26 | 建 goal;完成 P0–P1b 实现与定向单测。 |
| 2026-07-26 | 方案 A 账户分离:新建 mnote-admin(ops);liaibo/mnote-e2e 去 admin;mnote-e2e → ai_service;MNOTE_ADMIN_USER_IDS + access-policy.admins 仅 admin;Pi Lab smoke admin seed 改 withAdminBrowserSession。 |
| 2026-07-26 | 对照代码核验;设计稿 §12 勾选已完成项;修 test-handle-qa.js 残留快速登录。 |