This repository has been archived on 2026-09-13. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
BPOS-TMP-REPO/docs/archive/产品设计.md
ChaiHaoandClaude Opus 5 259192f736 人手改的那一手真正落得下去;界面不撒谎那几处补齐
手改是**兜 AI 的错**的那一手 —— 这一轮把它从「摆在那儿但落不了地」做成真的:

件上就地改
· 保存**按地址收**,不看当下那张卡:载荷从前借道工单的 `blocks[i]` 取列名,
  于是熔断卡(没有 blocks)在屏上时,人补的那一格一个字都送不出去 ——
  而他要补的恰恰是把这一单卡住的那个必填格。授权面改由活动清单的台账声明把关。
· **能增删行**:错不止「这一格填错了」,还有「这一行不该在」与「漏了一行」。
  删挂记号不当场抹掉(看得见、可后悔),且**删要说出来**(`drops`)——
  「没回传就是删了」会把一次不完整的回传变成一次删表。
· **必填没填按不下提交**:与放行门 L1 同一个数同一套算法;闸上摆出差在哪一行哪一格。
· 只写真改了的那几行 —— 改一格却留「修订 4 行」的痕,那句话是假的。

判据与门
· 裁量判据带谓词时**谓词说了算**:「选填缺口已补齐」基座数得出来,
  人填好的目标价它照样判「客户未提供」的毛病由此消掉。
· 验收卡判据**读时现算** —— 人在成果件上补一格,判据跟着变。
· 放行门认「**办完了没有**」不认「有人写过」:从前写个 `false` 就把门推开,
  于是一单没打标就进了放行门。三个数全由基座现数。
· 拒回把「活没干完」说成「数或行对不上」的毛病:判据点名的表一行都没写时直说那一步没办。
  **指向两扇打不开的门,比不指还糟。**

界面不撒谎
· 日志只有三色:负责人绿 · 智能体蓝 · 系统灰(归侧五种是度量的分法,不是给人看的)。
· 验收收口答两件事:落了什么(按**交付物**点名,一份成果的几张表并成一行)、
  往哪儿去(转出哪一口、带过去哪些字段);一个口都没发就直说到此为止。
· 签完到收尾之间那一段有自己的话「字已签下,正在落地」—— 中间态本来就该说出来,只是要说对。
· 消息不再被内部事件刷屏:只有从通道进来的件才谈得上「无人认领」。
· 建客户公司与联系人**一次确认落两行**;联系人编码自增不问人;卡面摆表的人读名。

A1 三案例端到端全 released:全 A 类直通 12 拍 / 客户点名跳一条 10 拍 / 新客户缺必填 14 拍。
五道门禁全绿(971 passed)。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JsTDjoHovERXyy6Wmw1ALp
2026-08-02 13:41:44 +08:00

15 KiB
Raw Permalink Blame History

产品设计 · 三面一体

2026-07-27 定稿。本文档回答一个问题:这个产品由哪几张脸组成,每张脸对谁、说什么。 背景:治理中心此前是平铺的九个区,设计态与运行态混在一排 —— 定义企业的人和看企业跑的人 挤在同一套导航里,谁都找不到自己的第一屏。本次拆分把它按心智一分为二,与工作台合成三面。


一、概念模型:三面一体

产品按一条因果链排成三面:

设计中心 ──定义──▶ 运营中心 ──派发──▶ 工作台
(企业怎么运转)    (今天跑得怎样)     (在企业里干活)
   类 · 规则         实例 · 监控        人 · 劳动
  • 设计产生运营的形状:设计侧每发布一个数据域,运营侧自动长出一个台账位; 每发布一个流程包,运营侧的驾驶舱就多一类可监控的流。
  • 运营产生工作台的内容:流程跑起来,任务、审批、消息才落到人的工位上。
  • 工作台产生驾驶舱的数字:人把活干完,八指标才有读数 —— 圈闭合。
面 地址 网页标签 一句话 谁用
设计中心 /design 深靛底 + 路网章 定义企业:战略 → 方法 → 能力 → 对象 业务架构师 / 管理者
运营中心 /ops 深色底 + 仪表章 看企业跑:驾驶舱 + 处置 + 沉淀 PM / 当班主管
工作台 / 蓝渐变 + 机器人章 干活:任务五要素 全员
  • /gov 保留为跳转(302 → /ops),旧链接不断。
  • 三面共用一套登录会话(ADR-010);顶栏互跳,入口按权限亮灯(见第六节)。
  • 网页标签三章并立:多标签并开时,靠图标即可分辨"我在定义、在监控、还是在干活"。

二、设计中心 /design

左轨 = 九区,顺序即设计的次序。 一区一内容 —— 区内不再有页签导航, 点进一区看到的就是那一件事(唯一的例外是运营侧的任务与员工,它们确实是几个不同维度)。

蓝图 → 触发器 → 流程包 → 活动库 → 工具箱 → 数据域 → 知识库 → 大模型 → 测试台
全局   谁调起    怎么流转   怎么干    能干什么   运营什么   资料      跑在哪    试一遍

企业蓝图(首页)

一屏把四库串成因果链,回答"这家企业被定义成什么样、哪里还没定义完":

战略 ────── 方法 ────── 能力 ────── 对象
流程包  →   活动库  →   工具箱  →   数据域
 ↓健康度     ↓健康度     ↓健康度     ↓健康度
未闭合草稿   未安装引用   未授权工具   未发布域
  • 每库一张卡:总数、健康度、最近变更;点卡即入库。
  • 下方是待补清单:闭合校验未过、编排引用了未安装的活动、没有任何调起规则的流程包 —— 全部聚在这里,点进即改。设计者的"需处置"不散落在四库里 (为此流程包区原有的「需处置」页签已删除:同一件事两处显示,就是散落)。

九区

区 定位 内容
蓝图 全局 —— 定义完了没有 四库因果链 + 待补清单(见上)
触发器 谁调起流程 事件 / 登记 / 周期三类调起规则的定义;定完就地投一封信演练,看哪条规则接住(归属解析 → 三级消费的真链路)。启停开关在运营中心
流程包 战略 —— 企业以哪些流转运转 编排工作区三栏:左窄轨版本(激活/停用 · 号与名自己定 · 删除;点「编辑」整列进编辑态,取消/保存收尾)、中流程图、右节点属性。边只表达顺序与条件(对齐 Mastra),数据按字段名流动;字段只声明,不做任何要求 —— 激活闸只剩结构闭合与活动装载两面,字段够不够是活动自己的事
活动库 方法 —— 每件事怎么干 一区两格:装进来的活动(货架、契约面、资产版本谱系、安装两审)与配出来的审批活动(审批模板:审批人看什么 / 怎么催 / 说什么,编排的审批点选一张)。活动不再分标准/案例(2026-07-29):业务分类是唯一的一维,业务模型一律案例模型
工具箱 能力 —— 系统能对世界做什么 功能 / LLM / 人类三类工具目录、白名单授权、幂等口径、引用反查。一律主显示中文名,逻辑名退居副标
数据域 对象 —— 企业运营什么 域与对象 schema、字段、放行规则、被谁引用。行数据不在这里 —— 那是运营的事
知识库 企业的资料与文档 规范、图纸、样例、外部材料。待建,现在是个占位区
大模型 模型实例绑在哪 Provider / URL / Key / Model 四元绑定。活动只声明用途名,换厂商换型号改这里;密钥只存这儿,不入包、不入留痕
测试台 试着跑一遍 装一次调用、指派每个节点归谁、起单看穿全程(全链 Trace)。真实任务照旧落到被指派人的工作台,测试台不代答。一次只跑一条流:生命周期跟着仿真状态,停止仿真即销毁这条流连同它派出的任务

一条纪律

设计中心里没有任何运行态数字(在跑几单、30 天起单数、死信数都不出现)。 设计者看的是定义完不完整,不是今天忙不忙 —— 运行态数字一旦混进来, 设计页面就会退化成第二个监控页。

三、运营中心 /ops

左轨 = 驾驶舱(首页)+ 固定位 + 动态位 + 固定位。

◉ 驾驶舱(首页)
── 固定(区名即运行时) ──
工作流   ← 流程包的运行时
任务     ← 活动的运行时
员工
── 台账(动态,随数据域长) ──
quote_intake
quote_pricing
…
shared
── 固定 ──
数据     ← 运行沉淀:活动记忆 + 技能资产
系统

命名纪律(2026-07-30):运营中心的区名就是运行时对象 —— 工作流是流程包的运行时,任务是活动的运行时,台账是数据域的运行时。 设计中心只负责设计,运营中心管细节(启停、确认、负责人都在运营侧配)。

落地实测:域的实际粒度是活动域(quote_intake / quote_pricing / quote_sourcing / quote_negotiate / quote_alternative)+ shared,不是本文起初设想的「报价域 / 共享域」。 决策不变(域 = 导航项),只是数量比示意图多。域名是复合键,左轨按下划线断行呈现。

驾驶舱(首页)

经营第一屏,从现"记忆 · 度量仪表"升格而来:

  • 度量八指标(OS 8.3,零埋点):自主率 / 纠正率 / 有效自主率 / 打扰率 / 断点率 / DMN 覆盖率 / 单位成本 / 终态分布 —— 走 report 模块,与工作台汇报同源同口径;
  • 异常面:异常工作流、未闭合草稿、在途任务 —— 点数字直达处置页。

落地偏差:死信卡不做。死信目前只以治理者消息要素送出,没有按 kind 计数的查询面 —— 与其摆一个查不出数的卡位,不如记进 docs/debt.md 等查询面补上再加。

固定位

位 内容
工作流 流程包的运行时,两页签:在途(工作流看板,从任务区迁入)+ 运行配置(每包:触发器起单开关 / 命中后要不要人工确认 / 谁来确认;节点负责人 —— 显式指派 > 运营配置 > 轮值)
任务 活动的运行时:任务 / 审批单 / 需处置。看板与起单开关已迁「工作流」区
员工 员工 / 岗位授权 / 工作组(起单时的岗位绑定)
数据 运行沉淀的数据资产:活动记忆四层 + 技能资产 + 候选增量的回放与放行。"记忆的终点是成为模型"这条进化管线的人工放行口在这里
系统 通道实例(模型实例已独立成设计中心「大模型」区)

触发确认链路(2026-07-30 定)

事件触发的完整五步:① 系统接收邮件 → ② 分类识别消息类别 → ③ 命中 RFQ 询价事件 → ④(可选,触发器配置打勾)系统消息送指定人工作台,带邮件内容 → ⑤ 工作台点「确认起单」,流程才起。

  • 打勾与指定人在运营中心 · 工作流 · 运行配置里配,设计中心一个字不动;
  • 确认是幂等的:两个人同时点、一个人点两次,都只起一条流;
  • 登记触发不走确认 —— 登记那一下本身就是人在确认;
  • 第 ② 步现由通道抽键 + 触发器 S-FEEL 规则代位,邮件分类 Agent 是升级项(见 debt)。

宽进纪律(2026-07-30 定):调用活动,输入数据可以不定或者为空 —— 门口不设缺项闸 (触发装配缺必填不入死信,process.start 不拒缺项)。进入活动后受理归一: 缺必填的任务先落「等人」,缺的字段做成补全单发给负责人,补齐(或写明「没法填」)才开跑。 收敛点在活动,不在门口 —— 门口拒单,人连差什么都不知道;补全卡上写得明明白白。

动态位:台账 ×N

按数据域动态生成导航项 —— 设计侧一发布新域,运营侧自动长出一位。 点进去是该域全部对象的行数据、版本历史、被哪些任务引用。 域的 schema 不在这里改(那是设计的事);这里做的是运营动作:查行、看版本、追引用。

这是"设计产生运营的形状"最直观的一处:导航本身就是被设计出来的。 数据来源:ledger.listObjects(已有),无需新后端能力。

四、与工作台的联动

  • 三面互跳:每面顶栏(或轨底)有另两面的入口,按权限亮灯。跳转带上下文: 运营中心看某任务 → "去工作台处理"直达该单;工作台任务详情 → 有运营权者见"去运营中心看这条流"。
  • 同一语言:工作台里人看到的任务、审批、台账字段,与运营中心管理的是同一份投影、同一套词。 运营中心是工作台的管理者视角,不是另一套系统 —— 字段名、状态名、终态五名逐字一致。
  • 闭环叙事:设计中心发布流程包 → 运营中心看它跑、放行知识沉淀 → 工作台的人把活干完 → 数字回到驾驶舱。产品讲的就是这一个圈。

五、现状迁移映射

后端模块、授权模型、数据一概不动 —— 这是一次纯前端的信息架构重排:

现九区 去向
工作流 设计 · 流程包
活动库 设计 · 活动库
工具 设计 · 工具箱
数据(schema 面) 设计 · 数据域
数据(行数据面) 运营 · 台账 ×N
触发器(规则 / 装配定义) 设计 · 流程包 - 调起规则
触发器(启停 / 死信处置) 运营 · 任务 - 需处置
任务 运营 · 任务
员工 运营 · 员工(+ 工作组管理,新)
记忆(度量仪表) 运营 · 驾驶舱(首页)
记忆(活动记忆) 运营 · 知识库
系统 运营 · 系统

前端改动清单:

  1. 壳层:gov-shell 一分为二(/design 与 /ops 各一套左轨与路由),/gov 302 → /ops;
  2. 网页标签:tab-identity 从两章扩为三章;
  3. 新页两张:企业蓝图(设计首页)、驾驶舱(运营首页)—— 数据全部来自既有接口的再聚合;
  4. 新界面一处:工作组管理(员工位内;org.saveWorkGroup 已在出口,缺的只是界面);
  5. 触发器编辑面:从独立区改为流程包区的「调起规则」页签(包详情内只留一枚「改规则」入口, 不重复摆表单);已补 PUT /api/gov/triggers(trigger.upsert 用例本就在模块出口,只缺 HTTP 面)。

六、权限

授权模型不动:仍是九治理功能 × 读/写/治三动作(客体三类中的 governance 类)。 变化只在归属与亮灯:

  • 九功能按上表归属两面;
  • 台面入口按"是否持有该面任一功能的读权"亮灯 —— 无权者看不见入口,有读权者进去只读, 动作仍逐功能校验(读是 read,动才是 govern);
  • 不新增"设计权 / 运营权"这类粗粒度开关,不做两层叠加 —— 单组织 ≤50 人用不上, 且现有 grants 数据零迁移。

七、边界(本设计不做的)

  • 不动后端:模块、契约、授权、数据库都保持原样;
  • 不做对象级动态导航:台账动态位止于"域"粒度,对象在域内切换;
  • 不做设计中心的运行态回显:哪怕"看起来有用"也不加 —— 纪律见第二节;
  • 不做工作台的管理者混入:运营能力永远住运营中心,不往工作台塞管理页签。

八、落地顺序建议

  1. 壳先行:两套左轨 + 三章标签 + /gov 跳转 + 权限亮灯(纯搬迁,一次可验);
  2. 两张首页:驾驶舱(度量升格)→ 企业蓝图(四库健康度);
  3. 归位改造:触发器定义并入流程包、台账动态位、数据域定义面瘦身;
  4. 补欠账:工作组管理界面。

每步落完都可独立验收;顺序可按当期在做的活动开发穿插。

九、MVP 底座落地记(2026-07-28)

三面拆分之后铺的底座,与本文的关系:

  • 数据按上表四域重划,十八对象由六个活动槽位的声明物化而来(不是手写建表);
  • 流程包只落一个实例:unified-quote v1,拓扑与 docs/MVP示例工作流.html 的 FIG.1 一比一 (14 节点 / 16 边,手绘几何逐点取自那张 SVG)。与图有两处语义同构、呈现有别: A5 定价审批建为内置审批点(审批不是任务),故图上的 G3「审批结果」被它吸收; G2 的两条互斥分支显式汇合于 G2J —— 图上画成两条线各扎进 A4,那是隐式合并,闭合校验不收;
  • 活动只落槽位契约:六个槽位有完整的入参/出口/域声明/工具名,业务模型是 MVP 步骤标题级的 人类工单骨架 —— 起单后是真人在做,不是假跑;实现待底座齐备后按 A1→A7 逐个开发;
  • 工具箱三类并列:功能工具(交给系统)/ LLM 工具(交给模型)/ 人类工具(交给人), 外加接入段(自定义导入已实装,MCP 仅呈现)。

附 · 决策记录

决策 选择 理由
拆分形态 两个独立台面(+工作台成三面) 产品叙事最干净:定义 / 监控 / 干活是三种心智;权限天然分界
触发器归属 定义独立成设计中心一区,启停归运营 同一对象两种动作各归其位;起初塞在流程包内,但它与流程包平级(不入包结构、不随包版本),塞进去反而讲不清
度量归属 升为运营首页(驾驶舱) "看企业今天跑得怎样"需要开屏答案;与活动记忆分开是两种心智
动态位形态 域 = 导航项,随发布长 "设计产生运营的形状"要在导航上直接可见;对象级太碎
权限粒度 保留九功能粒度,入口按读权亮灯 grants 零迁移,细粒度保住;≤50 人不需要两层模型
设计中心 IA 蓝图首页 + 九区一级平铺,一区一内容 因果链要有一屏能讲;区内页签退化成一格后就是多余的一行,索性删掉 —— 点进一区看到的就是那一件事
交互基调(2026-07-28) 设计台卡片式,运营台列表式 设计是「看清一件东西的全貌」——卡片一眼见轮廓;运营是「查一堆记录里的那一条」——列表可扫可比
数据四域(2026-07-28) project / customer / intel / supplier 流转单据归项目(每一单的受理记录→比价→草案→报价单),沉淀资产按内容归客户/情报/供应商;按活动名分域会让「同一个客户」散在七处
活动与工具解耦(2026-07-28) 槽位只声明工具名 注册、连接值、白名单全在治理侧 —— 活动代码里看不到授权表,也就绕不开它