性能测试种子数据规格
创建日期:2026-02-08 | 状态:已定稿
文档目的
定义性能测试租户的完整种子数据规格,包括所有表的数据量、生成依赖关系、保留策略。模拟一家拥有 150 家门店、运营 2 年的大型美甲连锁品牌。
一、租户基本参数
| 参数 | 值 | 说明 |
| 门店总数 | 150 家 | 148 活跃 + 2 inactive |
| 员工总数 | 3,030 人 | 150×20 店员 + 30 核心团队 |
| 离职率 | 10% | ~303 名 inactive 员工 |
| 客户总数 | 1,000,000 | 15% 匿名 / 55% 已识别 / 30% 注册 |
| 服务项目 | 100 个 | 5 大类 × 20 种,$20-200,15min-2hr |
| 运营时长 | 2 年(730 天) | 含历史交易、预约等 |
时区与营业时间分布
| 时区 | 门店占比 | 门店数 |
| Eastern Time (ET) | 60% | 90 家 |
| Pacific Time (PT) | 20% | 30 家 |
| Central Time (CT) | 10% | 15 家 |
| Mountain Time (MT) | 10% | 15 家 |
| 营业时间模式 | 占比 | 时间 |
| 标准型 | 60% | 10:00-19:00 |
| 长营业型 | 25% | 9:00-21:00 |
| 商场型 | 15% | 10:00-22:00 |
员工配置
每店 20 人配置
| 职位 | 人数/店 | 角色 |
| 店长 | 2 | admin |
| 主管 | 1 | manager |
| 前台 | 2 | receptionist |
| 高级技师 | 5 | senior_technician |
| 美甲师 | 10 | nail_technician |
核心团队 30 人
| 角色 | 人数 | 权限 |
| 超级管理员 | 1 | super_admin(全权限) |
| 全权限管理 | 5 | admin(等同 super_admin) |
| 市场管理 | 5 | admin(仅 marketing 权限) |
| 财务 | 4 | manager(finance/reports 权限) |
| 运营 | 4 | manager(operations 权限) |
| HR | 3 | manager(employees/schedules 权限) |
| 客服 | 4 | manager(guests/appointments 权限) |
| IT | 4 | admin(developer/settings 权限) |
排班参数
| 参数 | 分布 |
| 工作天数 | 6 天/周 70%,5 天/周 20%,7 天/周 10% |
| 班次模式 | 全天 40%,早班 25%,晚班 20%,不规则 15% |
预约参数
| 参数 | 值 |
| 每店每天 | ~100 单 |
| 单人 vs Group | 80% / 20%(Group 平均 3 人,最多 10 人) |
| 每单平均服务数 | 2 个 |
| 来源分布 | 员工代约 60%,Web 10%,Guest App 5%,自助机 5%,现场 20% |
| 状态分布 | completed 85%,cancelled 8%,no_show 3%,active 4% |
支付参数
| 参数 | 值 |
| 支付方式 | 信用卡 70%,借记卡 10%,现金 10%,在线 10% |
| 小费比例 | 90% 给小费,集中在 15%/18%/20%,范围 5%-35% |
| 退款率 | 10%(其中 95% void,5% return) |
二、数据生成依赖层级
核心原则
数据必须按层级顺序生成,保持引用完整性和数据一致性。第 6 层以上的聚合数据从底层交易数据
推导计算,不可独立编造。
Layer 0 平台基础 tenants, platform_settings, tenant_admins
Layer 0.5 RBAC 权限 permissions, roles, role_permissions, job_titles, job_title_permissions
Layer 1 门店配置 centers, terminals, services, center_services, *_config, settings, templates, tiers
Layer 2 员工 employees, employee_roles, employee_pins, capabilities, schedules, work_schedules
Layer 3 客户 guests, guest_notes, guest_tags, memberships, preferences
Layer 4 核心预约 appointments → appointment_services, sub_appointments, appointment_groups
Layer 5 交易支付 invoices → transactions → tips, refunds, receipts, payment_requests
Layer 6 日结对账 day_end_closeouts(从 L5 汇总计算), reconciliations, cash_drawer
Layer 7 行为数据 checkins, reviews, notifications, chat, campaigns → send_history
Layer 8 营销自动化 automation_rules → execution_log, tags(从 L3-L5 推导)
Layer 9 日志报表 application_logs, audit_logs, report_instances(从真实数据查询生成)
三、完整数据表清单
| 表名 | 数据量 | 保留 | 说明 |
tenants | 1 | 永久 | 测试租户 |
platform_settings | ~20 | 永久 | 平台级配置 |
tenant_admins | 1 | 永久 | 租户超管 |
| 表名 | 数据量 | 保留 | 说明 |
permissions | 90 | 永久 | 系统预设权限(resource:action) |
roles | 6 | 永久 | super_admin, admin, manager, employee, staff, guest |
role_permissions | ~360 | 永久 | 角色-权限映射 |
job_titles | ~8 | 永久 | 5 预设 + 3 自定义 |
job_title_permissions | ~240 | 永久 | 职位-权限映射 |
| 表名 | 数据量 | 保留 | 说明 |
centers | 150 | 永久 | 148 活跃 + 2 inactive |
terminals | 375 | 永久 | 每店 2-3 台 POS |
services | 100 | 永久 | 5 类 × 20 种 |
center_services | 14,250 | 永久 | 30% 全服务 + 70% 缺 10% |
service_price_history | ~300 | 永久 | 2 年约 3 次调价 |
booking_config | 150 | 永久 | 每店预约配置 |
checkin_config | 150 | 永久 | 每店签到配置 |
time_clock_settings | 150 | 永久 | 每店打卡配置 |
setting_categories | ~15 | 永久 | 设置分类 |
setting_definitions | ~80 | 永久 | 设置项定义 |
setting_values | ~3,000 | 永久 | 150 店 × ~20 自定义值 |
system_config | ~50 | 永久 | 系统级配置 |
email_templates | ~30 | 永久 | 预设邮件模板 |
sms_templates | ~20 | 永久 | 预设短信模板 |
template_categories | ~8 | 永久 | 模板分类 |
message_templates | ~25 | 永久 | 消息模板 |
membership_tiers | 5 | 永久 | bronze/silver/gold/platinum/diamond |
points_triggers | ~8 | 永久 | 积分规则 |
center_job_title_tip_settings | 750 | 永久 | 150 店 × 5 职位 |
discount_rules | 3,700 | 永久 | 折扣规则 |
coupons | 3,700 | 永久 | 优惠券(1:1 对应 discount_rules) |
mobile_promotion_settings | 150 | 永久 | 每店移动端营销配置 |
delivery_config | ~5 | 永久 | 消息投递配置 |
| 表名 | 数据量 | 保留 | 说明 |
employees | 3,030 | 永久 | 含 10% inactive |
employee_roles | 3,030 | 永久 | 每人 1 条角色分配 |
employee_special_permissions | ~150 | 永久 | 5% 员工有特殊权限覆盖 |
employee_store_permissions | ~90 | 永久 | 核心团队跨店权限 |
employee_pins | 2,727 | 永久 | 活跃员工打卡 PIN |
employee_service_capabilities | ~54,000 | 永久 | 基于 job_title.can_provide_service |
employee_notification_settings | 3,030 | 永久 | 每人通知偏好 |
employee_push_tokens | ~2,727 | 永久 | 活跃员工设备 token |
| 表名 | 数据量 | 保留 | 说明 |
employee_work_schedules | ~15,000 | 永久 | 周循环模板 |
employee_work_schedules_daily | ~59,500 | 4 周滚动 | 未来 4 周每日班次 |
employee_available_times | ~5,710,000 | 4 周滚动 | 触发器自动生成的 5 分钟时段 |
employee_available_start_times | ~1,430,000 | 4 周滚动 | 可用起始时间(子集) |
leave_requests | 42,000 | 永久 | HR 审计需要 |
swap_requests | 15,000 | 永久 | 换班记录 |
time_cards | 1,600,000 | 永久 | 每日打卡汇总 |
time_punches | 3,200,000 | 永久 | 每次打卡明细 |
time_card_edits | ~80,000 | 永久 | 约 5% 修改记录 |
| 表名 | 数据量 | 保留 | 说明 |
guests | 1,000,000 | 永久 | 15% 匿名 / 55% 已识别 / 30% 注册 |
guest_notes | 2,315,000 | 永久 | 80% 已识别 + 90% 注册有备注 |
guest_relationships | 50,000 | 永久 | 客户间关系对 |
guest_merge_logs | 15,000 | 永久 | 客户合并审计 |
guest_auth_fields | 300,000 | 永久 | 注册用户扩展认证字段 |
guest_auth_sessions | ~50,000 | 临时 | 活跃 Guest App session |
guest_tokens | ~50,000 | 临时 | Guest 认证 token |
guest_login_history | ~3,000,000 | 1 年 | Guest 登录日志 |
guest_verification_codes | ~200 | 临时 | OTP 验证码 |
guest_password_resets | ~500 | 临时 | 密码重置 token |
guest_email_verifications | ~1,000 | 临时 | 邮件验证 token |
user_preferences | ~150,000 | 永久 | 50% 注册用户有偏好 |
subscription_preferences | ~300,000 | 永久 | 注册用户订阅偏好 |
| 表名 | 数据量 | 保留 | 说明 |
tag_definitions | 50 | 永久 | 20+ 模板 + 自定义 |
guest_tags | 4,250,000 | 永久 | 85 万客户 × 平均 5 标签 |
tag_change_logs | 10,000,000 | 永久 | 标签变更审计 |
tag_evaluation_logs | 30,000 | 永久 | 评估性能日志 |
customer_segments | ~30 | 永久 | 分群定义 |
segment_members | ~2,000,000 | 永久 | 分群成员关联 |
customer_memberships | 300,000 | 永久 | 会员关系 |
points_accounts | 300,000 | 永久 | 积分账户 |
points_transactions | 4,350,000 | 永久 | 积分流水 |
customer_discount_eligibility | ~50,000 | 永久 | 折扣资格 |
| 表名 | 数据量 | 保留 | 说明 |
appointments | 11,000,000 | 永久 | 100/店/天 × 730 天 |
appointment_services | 22,000,000 | 永久 | 每单平均 2 个服务 |
sub_appointments | 6,600,000 | 永久 | Group 预约子记录 |
appointment_groups | 2,200,000 | 永久 | 20% 为 Group 预约 |
appointment_group_members | 6,600,000 | 永久 | 每组平均 3 人 |
checkins | 1,100,000 | 永久 | 10% 的预约有签到 |
checkin_queue | ~50 | 临时 | 瞬时队列数据 |
service_reviews | 110,000 | 永久 | 1% 的预约有评价 |
| 表名 | 数据量 | 保留 | 说明 |
appointment_notifications | 20,000,000 | 1 年 | 3-4 条/预约(确认+提醒) |
notifications | 19,250,000 | 永久 | 各类推送/系统通知 |
push_notifications | 5,000,000 | 1 年 | 推送通知记录 |
| 表名 | 数据量 | 保留 | 说明 |
invoices | 9,350,000 | 7 年 | 仅已支付的预约(85%) |
invoice_items | 5,610,000 | 7 年 | Group invoice 明细 |
transactions | 11,000,000 | 7 年 | 支付交易 |
transaction_history | 13,750,000 | 1 年 | 交易状态变更日志 |
tips | 9,900,000 | 7 年 | 90% 的交易有小费 |
refunds | 1,100,000 | 7 年 | 10%(95% void + 5% return) |
receipts | 7,150,000 | 1 年 | 平均 1.3 张/交易 |
payment_requests | 6,000,000 | 1 年 | POS 终端支付请求 |
gift_cards | 300,000 | 永久 | 60% 已用/20% 活跃/16% 过期/4% 其他 |
gift_card_transactions | 750,000 | 永久 | 购买+使用记录 |
gift_card_claims | ~200,000 | 永久 | 兑换记录 |
coupon_usage_history | 2,440,000 | 永久 | 优惠券使用记录 |
| 表名 | 数据量 | 保留 | 说明 |
day_end_closeouts | 110,000 | 永久 | 148 店 × 730 天 |
day_end_checklist_items | 660,000 | 永久 | 每次 ~6 个检查步骤 |
tip_distributions | 1,550,000 | 永久 | 每日每员工小费分配 |
cash_drawer_sessions | 108,000 | 永久 | 每店每天 1 次 |
cash_counts | 238,000 | 永久 | 每 session 2.2 次清点 |
payment_reconciliations | 108,000 | 7 年 | 每店每天 1 次对账 |
reconciliation_items | 11,000,000 | 7 年 | 匹配每笔交易 |
bank_deposits | 108,000 | 7 年 | 每店每天 1 条 |
income_expenses | 45,000 | 永久 | 非交易收支记录 |
| 表名 | 数据量 | 保留 | 说明 |
campaigns | 1,800 | 永久 | 全平台+每店活动 |
campaign_recipients | 8,400,000 | 永久 | 活动接收人 |
campaign_send_history | 8,400,000 | 1 年 | 发送明细(替代 promotion_send_logs) |
campaign_trigger_links | ~100 | 永久 | 活动-触发器关联 |
promotion_analytics | ~50,000 | 永久 | 营销分析聚合 |
automation_rules | 40 | 永久 | 自动化营销规则 |
trigger_templates | 20 | 永久 | 触发器模板 |
automation_execution_log | 1,500,000 | 1 年 | 自动化执行日志 |
inbound_sms | 50,000 | 永久 | 入站短信 |
outreach_logs | 100,000 | 1 年 | 外展日志 |
| 表名 | 数据量 | 保留 | 说明 |
chat_conversations | 5,000 | 永久 | 聊天会话 |
chat_conversation_members | 15,000 | 永久 | 每会话 ~3 人 |
chat_messages | 3,400,000 | 永久 | 聊天消息 |
announcements | 208 | 永久 | 每周 2 条 |
announcement_reads | 500,000 | 永久 | 已读记录 |
experiments | ~20 | 永久 | A/B 实验 |
| 表名 | 数据量 | 保留 | 说明 |
report_schedules | 310 | 永久 | 定时报表配置 |
report_instances | 30,000 | 90 天 | 报表运行记录 |
report_exports | 3,000 | 90 天 | 导出记录 |
report_audit_logs | ~10,000 | 90 天 | 报表访问审计 |
payroll_reports | ~1,500 | 永久 | 工资单报表 |
| 表名 | 数据量 | 保留 | 说明 |
application_logs | 4,500,000 | 90 天 | 应用日志 |
system_error_logs | 1,000,000 | 90 天 | 系统错误日志 |
auth_audit_logs | 1,800,000 | 1 年 | 登录审计 |
permission_audit_logs | 180,000 | 1 年 | 权限变更审计 |
setting_history | 5,000 | 永久 | 设置变更审计 |
export_logs | 2,000 | 90 天 | 导出记录 |
tracking_tokens | 50,000 | 永久 | 追踪 token |
| 表名 | 数据量 | 保留 | 说明 |
auth_sessions | ~5,000 | 临时 | 管理端活跃 session |
auth_token_blacklist | ~10,000 | 临时 | 已撤销 token |
jwt_keys | ~5 | 永久 | JWT 签名密钥 |
jwt_blacklist | ~10,000 | 临时 | 黑名单 token |
password_reset_tokens | ~500 | 临时 | 密码重置 token |
四、保留策略汇总
| 保留策略 | 适用表 | 依据 |
| 90 天 |
application_logs, system_error_logs, export_logs, report_instances, report_exports, report_audit_logs |
运营日志,3 个月后价值极低 |
| 1 年 |
auth_audit_logs, permission_audit_logs, guest_login_history, receipts, payment_requests, transaction_history, appointment_notifications, push_notifications, campaign_send_history, automation_execution_log, outreach_logs |
PCI DSS 审计要求 + 安全事件回溯 |
| 7 年 |
transactions, tips, refunds, invoices, invoice_items, payment_reconciliations, reconciliation_items, bank_deposits |
IRS 税务合规要求 |
| 永久 |
所有业务实体表、配置表、客户数据、预约记录 |
核心业务数据 |
| 4 周滚动 |
employee_work_schedules_daily, employee_available_times, employee_available_start_times |
仅用于预约可用性查询,历史无价值 |
| 临时 |
guest_auth_sessions, guest_tokens, verification_codes, checkin_queue, auth_sessions, jwt_blacklist 等 |
运行时临时数据,量极小 |
五、实施注意事项
数据一致性要求
- 引用完整性:每个 appointment 必须指向真实存在的 employee、store、guest,且该 employee 确实在该 store 工作并具备该 service 能力
- 数据一致性:day_end_closeout 的金额 = 当天该店所有 transactions 汇总;tip_distributions = 当天该店员工小费明细汇总
- 业务逻辑正确:同一员工同一时段没有重叠预约;员工预约时间在其排班时间内
- 聚合数据推导:Layer 6+ 的数据必须从 Layer 4-5 的交易数据计算得出,不可独立编造
employee_available_times 不需要手动生成
该表由数据库触发器从
employee_work_schedules_daily 自动生成。种子数据只需插入
employee_work_schedules_daily,触发器会自动填充 5 分钟可用时段。
种子数据生成顺序
严格按照 Layer 0 → Layer 9 的顺序生成,每一层的数据依赖上一层。在 Layer 5(交易)生成完成后,Layer 6(日结对账)的数据通过聚合查询从 Layer 5 计算得出。