上门服务平台 · 定制改进开发设计方案
需求增补版 · V1.3 · 2026-09-17

CUSTOM DEVELOPMENT PROPOSAL

上门服务平台
定制改进开发设计方案

基于当前项目源码审查,对预约、技师入驻证照与城市选择、在线履约、定位打卡、转单调度、退款扣费、隐私通信、分润、渠道推广及多城市运营进行整体升级设计。

11类客户定制需求
3端协同改造:用户端 / 技师端 / 后台
5类外部能力:短信 / 定位 / 地图 / 虚拟号 / 录音
72-106预估人日,不含第三方审核等待
文档版本V1.3 需求增补版
出具日期2026 年 9 月 17 日
文档用途需求确认 / 报价评估 / 开发验收

01方案结论

当前系统已经具备上门服务的基本交易闭环,包括预约入口、技师排班、订单状态、短信验证码、业务短信、服务录音上传、分销结算和城市定位。客户本轮补充了技师入驻证照与开通城市选择、在线排序、履约提醒、到达拍照定位、离场监测、技师转单、虚拟技师调度、退款扣费审核和渠道推广等要求,必须同步调整数据库、状态机、定位授权、异步通知、支付退款、结算快照和后台管理。

可复用
现有基础能力
短信验证码框架、通知事件、技师排班、取消入口、余额退款流水、支付单和城市定位。
需补齐
业务闭环
入驻证照与开通城市选择、在线排序、定位打卡、履约提醒、转单、退款审核、部分退款、加钟支付与分段结算。
需新建
运营体系
证照审核与到期提醒、微信退款回调、扣费证据与审批、虚拟技师调度、渠道码/链接归因和城市数据隔离。
建议交付方式:按“基础体验与真实性 → 技师履约与定位 → 通信安全 → 退款与加钟结算 → 调度与渠道 → 多城市”分阶段上线。每阶段可独立验收,降低一次性切换对线上订单和财务结算的影响。

02当前代码审查结果

需求项当前状态源码现状改造判断
1. 预约时间部分具备前端展示未来 5 天整点时段,并禁用今天已经过去的整点;订单仅保存“今天 9/16 22:00”一类文案。需改为标准时间字段,增加默认“当前时间 + 30 分钟”、可配置步长、后端校验和占用冲突检查。
2. 评价虚拟头像需补齐评价提交时会把用户真实头像固化到评价记录,技师主页直接展示该头像;匿名评价才清空头像。需要统一虚拟头像策略,前台不再返回真实头像,后台仍保留可追溯关系。
3. 入驻资料真实性部分具备系统已有登录/换绑短信验证码;技师入驻联系电话直接入库,证件区只有身份证正反面与全身照,所在城市为任意文本输入。增加入驻手机号认证、技师证、健康证、营业执照;所在城市改为后台已开通城市选择,并由服务端校验。
4. 虚拟号与通知需新建已有新订单短信通知;已有“服务录音手工上传”,没有虚拟号绑定、通话回调、自动录音及语音电话通知。接入上海云信前需确认产品权限;新增供应商适配层、回调、录音归档和后台审计。
5. 首单/加钟提成需新建当前仅有全局平台抽成比例,订单按一个总金额结算;没有加钟商品、加钟支付、次数、分段提成或分段结算快照。新增加钟子单/明细,按基础服务、首次加钟、第二次及以后分别配置技师实收比例。
6. 退款审核与扣费仅有取消用户和后台可直接取消订单;已付余额会全额退回,微信/支付宝订单没有退款申请、人工审核、部分退款、扣费明细和退款回调闭环。新增全额退款、扣车费、扣误工费、组合扣费和拒绝退款;余额与微信等支付按原渠道退款并保留完整审计。
7. 技师在线状态部分具备已有接单开关和排班数据,但客户列表缺少统一在线判定、稳定排序和禁用按钮状态。建立在线状态口径;在线优先、离线置底;预约按钮按状态显示绿色可用或灰色禁用。
8. 履约定位与提醒需新建订单状态可流转,但缺少到达定位、服务前拍照、结束前提醒、完成后离场监测及围栏事件。新增定位打卡、照片凭证、5 分钟提醒、完成 3 分钟未离场告警和最小化定位留存。
9. 转单与虚拟技师需新建当前订单与接单技师直接绑定,没有技师发起转单、运营调度池或虚拟供给席位。增加转单审批/确认链路;虚拟技师仅作为公开标识的调度席位,订单必须转给实名审核技师履约。
10. 渠道推广底座可复用现有分销台账可复用,但没有面向公众号、酒店和娱乐场所的独立渠道档案、专属链接、二维码和订单分佣规则。新增渠道链接/码、点击与下单归因、可配置分佣比例、结算对账和退款冲正;不包含代理功能。
11. 多城市仅有入口首页可定位、选择并缓存城市,技师也有城市字段;但首页、服务和技师查询没有按城市过滤,后台没有城市级数据权限。新增城市主数据及业务关联,支持单城市模式平滑升级到多城市。

现有技术基础

后端

Go + Gin + GORM + MySQL,JWT 鉴权,WebSocket 订单状态推送,已有微信/支付宝支付及短信宝通道。

运营后台

Vue 3 + Arco Design,具备用户、技师、订单、审核、短信、通知、分润、分销等配置页面。

移动端

uni-app Vue,覆盖用户、技师和分销工作台,具备定位、地址、订单、评价、排班与身份申请。

03预约时间自动识别与 30 分钟预留

进入确认订单页时,系统自动计算最早可上门时间,并默认选中。客户仍可点击“上门时间”进入选择器,改选技师可服务且未被占用的其他时段。

确认订单
上门时间
尽快上门 · 预计 22:50
已预留 30 分钟准备时间,可点击修改
可选时段
22:50 23:20 23:50 明天 00:20

建议交互规则

  1. 默认最早时间 = 服务器当前时间 + 准备缓冲,默认 30 分钟。
  2. 时间步长默认 30 分钟;最早时间向上取整到 10 分钟,避免出现不可读的分钟数。
  3. 可选结果同时受技师接单开关、工作日、排班时段、已有订单、服务时长和路程缓冲限制。
  4. 提交订单时由后端再次校验,防止两个客户同时抢占同一时间。
  5. 后台可配置提前量、时间步长、最长可预约天数和跨午夜规则。

技术改造

层级改造内容关键结果
数据库新增 appoint_at 标准日期时间、预计结束时间、时区;旧 appoint_time 仅作为历史展示兼容。可排序、可计算、可防撞单。
后端提供可用时段接口;创建/支付/改约时校验提前量、排班和订单重叠;冲突时返回最新可选时段。不依赖用户手机时间,避免过期和重复预约。
用户端自动带出“尽快上门”,支持点击选择日期和时段,明确显示不可选原因。减少一次必选操作,同时保留客户自主选择。
后台新增预约规则:默认提前 30 分钟、步长 30 分钟、可预约天数、订单间隔。规则可运营调整,无需改代码。
规则建议:“30 分钟左右”应落为明确的后台配置值。验收默认按 30 分钟执行;如需根据距离动态增加准备时间,可在二期启用“固定 30 分钟 + 路程预计”模式。

04用户评价使用虚拟头像

前台隐私展示

建立 12-24 个平台虚拟头像素材池。评价展示头像由“评价 ID + 用户 ID”稳定映射,同一条评价不会每次刷新变换,也不会暴露微信头像或用户上传头像。

身份与审计

昵称继续脱敏为“张** / 匿名用户”等形式。用户端、技师端接口只返回虚拟头像;运营后台在有权限时仍可通过订单追溯真实用户,用于投诉和风控处理。

  • 历史评价批量按同一规则生成虚拟头像,不必逐条人工修改。
  • 匿名评价使用统一匿名头像;非匿名评价使用稳定随机头像。
  • 头像池可由客户提供品牌素材,也可先使用项目统一的中性人物插画。
  • 数据库可保存 virtual_avatar_key,避免更换头像池后历史评价突然变化。

05地址认证与技师入驻资料升级

现有短信验证码能力可复用,但必须增加“业务场景”和“一次性验证凭证”,避免登录验证码被重复用于地址或入驻认证。同时按截图所示扩展技师入驻资料,在现有身份证人像面、身份证国徽面、全身照下方增加技师证、健康证和营业执照,并把所在城市由自由输入改为已开通城市选择。

1. 输入手机号客户新增地址,或技师填写联系电话。
2. 获取验证码按 address / technician_apply 场景发送。
3. 校验验证码验证成功生成短时效一次性凭证。
4. 提交业务保存地址或入驻申请时携带凭证。
5. 服务端核销匹配手机号和场景后作废,保存验证时间。
场景交互设计后端控制
客户新增地址手机号下方增加验证码输入与“获取验证码”。已验证手机号可显示“已认证”;修改为新号码后必须重新验证。保存接口要求 verification_token;号码、场景、用户不一致则拒绝。
客户编辑地址联系人或地址变化、手机号不变时不重复验证;手机号变化时重新验证。对比原记录手机号,防止前端绕过。
技师入驻手机号联系电话增加验证码;验证通过后才能提交申请。申请记录保存已验证手机号和验证时间;审核页显示“手机已认证”。
入驻证照在身份证正反面和全身照下方增加“技师证、健康证、营业执照”三个独立上传位;支持拍照、相册选择、预览、替换和删除,并显示必填/选填标识。三类证照分别保存,不复用全身照字段;限制图片格式、大小和数量,记录证照类型、文件地址、有效期及审核状态。
所在城市点击“所在城市”弹出城市选择器,仅展示后台已开通城市,可看到城市名称并选择一项;不再允许键盘自由录入。前端读取已开通城市接口并提交 city_id;服务端再次校验城市存在且为已开通状态,同时保存城市名称快照。

证照审核与城市选择规则

  • 技师证、健康证和营业执照分别显示“未上传、待审核、已通过、已驳回、已过期”状态;驳回时必须填写原因,技师可重新上传。
  • 各证照是否必填、允许数量和有效期要求由后台配置;默认进入正式接单前必须满足该城市的入驻资料规则。
  • 健康证等有期限的证照支持填写或识别有效期,并在到期前提醒技师和运营;过期后的接单限制按后台规则执行。
  • 已选择城市在提交申请后固化。审核中如该城市被停用,申请不得自动通过,后台提示改选其他已开通城市。
  • 城市列表按后台排序展示;没有已开通城市时显示“当前暂无可申请城市”,不得提交空城市或自定义城市名称。

安全与运营规则

  • 验证码 5 分钟有效、60 秒内不可重复发送;同手机号、同 IP、同设备设置小时/日限额。
  • 验证码最多尝试 5 次,连续失败触发短时冻结;日志对手机号进行脱敏。
  • 生产环境禁止返回验证码;短信签名和模板需在供应商侧先审核。
  • 身份证、技师证、健康证和营业执照属于敏感审核资料,仅授权审核人员查看,访问和审核操作留痕,文件使用受控地址访问。
  • 若上海云信同时提供短信能力,可通过统一供应商适配层切换;否则保留现有短信宝作为验证码通道。

06上海云信:虚拟号、通话录音与接单通知

技师联系客户时不展示双方真实号码。系统按订单建立隐私号绑定,通话由上海云信侧桥接并录音;新订单同时触发短信和语音电话通知,提升接单及时率。

隐私通话链路

订单可服务支付成功并进入待接单/待服务状态。
申请虚拟号后端向供应商申请 AXB 或平台支持的隐私号绑定。
技师拨打页面只显示“隐私通话”,调用虚拟号码。
事件回调接听、挂断、时长、录音地址以签名回调入库。
后台归档录音转存到受控存储,订单详情可按权限播放。

短信 + 语音接单通知

  1. 订单支付成功:立即给技师发送短信。
  2. 同时发起语音电话:“您有新的服务订单,请及时进入平台接单”。
  3. 未接听或在配置时间内未接单:按规则重试一次或通知运营。
  4. 技师已接单、订单取消或过期后停止后续呼叫。

后台能力

  • 订单通话记录:主叫/被叫角色、虚拟号、开始/接通/结束时间、结果、时长。
  • 录音在线播放、权限控制、访问日志、下载开关和保留期限。
  • 通知日志:短信/语音请求号、送达状态、失败原因、重试次数。
  • 供应商配置:环境、接口地址、密钥、签名、模板、回调白名单。

接口与数据设计

模块建议设计可靠性要求
供应商适配层定义隐私号绑定、解绑、语音通知、短信发送、录音查询的统一接口,上海云信作为首个实现。未来更换供应商不影响订单主流程。
隐私号绑定privacy_call_bindings 记录订单、双方号码密文、虚拟号、供应商绑定 ID、有效期和状态。一单一绑定或按供应商规则复用,订单结束自动解绑。
通话记录call_records 保存供应商通话 ID、状态、时长、录音、回调原文摘要。回调验签、幂等去重、乱序处理。
录音存储供应商录音回调后异步转存对象存储,后台通过鉴权临时链接播放。避免永久暴露供应商 URL;支持保留期清理。
通知任务notification_jobs 记录渠道、模板、目标、状态、失败原因和重试。异步执行,不阻塞支付回调;失败可追踪。
第三方前置条件:本方案按上海云信能够提供隐私号、通话录音、语音通知及状态回调进行设计,具体产品名称、接口字段、号码资源范围、录音保存期和资费需以客户开通账号后的正式接口文档与商务合同为准。若账号能力不含其中某项,需更换产品或供应商,工期相应复核。

合规建议:下单协议和隐私政策中明确告知隐私号与录音用途、保存期限和查询权限;录音仅用于服务保障、纠纷处理和依法审计。真实手机号、录音地址和供应商密钥均应加密或脱敏存储。

07基础服务与多次加钟差异化提成

把“提成”明确为技师实收比例,并按服务阶段分别配置。基础服务、第一次加钟、第二次及以后加钟各自形成价格和分润快照,后续修改后台比例不影响历史订单。

50%
基础服务示例
基础服务金额 200 元,技师实收 100 元。
70%
首次加钟示例
首次加钟金额 100 元,技师实收 70 元。
80% / 90%
第二次及以后示例
后台可分别设置第二次和后续档位。

加钟业务流程

服务进行中仅服务中订单显示“申请加钟”。
选择加钟项目如 30 / 60 分钟,展示价格和新结束时间。
客户确认支付客户本人确认并完成在线支付。
加钟生效生成第 N 次加钟记录,延长服务预计结束时间。
统一完成结算基础服务与各次加钟按各自快照分别入账。
规则方案控制点
加钟商品后台配置加钟时长、价格、适用服务、上下架状态;可按城市或服务设置。禁止前端自行传金额。
次数认定同一主订单下按已支付成功的加钟顺序生成 addon_seq支付失败/取消不占次数;并发创建需加锁。
提成档位基础服务、首次加钟、第二次加钟、第三次及以后可独立配置技师实收比例。0-100% 校验,并显示平台剩余金额试算。
结算快照每个订单明细保存金额、技师比例、技师收入、平台收入和规则版本。退款按原明细、原比例逆向冲账。
订单展示客户、技师、后台均可查看加钟次数、时长、支付状态和分项金额。基础服务与加钟账目可对账。
需确认口径:50% / 70% / 80% / 90% 本方案按“技师实收比例”理解;如客户指“平台抽成比例”,结算方向相反,开发前必须在需求确认单中锁定。

08退款审核与车费误工费扣除

无论客户是否为会员,也无论订单通过微信、支付宝、会员余额或其他已开通方式支付,客户申请退款后统一进入退款审核流程。后台可全额退款、扣除车费后退款、扣除误工费后退款、组合扣费后退款,或在符合已公示规则且证据充分时拒绝退款。

客户申请退款选择原因、填写说明并上传图片等凭证。
冻结待结算资金生成退款单,暂停技师、渠道及平台相关结算。
后台审核扣费选择全退、车费、误工费、组合扣费或拒绝。
执行原路退款按审核后的应退金额调用余额或支付渠道退款。
回调与对账确认实际到账结果,通知客户并冲正相关分润。

后台审核操作

审核操作金额规则与交互处理结果
同意全额退款扣费金额为 0;确认框显示订单实付、已退金额和本次应退金额。将全部可退款实付金额按原支付渠道退回客户。
扣车费并退款点击“扣车费”,手工输入车费金额,必填扣费原因;可上传行程、定位、票据或沟通记录。车费留在订单扣费账目中,其余可退款金额自动原路退回。
扣误工费并退款默认按可退款实付金额的 30% 试算,后台可改比例或直接手工输入金额;页面同步显示扣费和客户实退。例如实付 500 元,扣 30% 即 150 元,客户退款 350 元。
组合扣费并退款可同时录入车费和误工费,系统实时合计;每一项分别填写原因和证据。总扣费不得超过可退款实付金额,剩余金额原路退回。
拒绝退款不发起退款,必须选择拒绝规则、填写说明并上传必要证据;高金额或争议订单可要求二级审批。退款单标记“已拒绝”,客户可查看理由并申请客服复核。
统一计算公式:本次应退金额 = 可退款实付金额 - 车费 - 误工费 - 其他已确认扣费。可退款实付金额以客户真实支付的现金/余额为准,优惠券不是现金,不直接折现退给客户;优惠券是否退回按取消规则单独处理。

支付渠道与资金处理

支付来源退款执行关键控制
微信支付使用原支付单号和独立退款单号调用微信支付退款接口,只提交审核后的应退金额;接收退款结果通知并支持主动查询。金额以分为单位;回调验签、幂等;接口受理不等于到账成功。
支付宝支付按原支付宝交易号发起全额或部分退款,并保存渠道退款号和结果。与微信共用统一退款状态机和对账流程。
会员余额支付将应退金额原路退回会员余额,并生成一笔不可修改的钱包退款流水。余额更新和流水创建必须在同一数据库事务中完成。
混合支付如后续支持余额加微信等组合支付,按原支付构成分别退回对应来源,不得把微信实付全部改退到余额。各渠道退款之和必须等于审核后的应退总额。
会员身份会员与非会员使用同一退款审核主流程;如会员享有免费取消或减免误工费,只作为规则优惠单独配置。会员等级不能改变已支付资金的原路退回原则。

退款状态与结算联动

  • 退款状态独立于订单状态:待审核、审核通过、部分退款、已拒绝、退款处理中、退款成功、退款失败、已关闭。
  • 后台点击审核按钮后先展示二次确认:实付金额、各项扣费、应退金额、退款渠道、客户到账说明;确认后不可直接修改,只能撤销重审或补充退款。
  • 退款处理中禁止重复提交;每次请求使用唯一幂等号。失败后可自动重试或人工重试,但累计退款不得超过订单可退款金额。
  • 未结算订单直接减少技师、渠道和平台的待结算金额;已结算订单按原结算快照生成反向冲正流水,不覆盖历史账目。
  • 车费、误工费的最终归属可配置为技师补偿或平台收入,并在审核时明确展示;不得只扣客户款项而不记录资金去向。
  • 客户和技师均收到审核结果,内容包括原实付、扣费项目、扣费金额、退款金额、处理时间、原因和申诉入口。
规则与合规边界:系统可以提供扣费和拒绝退款能力,但车费、误工费的适用条件、计算方式和证据要求应在客户付款前通过取消/退款规则明确展示。因平台或技师违约导致的退款不得随意扣费;争议较大的拒绝退款应支持复核和完整审计,正式规则需结合实际经营地区及支付平台要求确认。

09渠道推广与分佣体系

渠道端面向公众号、服务号、酒店、娱乐场所及其他线下合作方。每个渠道可生成专属分享链接和渠道二维码,客户通过对应入口访问并完成有效订单后,系统按订单快照向渠道结算约定佣金,例如订单实付金额的 20%。本版明确移除原方案中的城市代理功能,不建设代理申请、代理后台、区域代理权限和代理分润。

创建渠道录入合作方、联系人、合同期、结算账户与状态。
生成入口生成公众号分享链接、短链及可下载渠道二维码。
记录触点访问时保存渠道码、落地页、时间、设备与用户标识。
订单归因下单时固化渠道 ID、归因规则和佣金比例快照。
结算对账订单完成后入账;退款、取消和售后自动冲正。
渠道场景入口与归因分佣建议
公众号 / 服务号渠道端复制专属链接或短链,合作方挂到菜单、文章或消息中;链接参数签名,防止人工篡改渠道身份。可按订单实付金额或平台可分配收入的一定比例结算。
酒店 / 娱乐场所渠道端下载带渠道码的二维码,打印张贴;扫码进入小程序或 H5 后记录首次有效触点。支持统一比例、单渠道比例和固定金额,20% 作为可配置示例。
人工补录特殊订单由有权限的运营人员补录或调整渠道,必须填写原因并保留审计日志。调整只影响未结算订单;已结算订单走冲正与重算。

渠道端与后台能力

渠道端

专属渠道码、分享链接、二维码下载、访问量、下单量、有效订单、预估佣金、结算单和收款记录。

运营后台

渠道档案、合同期、启停、归因有效期、覆盖规则、比例/固定金额、结算周期和数据导出。

财务控制

订单完成后结算,退款自动冲正;比例和基数固化到订单,历史账单不受后续配置修改影响。

  • 默认采用“最后一次有效渠道触点”归因,也可切换为“首次有效触点”;有效期建议 30 天。
  • 同一订单只归属一个客户渠道,避免重复分佣;自有自然流量不产生渠道佣金。
  • 渠道端仅查看本渠道的汇总和脱敏订单,不展示客户完整手机号、详细地址或技师隐私信息。
  • 二维码和链接停用后不再接受新归因,但历史订单及结算记录继续可查。

10技师在线状态与履约定位

把技师在线状态、可预约状态和服务履约状态串成完整链路。用户看到的列表排序和按钮状态由服务端统一返回;技师到达、开始服务和完成离场均形成带时间与定位的证据记录。

在线状态与技师列表

状态用户端展示服务端判定与排序
在线可接单排在离线技师之前;“立即预约/选择技师”按钮为绿色,可点击。接单开关开启、账号正常、在排班时段、无冲突订单,且最近心跳未超时。
忙碌 / 暂不可约可保留在在线分组中但显示最近可约时间;当前时段按钮灰色禁用。已有服务中订单或选定时段冲突,但账号仍在线。
离线统一排在技师列表最下面,显示“离线”;预约按钮为灰色且不可点击。主动下线、接单开关关闭、超出排班、心跳超时或账号暂停。

排序建议:在线可接单 → 在线忙碌 → 离线;同组内再按推荐权重、距离、评分和最近可约时间排序。按钮禁用必须由前后端双重校验,避免仅改样式后仍可提交订单。

到达、拍照与开始服务

到达客户位置技师点击“到达”,客户端请求当前定位。
展示定位地址页面同时显示订单服务地址、当前定位地址和距离。
到达打卡位置在允许范围内才能提交;异常可申请人工核验。
拍照打卡开始服务前调用相机拍照,禁止仅从相册选择。
开始服务到达和照片凭证齐全后,按钮解锁并记录开始时间。
  • “到达”页面明确展示客户订单地址;定位成功后展示当前定位地址、定位时间、精度和与订单地址的直线距离。
  • 建议电子围栏半径默认 300 米并可后台配置。超出范围时禁止正常打卡,可提交定位截图、现场照片和原因给后台人工审核。
  • 拍照凭证保存订单号、技师、时间、经纬度、水印摘要和文件哈希;后台可查看,普通客户端不公开。
  • 定位失败时提供重试和权限引导;不得用空定位直接进入服务状态。

结束提醒与离场监测

触发点通知与判断后台记录
预计结束前 5 分钟优先发送技师端站内推送,并以短信兜底,告知“服务还有 5 分钟结束”;每个服务段只发送一次。计划触发时间、发送渠道、模板、送达状态、失败原因与重试次数。
点击服务完成记录完成定位并启动 3 分钟离场观察;技师端提示保持定位权限,以便完成履约核验。完成时间、完成位置、定位精度、围栏半径和观察截止时间。
完成后超过 3 分钟仍未离开若连续有效定位仍在客户地址围栏内,向技师发送离场提醒,并向运营后台产生异常信息;可配置是否同时短信通知技师。围栏内采样、提醒发送、技师反馈和运营处理结果。
已离场 / 无法判断连续定位在围栏外则结束监测;定位关闭、信号弱或后台限制时标记“无法判断”,不得直接认定未离场。离场确认时间或无法判断原因,供客服审核。
定位边界:离场监测依赖用户授权、操作系统后台定位能力和定位精度。方案应采用“完成后短时监测 + 明示授权 + 最小化留存”,不能承诺在应用被强制关闭、定位权限被撤销或系统限制后台运行时仍能百分之百判断离场。

11技师转单与虚拟技师调度

转单用于已接订单因时间、距离或突发情况无法履约时的受控调度;虚拟技师用于冷启动阶段展示可调度服务席位和承接订单,最终履约人必须是通过实名认证与资质审核的正式技师。

技师转单

  1. 原技师在允许状态下点击“申请转单”,选择原因并填写说明。
  2. 系统筛选同城市、同服务能力、在线且时段可用的正式技师。
  3. 候选技师确认接单;必要时由运营后台指派或审批。
  4. 原技师、接手技师、客户同时收到变更通知,订单保留完整流转记录。
  5. 新技师确认后才解除原绑定;无人承接时订单保持原状态并通知运营介入。

虚拟技师

  • 后台创建“平台调度席位”,配置服务范围、城市、展示名、头像、可售时段和可承接品类。
  • 用户端必须以“平台安排技师”等明确文案展示,不伪造实名认证、虚假销量、评价、实时在线或个人资质。
  • 虚拟席位收到订单后进入调度池,由运营转给正式技师;未分配真人前不得进入出发、到达或开始服务状态。
  • 正式技师接单后,客户侧展示实际履约技师信息,并发送人员变更通知。
控制项业务规则风险控制
可转单状态待出发、已出发可申请;到达后原则上需运营审批;服务开始后禁止普通转单。防止临场甩单和履约责任不清。
时段与能力校验接手技师必须通过服务品类、城市、排班、距离、冲突订单和账号状态校验。确认时再次加锁校验,避免多人抢同一转单。
收入归属未开始服务时收入全部转给接手技师;特殊补偿由后台按规则另记,不修改原订单金额。分润变化形成快照和审计流水。
虚拟席位库存按城市、品类和时段设置可售数量,超出真实可调度能力时自动停售。避免超卖;超过分配时限自动升级运营或向客户提供改约/退款。

12多城市运营设计

采用“单城市也走城市主数据”的方案。首期即使只运营上海,也创建默认城市记录;后续新增城市只需后台开通和配置,不必再次改造订单、服务与权限基础结构。

定位城市GPS 优先,IP 兜底,用户可手动切换。
判断已开通未开通城市展示提示和开城登记。
入驻选择城市技师申请仅可选择后台已开通城市。
加载城市内容服务、价格、技师、轮播、公告按城市返回。
订单固化城市下单时保存城市 ID、名称和运营规则版本。
城市权限与结算管理员、调度、渠道和财务按授权城市查看数据。
模块多城市能力单城市首期表现
城市主数据城市编码、名称、省份、经纬度、开通状态、排序、客服信息、默认规则。仅启用“上海市”,前台可隐藏城市切换入口。
技师入驻所在城市使用已开通城市下拉/弹层选择,提交 city_id 并校验开通状态;后台审核页展示城市名称。选择器仅显示“上海市”,不可手工输入其他城市。
服务与价格城市可售服务、城市价、加钟价、上门费、营业时间。自动读取上海配置。
技师技师归属城市/片区;列表、搜索、首页推荐按城市过滤。现有技师批量迁移到上海。
内容运营轮播、首页推荐、公告、优惠券可全局或指定城市。默认全局内容,允许上海覆盖。
订单按服务地址确认城市,固化 city_id;跨城技师不可接单。所有新订单写入上海城市 ID。
后台权限总部看全部;城市管理员、调度和渠道运营只看授权城市。超级管理员不受影响。
重要修正:当前首页城市选择仅保存在用户端,技师入驻城市还允许自由输入。本次会统一使用城市主数据:入驻申请只能选择后台已开通城市,首页和订单把城市作为 API 查询及强校验条件,解决无效城市申请和业务数据串城风险。

13整体数据与系统改造

建议新增或调整的核心数据

数据对象用途类型
orders新增标准预约开始/结束时间、城市、实际履约技师、虚拟席位来源、预约规则快照,以及累计退款、累计扣费和退款状态摘要;保留历史文案兼容。调整现有
order_addons保存第 N 次加钟、时长、金额、支付状态、提成比例与收入快照。新增
refund_requests保存客户退款申请、退款原因、申请凭证、审核结果、应退金额、状态流转、复核记录和操作人。新增
refund_deductions逐项保存车费、误工费和其他经确认扣费的类型、比例、金额、理由、证据及审批记录。新增
payment_refunds保存每个原支付渠道的退款请求号、渠道退款号、退款金额、回调报文摘要、失败原因和重试状态。新增
phone_verifications保存场景化验证凭证、手机号摘要、有效期、核销状态和风控信息。新增
applications技师入驻申请增加 city_id 和城市名称快照;历史申请按现有城市名称匹配迁移,无法匹配的进入人工处理。调整现有
application_documents按申请保存身份证、全身照、技师证、健康证和营业执照的类型、文件地址、有效期、审核状态、驳回原因及审核人。新增
privacy_call_bindings保存订单隐私号绑定及有效期。新增
call_records保存通话事件、时长、录音及供应商回调状态。新增
notification_jobs统一短信、语音、站内推送任务,覆盖接单、结束前 5 分钟和完成后未离场提醒。新增
service_checkins保存到达、开始、完成打卡的时间、地址、经纬度、精度、距离、照片凭证和审核状态。新增
technician_locations保存履约期间必要的定位采样和围栏判断结果,并按最小留存策略定期清理。新增
order_transfers保存转出人、接手人、原因、状态、确认/审批时间及订单技师变更快照。新增
virtual_technician_slots保存平台调度席位、公开展示标识、城市/品类/时段库存和最终履约技师。新增
cities / city_services城市开通、服务、价格和规则。新增
channels / channel_touchpoints保存渠道档案、分享链接/二维码、访问触点、归因有效期与覆盖规则。新增
channel_commissions保存订单分佣基数、比例/固定金额、规则快照、结算状态及退款冲正。新增
分销/分润台账复用现有分销归因和流水能力支持渠道结算,不恢复或新建城市代理功能。调整现有
评价增加虚拟头像键;前台响应不再使用真实头像。调整现有

非功能要求

安全

  • 手机号、身份证及资质证照、精确定位、打卡照片、录音地址和第三方密钥最小化暴露。
  • 云信及支付退款回调均执行验签、时间窗、防重放和必要的来源校验。
  • 查看证照、定位、照片、录音与真实信息,以及资质/退款审核、扣费和重试操作均记录审计日志并按角色授权。

可靠性

  • 支付、退款、加钟、转单、回调、提醒和结算采用唯一幂等键。
  • 退款受理、渠道回调和主动查询共同驱动状态,重复通知不得重复退钱;金额统一以分存储和计算,禁止浮点误差。
  • 通知异步执行,失败重试且不阻塞订单;预约占用、转单接手和虚拟席位库存使用事务/锁防并发冲突。

兼容

  • 历史订单保留原预约文案并兼容展示。
  • 现有用户、技师、分销关系不丢失。
  • 先加字段和双读,再迁移,降低上线风险。

可运营

  • 提前量、围栏、提醒、转单、虚拟席位、提成、退款扣费、城市和渠道规则均后台化。
  • 关键金额、归因、人员变更及退款规则均保存快照。
  • 提供订单、退款、渠道对账、定位异常、转单、通话、通知和分润的查询与导出;支付渠道日账单与平台退款台账可核对差异。

14实施阶段与工作量评估

以下为基于当前源码的初步开发评估,包含产品细化、前后端开发、数据迁移、联调和测试,不包含上海云信/短信模板/虚拟号码资源的供应商审核等待时间。

阶段 0 · 需求与第三方能力锁定(4-6 人日)确认提成、围栏、定位授权、转单、虚拟席位和渠道归因口径;取得上海云信及地图服务正式资料。
阶段 1 · 预约、虚拟头像、入驻资料与手机认证(10-15 人日)完成需求 1、2、3,增加技师证、健康证、营业执照上传审核和已开通城市选择,补齐后台配置、接口校验和迁移。
阶段 2 · 在线状态、打卡与离场监测(12-18 人日)完成在线排序与按钮状态、到达定位地址、服务前拍照、5 分钟提醒、完成后 3 分钟离场判断和异常后台。
阶段 3 · 隐私通信与通知(10-15 人日)完成隐私号、短信/语音/站内任务、回调、录音归档和后台查询。
阶段 4 · 加钟与差异化提成(8-12 人日)完成加钟商品、确认支付、分段结算、退款冲正和对账。
阶段 5 · 退款审核与扣费(5-8 人日)完成客户申请、审核后台、全额/部分退款、车费与误工费扣除、拒绝及复核、微信/余额原路退款、回调幂等和财务对账。
阶段 6 · 转单、虚拟调度、渠道与多城市(17-24 人日)完成转单链路、虚拟席位、渠道链接/二维码、订单归因、分佣以及城市数据隔离和权限。
阶段 7 · 全链路测试与上线(6-8 人日)回归、定位弱网与权限异常、退款回调与并发、并发调度、账务冲正、灰度迁移、生产配置和验收资料。
合计预估:72-106 人日。若配置 1-2 名前端、1-2 名后端、1 名测试/产品协同,预计自然周期约 11-16 周;地图定位、系统后台运行限制、支付退款接口和第三方账号/模板审批会影响联调日期,正式工期需在权限与供应商资料锁定后复核。
交付批次可独立上线内容上线价值
第一批自动预约、30 分钟预留、评价虚拟头像、地址/入驻短信认证、技师证/健康证/营业执照上传审核及已开通城市选择。改善下单体验与入驻资料真实性。
第二批在线/离线排序、到达定位、服务前拍照、结束前提醒和离场异常。补齐技师履约证据和运营风控。
第三批云信虚拟号、录音、短信与语音通知;加钟和分项结算。保护隐私、提升响应并增加客单价。
第四批退款申请与审核、车费/误工费扣除、全额或部分原路退款、拒绝复核和财务对账。形成可执行、可追溯的售后资金闭环。
第五批转单、虚拟技师调度席位、渠道链接/二维码和分佣。缓解冷启动供给不足并建立合作获客闭环。
第六批多城市、数据权限、全链路异常测试与上线。支持规模化拓城和稳定运营。

15验收口径

  • 打开确认订单页自动出现不早于服务器当前时间 30 分钟的可用预约时间,客户可修改;不可提交过期或冲突时段。
  • 用户端和技师端评价列表不再暴露客户真实头像,历史与新增评价均显示稳定虚拟头像。
  • 新增地址使用新手机号、技师提交入驻联系电话时,未通过短信验证码不能保存/提交;验证码不可跨场景复用。
  • 技师入驻页在现有身份证正反面和全身照下方显示技师证、健康证、营业执照三个独立上传位,可按后台规则校验必填项,并支持预览、替换、删除和驳回后重新上传。
  • 技师入驻的“所在城市”不可自由输入;选择器只展示后台状态为已开通的城市名称,提交停用、无效或伪造的 city_id 时服务端拒绝申请。
  • 后台审核可分别查看和审核三类新增证照,记录通过/驳回原因、审核人和时间;有有效期的证照到期前产生提醒。
  • 技师联系客户仅通过虚拟号;通话结束后后台可查看状态、时长并按权限播放已回传录音。
  • 支付成功的新订单按配置向技师发送短信及语音电话;失败状态和重试记录后台可查。
  • 服务中可完成一次或多次加钟,客户支付后才生效;基础服务和每次加钟分别按后台比例正确结算。
  • 客户申请退款后生成独立退款单并冻结相关待结算资金;后台可选择全额退款、扣车费、扣误工费、组合扣费或有依据地拒绝退款。
  • 误工费默认按可退款实付金额的 30% 试算,也可在授权范围内修改比例或手工输入金额;系统实时显示扣费与实退金额,所有扣费合计不得超过可退款金额。
  • 无扣费时可一键同意并全额退款;有扣费时仅将剩余金额退回。微信、支付宝和会员余额均按原支付来源退回,重复提交或重复回调不会造成重复退款。
  • 拒绝退款必须填写规则依据、原因和必要证据,客户可看到结果并申请复核;退款成功后技师、渠道及平台结算按原快照正确冲正。
  • 在线可接单技师排在前面且按钮绿色可用;离线技师统一排在列表底部,按钮灰色禁用,接口绕过也无法下单。
  • 技师点击到达时显示订单服务地址和当前定位地址;未完成合规范围内的到达定位与服务前现场拍照,不能开始服务。
  • 预计结束前 5 分钟只向技师发送一次提醒;完成后 3 分钟仍有连续有效定位处于围栏内时产生提醒和后台异常,定位不可用时明确标记“无法判断”。
  • 技师可在允许状态发起转单;接手技师通过城市、品类、排班和冲突校验后才完成换绑,所有参与方收到通知并可追溯。
  • 虚拟技师明确显示为平台调度席位,不伪造真人资质或评价;订单开始服务前必须换绑到实名审核的正式技师。
  • 渠道端可复制专属链接、下载渠道二维码并查看脱敏数据;订单固化渠道和分佣快照,完成后入账,退款后正确冲正。
  • 切换城市后仅展示该城市可售服务和可接单技师;订单、合作方和后台权限均不串城。
  • 取消、退款、重复回调、通知失败、定位拒绝、弱网、并发预约、并发加钟和并发转单等异常路径有明确结果,账务可追溯。

16开发前需客户确认与提供

序号确认项建议默认值 / 资料
1预约提前量、时间步长、最长可约天数、订单间隔。30 分钟 / 30 分钟 / 5 天 / 0-30 分钟。
2虚拟头像风格和数量。中性人物插画 12-24 个,由客户确认版权素材。
3短信供应商、签名、验证码与通知模板。现有短信宝继续使用,或确认迁移上海云信。
4上海云信合同账号、正式接口文档、测试密钥、产品能力与资费。必须包含所需隐私号模式、录音、语音通知、回调和号码资源。
5录音告知文案、保存期限、可播放角色、是否允许下载。建议仅授权客服/管理员播放,默认禁止普通下载。
6加钟时长与定价;50/70/80/90 是否为技师实收比例;第三次以后档位。开发前签字确认结算示例。
7在线判定心跳超时时间、忙碌技师展示方式、同组排序优先级。心跳 5 分钟超时;在线可接单、在线忙碌、离线三段排序。
8到达围栏半径、拍照要求、异常打卡审批、定位和照片保存期限。围栏 300 米;必须现场拍照;超范围人工审核;按隐私政策设最短必要保存期。
9结束前提醒渠道、离场提醒接收人、完成后短时定位授权文案。站内推送优先、短信兜底;技师和运营接收;完成后观察 3 分钟。
10车费、误工费的适用场景、免费取消时限、默认比例、金额上限、可手工改价角色及审批权限。误工费默认 30% 仅作业务初稿;后台手工金额须受权限和上限控制,最终规则需在付款前公示。
11各扣费所需证据、扣费收入归属、拒绝退款条件、二级审批金额门槛和客户复核时限。定位/行程/票据/沟通记录按场景配置;拒绝必须有规则依据和复核入口,扣费归属需财务确认。
12退款时优惠券是否退回、有效期如何恢复,以及混合支付的退款顺序。优惠券不折现;建议未履约全退时恢复,已履约或客户违约时按已公示规则处理。
13转单状态、审批条件、超时、补偿和收入归属;虚拟席位对外名称及调度时限。开始服务后禁转;虚拟席位统一显示“平台安排技师”,超时提供改约或退款。
14渠道合同、归因模型、有效期、分佣基数、比例、结算周期和提现规则。最后有效触点 30 天;订单实付金额 20% 仅作示例,最终以合同为准。
15首批开通城市、城市运营负责人、各城市服务/价格是否相同。首期上海,保留后台新增城市能力。
16技师证、健康证、营业执照分别是否必填、允许上传数量、有效期、证照到期后的接单限制及营业执照适用对象。建议技师证、健康证必填;营业执照按个人/机构入驻类型配置,最终由客户结合当地经营要求确认。
费用边界:本工作量不包含上海云信号码月租、通话费、录音费、短信费、语音通知费、地图定位/逆地理编码调用费、对象存储及 CDN 费用,也不包含第三方主体认证、模板报备和合规审核周期。正式报价应在上述资料确认后按最终范围锁定。

17源码审查依据(内部对照)

以下用于说明本方案基于实际代码而非通用模板,客户阅读时可保留,也可在正式商务版中删除。

审查点当前源码位置结论
预约时段与提交前端/pages/order-confirm/order-confirm.vue(时间段、日期、提交、地址保存)整点、前端判断、中文文案入单。
订单与结算server/internal/handler/order.gosettlement.go全单统一平台抽成,无加钟分项。
取消与退款server/internal/handler/order.goCancelOrder)、admin_manage.goAdminCancelOrder)、model/order.gomodel/pay.gopkg/pay/pay.go现有取消仅对余额支付自动全额退回;缺少客户退款申请、人工审核、部分退款、车费/误工费明细、微信/支付宝退款调用和退款回调。
评价头像server/internal/handler/order.go前端/pages/tech-detail/tech-detail.vue非匿名评价保存并展示用户头像。
地址与入驻server/internal/handler/user.goapplication.gomodel/technician.go前端/pages/join/join.vue没有业务场景短信凭证校验;技师申请只有身份证正反面和全身照,城市为任意文本,后端未校验城市是否已开通。
短信与录音server/internal/pkg/notifyhandler/technician.go已有短信事件;录音为手工上传。
在线与订单状态server/internal/model/technician.gohandler/technician.go前端/pages/tech-order-detail/tech-order-detail.vue已有接单开关及到达/开始/完成状态,但缺少列表统一排序、打卡凭证、转单和离场监测。
定位基础前端/pages/workbench/workbench.vueserver/internal/handler/geo.go已有技师定位上报和逆地理编码基础,可扩展订单打卡与短时围栏判断。
渠道与分销server/internal/handler/distribution.go前端/pages/dist-link/dist-link.vue现有推广归因和分润底座可复用,但需新增企业/场所渠道档案、渠道二维码/链接和独立结算规则。
城市前端/pages/index/index.vueserver/internal/handler/service.go前端可选城市,服务/技师接口未按城市过滤。

客户需求确认

项目负责人确认