| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| inbound-ecom.handler.ts | ||
| outbox.handlers.ts | ||
| outbox.module.ts | ||
| outbox.types.ts | ||
| outbox.worker.ts | ||
| resync.handler.ts |
一套**寄生在宿主业务系统上**的 AI 客服能力:读全走 PAC,写留自己, 企微通过 ECom 非官方通道托管。独立库、独立部署,与 PAC 同仓但不焊死。 ## 边界(scripts/check-ai-boundaries.mjs 五道闸) 依赖白名单(分应用)· 独立 prisma schema 与 AI_DATABASE_URL · 跨 app 相对路径 · ECom 调用必带 deviceId(丢了会被当新设备,严重时封号)· 用户侧查询过数据范围。⚠ ️ 做成**可本地运行的脚本**而不是只写在 CI 里 —— 只存在于 CI 的检查没人推之前跑, 实际作用会退化成"合并请求红了才发现"。 ## 两条权限轴,各归各的 托管轴 accountScope() = wecom_accounts.user_id = 我 会话/发送/附件/通讯录 授权轴 orgUnitScope() = user_org_scopes 组织/诊所/无会话待办/PAC 读⚠ ️ 混在一起踩过:新同事绑好自己的号,看到的是**同事号里的**患者对话, 而自己号里的一条都没有。 ## 三层租户隔离 DB 复合外键(写)· Prisma 扩展自动注入 where.tenantId(读)· service 显式 where。⚠ ️ 第二层的受管模型**从 schema 推导**,⛔ 不手写清单 —— 手写那份漏过 4 张表, 而且正如它自己预言的:不报错。 ## Agent 接待(医疗信号规则先行,模型兜底)· 预约确认(扫描 + 会话双腿)。 出站四道闸:账号开关 · 在线 · 租户 AI 自动发送 · 人工接管态。 输出守卫拦医生姓名与金额 —— 不是"暂时",是没有任何工具能返回它们。 ## 前端 会话接待 · 通讯录绑患者 · 预约确认工作台 · 患者面板(PAC 事实 + 回访归并的时间线)。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| inbound-ecom.handler.ts | Loading commit data... | |
| outbox.handlers.ts | Loading commit data... | |
| outbox.module.ts | Loading commit data... | |
| outbox.types.ts | Loading commit data... | |
| outbox.worker.ts | Loading commit data... | |
| resync.handler.ts | Loading commit data... |