AI 应用

阶段: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 语音能力startRecordtranslateVoice)。

能力 说明
录音 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 对话问数

企业 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

维护方式

  1. 采集:企微官方 API 收 @ 消息;网页上传;H5 语音转写文本。写入 inbound_messages(采单)或表单草稿。
  2. 解析:图片/PDF → OCR;文本/转写 → 火山方舟抽字段 → ocr_reviews 或表单预填待确认。
  3. 确认后:落入采购 / 订单 / 加工 / 报销等业务表为草稿或直接提交;改库存必须再走各模块确认 → 14,禁止解析服务直接写 stocks
  4. 对话:H5 /app/chat;方舟 + 受控只读查询;会话落库。
  5. 语音录单:表单页语音 → 转写 → 方舟填草稿 → 用户确认。

出站通知见 09-消息.md

验收标准(P2)

  • [ ] 未 @ 不入库;未确认不入账、不写流水。
  • [ ] 确认后落到业务单据,库存仅经 14。
  • [ ] 对话只读,不扩权。

V1 / 延后

可先做 P2 满配
单一业务域 OCR 草稿 全表单语音、对话问数