家政小程序开发全解:经营模式、品类矩阵、派单约束与信用核验

写在前面:家政小程序的技术难度不高,难点在业务建模。本文从四个决定架构的判断出发------经营模式、服务品类、派单约束、信用与留痕------给出可落地的数据模型、算法与合规要点,配套建表 SQL、派单脚本、地址脱敏脚本与工序清单配置。

写在前面:核心立场与读者对象

核心立场 :家政小程序不是「预约 + 派单」,而是一门关于人的生意------商品库存可以复制,服务人员不能。架构上须先定三件事:人怎么管、责任怎么划、进门怎么让人放心,它们决定订单表、结算表、评价表的形状,定错后返工成本接近重做。

适合的读者:

  • 正在开发家政 / 上门服务类小程序的开发者
  • 为传统家政公司做线上化的产品经理
  • 做多租户家政 SaaS、需抽象通用模型的技术负责人

先纠正的三个认知:

常见认知 实际情况 影响
家政是统一品类 钟点保洁与母婴护理复杂度差数倍 一次全做,每类都不深
排期就是「有空就能派」 需叠加技能、区域、时段三约束 派单错误率直接落在履约上
信任靠文案包装 信任应来自可核验的官方信用记录 转化率上不去,价格上不去

目录

一、第一分叉:经营模式决定数据模型

家政行业存在三种经营模式,法律定义清晰,系统实现差异巨大。中介制 只做居间撮合、收介绍费,三方签约,服务关系发生在客户与服务人员之间。员工制 依《国务院办公厅关于促进家政服务业提质扩容的意见》(国办发〔2019〕30 号)的定义------企业直接与消费者签订服务合同,与服务人员依法签订劳动合同或服务协议并缴纳社会保险费,统一安排服务,直接支付或代发不低于当地最低工资标准的劳动报酬,并持续培训管理。平台制提供撮合与交易工具,双方在平台内成交,平台收佣金,对资质要求最高。

三者的系统差异:

维度 中介制 员工制 平台制
合同关系 三方 两方(客户与企业) 三方(平台内成交)
资金流向 客户付服务人员,企业收介绍费 客户付企业,企业发薪 客户付款进平台,平台分账
结算对象 介绍费 工资(底薪 + 提成或计件) 佣金
评价归属 服务人员 服务人员,责任归企业 服务人员
责任首问 服务人员 企业 平台按规则划分
核心表 介绍记录、介绍费 排班、工时、薪资、社保台账 佣金、分账、保证金
发票开具方 通常由服务人员或代开 企业 平台或服务人员

架构影响:中介制改员工制,订单主体(个人→企业)、结算对象(介绍费→工资)、评价归属三者全部重构,工作量不低于重做。该问题必须在需求阶段首个确认。

二、品类矩阵:先做一个,跑通再扩

家政内部的品类差异远大于外行直觉。以下矩阵可直接用于立项范围决策:

品类 计价单位 单次时长 验收方式 资质要求 系统重点
钟点保洁 小时 2---4 小时 前后照片 健康证 排期、派单
深度保洁 / 家电清洗 件 / 房型 4---8 小时 工序勾选 健康证 + 培训 工序模板、留痕
母婴护理 周期(26 天起) 全天或白班 日志 + 客户确认 健康证 + 技能等级 + 分类体检 长周期记录
居家照护 周期(按月) 全天或白班 日志 + 家属确认 同上 长周期记录
维修安装 次 + 材料 1---3 小时 报价确认 + 验收单 相关作业资质 报价单、二次上门
整理收纳 小时 / 空间 4---8 小时 前后对比 健康证 + 培训 空间清单

立项建议:首期只做一个品类,跑到复购率稳定后再扩第二个。品类数量直接决定工序模板、资质校验、验收表单的数量,是排期成本的主要来源。

三、核心数据模型与建表

围绕「人---位---单---账」四类实体建模,以下为核心表结构(PostgreSQL 语法):

sql 复制代码
-- staff:服务人员档案(对外展示字段与内部管理字段分离)
CREATE TABLE staff (
    id            BIGSERIAL PRIMARY KEY,
    tenant_id     BIGINT NOT NULL,
    name          VARCHAR(32) NOT NULL,
    phone         VARCHAR(20) NOT NULL,
    id_verified   BOOLEAN DEFAULT FALSE,   -- 身份核验
    credit_no     VARCHAR(64),             -- 信用凭证编号
    health_expire DATE,                    -- 健康证有效期
    skill_tags    TEXT[] DEFAULT '{}',     -- 保洁/母婴/维修
    service_area  VARCHAR(64)[],           -- 行政区或商圈
    employ_type   SMALLINT NOT NULL,       -- 1 中介 2 员工 3 平台
    status        SMALLINT DEFAULT 1,      -- 1 可派单 2 休息 3 停用
    UNIQUE (tenant_id, phone)
);

-- service_slot:可售服务时段(人 × 时段 唯一占位)
CREATE TABLE service_slot (
    id        BIGSERIAL PRIMARY KEY,
    staff_id  BIGINT NOT NULL REFERENCES staff(id),
    slot_date DATE NOT NULL,
    start_min SMALLINT NOT NULL,           -- 以 0 点起算
    end_min   SMALLINT NOT NULL,
    order_id  BIGINT,
    state     SMALLINT DEFAULT 0,          -- 0 空闲 1 锁定 2 占用
    UNIQUE (staff_id, slot_date, start_min) -- 防同时段重复派单
);
CREATE INDEX idx_slot_date_state ON service_slot (slot_date, state);

-- service_order:服务订单
CREATE TABLE service_order (
    id           BIGSERIAL PRIMARY KEY,
    order_no     VARCHAR(32) NOT NULL UNIQUE,
    tenant_id    BIGINT NOT NULL,
    category     VARCHAR(32) NOT NULL,
    customer_id  BIGINT NOT NULL,
    staff_id     BIGINT,
    addr_region  VARCHAR(128) NOT NULL,    -- 小区/楼栋级
    addr_detail  VARCHAR(128),             -- 门牌,接单后可见
    addr_secret  VARCHAR(256),             -- 门锁信息,加密限时
    amount       NUMERIC(10,2) NOT NULL,
    state        SMALLINT NOT NULL,        -- 待派/已派/服务中/待验收/完成
    created_at   TIMESTAMPTZ DEFAULT now()
);
CREATE INDEX idx_order_staff_state ON service_order (staff_id, state);

设计要点:

  1. service_slot 的 UNIQUE (staff_id, slot_date, start_min) 是防重复派单的核心约束,靠数据库而非应用层保证------并发下应用层判断必然有竞态窗口。
  2. 地址拆三段(addr_region / addr_detail / addr_secret),按权限返回不同字段,实现分级可见。
  3. staff 表按状态区分展示字段与管理字段,展示层只读取通过校验的部分。

四、派单:三重约束与匹配脚本

「有空就能派」是最常见的实现错误。真实约束有三重:

约束 内容 违反后果
技能 服务人员具备该品类技能标签 服务无法完成,需换人
区域 服务地址在其服务半径内 通勤过长,单均效率下降
时段 目标时段未被占用且在岗 撞单,客户等待

派单匹配脚本(打分排序,非单纯就近):

python 复制代码
# dispatch.py ------ 派单候选排序
# 约束过滤 + 打分:技能 > 时段 > 区域 > 历史服务过该客户
def candidates(staffs, slots, order, prefer_staff_id=None):
    scored = []
    for s in staffs:
        if s["status"] != 1 or order["category"] not in s["skill_tags"]:
            continue
        if order["region"] not in s["service_area"]:
            continue
        ok = any(
            sl["staff_id"] == s["id"] and sl["slot_date"] == order["slot_date"]
            and sl["state"] == 0
            and sl["start_min"] <= order["start_min"] and sl["end_min"] >= order["end_min"]
            for sl in slots
        )
        if not ok:
            continue
        score = 60
        if prefer_staff_id and s["id"] == prefer_staff_id:
            score += 30                      # 老客户指定优先
        if s["id"] in (order.get("history_staff_ids") or []):
            score += 15                      # 服务过该客户
        score -= len(s["service_area"]) * 2  # 服务面越广,单点熟悉度略降
        scored.append((score, s["id"]))
    return sorted(scored, reverse=True)

def lock_slot(conn, staff_id, slot_date, start_min, order_id):
    """条件更新抢占时段;返回 0 表示已被占,需回退重选"""
    cur = conn.cursor()
    cur.execute(
        """UPDATE service_slot SET state = 2, order_id = %s
           WHERE staff_id = %s AND slot_date = %s
             AND start_min = %s AND state = 0""",
        (order_id, staff_id, slot_date, start_min),
    )
    conn.commit()
    return cur.rowcount

lock_slot 返回 0 时须回退重选候选,不要直接抛错------重匹配的成功率远高于让客户重下单。

五、信任的可核验化

家政的转化障碍是「让陌生人进门」。文案解决不了,可核验的记录可以。商务部牵头的全国家政服务信用信息平台(移动端「家政信用查」)归集企业与服务人员信用记录,服务人员部分包含身份核验、犯罪背景核查结果、从业经历、培训、健康与保险信息;2026 年已与人社、公安、市场监管数据互通。截至 2024 年 1 月,平台归集 2 万余家企业、1500 多万条服务人员信用信息。

**授权是硬约束:服务人员信息须经本人授权方可查看。产品形态为------服务人员端生成带二维码的信用查询凭证,客户扫码后由服务人员刷脸授权,客户方可查看。四个环节的实现要求:

环节 实现要求
凭证生成 由服务人员端发起,绑定其本人账号,不可由平台代发
授权确认 刷脸或活体校验,授权记录留痕(时间、IP、查看方)
信息展示 仅展示平台返回字段,本地不缓存完整信息
撤回 支持服务人员撤回授权,撤回后立即停止展示

上门地址属高风险个人信息,《个人信息保护法》将行踪轨迹列为敏感个人信息,处理需单独同意。分级展示实现:

python 复制代码
# addr_mask.py ------ 地址分级展示
import re

def mask_for_staff(order, staff_viewing: bool) -> str:
    """派单前仅到楼栋;派单后到门牌;完成后 T+7 隐藏门牌"""
    region = order["addr_region"]          # 例:XX花园3号楼
    if not staff_viewing:
        return region
    if order["state"] in ("已完成", "已取消") and order.get("days_since_done", 0) > 7:
        return region
    return f"{region} {order.get('addr_detail') or ''}"

def mask_for_admin(addr: str) -> str:
    """客服/后台列表默认脱敏,仅工单详情按需申请"""
    return re.sub(r"\d+", "*", addr)

三条原则:最小必要 、分级可见 (按角色与订单状态放开)、限期留存。门锁密码尤其不能长期明文存储。

六、服务留痕与验收清单

非标服务无法验收是家政纠纷主要来源,解法是把服务内容清单化:

yaml 复制代码
# sop_cleaning.yaml ------ 钟点保洁工序清单(运营可维护)
category: hourly_cleaning
duration_hours: 3
items:
  - {id: C01, name: 卧室地面清扫拖洗, photo: before_after}
  - {id: C02, name: 客厅地面清扫拖洗, photo: before_after}
  - {id: C03, name: 卫生间洁具清洁除垢, photo: required}
  - {id: C04, name: 厨房台面与灶具清洁, photo: required}
  - {id: C05, name: 垃圾清运, photo: none}
addons:
  - {id: A01, name: 抽油烟机拆洗, price: 120}

留痕字段与用途:

留痕项 采集时点 解决的争议
到家打卡(定位 + 时间) 到达 是否按时到场
服务前照片 开工前 原始状态基线
工序项勾选 服务中 清单项是否完成
服务后照片 完工 完成质量
客户确认(签字或点击) 验收 是否认可

边界要求:照片只拍作业区域,不拍人与私人物品,此条须写入服务规范。

七、复购、归属与预付

家政第一单通常不赚钱,利润在复购。系统需支持三件事:

能力 说明 数据要求
指定服务人员 客户可选上次服务者 订单记录 staff_id 并可查询历史
固定档期 每周固定时间自动生成订单 周期任务表 + 生成幂等
次卡 / 套餐 预付多次服务 预付余额表 + 核销流水

两个须提前约定的问题:

**其一,服务人员离职后的客户归属。**客户认的是人,人走了客户可能跟着走。协议应约定服务期内及服务期后一段时间内的归属与承接方式;发生后再说,谈的往往不是条款而是情绪。

**其二,预付的性质。**次卡、年卡本质是预付消费。单用途预付卡有备案与限额要求(适用范围限于零售、住宿餐饮、居民服务等特定行业的企业法人,个体经营者不在其内,记名卡限额 5000 元、不记名卡 1000 元);2025 年 5 月施行的预付式消费司法解释对「收款不退」类条款的效力作了明确。产品设计至少要区分「服务承诺型」与「储值余额型」。

八、分期计划与交付清单

分三期推进,每期有可上线闭环:

期次 范围 周期 验收标准
一期 单品类下单 + 派单 + 留痕 + 支付 6---8 周 完整跑通 50 单无人工干预
二期 信用展示 + 指定人员 + 次卡 4---6 周 复购率可统计、次卡核销无差错
三期 多品类 + 固定档期 + 员工制薪资核算 6---10 周 排班、工时、薪资三方对账一致

需求评审易漏六项:

# 易漏项 后果
1 改约取消的时间分档规则 争议集中,客服成本上升
2 服务人员端易用性(大字、少步骤) 履约混乱,培训成本高
3 品类资质校验(健康证到期拦截) 合规风险,服务中断
4 评价维度拆分(人 vs 平台) 数据无意义,无法定位问题
5 服务半径与通勤时间 单均效率低,人员流失
6 保险与订单的绑定关系 出险时无法举证覆盖范围

参考资料

  1. 国务院办公厅《关于促进家政服务业提质扩容的意见》(国办发〔2019〕30 号) --- https://www.gov.cn/zhengce/content/2019-06/26/content_5403340.htm
  2. 商务部:家政服务业信用体系建设有关答复(全国家政服务信用信息平台) --- https://www.mofcom.gov.cn/zfxxgk/gkml/art/2022/art_b3536a7a9b144adeb6c065bb91366536.html
  3. 国务院政策例行吹风会(2024 年 1 月 22 日,家政信用信息平台数据) --- https://www.gov.cn/xinwen/2024zccfh/1
  4. 《中华人民共和国个人信息保护法》(国家法律法规数据库) --- https://flk.npc.gov.cn/
  5. 商务部《单用途商业预付卡管理办法(试行)》 --- https://www.gov.cn/gongbao/content/2012/content_2245842.htm
  6. 最高人民法院《关于审理预付式消费民事纠纷案件适用法律若干问题的解释》(法释〔2025〕4 号) --- https://www.court.gov.cn/
  7. 微信小程序开放文档(订阅消息、位置接口) --- https://developers.weixin.qq.com/miniprogram/dev/framework/
相关推荐
silvamux_2 小时前
微头条爆款体平台适配实测:把交付要求变成可计算的指标
java·线性代数·算法·决策树·矩阵
zyseo82 小时前
谷歌SEO 关键词研究完整方法论:从种子词到优先级矩阵
数据库·人工智能·矩阵
lvwangshu17 小时前
P15569 [COCI 2025/2026 #5] 结构 / Struktura 题解
矩阵·题解·dp·推导题·矩阵加速
weixin_177297220691 天前
二手旧物回收小程序先要解决的不是下单,是“上门之后价格变了怎么办“
小程序·apache
努力变的更好1 天前
H5与小程序之间的回调
前端·小程序·apache
镜子AI1 天前
镜子AI工程实践:用 Python 自动生成 GEO 问答语料与意图覆盖矩阵(零依赖)
人工智能·python·矩阵
学习论之费曼学习法2 天前
无人值守AI内容矩阵实战(8):标题 A/B 实验的 6 个工程实现细节,隔日对比与自动判胜
人工智能·python·算法·矩阵·自动化·a/b测试·内容矩阵
晒太羊的猫2 天前
hot100矩阵问题
线性代数·矩阵
轻口味2 天前
启元无真机二开实战1:54 个接口能做什么、不能做什么——启元 Q1/T1 SDK 能力全景与版本矩阵
线性代数·矩阵·ros2·具身智能·启元机器人