refactor(org): keep archived-team grants as dead rows

Archiving a team no longer cascade-revokes its active TEAM->PROJECT grants
and memberships. The archived flag alone makes the team principal
unresolvable (permissions/principals.ts refuses archived teams), so the
dead grant/membership rows confer no access. listProjectTeamAccess now
filters archived teams out of the project view instead of relying on a
revokedAt cascade, and the org-admin teams page confirm copy is updated.
archiveTeam drops the revokedGrants count from its return shape.

ADR-0019 / Spec.System.Organization: principal resolution, not grant
mutation, is the access boundary for archived teams.
This commit is contained in:
2026-07-14 21:17:20 +08:00
parent cbe569d7e6
commit b574ef871c
4 changed files with 20 additions and 34 deletions
@@ -67,7 +67,7 @@
}
async function archiveTeam(t: TeamRow) {
if (!confirm(`归档团队 ${t.name}? 其活跃项目授权将被撤销。`)) return;
if (!confirm(`归档团队 ${t.name}? 归档后该团队不再解析为项目授权主体。`)) return;
try {
await api.archiveTeam(slug, t.id);
if (expandedId === t.id) expandedId = null;