3 Commits

Author SHA1 Message Date
2df78f11d9 fix(ui): 建单表单submited回调把Response当JSON用——d.success恒undefined致列表不刷新/无成功提示(jjb报障:新单入库但我的工单看不到)。照框架惯例先await resp.json()再判success,成功刷新表格+关弹窗+Message提示,失败弹错误 2026-09-14 12:58:17 +08:00
4aa01d4d79 feat(attachments): 工单全链路附件——客户建单/追问、运维回复/内部备注支持多附件上传(multipart→FileStorage),详情弹窗(页面+待办共用)消息流内联附件行+全部附件汇总区,上传方彩色徽标区分(客户/助手/客服),打开/下载走ticket_attachment.dspy(I5服务端可见性校验+防路径穿越),服务端normalize_attachments规整+file_useful持久化豁免,错误码TK_E014/E015 2026-09-11 12:36:10 +08:00
54f2f2d597 feat: 工单管理模块初版——客户提问→agent预处理→人工运维→转派,接入平台待办
- 3表: tk_tickets(状态机+受理角色/人+agent锁)/tk_messages(客户可见/内部备注)/tk_transfers(append-only流水)
- core.py: 8态13迁移状态机全乐观锁; 转派候选动态查owner角色+'0'机构用户(不硬编码);
  默认受理角色params可配(ticket_default_role=owner.maintainer)
- agent.py: 异步poller(bid_flow范式), RAG检索'0'机构KB+历史工单, llm_call(org_id=0)
  LLM裁决能否回答(严格JSON), 硬门禁reply<20字符转人工, 故障≠答不了(fail_rounds>=3转人工),
  stale回收10min; 追问回流(agent_processing+owner空)立即拾取不等stale
- todos.py: 平台待办provider, 状态派生(客户待确认/角色池待认领/受理人待处理)
- init.py: load_ticket注册env+provider+poller(PIPELINE_MODE=web不启动)
- wwwroot: 客户我的工单页+建单表单, 运维工单管理页(队列切换), 详情弹窗(正文与操作同屏,按视角出按钮)
- load_path.py: logined全部API(业务权限服务端按current_role动态校验)+管理页壳owner三角色
- init/data.json: 7组码表+owner.maintainer角色种子(app_audit先例)
2026-09-10 16:17:58 +08:00