总览
阶段分布
最近推送
按账号
| 账号 | 总计 | 完成 | 失败 | 待审核 |
|---|
按平台
| 平台 | 总计 | 完成 | 失败 |
|---|
订单列表
| PSS 订单号 | 账号 | 平台 | 食堂 | 配送日 | 状态 | ERP 单号 | 审核 | 创建时间 |
|---|
服务日历
点击日期格子可添加/移除服务日覆盖;蓝色背景为服务日。
食堂评价导出
请选择本次导出实例。会话缺失或失效时自动登录,停用实例也可手动导出。
导出 PSS 食堂评价
按配送日期抓取所有账号该月的食堂评价,按 账号×机构 生成 CSV 并打包 zip。 抓取约需 1~2 分钟;每导出一次存一个包,同月重复导出不覆盖,多余的包请自行删除。
| 文件 | 行数 | 大小 | 生成时间 |
|---|
PSS客户+商品信息
导出食堂信息和商品库
请选择本次需要导出的 PSS 实例。系统导出其可见机构的食堂信息与商品库,CSV 可用 Excel 打开。会话缺失或失效时自动登录;停用实例也可手动导出,订单同步状态不变。 商品库按供应商账号当前可见范围返回,可能不含已下架商品。客户导出包含联系方式和地址,请妥善保管导出的压缩包。
| 文件 | 实例数 | 食堂记录 | 商品记录 | 大小 | 生成时间 |
|---|
问题客户检查
未配置:PSS 有单、后台客户映射里没有这个食堂,订单被跳过没进系统。 ERP未启用:映射里配的编号不在 ERP 下单客户列表里(ERP 没有启动状态接口,不在列表 = 未启用或编号错)。 只看送货日期在「今天往前 3 天」之后的单。检查只读本地数据和 ERP 客户缓存(最长滞后 24 小时); 「先刷新」会临时登录 ERP 按分公司现拉一次客户列表,约 10~60 秒。
| 问题类型 | 账号 | 平台 | PSS食堂名 | PSS订单号 | 送货日期 | 已配ERP编号 | 处理建议 |
|---|---|---|---|---|---|---|---|
| 点「一键检查」 | |||||||
IM 群管理
群配置存数据库(chat_group 表)。新增/启停/删除立即生效,下一轮 ingest 自动接入;不需要重启服务。
新增群
群的内部 ID 由系统自动生成;企微 conversation_id 系统会从导出包自动读出,无需手填。
| 群名 | group_id(内部) | source_ref(自然 ID) | ERP 客户 | 分公司 | 仓库 | ERP 实例 | 已标注 | 启用 | 操作 |
|---|
IM 总览
面向运维 / 开发者——展示 chat_messages → image_analysis → chat_events → chat_event_order 全链路的处理状态与累计输出。
Webhook 入口:POST /api/v1/{messages,conversations,contacts}/batch(健康检查 POST /api/v1/ping)。
image role 分布
event 类型分布
order state 分布
最近 7 天 chat_events 新增
群级状态
| 群 | source_ref | 启用 | 最后消息 | msgs (待处理/总) | 图 (待识别/已识别) | events | orders (各 state) | 操作 |
|---|
最近失败(events + orders)
| 更新时间 | 群 | event_id | 类型 | event status | order state | last_error |
|---|
IM 订单观测
stage D 抽取的下单事件 + stage E SKU 匹配结果 + 推 ERP 状态全链路可观测。
自动模式(默认)下事件直接进 pending_erp;审批模式(IM 总览页 toggle)
下停在 pending_review 等客服确认。
| 群 | 类型 | 摘要 | items | 送货日期 | 状态 | ERP 单号 | ERP 实例 | 创建时间 | 操作 |
|---|
人员管理
群:— (—)
角色含义:customer = 客户方下单/投诉来源;our_staff = 我方客服/运营,发言只作上下文;unknown = 待确认。 ingest 阶段自动登记 unknown 成员;下游 stage C/D 需要 role 区分谁是下单人。
| display_name | role | sender_id | 备注 | 消息数 | 最近发言 |
|---|
推送记录
| 发送时间 | 渠道 | 标题 | 结果 | Trace ID | 错误 |
|---|
🧩 实例配置
本页登记系统可用的「资源」:PSS 站点、ERP 站点。 账号怎么绑定这些实例见「🔗 账号与绑定」; 消息推送去向见「📣 通知设置」。
PSS 实例
每个实例 = (base_url 登录页 + api_base_url 业务 API)。
账号在「🔗 账号与绑定」页通过下拉「PSS 实例」绑定到本表里的某个 key;不指定则走 default。
保存后即可用于手动导出;可选择“保存并验证登录”检查凭据。订单同步仍由账号启用开关控制。
ERP 实例
每个实例 = (域名 + 登录账号 + 默认 orgUnit/warehouse + change_sync 配置)。
路由顺序:平台.erp_profile > 账号.erp_profile > default。
多个 PSS 平台路由到不同 ERP(例如 pss_1→ERP_1、pss_2→ERP_2、pss_1→ERP_2),
在「🔗 账号与绑定」页展开账号 → 平台块里的「ERP 实例」下拉里设置。
改完点保存写入 config.yaml;需重启 pss-main / pss-worker / pss-im-worker / pss-learn-worker 生效。
🔒 访问口令
全站共用一个口令,所有客服用同一个。口令只存哈希,忘了无法找回,只能让运维重置
(见 docs/runbook.md「忘记 UI 访问口令」)。
改完口令后所有设备都会掉线(包括你自己),需要用新口令重新登录 —— 这也是同事离职后
收回访问权的办法。
系统状态
🔗 账号与绑定
本页维护「关系链」:账号绑定哪个 PSS / ERP 实例、平台下的客户映射、各账号的服务班次。 实例本身(站点 + 凭据)在「🧩 实例配置」页登记。
PSS → ERP 账号管理
每个账号 = 一个 PSS 登录身份 → 一个或多个 ERP 推送目标。
同一个 PSS 站点(pss_profile)下可以有多个账号,账号之间登录身份不同、看到的客户也不同(权限分割)。
平台行的「ERP 实例」下拉决定该平台的订单推到哪个 ERP;不指定则回落账号默认。
平台行的「映射表」下拉决定该平台订单按哪张机构分区表解析 SKU(导入 CSV ≠ 激活,不绑则静默走旧全局层、整单落临时商品;卡片头黄牌提示未绑)。
卡片头的启用开关:停用 = 预配置未上线,main 不登录 / 不轮询该账号的 PSS、learn 不反学其客户;已入队的订单仍照常推 ERP。开关即时写 config.yaml。
修改后点「保存账号」写 config.yaml;改完需重启 pss-main / pss-worker / pss-im-worker / pss-learn-worker 生效。
服务班次配置
每个账号独立配置;未配置则全时段处理(兼容旧行为)。
📣 通知设置
本页决定「什么消息发到哪个群」。先在「通知机器人」登记各群 webhook,再用「路由规则」按
分公司 × 通知类型把消息分到对应群。求值(特异性优先):通知类型比分公司更具体,
于是「全部分公司 · 出库改单 → 出库群」会盖过「乐禾金华 · 全部类型 → 乐禾群」,
正好满足「出库改单一律进出库群、其余按分公司分群」。
未命中任何规则的通知回落默认大群,不丢通知。其中出库改单还会按「出库人企微映射」@ 出库人提醒确认。
默认大群 + 生效渠道
所有没被下方规则命中的通知都发到这里(兜底)。
本地文件 = 写 ./logs/notifications/,运维上服务器看;企微 Webhook = 推到群里。
通知机器人
企微群机器人统一在这里登记(名字 + Webhook URL)。下方路由规则按名字引用,
URL 只存一份、改一处处处生效。保存立即生效(无需重启)。
企微建群 → 群设置 → 群机器人 → 添加 → 复制 Webhook 地址。
PSS 订单通知路由(分公司 × 通知类型 → 群)
本区只管 PSS 平台订单的通知(微信群订单在下一区按群配置)。
按「分公司 × 通知类型」决定这类消息发到哪个机器人;两者都可选「全部」做通配,
动作也可选「🔇 静默」(不发企微,只落本地文件和推送记录,可查不丢底)。
例:分公司=窝里仔 / 类型=全部 → 窝里仔群;分公司=全部 / 类型=出库改单 → 出库群。
保存立即生效(无需重启)。
ℹ️ 两类「通知类型」分别是什么?(点开看)
微信群订单通知路由(群 × 通知类型 → 机器人)
本区只管微信群订单的通知:勾选哪些群走哪个机器人;群留空 = 兜底(其余所有群都走它)。 通知类型分「下单成功」(单已录入 ERP 的回执)和「群改单请求」(群里改单、需人工处理), 同一个群的两类可配不同机器人;类型留空 = 全部。 动作也可选「🔇 静默」。连兜底都没配 → 默认大群。保存立即生效(无需重启)。
出库人名册(@ 谁)
「锁定态改单」通知会按每单实际出库人(= 该单 ERP 制单人)自动 @ 提醒核对。
企微 @ 需要手机号,这里把出库人姓名 → 手机号登记一次即可,多单复用。
名册里没登记手机号的出库人,消息仍正常发到群、报告里有名字,只是不 @ 震动(不丢消息,回头补上即可)。保存立即生效(无需重启)。
「负责的地区」是纯管理标签(下方按地区筛选用),不影响 @ 和通知路由。
系统管理员(系统告警 @ 谁)
系统性故障(ERP 登不上 / PSS 登不上或被封 / 订单进失败态 / 主循环连续出错 / 数据库锁死)会发一条
「系统告警」并自动 @ 这里登记的管理员。
消息发到哪个群由上方「PSS 订单通知路由」里的「人工跟进 / 系统告警」类型决定(未配则落默认大群);这里只决定 @ 谁。
同类故障 30 分钟内只 @ 一次,冷却期内的重复发生会累计后在下一条里汇报,不刷屏。保存立即生效(无需重启)。
PSS 扫码登录
为每个需要扫码的登录账号选择消息机器人,并配置公网访问域名。
⏰ 轮询任务
左侧开关一键暂停 / 恢复 pss-main 对 PSS 的全部访问(拉新单 + 改单检测)。时段限定 pss-main 只在此时段内轮询;
时段外完全不访问 PSS(夜间静默,避免被订单更新刷屏),两个都留空 = 全时段。
全局生效,对所有账号一致;开关和时段都是下一轮生效(最多 1 分钟),不用重启。
🌙 回溯同步(每日一次)
开了「回溯往期订单」的平台不跟着上面的轮询走:整个平台每天只在这个时间点跑一次(拉单 + 改单检测, 往期范围见平台卡片的说明),不受轮询时段限制,但轮询暂停时也不跑;停用的账号不跑。 批次里的所有通知汇总成一份日报(失败和落临时商品的放最前),不逐张推送。 想马上跑一次:下方平台列表里的「立即回溯一次」,跑完立即发日报。
📤 订单数据来源
当前来源:订单页面数据(PSS 订单详情页)
新单、改单及回溯统一读取订单详情页。XLS 下载和影子比对已停用,详情页获取失败时按正常失败流程处理。
「订单页面数据」每行只有 goodsId、没有商品编码;这张缓存表把 goodsId 翻译成编码填回订单行,让编码映射(FIXED 层)照常命中。 进料:pss-main 每 24 小时全量拉一次各机构商品库 + 商品映射 CSV 第 E 列 goodsId。只增不删(PSS 商品库查不到下架商品)。括号里按「首次写入来源」统计;订单对喂为历史数据,继续保留使用。
🧩 浏览器插件
「PSS 订单导出」插件:在 PSS「订单 → 订单查询」勾选订单,点插件图标一键导出 Excel。 抓取 / 解析 / 生成 Excel 全部在用户浏览器本地完成,不经过本服务器、不需要 PSS 账号密码; 服务器只负责这里的安装包分发和授权码签发;插件本身不会连本服务器(2026-09-04 起连版本检查也去掉了),有新版要主动通知使用者下载。
当前发布版本
使用授权码
用户安装 / 更新方式
发布新版本(运维)
📌 PSS特殊备注
「ERP商品编码 → 备注」全局字典(如「直送」)。只对勾选的客户生效:去 🔗 账号与绑定 的客户映射行勾「特殊备注」。命中的订单行把备注合并进 ERP「备注」列 (PSS 买家自己写了备注则拼接,如「293;直送」);改单同步时同样生效。
字典(0 条)
ℹ️ 关于系统
当前这套服务正在运行的代码版本。排查问题、确认升级是否生效时,把「当前部署版本」那串编号报给技术即可。
当前部署版本
更新内容
🌱 学习状态
日常监控 harvester 学到的映射 + 待客服处理的问题映射。错配在「🌱 最近学习」点 「✎ 编辑」可手改(自动标 manually_edited,未来反学不会覆盖)。 映射搜索 / CSV 导入 / quirk 管理见 ⚙️ 映射管理。
harvester 最近运行
新流程(2026-05-27 起):ERP 出库单为入口反学,零闸门 + K=1 首单即学。
📏 匹配质量(出库判分)
出库单 vs 我方推送逐行对比:没改=找对 / 临时→真实=学到 / 被换商品=找错。 PSS 列是对照组(其被改率≈业务噪音本底)| 单据日期 | ERP 单号 | 来源 | PSS 名 | 我方推送 | 实际出库 | tier | 结论 |
|---|
判分随 learn worker 每日跑;历史基线用
python -m scripts.backfill_match_outcome --days-back 30 回填。
「未配对」是配对盲区(换名认不出/加行/删行),如实呈现不硬猜——找错率是下界。
群改单回链的订单已整单剔除。
🌱 最近学习
harvester 反学 + 客服手改的映射;不含原始表 csv 灌入| 更新时间 | ERP 客户 | PSS 名 | PSS 单位 | ERP 编码 | ERP 名 | 来源 | HIT | 标记 | 操作 |
|---|
问题映射(冲突 / 待审 / 单次未复核 / 单位换算可疑)
| 状态 | PSS 名 | PSS 单位 | ERP 客户 | ERP 编码 | ERP 名 | hit | 最近见 | 操作 |
|---|
⚙️ 映射管理
商品映射按「机构」分表管理,每行 = 机构 + 食堂(空 = 全机构通用)+ PSS 商品 → ERP 商品。 接单时按顺序找:① 该食堂专属映射 → ② 机构通用映射 → ③ 都没有则按「临时商品」进单,等补表后自动恢复。 系统还会自动学习:从 ERP 出库单学回缺失的映射;同一食堂同一商品连续 2 次换货会自动固化成该食堂的专属映射。 日常维护:📦 导出现有数据 → Excel 修改 → 📤 导入 CSV(按机构整表覆盖,系统自动学习的行不会丢)。 监控见 🌱 学习状态。
① 商品映射健康度
② 各客户特化进度(全部)
| 客户 | LEARN 数 | quirk 数 |
|---|
客户特殊需求(quirk)
harvester 观察到 (PSS 商品 → 客户实际选了非主流 ERP) 不一致时自动记一笔;不参与 resolver 自动匹配,仅由通知模板提醒客服
| 客户 | PSS 商品 | 单位 | alt ERP 编码 | alt ERP 名 | 次数 | 备注 | 来源 | 最近 | 操作 |
|---|
映射明细
| 机构 | 生效范围 | PSS 商品 | 单位 | ERP 商品 | ERP 单位 | 来源 | HIT | 状态 | 最近见 | 操作 |
|---|