lovefyfandClaude Fable 5 5ebef45b1d feat: SSE 放行 touch.workflow——参与人+admin 可见性(经任务服务归属端口)
I6 把 touch.workflow. 从可订阅集摘出去,理由是**当时没有规则**:形状一过就直接进订阅集,
而鉴权分支只覆盖 touch.task./stream.task.,任何登录用户订 touch.workflow.<任意 id> 都能收
别人流程的推送。N3 的引擎每次推进都发 touch.workflow.<instanceId>,规则也定了:参与人
(节点 ownerSub)/审批人(approverSub)/admin。规则到位,故放回来。

- workflow-access.ts:与 task-access 同形的 HTTP 口——服务账号 token、3s 超时、非 200
  一律 false 并告警(失败关闭)。打的是任务侧新加的 /workflow/:id/access。
- hub:SUBSCRIBABLE 收回 touch.workflow.,subscribe 补上对应鉴权分支——放形状与补鉴权
  必须同一次改动,只放形状就是把 I6 原样退回去。admin 旁路(全可见,也免掉白跑的往返)。
- 两口分开而不是复用一口:任务问的是单张单的归属,工作流问的是实例**定义里**的节点归属。
- app:两口共用同一个 token provider,缓存只此一份。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 21:07:47 +08:00

bpos-service-gateway

前端唯一入口:BFF 聚合、鉴权与到 task / data / agent 的路由(:8800,无自有库)。

N0 已达能力

  • 同构骨架:与 task / data 仓同形的 Hono 应用与目录布局;GET /health 汇总 nats 依赖状态(无自有库,故无 db 探活)。
  • Keycloak 验签:requireAuth / requireRealmRole / requireService 中间件,JWKS 远端验签。
  • 协议册副本:src/contracts/envelope.ts,真源在 BPOS-Document-Share。
  • NATS 连接助手:getNats / checkNats / closeNats——网关只需连通性(订阅 touch / stream 用),无库故无 outbox、无 relay、无 consumer。

运行方式

pnpm i               # 装依赖
pnpm dev             # 本地起服务(:8800)
pnpm gates           # typecheck + lint + test

本仓无自有库,故无 db:migrate。

S
Description
No description provided
Readme
127 KiB
Languages
TypeScript 99.7%
JavaScript 0.3%