阶段:P2(P0 须已能手工确认业务单并写流水,见 14-库存确认契约.md)。
企微群机器人采单(须 @)、网页上传兜底;OCR + 火山方舟识别;H5 语音转写辅助录入。落库目标一律为业务单草稿,人工确认后才走 14 的确认契约。对话问数只读。
表:inbound_messages
| 字段 | 说明 | 来源 |
|---|---|---|
| id | 系统主键 | 系统 |
| channel | wecom_bot / web / h5_voice |
系统 |
| bot_domain | purchase / process / sales / finance / stock |
系统 |
| wecom_userid | 提交人企微 id(可空) | 企微 |
| user_id | 系统用户(可空) | 系统 |
| raw_text | 附带文字或语音转写文本 | 企微 / 网页 / 语音 |
| attachment_paths | 附件路径(JSON) | 系统 |
| parse_status | pending / parsed / need_fix / failed |
系统 |
| parsed_payload | 结构化字段(JSON) | 系统 |
| target_type | 落库目标类型(可空) | 系统 |
| target_id | 落库目标 id(可空) | 系统 |
| created_at / updated_at | 时间戳 | 系统 |
规则:未 @ 机器人的群消息不入库;各业务域机器人只处理本域单据;不支持个人微信群与 Hook。
表:ocr_reviews
| 字段 | 说明 | 来源 |
|---|---|---|
| id | 系统主键 | 系统 |
| inbound_message_id | 采单消息 | 系统 |
| field_name | 字段名 | 系统 |
| ai_value | AI 识别值 | 系统 |
| final_value | 人工确认值 | 系统 |
| reviewer_id | 复核人(可空) | 系统 |
| status | pending / confirmed |
系统 |
| created_at / updated_at | 时间戳 | 系统 |
不确定字段强制复核,确认前不可入账。品名须匹配产品/SKU 主数据,匹配不上人工处理。
企业 H5 内集成企业微信 JS-SDK 语音能力(startRecord → translateVoice)。
| 能力 | 说明 |
|---|---|
| 录音 | wx.startRecord / stopRecord |
| 转写 | wx.translateVoice → 文本 |
| 表单填报 | 所有 H5 / 可语音的业务表单均可:转写文本 → 方舟整理为字段草稿 → 人工确认/改后提交 |
| 对话 | 转写文本也可作为 /app/chat 的用户输入 |
适用范围(在权限内、有对应表单页时):采购、订单/退货、加工、库存作业(入库/出库/调拨/降级/盘点/损耗等)、报销、以及其它 H5 暴露的录入页。后台 Filament 表单可选接入同一「语音 → 草稿 → 确认」能力,不强制。
语音只在企微客户端 H5 可用;需 JS-SDK 签名(/app/wecom/js-sdk-config)。转写失败提示重试,不静默丢弃。未人工确认不得直接落库。
统一 LLM 提供商:火山方舟(Volcengine Ark)。用于单据字段抽取、语音草稿整理、对话问数、分析摘要等(可按场景换模型名,不换厂商通道)。
| 配置项 | 说明 |
|---|---|
VOLCENGINE_ARK_API_KEY |
API Key |
VOLCENGINE_ARK_BASE_URL |
默认 https://ark.cn-beijing.volces.com/api/v3 |
VOLCENGINE_ARK_MODEL |
文本模型 endpoint/model id |
| 超时等 | 连接/读超时可配 |
落点建议:config/services.php(方舟)+ config/ai.php(provider);可用 laravel/ai 或 HTTP 兼容封装对接方舟 API。
约束:方舟只产出建议结果;写入业务表前必须经 ocr_reviews 或等价人工确认(财务相关尤其如此)。对话查询为只读,不直接改单。
企业 H5 提供对话界面(/app/chat):用户用自然语言(可配合语音转写)查询自己权限范围内的业务信息。
表:chat_conversations
| 字段 | 说明 | 来源 |
|---|---|---|
| id | 系统主键 | 系统 |
| user_id | 用户 | 系统 |
| title | 标题(可空,可由首问生成) | 系统 |
| created_at / updated_at / deleted_at | 时间戳;软删除 | 系统 |
表:chat_messages
| 字段 | 说明 | 来源 |
|---|---|---|
| id | 系统主键 | 系统 |
| conversation_id | 会话 | 系统 |
| role | user / assistant / tool |
系统 |
| content | 文本内容 | 系统 |
| payload | 结构化结果(JSON,可空:表格、单号链接等) | 系统 |
| created_at | 时间 | 系统 |
| 规则 | 说明 |
|---|---|
| 登录用户 | 仅当前企微登录用户的会话 |
| 功能权限 | 无某模块权限则不可查该模块(如无采购权限不答采购价) |
| 产品范围 | 默认只查 product_user 所属产品相关数据;持 data.view-all 可按授权看更广 |
| 敏感字段 | 采购价、成本、利润等仍受原 64 / 权限约束;无权限则拒答或脱敏 |
| 只读 | 对话不创建/修改业务单据;需要改单引导到业务页或采单流程 |
采购单、订单/退货、库存结存与流水、加工工单、报销与审批状态、分析盈亏/预警摘要、站内待办等——以用户能在后台/H5 看到的数据为上限,不扩权。
用户输入(文字或语音转写)
→ 方舟理解意图 + 选工具/查询
→ 服务端按 user_id + 角色权限 + product_user 执行只读查询
→ 方舟组织回答(可附单号链接)
→ 写入 chat_messages
inbound_messages(采单)或表单草稿。ocr_reviews 或表单预填待确认。stocks。/app/chat;方舟 + 受控只读查询;会话落库。出站通知见 09-消息.md。
| 可先做 | P2 满配 |
|---|---|
| 单一业务域 OCR 草稿 | 全表单语音、对话问数 |