yumoqing 86adf1aa8c fix: sqlor占位符外层引号致双重引号1064——去掉ph占位符的单引号包裹
上一提交修占位符时引入的新错: 给 dollar-brace 占位符加了外层单引号,
渲染成 IN ('占位符') → sqlor参数化时aiomysql再自动加引号 → 双重引号
IN (''owner.maintainer'') → MySQL把空串后 owner.maintainer 当裸标识符 → 1064。

证据: 同文件其余占位符(user/ticket等)均无外层引号且全部成功,
仅动态IN子句两处(todos角色池+core待认领队列)加了引号即报错。

修法: 去掉外层单引号, 占位符直接拼入IN子句, 与同文件其余用法一致。
渲染SQL现为 assignee_role IN (占位符) 正确绑定参数。

教训: sqlor占位符(dollar-brace-key-brace-dollar)由驱动参数化并自动加引号,
手工再包单引号=双重引号必炸; 拼接动态IN子句时占位符裸写不加引号。
2026-09-10 17:09:53 +08:00

ticket — 平台工单管理模块

客户提出问题 → 登记工单 → agent 先处理(检索'0'机构知识库+历史工单,能答直接回复客户) → 答不了转人工运维owner.maintainerparams 可配)→ 人工回复客户 → 关闭; 人工处理不了可转派 owner 组织类型下任意角色或具体用户。

关键设计(详见 pipeline-app/docs 或设计文档 ticket-module-design.md

  • 状态机8 态 13 迁移全部乐观锁UPDATE...WHERE status=前置态 + SELECT 验证, 照 pipeline_service agent_loop 的 claim 范式),并发冲突返回明确错误码。
  • 平台待办集成(用户定夺 2026-09-10工单不建独立通知表通过 register_todo_provider 钩子接入平台待办通道pipeline-service 聚合, todo_badge 角标 + my_todos 弹窗异步通知到人)。待办由工单状态派生: 客户回复待确认 / 运维角色池待认领 / 受理人待处理——状态流转待办自动消失, 天然满足「同一事项只发一次」。
  • 角色不硬编码:默认受理角色存 paramsticket_default_role兜底 owner.maintainer 转派候选实时查 role 表 owner 组织类型全部角色 + '0' 机构用户role/orgtypes 运行时可动态增删)。
  • agent:异步 poller照 bid_flow 范式PIPELINE_MODE=web 不启动), RAG 检索走 rag HTTP APIdapi Bearer key平台账号='0'机构 → 只见 org_id='0' 的 KB LLM 走 pipeline_service.llm_bridge.llm_call内部 token+门禁链+记账org_id='0')。 「能否回答」由 LLM 裁决(语义判断铁律,禁关键词匹配),严格 JSON 输出; 硬门禁reply 空/短于20字符一律转人工。基础设施故障LLM/RAG异常≠答不了 fail_rounds+1 回退重试≥3 轮转人工reason=agent服务不可用

数据表3张tk_ 前缀)

说明
tk_tickets 工单主表(状态机+当前受理角色/人+agent处理锁
tk_messages 往来消息visibility: customer客户可见/internal内部备注
tk_transfers 转派流水append-only每次受理方变更必留痕

参数params 表,运行时可改)

参数 默认 说明
ticket_default_role owner.maintainer agent 转人工的默认受理角色
ticket_followup_max 2 agent 回复后客户追问上限,超限自动转人工
ticket_agent_fail_max 3 agent 基础设施连续失败轮数上限,超限转人工
ticket_agent_username admin agent 检索知识库用的平台账号('0'机构)

安装

宿主 build.sh 四处清单 + load_ticket()(见宿主集成)。模块注册:

  • env.create_ticket / ticket_detail / ticket_followup / ... dspy 消费)
  • register_todo_provider(list_ticket_todos)(平台待办聚合)
  • start_poller()agent 后台处理)
Description
No description provided
Readme 25 KiB