AI Agent 接入指南
让 AI 按确定契约完成 App 改造
AI Agent 接入指南
本指南约束使用 AI 改造业务 App 时的执行边界。Agent 必须先读取 /llms-full.txt、/openapi.json、/auth-manifest.schema.json 和目标仓库现有授权实现,不得根据旧版本记忆猜测 API。
执行顺序
- 识别技术栈、服务端入口、数据库、部署方式和测试命令。
- 搜索旧登录、密码、session、用户主键、引用用户的业务外键、角色、permission、数据范围和管理员 UI。
- 选择接入档案:没有需要保留的生产账号和身份数据时使用
greenfield;已有生产用户、角色、业务外键或旧 Session 时使用legacy-migration。 - 把内容分成“统一身份/公共上下文”和“App 本地业务授权”,记录边界。
- 创建 Manifest 2.0,
authorizationMode=application_owned,只声明requiredContext。 - 安装 SDK 0.3,接入服务端 login、callback、logout、PKCE、HttpOnly Cookie 和
requireAppAccess。 - greenfield:建立新数据库和本地成员/角色;管理员从受控 Auth 目录选择身份并原子分配角色。
- legacy-migration:生成迁移计划 1.0、inventory 和私有 mapping ledger;production 切换前完成存量账号预绑定。
- 使用
session.user.id命中iwish_auth_user_id;legacy-migration 必须保留原本地用户主键和业务外键。 - 保留或重建 App 本地角色、permission、数据范围、管理 UI 和本地审计。
- 仅在业务需要时消费
employee、departments和clientAssignments。 - 在独立 staging 完成对应档案的真实 SSO 和负向验收;只有 legacy-migration 执行旧 Session 失效、回滚和一刀切。
禁止事项
- 不创建 Auth Proxy、长期双登录或第二套内部员工密码。
- 不直接接飞书、Supabase Auth 或 Auth 数据库。
- 不自行解析 opaque App Session,不信任
x-user-id或x-role。 - 不在 Auth Manifest 中创建业务 roles/permissions。
- 不调用已返回 410 的
requirePermission、checkPermission或远程业务权限 API。 - 不删除 App 本地角色、字段、记录归属和数据范围授权。
- 不用 Auth User ID 替换项目负责人、创建人、审批人等业务外键。
- 不在运行期按邮箱、姓名或手机号自动关联存量账号。
- 不为未映射存量用户自动创建一个没有历史数据的新账号。
- 不要求管理员手工复制 Auth User ID。
- 不在第一次登录时自动授予 admin/viewer 或创建无角色成员。
- 不为 greenfield 伪造 migration plan、mapping ledger 或历史账号。
- 不用
clientAssignments代替 App 本地 permission 或高风险业务授权。 - 不把 Client Secret、Service Token、Webhook Secret 或 production 数据写入文档和提交。
交付格式
Agent 输出必须包含:接入档案、改动文件、身份边界、本地成员模型、本地角色模型、服务端保护点、上下文消费点、环境变量名、测试结果、已知风险和回滚步骤。只有 legacy-migration 需要业务外键清单、迁移计划、映射计数和冲突清单位置;greenfield 必须明确说明这些工件不适用。Manifest 和适用的迁移计划必须可由当前 Schema/CLI 直接验证。逐用户映射、PII 和 Secret 不得出现在输出正文或 Git。
身份:IWish Auth App Session 0.3
关联:session.user.id -> app_members.iwish_auth_user_id
授权:App 本地角色 + permission + 数据范围
上下文:employee / departments / clientAssignments(按需)
档案:greenfield 或 legacy-migration
迁移:仅 legacy-migration 执行 staging -> 真实验收 -> production 一刀切
自检问题
- 所有身份恢复是否来自 IWish Auth session introspection?
- 浏览器是否能读取任何 Secret 或 opaque session?
- 无本地成员、停用或无角色是否默认 403?
- 每个高风险服务端动作是否执行本地 permission 和数据范围检查?
- assignment 存在但本地权限不足是否仍拒绝?
- assignment 为空是否不会自动全量授权?
- 飞书离职后即使本地角色仍存在是否不能访问?
- 所有 API 和字段是否存在于 OpenAPI、Schema 或 SDK 导出?
- 原本地用户主键和所有业务外键是否保持不变?
- production 切换前冲突和待处理账号是否为 0?
- 未映射用户是否明确失败,而不是创建空账号?
- greenfield 是否通过受控目录创建成员,而不是手工 User ID 或首次登录自动授权?
- 当前 App 是否确实需要迁移工件,还是应该使用 greenfield?
任何答案不明确时,Agent 应停止发布并补充测试,不能通过放宽 CORS、callback、Cookie Domain 或错误降级来绕过。