| content |
{"Commits":[{"Sha1":"2986e411b {"Commits":[{"Sha1":"2986e411b9c9cdae18aab1a2529a2297f33420f6","Message":"feat: 合并业务应用接入免重启的前端接入\n\n后端 5a6b2c0(V37 通知在线登记)与 9409c5e(V38 应用级权限查询凭据)已支持接入新应用或新企业不重启。现合并 feat/console-layout 上对应的前端接入与选型记录更新。\n\n实现内容:\n- 合入 da944e5:客户端详情新增「通知地址」分区,可登记、修改、停用退出通知与权限变化通知(地址加固定 IP,可自动跟随开通企业或只发给指定企业),只有平台管理员读写;登录设置不再修改退出通知地址,保存时原样带回;权限查询接入先选查询范围,应用共享时提交不带 tenantId,空企业显示为所有已开通企业;启用应用时说明两种接入方式\n- 合入 bda169a:演示前端为 CALLER_CREDENTIAL_EXPIRED 提示联系管理员更新凭据\n- 合入 1c6f705:选型记录补记 Codex 的评估与实现结果及前端提交\n- 只修改 iam-admin-web、iam-demo-web 与 docs/app-onboarding-no-restart.md;未改动后端代码\n\n验证:\n- 合并前在 feat/console-layout 上运行 npm run check:iam-admin-web 39 个测试文件 349 项及格式、lint、类型检查、构建通过;iam-demo-web 3 个测试文件 31 项及构建通过\n- 合并前核对前端读取字段与交接文档 docs/handoff/app-onboarding-no-restart-frontend-01.md 及后端 NotificationRegistry 一致\n- 未与真实后端联调,未做浏览器走查,验收脚本未运行\n","AuthorEmail":"gamebyteyu@gmail.com","AuthorName":"starry","CommitterEmail":"gamebyteyu@gmail.com","CommitterName":"starry","Timestamp":"2026-10-19T23:04:02-07:00"},{"Sha1":"1c6f705b52f953bd1d12115a2de52e2b34a5d9d8","Message":"docs: 补记业务应用接入免重启的实现结果\n\n选型记录原先停在\"已转交 Codex、尚未回传\"。现在后端(5a6b2c0、9409c5e,A39)和前端接入均已完成,补记最终结论,方便以后查证。\n\n实现内容:\n- 状态改为后端已实现,并指向 A39\n- 2.5、3.5 节补充 Codex 的评估与实现结果:固定 IP 采用方案 (a)、部署边界不热加载、只有平台管理员可登记、目标数量上限,以及 tenantId 可空、按调用方×企业计算额度、重叠登记加热切换的轮换流程、演示应用调整与回退限制\n- 后续事项表更新为已完成,注明前端提交 da944e5、bda169a,以及未联调、未浏览器走查\n- 依据一节注明\"现状\"中的代码行号描述的是改造前的代码\n\n验证:\n- 核对文档引用的 A39 等文件存在,检查无行尾空白\n- 纯文档改动,未运行代码测试\n","AuthorEmail":"gamebyteyu@gmail.com","AuthorName":"starry","CommitterEmail":"gamebyteyu@gmail.com","CommitterName":"starry","Timestamp":"2026-10-19T23:02:34-07:00"},{"Sha1":"bda169adab261d90a8a87c87925667167acb5469","Message":"feat(iam-demo-web): 提示权限查询凭据已过期\n\nSDK 改用可热切换的凭据文件后,文件过期时业务接口返回 503 CALLER_CREDENTIAL_EXPIRED。演示前端原先按通用 503 提示稍后再试,但重试不会恢复,需要管理员更新凭据。\n\n实现内容:\n- errors.ts 为 CALLER_CREDENTIAL_EXPIRED 增加专门说明,提示联系管理员更新凭据\n- shared.test.tsx 增加对应用例,确认不再按服务暂时不可用提示\n\n验证:\n- npm --prefix iam-demo-web run check:格式、lint、类型检查通过,3 个测试文件 31 项通过,两个应用构建通过\n- 未与真实演示后端联调\n","AuthorEmail":"gamebyteyu@gmail.com","AuthorName":"starry","CommitterEmail":"gamebyteyu@gmail.com","CommitterName":"starry","Timestamp":"2026-10-19T23:02:15-07:00"},{"Sha1":"da944e55f7ca67d7b4d2076a0bd8148bfb2af6a8","Message":"feat(console): 接入通知地址在线登记与应用共享的权限查询登记\n\n后端已支持在控制台登记通知地址(V37)和不限企业的权限查询凭据(V38),接入新应用或新企业不再需要重启。控制台此前只能在登录设置里填写部署白名单内的退出通知地址,权限查询登记也只能选一家企业,现按新接口接入。\n\n实现内容:\n- 客户端详情新增「通知地址」分区(ClientNotifications.tsx),可登记、修改、停用退出通知和权限变化通知;必须同时填写地址和连接用的固定 IP,并说明证书仍按域名验证\n- 权限变化通知默认自动跟随开通企业、不提交企业名单,也可只发给指定企业(最多 1000 家);未在线登记时说明部署配置可能仍在生效\n- 只有平台管理员读写通知登记;应用管理员只看到当前退出通知地址,不请求平台专属接口\n- 登录设置去掉退出通知地址输入框,保存时原样带回 backchannel_uri;通知修改期间暂停登录设置与停用、归档,避免互相让客户端版本过期\n- 地址被拒、数量上限、退出通知已迁移导致的冲突及部署配置不再允许旧地址,分别给出说明\n- 权限查询接入先明确选择查询范围(所有开通企业或只限一家企业),应用共享时从平台应用中选择且提交不带 tenantId;tenant_id 为空显示为所有已开通企业,不去读取企业\n- 密钥更换与停用说明改为先登记新的一份、换好后再停用旧份;启用应用时说明共用接入与单独部署接入的区别\n- 新增 app-onboarding 组件测试 10 项,调整调用方登记与客户端名称的原有用例\n\n验证:\n- npm --prefix iam-admin-web run check:格式、lint、类型检查通过,39 个测试文件 349 项通过,构建通过\n- 未与真实后端联调,未做浏览器走查\n","AuthorEmail":"gamebyteyu@gmail.com","AuthorName":"starry","CommitterEmail":"gamebyteyu@gmail.com","CommitterName":"starry","Timestamp":"2026-10-19T23:02:04-07:00"},{"Sha1":"9409c5e622fe925b3974bed3ab8dd2742d5e12fe","Message":"feat(authorization): 支持应用级决策凭据与免重启轮换\n\n共享应用接入新企业时无需追加企业调用秘密或重启BFF,同时保留专属实例单企业范围。\n\n实现内容:\n- V38支持可空企业限定,保持历史凭据范围和主体当前开通、准入及生命周期复核\n- 调用预算按调用方与企业隔离,通知企业从当前开通关系计算\n- SDK兼容旧映射,支持应用凭据和私有文件热切换,坏文件保留旧值至原截止\n- 使用独立登记两份凭据完成重叠切换,缓存按调用秘密摘要隔离\n- 演示机器交付从机器配置与旧映射发现企业,并保留每轮32家处理上限\n- 补充通知退出边界、迁移回退、安全取舍、部署示例及前端交接\n\n验证:\n- Java25、Maven Wrapper定向verify与补充边界复验:110项不重复计数测试全部通过\n- 覆盖SDK文件安全/缓存/通知、固定IP与TLS、真实PG/Redis新企业授权与预算、管理HTTP、V36至V38非空迁移、演示业务\n- Spotless、编译打包与git diff --check通过\n- 未执行全仓库全部测试,未部署预览或生产;人员快照、默认部门和机器身份仍需独立配置\n","AuthorEmail":"gamebyteyu@gmail.com","AuthorName":"starry","CommitterEmail":"gamebyteyu@gmail.com","CommitterName":"starry","Timestamp":"2026-10-19T22:35:25-07:00"}],"HeadCommit":{"Sha1":"2986e411b9c9cdae18aab1a2529a2297f33420f6","Message":"feat: 合并业务应用接入免重启的前端接入\n\n后端 5a6b2c0(V37 通知在线登记)与 9409c5e(V38 应用级权限查询凭据)已支持接入新应用或新企业不重启。现合并 feat/console-layout 上对应的前端接入与选型记录更新。\n\n实现内容:\n- 合入 da944e5:客户端详情新增「通知地址」分区,可登记、修改、停用退出通知与权限变化通知(地址加固定 IP,可自动跟随开通企业或只发给指定企业),只有平台管理员读写;登录设置不再修改退出通知地址,保存时原样带回;权限查询接入先选查询范围,应用共享时提交不带 tenantId,空企业显示为所有已开通企业;启用应用时说明两种接入方式\n- 合入 bda169a:演示前端为 CALLER_CREDENTIAL_EXPIRED 提示联系管理员更新凭据\n- 合入 1c6f705:选型记录补记 Codex 的评估与实现结果及前端提交\n- 只修改 iam-admin-web、iam-demo-web 与 docs/app-onboarding-no-restart.md;未改动后端代码\n\n验证:\n- 合并前在 feat/console-layout 上运行 npm run check:iam-admin-web 39 个测试文件 349 项及格式、lint、类型检查、构建通过;iam-demo-web 3 个测试文件 31 项及构建通过\n- 合并前核对前端读取字段与交接文档 docs/handoff/app-onboarding-no-restart-frontend-01.md 及后端 NotificationRegistry 一致\n- 未与真实后端联调,未做浏览器走查,验收脚本未运行\n","AuthorEmail":"gamebyteyu@gmail.com","AuthorName":"starry","CommitterEmail":"gamebyteyu@gmail.com","CommitterName":"starry","Timestamp":"2026-10-19T23:04:02-07:00"},"CompareURL":"pengzhiyu/IAM/compare/68a0d5d096ae12cb8cb23b6684467b0276dede4a...2986e411b9c9cdae18aab1a2529a2297f33420f6","Len":7}... |