x

五金门店AI对话收银系统 - 完整技术方案

版本:v1.0
日期:2026-05-16
概述:基于 Hermes Agent 构建对话式五金门店收银进销存系统


一、系统架构

┌─────────────────────────────────────────────────────────────┐
│                      用户对话入口                            │
│        (企业微信 / Rokid眼镜 / 网页 / API)                 │
└─────────────────┬───────────────────────────────────────────┘
                  ▼
┌─────────────────────────────────────────────────────────────┐
│              Hermes Agent(意图Router)                      │
│  ┌─────────────┐  ┌──────────────┐  ┌──────────────────┐   │
│  │ 关键词匹配   │→ │  LLM意图分类 │→ │  Tool调用分发    │   │
│  │ (200+词)    │  │  (模糊表达)  │  │  (Structured)    │   │
│  └─────────────┘  └──────────────┘  └──────────────────┘   │
└────────┬────────────────────┬────────────────────────────────┘
         │ 简单操作           │ 复杂分析
         ▼                    ▼
┌──────────────────┐  ┌──────────────────────────────────────┐
│ 预置接口直接调用  │  │         智能体层(Multi-Agent)       │
│                  │  │  ┌──────────┐ ┌──────────┐ ┌────────┐│
│  • 开单/加商品   │  │  │Agent-02 │ │Agent-03 │ │Agent-04││
│  • 查库存/价格   │  │  │经营分析 │ │库存预测 │ │供应分析││
│  • 退货/退款     │  │  └──────────┘ └──────────┘ └────────┘│
│  • 查会员/账款   │  │  ┌──────────┐ ┌──────────┐          │
│  • 设置/配置     │  │  │Agent-05 │ │Agent-06 │          │
│                  │  │  │财务分析 │ │预警监控 │          │
└──────────────────┘  └──────────────────────────────────────┘
                            │
                            ▼
              ┌─────────────────────────────┐
              │      爱优CynosDB MySQL       │
              │   ls_hnjiuheng_cn (533表)    │
              │  销售/采购/库存/会员/财务     │
              └─────────────────────────────┘

二、接口清单

2.1 零售开单(retail)

接口名称 identifier method path 权限
快速开单 retail.quick_order POST /api/retail/quick_order cashier
加商品 retail.add_goods POST /api/retail/add_goods cashier
整单优惠 retail.order_discount POST /api/retail/order_discount cashier
支付收款 retail.payment POST /api/retail/payment cashier
提交销售单 retail.submit_order POST /api/retail/submit cashier
作废销售单 retail.cancel_order POST /api/retail/cancel manager
查询销售单 retail.get_order GET /api/retail/order cashier

2.2 采购管理(purchase)

接口名称 identifier method path 权限
采购下单 purchase.create_order POST /api/purchase/order manager
采购单列表 purchase.order_list GET /api/purchase/orders manager
到货确认 purchase.arrival_confirm POST /api/purchase/arrival manager
采购入库 purchase.stock_in POST /api/purchase/stock_in manager
采购退货 purchase.return POST /api/purchase/return manager

2.3 销售退货(refund)

接口名称 identifier method path 权限
退货退款 refund.create POST /api/refund/create cashier
退货单列表 refund.list GET /api/refund/list cashier
退货撤回 refund.cancel POST /api/refund/cancel manager

2.4 库存查询(stock)

接口名称 identifier method path 权限
库存搜索 stock.search GET /api/stock/search cashier
库存详情 stock.detail GET /api/stock/detail cashier
库存预警 stock.warning GET /api/stock/warning manager
库存流水 stock.flow GET /api/stock/flow manager

2.5 商品查询(goods)

接口名称 identifier method path 权限
商品模糊搜索 goods.search GET /api/goods/search cashier
商品分类筛选 goods.category GET /api/goods/category cashier
价格查询 goods.price GET /api/goods/price cashier
商品批量查询 goods.batch POST /api/goods/batch cashier
条码扫描查询 goods.barcode GET /api/goods/barcode cashier

2.6 会员管理(vip)

接口名称 identifier method path 权限
新增会员 vip.create POST /api/vip/create cashier
会员查询 vip.get GET /api/vip/get cashier
会员充值 vip.recharge POST /api/vip/recharge cashier
积分兑换 vip.points_exchange POST /api/vip/points_exchange cashier
积分查询 vip.points GET /api/vip/points cashier
会员列表 vip.list GET /api/vip/list cashier
会员消费记录 vip.consume_history GET /api/vip/consume_history cashier

2.7 赊账管理(credit)

接口名称 identifier method path 权限
赊账登记 credit.create POST /api/credit/create cashier
赊账还款 credit.repayment POST /api/credit/repayment cashier
赊账账期查询 credit.list GET /api/credit/list cashier
赊账详情 credit.detail GET /api/credit/detail cashier
逾期赊账查询 credit.overdue GET /api/credit/overdue manager

2.8 员工业绩(employee)

接口名称 identifier method path 权限
员工业绩查询 employee.performance GET /api/employee/performance manager
销售排行 employee.ranking GET /api/employee/ranking manager
员工列表 employee.list GET /api/employee/list manager
员工销售明细 employee.sales_detail GET /api/employee/sales_detail manager

2.9 门店设置(setting)

接口名称 identifier method path 权限
收银员权限查询 setting.permission_get GET /api/setting/permission manager
收银员权限设置 setting.permission_set POST /api/setting/permission admin
支付配置查询 setting.pay_config GET /api/setting/pay_config manager
支付配置设置 setting.pay_config_set POST /api/setting/pay_config admin
门店信息查询 setting.store_info GET /api/setting/store_info manager
收银员列表 setting.cashier_list GET /api/setting/cashier_list manager

2.10 统计报表(stats)

接口名称 identifier method path 权限
日销售报表 stats.daily GET /api/stats/daily manager
月销售报表 stats.monthly GET /api/stats/monthly manager
商品销售排行 stats.goods_ranking GET /api/stats/goods_ranking manager
分类销售统计 stats.category_stats GET /api/stats/category_stats manager
利润统计 stats.profit GET /api/stats/profit manager
供应商统计 stats.supplier GET /api/stats/supplier manager
库存汇总报表 stats.stock_summary GET /api/stats/stock_summary manager
会员统计报表 stats.vip_stats GET /api/stats/vip_stats manager
赊账统计报表 stats.credit_stats GET /api/stats/credit_stats manager

三、Agent调度逻辑

3.1 意图→Agent映射表

意图分类 触发关键词示例 目标Agent 输入数据源
每日经营分析 "日报"、"今天卖了多少"、"经营分析"、"销售额" Agent-02 ls_retail_sell
库存预测补货 "补货建议"、"缺货预警"、"该进什么货"、"安全库存" Agent-03 ls_retail_store_warehouse_goods
供应商分析 "供应商排名"、"哪个供应商好"、"账期" Agent-04 ls_retail_store_purchase_order
客户分析 "客户分析"、"会员画像"、"客户流失" Agent-04 ls_retail_vip, ls_retail_sell
财务月度分析 "财务报表"、"月度分析"、"利润"、"成本" Agent-05 ls_retail_sell, ls_retail_store_cost_price_record
异常预警 "异常预警"、"提醒"、"警告" Agent-06 全部数据

3.2 Agent输入输出

Agent-02 每日经营分析

输入JSON:

{
  "store_id": "S001",
  "date": "2026-05-16",
  "date_range": ["2026-05-01", "2026-05-16"],
  "include_hmm": true
}

输出JSON:

{
  "date": "2026-05-16",
  "kpi": {
    "total_sales": 15850.00,
    "total_profit": 3200.00,
    "profit_rate": 20.2,
    "order_count": 125,
    "avg_order_amount": 126.80,
    "hmm_chain": 8.3,
    "hmm_profit": 5.2
  },
  "top_goods": [
    {"rank": 1, "goods_name": "螺丝刀套装", "sales_amount": 2500, "quantity": 43}
  ],
  "cashier_performance": [
    {"cashier_name": "张三", "sales": 5800}
  ]
}

Agent-03 库存预测与补货

输入JSON:

{
  "store_id": "S001",
  "forecast_days": 7,
  "z_score": 1.96
}

输出JSON:

{
  "suggested_reorder": [
    {
      "goods_id": "G001",
      "goods_name": "螺丝刀套装",
      "current_stock": 50,
      "avg_daily_sales": 8,
      "safe_stock": 20,
      "suggested_qty": 100
    }
  ],
  "low_stock_warning": [...],
  "overstock_warning": [...],
  "seasonal_forecast": {...}
}

3.3 调度流程

用户输入
    │
    ▼
┌──────────────────┐
│ 关键词精确匹配    │ ← 优先匹配
│ (200+ 关键词)     │
└────────┬─────────┘
         │ 未命中
         ▼
┌──────────────────┐
│ LLM意图分类      │ ← 模糊表达
│ (6大类+细分意图)  │
└────────┬─────────┘
         │
    ┌────┴────┐
    │         │
    ▼         ▼
┌───────┐  ┌───────┐
│ 简单  │  │ 复杂  │
│ 操作  │  │ 分析  │
└───┬───┘  └───┬───┘
    │          │
    ▼          ▼
┌───────┐  ┌───────────────┐
│预置   │  │ Agent调度      │
│接口   │  │ (可并行多个)   │
└───────┘  └───────────────┘
                  │
    ┌─────────────┼─────────────┐
    ▼             ▼             ▼
┌────────┐  ┌────────┐  ┌────────┐
│Agent-02│  │Agent-03│  │Agent-05│
└────────┘  └────────┘  └────────┘
    │             │             │
    └─────────────┼─────────────┘
                  ▼
           结果格式化输出
           (用户友好消息)

四、对话流程设计

4.1 开单销售流程

用户:开单
系统:开始新订单,请说客户名或会员手机(或者"散客"直接开单)

用户:张三 13800138000
系统:[识别会员] 已选择【张三】,会员等级:黄金,会员价。
     商品?(直接说商品名称或编码)

用户:10个M8螺丝
系统:[查找并添加] 
     ✓ M8螺丝  ¥3.50 × 10 = ¥35.00
     还需要什么?输入"结账"或继续加商品

用户:再加5个M6螺母
系统:[添加]
     ✓ M6螺母  ¥1.20 × 5 = ¥6.00
     小计:¥41.00,会员价¥38.00

用户:抹个零
系统:[整单优惠] 原价¥38.00,优惠¥3.00,实收¥35.00
     确认结账?

用户:确认
系统:请选择支付方式:
     1. 微信 ¥35
     2. 支付宝 ¥35
     3. 现金 ¥35
     4. 赊账

用户:微信
系统:[收款确认]
     ═══════════════════
     ✅ 订单完成!
     订单号:SO20260516001
     商品:M8螺丝×10 + M6螺母×5
     合计:¥35.00
     支付:微信
     时间:2026-05-16 20:45
     ═══════════════════

【超时处理】若30秒无响应:自动保存草稿,提示"订单已暂存"
【取消操作】用户说"取消":确认后清除订单,提示"订单已取消"

4.2 采购入库流程

用户:采购入库
系统:请说供应商名称或编号

用户:向XX供应商进货
系统:[识别供应商] 已选择【XX供应商】
     请说商品和数量(如"20个M8螺丝,单价2.5元")

用户:M8螺丝100个,单价2.5元
系统:[确认商品]
     采购单:PO20260516001
     ├─ 供应商:XX供应商
     ├─ M8螺丝:100个 × ¥2.50 = ¥250.00
     └─ 状态:待到货
     确认创建?

用户:确认
系统:[创建成功]
     采购单 PO20260516001 已创建
     期望到货日期?请说天数(如"7天")

用户:7天
系统:[设置期望到货日期]
     采购单已确认,预计7天后到货
     到货时对我说"到货确认"即可入库

4.3 销售退货流程

用户:退货
系统:请说原订单号,或者描述商品我来帮你找

用户:订单号SO20260516001
系统:[查找订单]
     订单SO20260516001
     ├─ 商品:M8螺丝×10 + M6螺母×5
     ├─ 金额:¥35.00(微信支付)
     └─ 时间:2026-05-16 20:45
     请说退哪个商品,退多少

用户:退2个M8螺丝
系统:[计算退款]
     退货:M8螺丝 × 2
     单价:¥3.50(原价)
     退款金额:¥7.00
     退款方式:原路退回(微信)
     确认退货?

用户:确认
系统:[退货成功]
     ═══════════════════
     ✅ 退货完成!
     退货单:REF20260516001
     商品:M8螺丝 × 2
     退款:¥7.00(微信)
     ═══════════════════

4.4 库存查询流程

用户:查库存
系统:请说商品名称、编码或分类

用户:螺丝还有多少
系统:[搜索库存]
     螺丝类库存:
     ├─ 十字螺丝M4×20:1,200个(正常)
     ├─ 十字螺丝M5×30:860个(正常)
     ├─ 六角螺丝M8:320个(偏低)
     └─ 自攻螺丝M4:50个 ⚠️缺货预警

     要查看某个商品的详细库存?

用户:M8螺丝
系统:[单品库存]
     六角螺丝M8
     ├─ 当前库存:320个
     ├─ 安全库存:100个
     ├─ 日均销量:15个
     ├─ 库存可售天数:21天
     └─ 建议补货量:200个

4.5 会员充值流程

用户:会员充值
系统:请说会员手机号或姓名

用户:13800138000
系统:[识别会员]
     会员:张三
     ├─ 等级:黄金
     ├─ 当前余额:¥200.00
     ├─ 当前积分:1,500分
     └─ 充值享好礼:充100送5、充200送15、充500送50
     请说充值金额

用户:充300
系统:[确认充值]
     充值金额:¥300.00
     赠送金额:¥20.00(充300送20)
     到账余额:¥520.00
     支付方式?

用户:现金
系统:[收款确认]
     ═══════════════════
     ✅ 充值成功!
     会员:张三
     充值:¥300.00(现金)
     赠送:¥20.00
     到账:¥520.00
     当前积分:1,500分
     ═══════════════════

五、意图识别与路由机制

5.1 两层路由架构

用户输入
    │
    ▼
┌─────────────────────────────────────────┐
│  第一层:关键词精确匹配(毫秒级)         │
│  匹配则直接路由到对应接口/Agent          │
│  未匹配进入第二层                         │
└─────────────────┬───────────────────────┘
                  │
                  ▼
┌─────────────────────────────────────────┐
│  第二层:LLM意图分类                     │
│  6大类 × N细分意图                        │
│  输出:意图类型 + 参数 + 置信度           │
└─────────────────┬───────────────────────┘
                  │
         ┌────────┴────────┐
         │ 置信度≥0.8     │ 置信度<0.8
         ▼                 ▼
    直接执行         进入多轮澄清

5.2 关键词匹配表(200+词)

关键词 映射操作 类别
开单/开单销售/卖给/零售 retail.quick_order retail
加商品/加个/再来/添 retail.add_goods retail
结账/收款/支付/买单 retail.payment retail
退货/退款/退货退款 refund.create refund
退货撤回/撤销退货 refund.cancel refund
采购/进货/订购 purchase.create_order purchase
到货确认/入库 purchase.arrival_confirm purchase
查库存/库存还有多少 stock.search stock
缺货/库存预警 stock.warning stock
查商品/商品价格 goods.search goods
条码/扫一扫 goods.barcode goods
会员/会员价/积分 vip.get vip
充值/会员充值 vip.recharge vip
赊账/欠款/账期 credit.create credit
还款/付欠款 credit.repayment credit
日报/今天卖多少 Agent-02 analysis
经营分析/销售分析 Agent-02 analysis
补货建议/该进什么货 Agent-03 analysis
库存预测/安全库存 Agent-03 analysis
供应商分析/供应商排名 Agent-04 analysis
财务报表/利润/成本 Agent-05 analysis
异常/预警/提醒 Agent-06 analysis
设置/配置/权限 setting.permission_get setting
员工业绩/销售排行 employee.performance employee

5.3 LLM意图分类Prompt

你是一个五金门店收银系统的意图分类器。用户输入将映射到以下分类:

【分类体系】
1. retail(零售开单):quick_order, add_goods, order_discount, payment, cancel_order
2. purchase(采购管理):create_order, arrival_confirm, stock_in, return_order
3. refund(销售退货):create, cancel
4. stock(库存查询):search, detail, warning, flow
5. goods(商品查询):search, category, price, barcode
6. vip(会员管理):create, get, recharge, points
7. credit(赊账管理):create, repayment, list
8. employee(员工):performance, ranking
9. setting(设置):permission, pay_config, store_info
10. analysis(智能体分析):daily_report, inventory_forecast, supplier_analysis, financial, warning

【输出格式】
{
  "intent": "分类.意图",
  "params": {"key": "value"},
  "confidence": 0.95,
  "needs_clarify": false,
  "missing_params": []
}

【示例】
输入:"卖给李四10个螺丝"
输出:{"intent": "retail.quick_order", "params": {"customer_name": "李四", "goods": "螺丝", "quantity": 10}, "confidence": 0.92}

输入:"还有多少库存"
输出:{"intent": "stock.search", "params": {}, "confidence": 0.85, "needs_clarify": true, "missing_params": ["keyword"]}

请分析以下用户输入:

5.4 路由优先级

优先级 路由类型 触发条件 响应时间
1 关键词精确匹配 命中关键词表 <50ms
2 参数完整的意图 置信度≥0.8 <200ms
3 需要澄清的意图 置信度0.5-0.8 <500ms
4 模糊意图 置信度<0.5 进入多轮对话

六、权限与数据隔离

6.1 角色权限体系

角色 权限范围 可操作
admin 全店 所有功能 + 人员管理
manager 店长 采购/退货审批/统报/设置
cashier 收银员 零售开单/退货/查询
inventory 仓库员 采购入库/库存管理

6.2 多租户数据隔离

-- 所有查询自动携带store_id条件
WHERE store_id = :current_store_id

-- 行级安全策略
CREATE POLICY tenant_isolation ON ls_retail_sell
  FOR ALL
  USING (store_id = current_setting('app.store_id')::uuid);

6.3 敏感操作二次确认

操作 确认方式 验证
退款 权限码 + 确认 refundcode
作废订单 权限码 + 原因 manager权限
删除商品 权限码 delete_goods_jurisdiction_code
改价 权限码 is_cut_price_type_permission_code
赊账 会员密码 会员预存密码

6.4 审计日志

-- 操作审计表
CREATE TABLE ai_agent_audit_log (
  id BIGINT PRIMARY KEY,
  user_id VARCHAR(64),
  store_id VARCHAR(64),
  action VARCHAR(64),
  params JSONB,
  result JSONB,
  confidence FLOAT,
  agent_type VARCHAR(32),  -- 'direct' / 'agent_02' / 'agent_03' ...
  created_at TIMESTAMP DEFAULT NOW()
);

七、对话上下文管理

7.1 会话状态

class ConversationContext:
    store_id: str
    user_id: str
    role: str  # admin/manager/cashier

    # 当前模式
    mode: str  # 'sell' / 'purchase' / 'refund' / 'query' / None

    # 进行中的订单
    active_order: {
        'order_id': str,
        'customer': dict,
        'items': list,
        'subtotal': float,
        'discount': float,
        'total': float,
        'status': str  # 'editing' / 'paid' / 'cancelled'
    }

    # 历史对话摘要(用于长程上下文)
    history_summary: str

7.2 多轮对话示例

用户:开单                         # mode=sell
系统:开始新订单,请说客户名
用户:李四                         # 识别客户
系统:[已选李四] 商品?
用户:10个螺丝                     # 添加商品
系统:[已加] 螺丝×10,还需什么?
用户:查一下库存还有多少           # 中断开单,临时查询
系统:[查询库存] 螺丝库存1200个
用户:再加5个螺母                   # 恢复开单
系统:[已加] 螺母×5
用户:结账
系统:共计¥45,确认?
用户:确认,微信
系统:[完成] 订单SO20260516002

八、技术实现

8.1 技术栈

组件 技术选型
对话框架 Hermes Agent
意图识别 关键词 + MiniMax M2
业务接口 爱优 ThinkPHP 5.0 API
数据库 CynosDB MySQL(读写分离)
缓存/Session Redis
分析引擎 ClickHouse(扩展)
部署架构 多租户 Docker

8.2 接口注册

TOOL_REGISTRY = {
    # 零售
    "retail.quick_order": {
        "api": "/api/retail/quick_order",
        "method": "POST",
        "params": ["store_id", "cashier_id", "goods_list", "vip_id"],
        "context_mode": "sell"
    },
    "retail.add_goods": {
        "api": "/api/retail/add_goods", 
        "method": "POST",
        "params": ["order_id", "goods_id", "quantity", "price"],
        "requires_context": ["sell"]
    },
    # ... 更多接口
}

AGENT_REGISTRY = {
    "Agent-02": {
        "name": "每日经营分析",
        "trigger_keywords": ["日报", "经营分析", "今天卖了多少"],
        "input_schema": {...},
        "output_schema": {...},
        "sql_template": "..."
    },
    # ... 更多Agent
}

九、对话示例

9.1 日常经营查询

用户:今天卖了多少钱
系统:[Agent-02 经营分析]

     📊 今日经营汇总(2026-05-16)

     💰 销售额:¥15,850(含退款¥320)
     📦 订单数:125笔
     💵 毛利:¥3,200(20.2%)
     📈 环比:↑8.3%(昨日¥14,615)

     🏆 TOP3商品:
     1. 螺丝刀套装 - ¥2,500(43件)
     2. 六角螺丝M8 - ¥1,800(360件)
     3. 螺母M6 - ¥1,200(1000件)

     👤 员工业绩TOP3:
     1. 张三 - ¥5,800(32单)
     2. 李四 - ¥4,200(28单)
     3. 王五 - ¥3,850(25单)

9.2 补货建议

用户:补货建议
系统:[Agent-03 库存预测]

     📦 建议补货(未来7天)

     ⚠️ 急需补货:
     ├─ 六角螺丝M8:需补500个
     │  当前320个 / 可售5天 / 安全库存100个
     │
     🔔 建议补货:
     ├─ 十字螺丝M5:需补200个
     │  当前860个 / 可售12天 / 安全库存150个

     📉 滞销预警:
     ├─ 自攻螺丝M4:积压50个,连续15天无销售
     │  建议:促销或退供应商

9.3 快速开单

用户:开单卖给李四,10个M8螺丝,5个M6螺母
系统:[快速开单]

     📝 订单 SO20260516003
     👤 客户:李四(会员价)

     ├─ 六角螺丝M8  ¥3.50 × 10 = ¥35.00
     ├─ M6螺母     ¥1.20 × 5  = ¥6.00
     └─ 会员价优惠           -¥2.00
        ─────────────────────
        合计                 ¥39.00

     输入"结账"继续,或"加商品"继续添加
Left-click: follow link, Right-click: select node, Scroll: zoom
x