# 给新应用Codex的通用接入任务

接入包3.1.0｜安全协议v3。先完整阅读HANDOFF.md和目标项目AGENTS.md。

## 先填写应用参数

| 参数 | 待确认值 |
|---|---|
| 业务名称/目标仓库 | REPLACE_PROJECT_NAME / REPLACE_REPOSITORY |
| APP_ID / CLIENT_ID | REPLACE_APP_ID / REPLACE_CLIENT_ID |
| 公开HTTPS基础URL | REPLACE_PUBLIC_BASE_URL |
| 精确OIDC回调 | REPLACE_REDIRECT_URI |
| 使用人员/部门、排除、有效期 | 负责人确认，默认空允许范围 |
| owner/developer | 平台本人显式分配 |
| 首次账号策略 | 受控预登记，或明确批准首次建普通账号 |
| 首次本地管理员 | 受控初始化指定可信sub，不自动提权 |
| 通知是否需要、事件、收件规则 | 负责人确认 |
| 发送方ID/允许链接/日额度 | 平台批准+owner本人开启 |
| 部署进程/会话存储/刷新锁 | 按实际后端确定 |
| 生产发布/真实消息测试授权 | 按目标项目已有授权和本次范围确认 |

## 实施任务

在本新应用实现联泰企业微信登录与所需业务通知。固定issuer=https://identity.unionam.com/identity、后台API=https://identity.unionam.com/identity/admin、tenantId=unionam。业务回调使用上表的本项目精确回调，不是中央企微回调；无需创建企微应用或索取企微Secret。

平台本人创建应用并批准上限后，以本APP_ID和最小scopes发起设备授权，展示链接/指纹/范围并等待本人确认。用本包CLI加密领取本应用Client Secret/Admission Key及独立会话密钥，写入私密配置并适配目标后端，禁止在聊天/前端/日志输出秘密。

员工登录采用浏览器顶层OIDC Authorization Code+PKCE S256，校验state/nonce/签名/issuer/audience/有效期/精确回调，scope=openid profile offline_access。不转发中央Cookie或用跨域iframe共享会话。建立可信(tenant,issuer,sub)与稳定本地用户关联；按负责人选择预登记或首次建最小权限普通账号，不能把首个登录者或平台允许成员自动设为业务管理员。

实现独立Cookie、加密持久AT/RT、2小时AT/登录起30天绝对RT、刷新轮换/同会话锁与多副本CAS，逐请求中心准入+本地角色/对象权限，退出撤销。目录过期、停用、撤权、关闭及依赖失败均拒绝，不放宽安全校验。

若需要通知，先由平台本人批准链接/额度，owner本人开启，用独立最长90天且绑定负责人角色快照的发送Key。业务事务持久outbox、可信sub、稳定eventId/确定性分批、租约worker、退避和逐人状态；submitted只表示企微受理，unknown不自动重发。消息链接不携带票据且点击后重新鉴权。未获得指定收件人/内容/次数授权，不发真实消息。

先完成独立本地工作、测试、配置差异、备份恢复/回退及可审查发布包；按目标项目已有权限完成部署。缺少本人授权/审批/秘密/真人验收时列明对应待办，不把下载包、模拟登录或Discovery通过写成上线完成。不要读中心私密配置/数据库、使用其他业务凭据或擅自调整企微/云后台。输出改动文件、参数/秘密引用、测试、部署和实际验收结果。


## 应用内成员与权限管理（本次要求）

同时阅读MEMBERSHIP-HANDOFF.md，安装membership-settings后端/页面/JS/CSS及新版identity-client，identity配置membership:true，在应用自身设置导航增加成员与权限入口。requireBusinessAdmin必须每次查询真实本地管理角色，中心仍检查本应用owner/platform和个人新鲜授权；不要以同名本地角色绕过中心。实现本人顶层扫码及明确membership:manage同意，10分钟失效后重新扫码，不用刷新令牌延长管理期。读写同一中心策略，版本/平台批准版本冲突不覆盖；不得私建第二份中心准入名单、改平台上限或给普通员工管理权。测试普通/开发者/跨应用/CSRF/授权过期/角色变化/平台上限/并发冲突/撤权及手机界面，区分合成与目标应用实际验收。
