Skip to content

[Decision] §06 F16 说补录动作「档案岗**或**法务可用」,但实现只能给档案岗——权限是 AND,没有两边都持有的能力 #43

Description

@zhuangjianguo

维护者速读

事情:补录已签合同这个动作(F16「Backfill Executed Contract」),设计方案第 6 章写的是档案岗或法务都能用。实现出来只有档案岗(加管理员)能用,法务看不到这个按钮。

为什么:平台的 requiredPermissions 是 AND(要求全部持有),不是 OR。而档案岗和法务没有任何一项共同持有的能力,所以「或」这个语义在今天的平台上表达不出来。实现只好退而求其次,挂在 execute_contract 上(档案岗 + 管理员持有),法务因此丢了这一个按钮 —— 但法务的其他所有路径都不受影响。

发现于卡 09(#39 / PR #42,已合并)。当时没顺手改,因为三个补法里两个要动受管面或平台,不是开发能定的。

你要做的:回一个字母,A、B 或 C。

选项

做法 客户感知到的后果
A(推荐) 第 4 章新增一项能力(如 backfill_contract),同时授予档案岗与法务;动作改挂它 §06 F16 字面兑现,两个岗位都能补录。代价:改受管面 §04,多一项能力令牌
B 接受只有档案岗能补录,把 §06 F16 的「或法务」改掉 零新增。代价:收窄一项已声明的能力,法务补录要请档案岗代劳
C 向平台提「requiredPermissions 支持 OR 形式」的需求,等它落地 一次修好所有应用。代价:时间不可控,期间仍是 A 或 B 的现状

业务含义直译

A = 给「补录旧合同」这件事发一把专门的钥匙,法务和档案岗各拿一把;B = 承认补录是档案岗的活,法务要补录就走档案岗;C = 等平台把门锁改成「任一把钥匙都能开」。

四棱分析

os-decision-facets

① 项目长远合理性 — 偏 A。这是一个已声明但兑现不了的能力(§06 说「或」,系统做不到「或」),和这批卡反复在修的形状同一类。A 让实现追上声明;B 削声明去迁就实现,方向相反;C 是正确的长远形态但不在本仓手里。⚠️ 但 A 有一个代价要说破:为一个按钮新增一项能力令牌,是契约增生,和「缩小特例」的方向相反。

② 实际业务拉动 — 弱,且这一棱要求实测。判据是「今天谁撞上」。答案是:没有人,因为这个动作今天刚随卡 09 出生,还没有任何真实使用。法务是否真的需要亲手补录旧合同,是一个我看不见的业务事实——如果实际流程里补录本来就归档案岗,那 §06 那个「或」从一开始就写宽了,B 才是对的。

③ 防 AI 犯错 — 偏 A/B,一致反对现状。今天是最坏的:文档说两个岗位能用,系统只给一个,且没有任何报错 —— 法务打开页面就是看不到按钮,不会有人被告知为什么。下一个作者读 §06 会以为它坏了。A 与 B 都消除这个静默落差,区别只在往哪个方向对齐。C 单独选会让落差持续存在。

④ 创业阶段不扩散 — 明确偏 B。B 零新增;A 增一项能力令牌,而每一个已声明的键都是永久义务。⚠️ 按「零拉动默认 defer 或 remove」,②的零拉动读数直接把这一棱推向 B。

推荐:A,但置信度不高,且我要指出四棱在这张卡上是分裂的。 ①③ 指向 A,②④ 指向 B。按「长远合理性权重恒 ≥50%」推荐 A;但那条权重规则同时说明它「按缩小而非扩大特例读」,而 A 恰恰是扩大 —— 所以这里我不认为权重规则给了 A 一个干净的胜利。若你知道法务实际上不需要自己补录,请直接选 B,那比 A 更符合不扩散。

⛔ 本分析看不见什么:法务岗在真实客户流程里是否需要亲手补录旧合同。这一个事实就能定这张卡,而它只在你那里。

关联

#39 / PR #42(发现处,已合并)· DESIGN.md §06 F16、§04 权限矩阵(受管面)· src/actions/contract-backfill.actions.ts(动作头部已记录此限制)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions