Appearance
金刚系统数据与状态模型
本页说明金刚侧最重要的数据关系和状态来源。排查问题时不要只看页面展示,要沿着主表、流水、日志和任务记录一起查。
状态模型总览
| 状态对象 | 主表 | 状态字段/记录 | 日志或流水 | 备注 |
|---|---|---|---|---|
| 服务订单 | order | order_status、order_status_name | order_logs | 云平台人工派单会写订单状态和日志。 |
| 订单支付 | store_payment_order、order_payments | status、payment_status | ccuser_transaction、支付回调日志 | 易宝回调需要幂等处理。 |
| 标准单派发 | standard_staff_dispatch_attempt | 尝试状态、员工确认状态 | standard_staff_dispatch_log | 失败、拒绝、超时都要看派发日志。 |
| 标准单配置 | standard_order_rule_config | 配置项键值 | standard_order_config_snapshot | 历史订单按快照复盘。 |
| 标准单通知 | standard_order_notification_outbox | 待发送、已发送、失败 | 发送结果和错误信息 | 员工没收到通知先查 outbox。 |
| 员工钱包 | staff_wallet_account | 可用、冻结、状态 | staff_wallet_ledger | 结算、提现都通过流水追踪。 |
| 门店积分 | store_score_account | 可用、冻结、派发状态 | store_score_transaction | 线索和日结影响积分。 |
| 门店钱包 | store_wallet_account | 可用、冻结、状态 | store_wallet_transaction | 月度品牌费、充值、扣费走这里。 |
| 合同 | contract | 合同状态、服务期、主体 | contract_payment、contract_change_record | 变更和换人必须看操作记录。 |
| 保险 | insurance_record | 保单状态、退保状态 | insurance_operation_record、insurance_order_log | 以本地记录和第三方回调共同确认。 |
生产数据快照
以下为 2026-07-19 只读查询 jingangdata 的规模快照,用于接手判断链路成熟度,不代表实时运营报表。
| 对象 | 记录数 | 判断 |
|---|---|---|
company | 662 | 公司主体已经有明显历史沉淀。 |
store | 487 | 门店主数据是门店端入口和资金归属核心。 |
internal_user | 739 | 门店管理账号、角色和权限需要按数据范围排查。 |
service_staff | 2925 | 员工端和服务人员管理是高频链路。 |
order | 1515 | 订单状态已生产运行,修复前必须查日志和支付。 |
customer | 2198 | 客户、地址、合同和订单强关联。 |
contract | 1434 | 合同链路属于高风险生产模块。 |
insurance_record | 1652 | 保险记录已有第三方状态沉淀。 |
store_wallet_account | 479 | 门店钱包账户已基本覆盖门店。 |
store_score_account | 467 | 门店积分账户已基本覆盖门店。 |
staff_wallet_account | 0 | 员工钱包代码已具备,但真实账户尚未沉淀。 |
staff_wallet_ledger | 0 | 员工钱包流水当前无沉淀。 |
staff_service_capability | 41 | 员工服务能力已有少量生产配置。 |
staff_platform_product | 219643 | 员工与平台产品绑定已有批量沉淀,排查候选时必须关注。 |
standard_staff_service_region | 97 | 标准员工服务区域已有生产配置。 |
standard_staff_score_account | 41 | 标准员工积分账户已有少量沉淀。 |
standard_staff_dispatch_attempt | 0 | 标准单自动派发 attempt 当前无生产沉淀。 |
standard_order_settlement_task | 0 | 标准单结算任务当前无生产沉淀。 |
standard_order_notification_outbox | 0 | 标准单通知 outbox 当前无生产沉淀。 |
订单状态真实分布如下:
| 状态码/名称 | 记录数 |
|---|---|
80/已完成 | 826 |
99/已取消 | 311 |
10/已接单 | 135 |
90/已完成 | 79 |
40/已派单 | 59 |
20/派单待确认 | 54 |
50/执行中 | 20 |
60/开始服务 | 20 |
30/拒绝接单 | 9 |
20/已派单 | 1 |
80/服务结束 | 1 |
库里存在少量状态码和状态名不一致的历史记录,排查时以状态码、订单日志和服务调用链为准。
订单状态排查
| 现象 | 排查顺序 |
|---|---|
| 页面显示未派单 | 查 order.order_status,再查 order_logs 是否有派单操作,若是标准单再查 standard_staff_dispatch_attempt。 |
| 员工已服务但订单未完成 | 查员工服务记录是否提交,再查 order_logs 是否有完成状态写入失败。 |
| 订单被取消 | 查 order_logs 的取消来源,再看支付是否需要退款或释放钱包/积分冻结。 |
| 补价后状态不变 | 查 order_additional_payments 的支付状态和 payment_service.py 回调处理结果。 |
| 云平台人工派单未生效 | 查 yunapi 人工派单接口是否写入 order,再查 storeapi 员工端是否按新员工字段回显。 |
状态码口径
| 状态码 | 常见名称 | 主要来源 |
|---|---|---|
10 | 已接单 | 历史/兼容数据。 |
20 | 派单待确认 | 门店派单或自动派发给员工后等待确认。 |
30 | 拒绝接单 | 员工拒单;标准单会继续顺延候选。 |
40 | 已派单 | 员工已确认接单。 |
50 | 执行中 | 员工进入执行过程。 |
60 | 开始服务 | 员工上传服务前凭证并开始服务。 |
70 | 服务结束 | 兼容旧流程。 |
80 | 已完成 | 员工完成服务,后续可进入结算或评价。 |
90 | 已评价/已完成 | 历史完成态。 |
99 | 已取消 | 取消后不可继续履约。 |
员工端状态机允许 20 -> 30/40 -> 50 -> 60 -> 80,70 -> 80 只为旧流程兼容。门店端老统计中还会出现 4/5/6 的历史完成/取消/拼团口径,接手时必须先看订单 business_mode 和具体接口,不要把老统计字段当标准单状态机。
全国标准单关键数据
text
platform_product / platform_product_sku
-> staff_platform_product / staff_service_capability
-> standard_staff_service_region
-> standard_staff_dispatch_pool
-> standard_staff_dispatch_attempt
-> standard_staff_dispatch_log
-> order / order_logs
-> standard_order_settlement_task
-> staff_wallet_ledger| 环节 | 数据要求 | 失败表现 |
|---|---|---|
| 产品可承接 | 平台产品上架,工种有效,SKU 映射正确。 | 下单后没有进入员工池或没有候选。 |
| 员工可接 | 员工有效,能力覆盖产品,区域覆盖地址,档期可用。 | 派发日志显示候选为空或被过滤。 |
| 派发可确认 | 员工有 openid/通知能力,任务能发送 outbox。 | 订单待确认但员工无提醒。 |
| 超时可顺延 | 超时任务正常运行,候选游标可推进。 | 一直卡在同一员工待确认。 |
| 结算可入账 | 订单完成,结算任务未重复,员工钱包有效。 | 服务完成但员工钱包没有收入。 |
标准单派发规则要点
| 规则 | 说明 |
|---|---|
| 总开关 | 先读 standard_order_rule_config.config_code = NATIONAL_STANDARD_ORDER_ENABLED,无配置再读环境变量 STANDARD_STAFF_AUTO_DISPATCH_ENABLED;当前生效值为 true。 |
| 允许城市 | 先读 config_code = ALLOWED_CITY_CODES,支持 *;否则读环境变量 STANDARD_STAFF_AUTO_DISPATCH_CITY_CODES;当前生效值为 ["*"]。 |
| 允许来源 | 默认 CLIENT、STORE_QR,配置 config_code = ALLOWED_SOURCES 可覆盖;当前生效值为 ["CLIENT","STORE_QR"]。 |
| 城市范围 | 当前生效配置 ALLOWED_CITY_CODES = ["*"],表示全国城市可进入自动派发候选。代码中有厦门判断函数,但当前派发主流程没有内置厦门排除分支。 |
| 候选排序 | 当前生效值 SCORE_WAITING,按积分加等待天数,再按积分、排名、优先级、员工 ID 排序。 |
| 超时 | 当前 DISPATCH_ACCEPT_MINUTES = 15,代码环境变量 STANDARD_STAFF_DISPATCH_ACCEPT_TIMEOUT_MINUTES 用于兜底或任务参数。 |
| 服务奖金比例 | 当前 SERVICE_BONUS_RATE = 0.70,历史订单以支付时快照为准。 |
| 结算等待 | 当前 SETTLEMENT_GRACE_MINUTES = 240,即服务完成后默认等待 4 小时。 |
| 开发奖金 | 员工和门店开发奖金当前均为 0.05,开发奖金冻结期为 1 个自然月。 |
| 平台收款 | YEEPAY_ORDER_MERCHANT_NO 已配置,正式文档不写商户号明文;排查时在受控环境查配置表或云平台配置中心。 |
| 候选轮发 | standard_staff_dispatch_cursor 记录同范围游标;员工拒绝或超时后顺延。 |
| 内部派发范围 | 金刚下单端内部派发只按区县和城市匹配,不自动扩大到省或全国。 |
员工能力和区域
| 数据 | 判断 |
|---|---|
service_staff.status、is_delete | 员工是否有效。 |
staff_service_capability | 员工是否具备服务产品或工种能力。 |
standard_staff_service_region | 标准单员工池服务区域。 |
employee_schedule*、staff_rest_date | 员工是否有档期冲突或休息。 |
standard_staff_schedule_lock | 是否被并发订单锁定。 |
staff_platform_product | 是否绑定平台标准产品。 |
钱包、积分和结算
员工钱包
员工钱包用于员工服务奖金、提现和收入记录。排查时看:
| 表 | 作用 |
|---|---|
staff_wallet_account | 员工账户余额、冻结金额、状态。 |
staff_wallet_ledger | 每一笔收入、支出、冻结、解冻、提现流水。 |
staff_withdrawal_application | 提现申请、审核、打款状态。 |
关键原则:
- 结算任务必须幂等,不能重复给同一订单生成收入。
- 提现前必须确认可用余额足够。
- 打款失败要保留失败原因和可补偿入口。
当前员工钱包页面会聚合标准单结算任务、开发奖金任务、员工钱包流水、历史只读收入和易宝入网状态。staff_wallet_account 为空时,不代表员工收入页面一定为空;历史收入可能来自 order_waiter,只读展示,不进入可提现余额。
员工提现状态:
| 状态 | 含义 |
|---|---|
PENDING | 已申请,等待审核或处理。 |
APPROVED | 已审核通过,等待打款。 |
PROCESSING | 打款处理中。 |
COMPLETED | 已完成。 |
FAILED / REJECTED | 失败或驳回,需要看失败原因和回退流水。 |
同一员工存在 PENDING、APPROVED、PROCESSING 中任一提现时,不能再次提交提现。
门店积分
门店积分用于线索、排名、扣分、日结和派发开关判断。
| 表 | 作用 |
|---|---|
store_score_account | 门店当前积分和派发状态。 |
store_score_transaction | 积分变动流水。 |
store_score_category、store_score_item | 积分规则。 |
store_score_settlement_batch | 日结批次结果。 |
dispatch_status = ACTIVE 才表示门店可以进入线索派发;PAUSED 通常说明余额、品牌费、人工暂停或规则限制导致暂停。
门店钱包
门店钱包用于门店资金余额、月度品牌费、充值、扣款和功能开关。
| 表 | 作用 |
|---|---|
store_wallet_account | 门店钱包余额和冻结金额。 |
store_wallet_transaction | 钱包流水,要求幂等键。 |
store_wallet_feature_config | 功能开关。 |
store_wallet_suspense | 悬挂或异常资金。 |
月度品牌费扣款会同时影响钱包流水和门店派发状态;余额不足时可能暂停门店派发,补足后需要恢复。
门店钱包写入动作必须走服务层:
| 动作 | 结果 |
|---|---|
credit | 可用余额增加,写收入流水。 |
debit | 可用余额减少,余额不足直接拒绝。 |
freeze | 可用余额减少、冻结增加。 |
unfreeze | 冻结减少、可用增加。 |
confirm_frozen_expense | 冻结减少,确认扣费。 |
每个动作都要求 idempotency_key,资金修复不能直接改余额字段。
合同和保险状态
| 环节 | 主表 | 排查重点 |
|---|---|---|
| 合同主流程 | contract | 合同状态、客户、门店、阿姨、服务期。 |
| 合同支付 | contract_payment、store_payment_order | 支付订单号、金额、回调状态。 |
| 合同补充 | contract_supply | 补充协议、离职日期、导出状态。 |
| 换人/续签 | contract_change_record、contract_resign_log | 谁发起、何时生效、是否同步保险。 |
| 合同保险 | contract_insurance | 合同和保险记录是否一致。 |
| 保险投保 | insurance_record | 保单号、状态、起止日期、产品。 |
| 保险退保 | insurance_surrender_document | 材料状态、文档地址、提交状态。 |
保险状态不能只看页面提示。第三方处理结果、回调、操作记录和本地保单状态必须一起确认。
第三方依赖
| 依赖 | 用途 | 本地证据 |
|---|---|---|
| 微信小程序 | 登录、订阅消息、员工端入口。 | openid、模板消息、员工登录记录。 |
| 易宝 | 商户入网、支付、分账、提现相关能力。 | yeepay_*、store_payment_order、支付回调日志。 |
| 支付宝安心生活 | 订单抓取、同步和状态回调。 | alipay_anxin_*、安心生活自动抓单任务。 |
| 大地保险 | 家政责任险、退保材料和接口。 | insurance_record、insurance_operation_record、退保文档。 |
| 人保 | 人保投保能力。 | picc_insurance_service.py 和对应保险记录。 |
| OBS/远程文档服务 | 合同、退保 Word/PDF、图片资源。 | 文件表、文档地址、上传结果。 |
写文档和改代码时的约束
- 状态类文档必须写清主表和日志表。
- 钱包、积分、支付、合同、保险不能只写页面操作,必须说明资金和状态来源。
- 小程序端发布受微信审核节奏影响,后端上线要兼容旧小程序。
- 需要后台补偿的逻辑统一落到任务或脚本,不依赖云函数响应结束后的后台任务。
- 小羽佳订单协同旧链路不继续扩展文档。