feat: refactor super admin to use is_super_admin flag and enhance site deletion logic

- Changed super admin detection from role-based to `is_super_admin` flag in AdminUser model
- Added `requireDefaultAdminSiteId()` method to throw validation error when no integration site exists
- Enhanced site deletion to migrate platform role bindings to fallback site and auto-delete site-specific admin accounts
- Made agent line code optional with auto-generation fallback using `{site_code}-agent-{counter}` format
This commit is contained in:
2026-06-12 20:47:40 +08:00
parent 980f3c9593
commit 395e1c7400
36 changed files with 1193 additions and 153 deletions

View File

@@ -34,6 +34,12 @@
- 非 `testing` 环境关账受 `AGENT_SETTLEMENT_ALLOW_PRODUCTION_CLOSE`(默认 `true`)控制;预发可设为 `false` 门禁。
- 占成账单聚合必须读注单**快照**`share_snapshot`),禁止按当前 `agent_profiles` 重算历史。
## 接入站点与超管
- 超管身份:`admin_users.is_super_admin`**禁止**经 `admin_user_site_roles` 绑站全库仅一名DB partial unique index
- 零站点:`admin_sites` 可为 0`defaultAdminSiteId()` 无站返回 null超管仍可登录需站点的写操作用 `requireDefaultAdminSiteId()``no_integration_site`
- 删接入站DELETE API/UI默认站亦可删含最后一个仅删除仅绑 `site_admin_{code}` 的自动账号,**不得**删超管。
## Learned Workspace Facts
- 期号 `close_time` / `draw_time` 以 UTC 存储与比较;后台展示转浏览器本地时区,创建/编辑表单提交前须转回 UTC。