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/debt.md
T
ChaiHaoandClaude Fable 5 9fce0fdaa0 三面拆分④:驾驶舱首页 —— 度量改接 report 真八指标,纠正率/DMN 不再恒为 0
治理台原先调 memory 的五指标版,还把 submissions/corrections/judgements
硬塞 0 —— 仪表在说谎。八指标本就在 report 里算好,这里接上,与工作台汇报同源同口径。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
2026-07-27 21:08:42 +08:00

5.2 KiB
Raw Blame History

技术债登记簿

编码规范 §17:历史违规集中登记于此——旧路径 warn、新代码 error,清零后升级。 例外必须注明原因与预期清理时间;散落的 eslint-disable 不算例外,算违规。

# 债 原因 预期清理 状态
M0-1 pnpm db:seed 只打印种子计划,未真正写库 种子数据(五岗位 / 五员工)已在 apps/api/src/app/seed.ts 冻结为常量并定义 OrgSeeder 端口;写入实现依赖 org 模块的 Drizzle schema,属 M1 M1 已清理(M1)
M0-2 packages/{sfeel,activity-sdk,ui-kit} 仅有版本常量 M0 只立骨架,内容按里程碑序填(§15);@contracts 已于 M1 落首版 M3–M5 进行中
M1-1 container.ts 里两个占位端口:InFlightWorkProbe(空集)、TriggerMatcher(恒不命中) 二者的真身在 task(L6,M4)与 trigger(L7,M5);MessageFallback 已于 M2 接真身 M4 / M5 进行中
M1-2 条件求值 passthroughEvaluator 恒真 @sfeel 属 M3;M1 的监听只用类型 + 关联键过滤,不用内容条件 M3 进行中
M1-3 投递记录写入即止,尚无派发 worker 派发器已于 M2 落地(advisory lock 串行 + 消费幂等);消费者(任务 / 触发器)随 M4 / M5 注册 M2 已清理
M2-1 派发器的消费者表为空 —— 投递只标记已送达 任务消费者属 task(M4),触发器消费者属 trigger(M5);投递链路本身已可测 M4 / M5 进行中
M5-3 活动 .JS 产物是源码文本,未经 tsup 单文件 ESM 真编译 静态审扫描的正是产物文本(import 与全局引用),当前形态已可审;真编译在装载器落地时接入 M6 前 进行中
M5-2 loop 的 Agent 回路直接经 ModelGateway,未用 Mastra Agent 编码规范 §6.1 规定用 Mastra Agent;AgentPort 端口不变,换实现时 usecase 不动;当前实现仍过两缝(录制回放可见) M6 前 进行中
M5-1 process 未用 Mastra workflow 编译器,流转由自持确定性状态机 + sys.node_instance 承担 编码规范 §6.1 规定流程包编译为 Mastra 图;二者语义等价(挂起/恢复由节点实例表承担),先落可测的自持实现,Mastra 编译器作为可替换 adapter 后补 —— usecase 不动 M5 收尾 进行中
M2-2 pg-boss 已装未用 定时作业(监听时限扫描、周期触发器)随 M5 落地;当下派发器用 setInterval M5 进行中

鉴权(ADR-010 落地后的已知欠账)

  • 登录失败无次数限制:可无限次试口令。单组织 ≤50 人、内网部署下暂缓; 接入外网前必须补(按账号 + 来源 IP 双维度退避)。
  • 无口令强度校验、无首登强制改密:全员初始口令相同(JCAI_SEED_PASSWORD), 谁都没改过就等于没有口令。治理台「员工」面需补:改密 / 重置 / 强制改密标记。
  • setPassword 已在 org 出口就位但无路由:改密只能经播种或直接调用例,界面上没有入口。
  • 会话无「登出全部设备」:revokeAllOf 已实现(停用员工时调),但本人无从触发。

工作组(ADR-011 落地后的已知欠账)

  • 没有治理台管理界面:建组 / 改组 / 指派默认组只能经播种或直接调用例。 saveWorkGroup 已在 org 出口就位,缺的是「员工」面下的一个子页。
  • 一人一组:workGroupOf 取该人名下稳定的第一条;起单时选哪个组这一步没做。
  • 组成员离岗无提醒:绑定的人离岗时静默退回四策略,不告诉任何人。

工作成果 · 文件

  • Markdown 只以原文纸面呈现:富文本渲染(GFM 表格 / 内联 SVG)要 react-markdown + remark-gfm + rehype-raw 三个依赖,当前成果文件绝大多数是 HTML,先不引。 引入前不假装渲染过 —— FileViewer 里以 <pre> 出原文。
  • 过程成果(deliverable)尚无来源:活动还不发布 deliverable,所以成果文件目前 只有活动推的那一屏。装配已接好(desk.ts 的 results),活动一产出就自动进列表。

沟通记录(占位)

工作区第二个页签「沟通记录」目前是空占位。它要汇集这一单与外界的往来: 邮件线程、通道消息、原件存档 —— 数据在 channel 与 event 里已有,尚未做投影。 界面上明说「还没接」,不伪装成「暂无数据」。

工作区页签条装不下五个页签

五个四字页签 380px + 翻页囊 112px + 间距 30px = 522px,工作区仅 429px,差 94px。 当前先做成整条可横滚(不裁、不溢出卡片),最终形态待定,备选:

  • 缩短页签文字(沟通 / 成果 / 详情 / 日志)—— 省 ~100px,但文案变短
  • 翻页囊只留箭头、页码收进 title —— 省 ~50px,但看不见「第几件/共几件」
  • 页签条换行两排 —— 全都放得下,但工作区正文少一行高

驾驶舱 · 死信卡(2026-07-27)

运营驾驶舱首屏收了「异常工作流 / 未闭合草稿 / 在途任务」三卡,没有死信卡。 死信目前只以治理者消息要素送出(deadLetters.report → message),没有一个按 kind 计数的 查询面 —— 要补这一卡,得给 system_message 加一条按 kind 聚合的治理路由。 在那之前,驾驶舱不摆一个查不出数的卡位。