Appearance
金刚系统技术运维与排障
本页给接手人处理线上问题使用。操作生产数据前必须先判断影响范围,涉及资金、合同、保险、真实订单的修复要留操作记录。
运行和发布
| 对象 | 方式 | 关键约束 |
|---|---|---|
storeapi | 后端云函数部署,验证通过后提交并推送远程分支触发部署。 | 云函数内不要依赖长时间后台线程。任务型逻辑走计划任务、内部接口或脚本。 |
storeui | 微信小程序,构建后提交微信审核,审核通过后按发布时间发布。 | 后端要兼容旧包,不能提前上线只支持新包的破坏性接口。 |
| 数据库 | MySQL jingangdata。 | 破坏性变更必须先备份、灰度、可回滚。 |
| Redis | 登录、缓存、任务锁等。 | 多实例任务要依赖分布式锁,不能只靠本地进程锁。 |
计划任务入口
| 任务 | 入口 | 作用 | 排查重点 |
|---|---|---|---|
| 门店积分日结 | scripts/jingang_store_score_daily_settlement_bt.sh、module_task/store_score_settlement_task.py | 写入门店积分日结流水和批次。 | 查 store_score_settlement_batch、日志文件、分布式锁。 |
| 全国标准单待派发 | scripts/cron/standard_staff_dispatch_pending.sh、scripts/run_scheduled_worker.py standard_staff_dispatch_pending | 扫描待派发标准单并选择候选员工。 | 查订单状态、规则配置、员工池、派发日志。 |
| 全国标准单超时 | scripts/cron/standard_staff_dispatch_timeout.sh、standard_staff_dispatch_timeout | 处理员工确认超时并顺延。 | 查超时时间、attempt 状态、游标是否推进。 |
| 标准单结算 | scripts/cron/standard_order_settlement_process.sh、standard_order_settlement_process | 服务完成后生成员工服务奖金。 | 查结算任务、员工钱包流水、幂等键。 |
| 标准单通知 | scripts/cron/standard_order_notification_process.sh、standard_order_notification_process | 消费通知 outbox。 | 查 standard_order_notification_outbox 和微信发送结果。 |
| 月度品牌费 | scripts/run_scheduled_worker.py monthly_brand_fee、module_task/monthly_brand_fee_task.py | 扣门店钱包品牌费并影响派发状态。 | 查钱包余额、钱包流水、门店积分派发状态。 |
| 员工提现打款 | scripts/cron/staff_withdrawal_payout_process.sh | 处理员工提现申请和打款。 | 查提现申请、钱包流水、易宝状态。 |
| 员工站点等级刷新 | scripts/cron/staff_station_level_refresh.sh | 刷新员工站点等级。 | 查任务结果和等级账户。 |
| 简历分享过期 | module_task/resume_share_expire_task.py | 将过期简历分享置为失效。 | 查 resume_share_validity。 |
| 保险待支付清理 | scripts/cron/cleanup_stale_insurance_pending.py | 清理超时待支付保险记录。 | 先 dry-run,再 execute。 |
| 安心生活自动抓单 | module_task/anxin_life_auto_grab_task.py | 抓取或同步安心生活订单。 | 查 alipay_anxin_*。 |
| 卡单清理 | module_task/stuck_order_cleanup_task.py | 清理长期卡住订单。 | 查规则中定义的超时小时数和订单日志。 |
常见问题排查
门店端入口不可见
- 查当前小程序角色是否为
store,本地是否有有效门店 token。 - 查
internal_user是否启用,是否有关联company_id、store_uuid、role_id。 - 查公司版本、到期时间和
contract_maintenance_mode。合同维护模式会隐藏线索、客户、订单、余额、家政人广场等入口。 - 查全部功能页是否被
companyAdminOnly或合同维护过滤。 - 查后端接口是否返回权限错误,不能只看页面按钮是否显示。
门店端订单查不到或状态不对
- 先确认订单
business_mode:历史门店订单通常是LEGACY,平台标准单是PLATFORM_STANDARD_SOURCE。 - 查
order.store_uuid、current_controller和当前账号数据范围。 - 查
order.order_status、order_status_name、order_logs。 - 若订单来自需求广场,继续查
demand_square、order_payments、分账状态。 - 若门店说“派单后员工看不到”,查
order_waiter、员工手机号对应的service_staff身份、员工端跨门店查询。
代客下单无法新建
- 当前
OrderService.create_order_service和create_proxy_order_service会在方法开头直接抛 1048 暂停异常。 - 前端
pages-home/sub-po.vue仍保留页面和表单,但会提示代客下单升级中。 - 不要把
/api/v1/order/proxy-create当作当前可用创单链路排查。 - 若后续恢复该能力,必须先移除暂停保护,再重新验收客户、地址、SKU、支付、渠道归因、门店/员工入口和通知。
前端封装有接口但后端没有路由
storeui/src/api/order.js 中 updateServiceAddress 和 addOperationLog 是遗留封装,当前 storeapi/module_admin/controller/order_controller.py 没有对应路由。接手时不要只看前端 API 文件判断功能可用,必须同时查后端 controller 注册。
门店端余额、钱包或积分异常
- 先判断当前门店是否启用新钱包读口径;未启用时看
company.balance/company_transaction。 - 新钱包看
store_wallet_account、store_wallet_transaction和idempotency_key。 - 积分看
store_score_account和store_score_transaction,不要和钱包余额混用。 - 月度品牌费、线索购买、人工调整都必须有流水或批次记录。
- 修复资金和积分时优先补偿流水或反向流水,不直接改账户余额。
员工端看不到订单
- 查员工登录态是否有效,员工
service_staff是否status = 1且未删除。 - 查订单
order是否已绑定该员工,或标准单 attempt 是否指向该员工。 - 查员工能力、服务区域、档期是否满足。
- 查通知 outbox 是否发送,微信 openid 是否存在。
- 查前端页面是否请求了正确 API,特别是员工端服务首页和服务记录页。
标准单一直未派发
- 查
standard_order_rule_config当前生效版本:总开关、允许来源、城市范围、排序规则、服务奖金比例、平台收款配置。 - 查订单是否符合自动派发条件。
- 查
platform_product和员工能力绑定是否完整。 - 查
standard_staff_dispatch_pool是否有启用候选。 - 查
standard_staff_dispatch_log的过滤原因。 - 查待派发任务是否运行,有无 dry-run 或锁冲突。
员工确认后状态没变
- 查 attempt 是否已更新为确认状态。
- 查
order是否同步为对应状态。 - 查
order_logs是否写入。 - 查并发锁是否导致更新被拒绝。
- 查接口返回错误和小程序端是否重试。
员工开始或完成服务失败
- 查当前订单状态是否符合状态机:开始服务要求 50,完成服务要求 60。
- 查当前员工是否对订单有权限,员工手机号是否能匹配订单服务人员。
- 开始服务必须有服务前照片;完成服务的服务后照片和签名可选。
- 查文件组是否创建成功,再查订单服务前/服务后/签名字段。
- 完成服务后继续查档期完成、结算任务、开发奖金任务和渠道通知是否成功。
员工能力、区域或休息日不生效
- 查
staff_service_capability和审核记录,确认能力是否审批通过。 - 查
standard_staff_service_region或区域申请是否生效。 - 查
staff_rest_date和固定休息日配置。 - 查
standard_staff_schedule_lock是否已有 ACTIVE 锁。 - 查
order_waiter + order是否已有 20/40/50/60/70 状态订单导致冲突。
员工服务奖金没到账
- 确认订单已完成,不是待评价、取消或异常。
- 查
standard_order_settlement_task是否有对应任务。 - 查
standard_order_service_bonus_allocation是否生成。 - 查
staff_wallet_ledger是否有收入流水。 - 查任务日志,确认是否因为幂等、余额、员工钱包状态被跳过。
门店积分异常
- 查
store_score_account当前分。 - 查
store_score_transaction对应日期和来源。 - 查是否有人工调整、日结、线索扣分或品牌费暂停影响。
- 查
store_score_settlement_batch是否成功。 - 如果影响线索派发,继续查
dispatch_status和pause_reason。
合同保险待支付异常
- 查
contract_payment和store_payment_order是否支付成功。 - 查
contract_insurance是否存在待同步记录。 - 查
insurance_record是否已生成保单或停在待支付。 - 查保险支付回调和第三方请求日志。
- 若是超时记录,先使用清理脚本 dry-run 确认可处理范围。
退保文档生成失败
- 查保单是否符合退保条件:产品、状态、是否已退保、起保日期。
- 查
insurance_surrender_document是否已有草稿或生成记录。 - 查付款截图、退款账户、开户行、户名、卡号是否完整。
- 查 OBS 或远程文档服务是否返回上传地址。
- 查
insurance_operation_record是否提交第三方失败。
易宝支付或入网异常
- 查
yeepay_innet_record或yeepay_plate_qrcode当前状态。 - 查
store_payment_order是否创建成功。 - 查
yeepay_notification_log是否有回调。 - 查商户号、收款码、分账配置是否一致。
- 支付回调必须幂等,不要重复写流水。
日志和证据
| 证据 | 用途 |
|---|---|
order_logs | 订单状态变化和人工操作。 |
standard_staff_dispatch_log | 标准单自动派发原因。 |
standard_order_operation_log | 标准单人工处理记录。 |
staff_wallet_ledger | 员工钱包收入、提现、冻结。 |
store_wallet_transaction | 门店钱包资金流水。 |
store_score_transaction | 门店积分流水。 |
sys_oper_log | 云平台后台操作记录。 |
| 第三方回调日志表 | 支付、保险、安心生活、易宝等接口追踪。 |
上线检查
- 后端变更先跑相关单测或至少启动检查。
- 涉及
storeui时确认旧小程序兼容窗口。 - 涉及任务时确认宝塔脚本、内部接口、任务参数和日志路径。
- 涉及数据库时确认表结构、索引、幂等键和回滚方式。
- 涉及资金时必须有流水和重复执行保护。
- 涉及第三方时必须保留请求、响应和回调证据。
回滚原则
| 变更类型 | 回滚方式 |
|---|---|
| 小程序页面 | 不能即时回滚到未审核版本,只能回退到上一版已发布小程序或紧急发新包。 |
| 后端接口 | 回退代码分支并触发云函数重新部署。 |
| 规则配置 | 使用云平台恢复原配置,同时记录操作原因。 |
| 计划任务 | 先停任务或改 dry-run,再修复数据和重新执行。 |
| 钱包/积分/支付 | 不直接改余额,优先写反向流水或补偿流水。 |
| 合同/保险 | 先确认第三方状态,再修本地状态,避免本地和第三方不一致。 |