44 lines
2.6 KiB
Plaintext
44 lines
2.6 KiB
Plaintext
---
|
||
description: 结合 prompt/06、09、14 的 Python 智能体与 Worker 规范
|
||
globs: "**/*.py"
|
||
alwaysApply: true
|
||
---
|
||
|
||
# Python = `prompt/06` + `09` + `14`
|
||
|
||
实现前自己打开这三份。无详细中文注释不验收。
|
||
|
||
## 进程(06)
|
||
|
||
一个 HTTP(合并 8810/8809/8811):验签、入 inbox、快回。禁止同步 LibreOffice / 等完整 LLM / `invoke` 整图。
|
||
一个 Worker:LLM、识别、报价 PDF、存档。LibreOffice **1 槽**,HTTP 类 **2~3 槽**。禁止 Redis `wecom:worker:singleton`。不要五个 NSSM、不要 8812。
|
||
AIBOT 桥可 Node,仅回环(测试 8913)。inbox/outbox 不得和转 PDF 串队。
|
||
|
||
## 禁止卡顿(06)
|
||
|
||
验收:慢活进行时回调与 H5 仍能秒回。请求线程只入队。Graph `resume` 在 Worker 槽。禁止进程大锁串行所有工单;只锁同一任务/`thread_id`。共享状态用 DB 事务或按条锁。
|
||
|
||
## 模块(06,名称可改边界不能混)
|
||
|
||
`channel/wecom` 验签与 `sender_id`(不准建单);`channel/h5`;`channel/outbox`;`routing` 只做 DeepSeek A;`handlers/` 一类意图一个文件;`graph/` 节点分文件;`llm/`;`jobs/` 分槽;`ledger/` 只打主账;`storage/`;`config/` 只读环境变量。
|
||
入口只组装。单文件两类职责且 400~600 行以上:拆。禁止万行 `graph.py`/`wecom_business.py`。
|
||
|
||
链路:`NormalizedInbound` → 只读快照 → 允许意图 → DeepSeek A 唯一 `route_decision` → 唯一 handler → 下一个 wait → 持久化 version + 幂等键。
|
||
|
||
## 身份与状态(06/09)
|
||
|
||
只用入站 `sender_id`。无则不进 Graph。角色查主账。H5 URL 禁止 userid。正式六态只调主账。checkpoint/suspend/clarification 在 PG。任务靠认领不是进程单例。
|
||
|
||
询价企微与正式相同(`1000010`、回调与 H5 域名 `ai.ytd-scm.com`,抄 `03`)。运维 `1000014`。AIBOT 同一 Bot;并存期测试不要连长连接。
|
||
|
||
## Graph / Redis(14)
|
||
|
||
Graph 用于多次停等(补问、卡、主账、PDF)。一单一个 `thread_id`;checkpoint 在 PG;停点中断;Worker **结构化 wake**(工单号+quoteVersion+waitVersion)。用户文字不能冒充文件完成。
|
||
Redis:`REDIS_URL`+前缀。新系统 db1 `inquiry_robot:`。只做队列/限流/token。不当六态、checkpoint、单例锁、TMS 伪造开关。回调禁止 `wait_result`。
|
||
|
||
## LLM 与字段(06/04)
|
||
|
||
队列 Stream 或 PG 任务表二选一。模式:`ordered_actions`、B 抽字段、千问读附件/图、群报价、工作表映射。SEA 箱型箱量单原始字段 + B 投影 `containerItems`。字段以 JSON 合同为准。
|
||
|
||
出站:主账与企微都要幂等键。过期出站丢弃不算业务成功。
|