初始提交:飞球 ETL 系统全量代码

This commit is contained in:
Neo
2026-02-13 08:05:34 +08:00
commit 3c51f5485d
441 changed files with 117631 additions and 0 deletions

View File

@@ -0,0 +1,811 @@
# 助教账号主数据SearchAssistantInfo
> 自动生成于 2026-02-13 | 数据来源:本地 JSON 样本
## 基本信息
| 属性 | 值 |
|------|-----|
| 接口路径 | `PersonnelManagement/SearchAssistantInfo` |
| 完整 URL | `https://pc.ficoo.vip/apiprod/admin/v1/PersonnelManagement/SearchAssistantInfo` |
| 请求方法 | `POST` |
| Content-Type | `application/json` |
| 鉴权方式 | Bearer Token`Authorization` 头) |
| ODS 对应表 | `assistant_accounts_master` |
| 分页方式 | `page` + `limit`(最大 100 |
| 时间范围 | 不需要 |
## 请求参数
| 参数名 | 类型 | 示例值 | 说明 |
|--------|------|--------|------|
| `workStatusEnum` | int | `0` | 工作状态0=全部) |
| `dingTalkSynced` | int | `0` | 钉钉同步状态0=全部) |
| `leaveId` | int | `0` | 离职状态0=全部) |
| `criticismStatus` | int | `0` | 投诉状态0=全部) |
| `signStatus` | int | `-1` | 签署状态(-1=全部) |
| `page` | int | `1` | 页码(从 1 开始) |
| `limit` | int | `100` | 每页条数(最大 100 |
## 响应字段(共 61 个)
| # | 字段名 | 类型 | 示例值 |
|---|--------|------|--------|
| 1 | `job_num` | string | '' |
| 2 | `shop_name` | string | '朗朗桌球' |
| 3 | `group_id` | int | 0 |
| 4 | `group_name` | string | '' |
| 5 | `staff_profile_id` | int | 0 |
| 6 | `ding_talk_synced` | int | 1 |
| 7 | `entry_type` | int | 1 |
| 8 | `team_name` | string | '1组' |
| 9 | `entry_sign_status` | int | 0 |
| 10 | `resign_sign_status` | int | 0 |
| 11 | `system_role_id` | int | 10 |
| 12 | `criticism_status` | int | 1 |
| 13 | `salary_grant_enabled` | int | 2 |
| 14 | `leave_status` | int | 1 |
| 15 | `id` | int | 2947562271297029 |
| 16 | `allow_cx` | int | 1 |
| 17 | `assistant_no` | string | '31' |
| 18 | `assistant_status` | int | 1 |
| 19 | `avatar` | string | 'https://oss.ficoo.vip/maUiImages/images/defaultAvatar.png' |
| 20 | `birth_date` | string | '0001-01-01 00:00:00' |
| 21 | `charge_way` | int | 2 |
| 22 | `create_time` | string | '2025-11-02 15:55:26' |
| 23 | `cx_unit_price` | float | 0.0 |
| 24 | `end_time` | string | '2025-12-01 08:00:00' |
| 25 | `entry_time` | string | '2025-11-02 08:00:00' |
| 26 | `gender` | int | 0 |
| 27 | `height` | float | 0.0 |
| 28 | `introduce` | string | '' |
| 29 | `is_delete` | int | 0 |
| 30 | `is_guaranteed` | int | 1 |
| 31 | `is_team_leader` | int | 0 |
| 32 | `last_table_id` | int | 0 |
| 33 | `last_table_name` | string | '' |
| 34 | `level` | int | 20 |
| 35 | `light_equipment_id` | string | '' |
| 36 | `light_status` | int | 2 |
| 37 | `mobile` | string | '15119679931' |
| 38 | `nickname` | string | '小然' |
| 39 | `online_status` | int | 1 |
| 40 | `order_trade_no` | int | 0 |
| 41 | `pd_unit_price` | float | 0.0 |
| 42 | `person_org_id` | int | 2947562271215109 |
| 43 | `real_name` | string | '张静然' |
| 44 | `resign_time` | string | '2025-11-03 08:00:00' |
| 45 | `serial_number` | int | 0 |
| 46 | `show_sort` | int | 31 |
| 47 | `show_status` | int | 1 |
| 48 | `site_id` | int | 2790685415443269 |
| 49 | `site_light_cfg_id` | int | 0 |
| 50 | `staff_id` | int | 0 |
| 51 | `start_time` | string | '2025-11-01 08:00:00' |
| 52 | `team_id` | int | 2792011585884037 |
| 53 | `tenant_id` | int | 2790683160709957 |
| 54 | `update_time` | string | '2025-11-03 18:32:07' |
| 55 | `user_id` | int | 2947562270838277 |
| 56 | `video_introduction_url` | string | '' |
| 57 | `weight` | float | 0.0 |
| 58 | `work_status` | int | 2 |
| 59 | `assistant_grade` | float | 0.0 |
| 60 | `sum_grade` | float | 0.0 |
| 61 | `get_grade_times` | int | 0 |
## 详细字段分析
> 以下内容迁移自旧版 `assistant_accounts_master-Analysis.md`,包含字段的业务含义、枚举值、跨表关联等详细说明。
一、文件整体定位与结构
业务含义(内容类型)
该文件是 “助教账号/人事档案维表”,记录的是某门店下所有助教(含管理类账号)的账号配置、人事状态、可见性、计费策略等基础信息。
每条记录对应 一名助教账号,是一张典型的“维度表”(在数据模型中,与“助教流水”等事实表通过 id / user_id / team_id / site_id 等字段关联)。
二、记录级字段详解(按逻辑分组)
1. 主键 / 账号身份类字段
id
类型int
含义:助教账号主键 ID在“助教流水.json”中对应 site_assistant_id。
作用:所有与助教相关的事实表(助教流水、助教排班等)都会通过这个 ID 关联到该维表。
user_id
类型int
含义:系统级“用户账号 ID”通常对应登录账号。
关联:
在“助教流水.json”中有同名字段 user_id与此完全一致。
用途:用于统一人员在不同角色/模块下的账号,区别于岗位级的 id。
assistant_no
类型string
观测值:'1' ~ '39' 等编号,重复时对应不同助教(编号不唯一)。
含义(结合字段名推测):助教工号 / 编号,便于业务侧识别。
关联:在“助教流水.json”中有 assistantNo与此字段对应。
job_num
类型string
观测:全为 ''(空字符串)。
含义:备用工号字段,目前未在该门店启用。
serial_number
类型int
观测:部分为 0部分是较大的整数例如 2738, 2698, 2534…
含义(推测):系统内部生成的序列号或排序标识,用于全局排序或迁移。
2. 个人基础信息字段
real_name
类型string
含义:助教真实姓名,如“何海婷”“梁婷婷”等。
关联:在“助教流水.json”的 assistantName 与此一致。
nickname
类型string
含义:助教在前台展示的昵称,如“佳怡”“周周”“球球”等。
用途:与真实姓名区分,用于顾客侧展示。如在助教流水中 nickname 就是这个值。
gender
类型int枚举。
观测值:
0 × 40
1 × 1
2 × 9
含义(结合常见约定与值分布推测):
0未填/保密
1
2
birth_date
类型string时间格式。
观测值:
大部分为 "0001-01-01 00:00:00"(显然是默认无效日期)
少量为真实日期,如 "2007-01-14 00:00:00" 等。
含义:助教出生日期。
mobile
类型string
观测11 位手机号,每个账号基本唯一。
含义:助教手机号,用于登录绑定、通知、钉钉同步等。
avatar
类型string
观测:
大量为默认头像 URL如 .../defaultAvatar.png
少量为具体头像图片 URL。
含义:助教头像地址。
introduce
类型string
观测:当前导出中全部为空字符串。
含义:个人简介文案,预留给助教自我介绍使用。
video_introduction_url
类型string
观测:
49 条为 ''
1 条为视频 URLoss 存储路径)
含义:助教个人视频介绍地址。
height
类型float
观测:
多数为 0.0,少量为 163.0, 166.0, 167.0, 165.0, 170.0 等。
含义身高单位厘米。0 表示未填写。
weight
类型float
观测:
多数为 0.0
少量为 55.0, 90.0, 100.0 等。
含义体重单位公斤。0 表示未填写。
3. 组织、团队与门店维度字段
tenant_id
类型int
观测:所有记录相同。
含义:品牌/租户 ID对应“非球科技”系统中该商户的唯一标识。
用途:多门店时用来区分不同商户。
site_id
类型int
观测:所有记录相同。
含义:门店 ID对应本次数据的这家球房朗朗桌球
关联:与其它 JSON台费流水、库存、销售等中的 site_id 一致。
shop_name
类型string
观测:全部为 "朗朗桌球"。
含义:门店名称,冗余字段,用于展示。
team_id
类型int
观测:所有记录同一个值(唯一团队)。
含义:助教所属团队 ID。
关联:在“助教流水.json”中 assistant_team_id 与此一致。
team_name
类型string
观测:全部为 "1组"。
含义:团队名称,展示用,和 team_id 一一对应。
group_id
类型int
观测:全部为 0。
含义(推测):上层“分组 ID”预留字段例如集团/事业部),本门店未使用。
group_name
类型string
观测:全部为 ''。
含义group_id 对应的名称,目前为空。
person_org_id
类型int
观测:每条记录一个不同的 ID。
含义:人事组织 ID通常表示“某某门店-助教部-某小组”等层级组织。
关联:
在“助教流水.json”中同名字段 person_org_id 与此一致。
用途:用于人力组织维度统计、权限控制。
staff_id
类型int
观测:全部为 0。
含义(推测):预留给“人事系统员工 ID”的字段目前未接入或未启用。
staff_profile_id
类型int
观测:全部为 0。
含义(推测):人事档案 ID与第三方 HR 系统或内部员工档案集成使用,当前未启用。
4. 等级、计费与薪资配置字段
level
类型int枚举。
观测值:
10 × 24
20 × 18
30 × 4
40 × 3
8 × 1
含义(结合“助教流水中的 assistant_level / levelName 推测”):
8助教管理/管理员(和流水里的 "助教管理" 对应)
10初级助教
20中级助教
30高级助教
40更高等级可能是“资深/专家”,该等级在流水里暂未出现)。
关联:在“助教流水.json”里以 assistant_level+levelName 体现。
assistant_grade
类型float
观测:全部为 0.0。
含义(推测):助教综合评分(员工维度的平均分 snapshot当前尚未启用评分。
sum_grade
类型float
观测:全为 0.0。
含义评分总和用于计算平均分assistant_grade = sum_grade / get_grade_times当前为 0。
get_grade_times
类型int
观测:全为 0。
含义:累计被评分次数。
charge_way
类型int枚举。
观测:全为 2。
含义(推测):计费方式:
2 代表当前门店为“计时收费”其他值1、3 等)可能对应按局、按课时等,当前未出现。
pd_unit_price
类型float
观测:全为 0.0。
含义(推测):某种标准单价(例如“普通时段单价”),这里未在账号上配置(实际单价在助教商品或套餐配置中)。
cx_unit_price
类型float
观测:全为 0.0。
含义(推测):促销时段的单价,本门店未在账号表层面设置。
allow_cx
类型int枚举。
观测:全为 1。
含义(从字段名推测):
是否允许此助教参与“促销价(促销=促销/促销场)”:
1允许参与促销计费。
其他值(未出现)可能为不允许。
is_guaranteed
类型int枚举。
观测:全为 1。
含义(从字段名推测):是否配置“保底薪酬/保底时长”:
1有保底规则。
其他值可能表示无保底。
salary_grant_enabled
类型int枚举。
观测:全为 2。
含义(推测):薪资发放配置开关:
2一种固定含义例如“参与薪资发放方案”或相反具体码值需看系统配置。
仅从这份数据无法区分是否“启用/禁用”,只能确认这是一个薪酬相关开关字段。
5. 入职 / 离职 / 考勤签署相关字段
entry_time
类型string
观测:各类日期 "2025-07-16 08:00:00", "2025-09-01 08:00:00" 等。
含义:入职时间。
resign_time
类型string
观测:
对在职员工:类似 "2225-11-01 17:57:41" 这类非常未来的年份,显然是“占位默认值”。
对已离职员工:正常的近时间,如 "2025-10-13 08:00:00" 等。
含义:离职日期;使用“远未来日期”作为“未离职”的占位。
entry_type
类型int枚举。
观测:全为 1。
含义(推测):入职类型:
1正式入职。
其他值可能表示实习、兼职等,当前未出现。
entry_sign_status
类型int枚举。
观测:全为 0。
含义(推测):入职协议/合同签署状态:
0未签署。
其他值可能表示已签署(目前未启用电子签功能)。
resign_sign_status
类型int枚举。
观测:全为 0。
含义(推测):离职协议签署状态,类似上面。
leave_status
类型int枚举。
观测:
0 × 21
1 × 29
结合 work_status 和 resign_time 可以明确判断:
0在职resign_time 为 2225 年占位)
1已离职resign_time 为真实近日期)
work_status
类型int枚举。
观测:
当 leave_status = 0 时work_status = 1
当 leave_status = 1 时work_status = 2
推断含义:
1在岗/可排班
2离岗/停止安排(与离职状态挂钩)。
6. 账号启用、展示与在线状态字段
assistant_status
类型int枚举。
观测:
1 × 48
2 × 2
含义(推测):账号启用状态:
1启用
2停用 / 冻结(这两条仍处于 leave_status = 0说明未离职但账号被禁用
show_status
类型int枚举。
观测:全为 1。
含义(推测):前台展示状态:
1在助教选择界面展示。
其他值可能是不展示。
show_sort
类型int
观测:多值,如 1, 3, 7, 9, 10, 11, 12, 16, 21, 25, 30, 36, 38, 39, 100 等。
含义:前台展示排序权重,值越小/越大对应不同的排序策略(当前看起来与 assistant_no 有一定对应关系)。
online_status
类型int枚举。
观测:全为 1。
含义(推测):在线状态;当前门店所有助教账号均为在线状态。
is_delete
类型int枚举。
观测:全为 0。
含义:逻辑删除标记:
0未删除
1已逻辑删除数据保留前台不可见
7. 评价与投诉相关字段
criticism_status
类型int枚举。
观测:
1 × 49
2 × 1
含义(推测):投诉/差评状态:
1无投诉或正常
2有投诉记录。
assistant_grade / sum_grade / get_grade_times
已在上文等级部分说明:
当前全部为 0表示该门店尚未产生助教评价数据但字段结构已经做好。
8. 时间元数据与最近服务记录
create_time
类型string
含义:账号创建时间。
update_time
类型string
含义:账号最近一次被修改的时间(例如修改等级、昵称等)。
start_time
类型string
观测:多为整月开始,如 "2025-07-01 08:00:00", "2025-09-01 08:00:00" 等。
含义(推测):当前配置生效的开始日期。
end_time
类型string
观测:对应结束日期,如 "2025-08-01 08:00:00", "2025-10-01 08:00:00" 等。
含义:当前配置生效的结束日期(例如一个周期性的排班/合同周期)。
last_table_id
类型int
观测:
大多为 0
少量为实际台桌 ID。
含义:该助教最近一次服务的球台 ID。
last_table_name
类型string
观测:大多为 '',少量为 "TV", "888" 等。
含义:最近服务球台名称(展示用)。
last_update_name
类型string
观测:如 "助教管理员:黄月柳", "管理员:郑丽珊"。
含义:最近修改该账号配置的管理员名称。
order_trade_no
类型int
观测:
绝大多数为 0
少量为非 0 的订单号。
含义(推测):该助教最近一次关联的订单号,用于快速跳转或回溯最近服务行为。
9. 灯控、钉钉等系统集成相关字段
ding_talk_synced
类型int枚举。
观测:全为 1。
含义(从字段名推测):是否已同步至钉钉:
1已同步
其他值:未同步/错误等。
site_light_cfg_id
类型int
观测:全为 0。
含义:门店灯控配置 ID本门店未在助教账号维度启用。
light_equipment_id
类型string
观测:全为 ''。
含义:灯控设备 ID如果开启“助教开台自动控制灯”会通过该字段关联到灯控硬件。
light_status
类型int枚举。
观测:全为 2。
含义(推测):灯光控制状态,如 1=启用控制、2=不启用 或相反。
由于所有记录是同一个值,只能确认这是一个预留状态字段。
10. 其他标志字段
is_team_leader
类型int枚举。
观测:全为 0。
含义:是否为团队长/组长:
0普通助教
1团队长当前门店未指定团队长
三、与其他 JSON 的字段级关联(从结构角度)
仍然只从“结构 / 关联键”角度说明,不做任何经营或盈利分析:
与《助教流水.json》的关联
助教流水.site_assistant_id ↔ 助教账号.id
助教流水.user_id ↔ 助教账号.user_id
助教流水.assistant_team_id ↔ 助教账号.team_id
助教流水.person_org_id ↔ 助教账号.person_org_id
助教流水.assistant_level ↔ 助教账号.level以及 levelName
助教流水.nickname ↔ 助教账号.nickname
说明:助教流水是事实表,这个文件是对应的助教维表。
与门店维度 / 其它业务表
所有表的 tenant_id、site_id 一致,说明这些记录全部属于同一商户、同一门店。
台费流水、销售记录、库存变化等表通过 site_id、shop_name 共享门店维。
与订单相关表(小票、结账)
此文件中的 order_trade_no 仅是“最近订单号”的影子值,真正的订单明细仍以订单表、小票详情中的 order_trade_no 和 orderSettleId 为主。
在“助教流水”中order_trade_no、order_settle_id 与助教账号并无直接外键关系,而是通过“助教流水”这张桥接事实表关联起来。
与外部系统(钉钉 / 灯控)
ding_talk_synced / staff_profile_id / staff_id 等为与企业内部人事系统、钉钉等集成预留的字段。
site_light_cfg_id / light_equipment_id / light_status 为与灯控设备联动预留的字段,目前在该门店未实际启用。