Archived
评审两条 Important:迁移连带清掉指向身份的两张配置表;治理台收件人为空时出声
节点负责人(排在轮值之前)与触发器确认人都是无 FK 的裸 staff id,而 reset-runs 按设计 不碰配置表 —— 切换后留着就是「把单派给不存在的人」与「命中的单没人点头全进死信」。 governanceStaff 在全新安装(还没人以 admin 登录过)时是空集,而调用方是死信通知: 收件人为空原本会静默丢掉「出事了」这件事,现在留一条说清怎么办的话。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015kAzS35kMnZNt4YGgJXtfw
This commit is contained in:
@@ -271,8 +271,21 @@ export async function createContainer(config: AppConfig, overrides: ContainerOve
|
|||||||
const { staff } = await org.listStaff();
|
const { staff } = await org.listStaff();
|
||||||
return staff.filter((s) => s.positionId === positionId).map((s) => ({ id: s.id }));
|
return staff.filter((s) => s.positionId === positionId).map((s) => ({ id: s.id }));
|
||||||
},
|
},
|
||||||
// 治理台收件人 = 能进运营中心的活跃员工(任务在那儿管;ADR-012 权限只到端)
|
/*
|
||||||
governanceStaff: async () => (await org.staffWithEnd('ops')).map((s) => ({ id: s.id })),
|
* 治理台收件人 = 能进运营中心的活跃员工(任务在那儿管;ADR-012 权限只到端)。
|
||||||
|
* **空集要出声**:全新安装、还没人以 admin 登录过时这里就是空的,而调用方是死信通知与
|
||||||
|
* 无主入站兜底 —— 收件人为空就等于把「出事了」这件事无声丢掉(铁规矩 8:界面不撒谎)。
|
||||||
|
*/
|
||||||
|
governanceStaff: async () => {
|
||||||
|
const recipients = await org.staffWithEnd('ops');
|
||||||
|
if (recipients.length === 0) {
|
||||||
|
process.stderr.write(
|
||||||
|
'[org] 没有能进运营中心的活跃员工 —— 死信与无主入站的通知这一次没有收件人。' +
|
||||||
|
'去运营中心的「角色 → 端」把某个 realm 角色配上 ops,或让持该角色的人先登录一次。\n',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return recipients.map((s) => ({ id: s.id }));
|
||||||
|
},
|
||||||
},
|
},
|
||||||
clock: systemClock,
|
clock: systemClock,
|
||||||
ids,
|
ids,
|
||||||
|
|||||||
@@ -25,3 +25,11 @@ create table if not exists sys.role_access (
|
|||||||
-- 他们名下的运行数据由 `reset-runs` 清(迁移不碰运行表)。
|
-- 他们名下的运行数据由 `reset-runs` 清(迁移不碰运行表)。
|
||||||
delete from sys.work_group;
|
delete from sys.work_group;
|
||||||
delete from sys.staff;
|
delete from sys.staff;
|
||||||
|
|
||||||
|
-- 身份没了,指着身份的**配置**也不能留:
|
||||||
|
-- `sys.node_owner.staff_id` 是运营配的节点负责人,它排在轮值**之前** —— 留着就是把单派给一个不存在的人;
|
||||||
|
-- `sys.trigger.confirm_staff_id` 是起单确认人,留下 stale id + confirm_required=true,
|
||||||
|
-- 正是「命中的单没人点头、全进死信」那个状态(那也是 setTriggerConfirm 不允许人手工造出来的状态)。
|
||||||
|
-- 这两张是**配置**表,`reset-runs` 按设计不碰(见 reset-runs.ts 的注释),所以只能在这里收拾。
|
||||||
|
delete from sys.node_owner;
|
||||||
|
update sys.trigger set confirm_required = false, confirm_staff_id = null where confirm_staff_id is not null;
|
||||||
|
|||||||
Reference in New Issue
Block a user