|
|
@@ -69,8 +69,8 @@ CREATE TABLE `fe_enterprise` (
|
|
69
|
69
|
DROP TABLE IF EXISTS `fe_enterprise_user`;
|
|
70
|
70
|
CREATE TABLE `fe_enterprise_user` (
|
|
71
|
71
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。绑定关系创建时生成。非空。',
|
|
72
|
|
- `enterprise_id` BIGINT NOT NULL COMMENT '关联企业主键,外键 REFERENCES fe_enterprise(id)。管理员邀请绑定或企业创建时写入。非空;级联查询企业下所有管理员。',
|
|
73
|
|
- `user_id` BIGINT NOT NULL COMMENT '关联微信用户主键,外键 REFERENCES fe_user(id)。被邀请用户接受绑定或企业创建者自动绑定时写入。非空;建立索引 idx_fe_enterprise_user_uid。',
|
|
|
72
|
+ `enterprise_id` BIGINT NOT NULL COMMENT '关联企业主键,外键。管理员邀请绑定或企业创建时写入。非空;级联查询企业下所有管理员。',
|
|
|
73
|
+ `user_id` BIGINT NOT NULL COMMENT '关联微信用户主键,外键。被邀请用户接受绑定或企业创建者自动绑定时写入。非空;建立索引 idx_fe_enterprise_user_uid。',
|
|
74
|
74
|
`role` VARCHAR(20) NOT NULL DEFAULT 'owner' COMMENT '用户在该企业下的权限角色。绑定或角色调整时由企业主/管理员写入。枚举:owner=主账号(最高权限);admin=管理员;viewer=只读。非空,默认 owner。',
|
|
75
|
75
|
`is_default` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否为用户登录后的默认选中企业。用户切换默认企业或首次绑定时由应用层更新,同一 user_id 仅一条为 true。非空,默认 FALSE;影响 API 请求默认 enterprise_id。',
|
|
76
|
76
|
`bind_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '绑定关系建立时间。绑定成功时写入,默认 NOW()。非空;用于审计。',
|
|
|
@@ -79,15 +79,13 @@ CREATE TABLE `fe_enterprise_user` (
|
|
79
|
79
|
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '逻辑删除标记。解除绑定关系时置 1,非物理删除。枚举:0=正常;1=已解除。非空,默认 0;唯一索引 uk_fe_enterprise_user(enterprise_id,user_id) 在 del_flag=0 时生效。',
|
|
80
|
80
|
PRIMARY KEY (`id`),
|
|
81
|
81
|
UNIQUE KEY `uk_fe_enterprise_user` (`enterprise_id`, `user_id`, `del_flag`),
|
|
82
|
|
- KEY `idx_fe_enterprise_user_uid` (`user_id`),
|
|
83
|
|
- CONSTRAINT `fk_fe_enterprise_user_enterprise_id` FOREIGN KEY (`enterprise_id`) REFERENCES `fe_enterprise` (`id`),
|
|
84
|
|
- CONSTRAINT `fk_fe_enterprise_user_user_id` FOREIGN KEY (`user_id`) REFERENCES `fe_user` (`id`)
|
|
|
82
|
+ KEY `idx_fe_enterprise_user_uid` (`user_id`)
|
|
85
|
83
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企业与微信用户的多对多绑定关系表,支持一企业多管理员、一用户管多企业。通过 is_default 标识用户登录后默认选中的企业上下文,关联 fe_enterprise 与 fe_user。';
|
|
86
|
84
|
|
|
87
|
85
|
DROP TABLE IF EXISTS `fe_enterprise_finance`;
|
|
88
|
86
|
CREATE TABLE `fe_enterprise_finance` (
|
|
89
|
87
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。企业首次维护财务信息时生成。非空。',
|
|
90
|
|
- `enterprise_id` BIGINT NOT NULL COMMENT '关联企业主键,外键 REFERENCES fe_enterprise(id)。财务信息首次录入时写入。非空;一对一,唯一索引 uk_fe_enterprise_finance。',
|
|
|
88
|
+ `enterprise_id` BIGINT NOT NULL COMMENT '关联企业主键,外键。财务信息首次录入时写入。非空;一对一,唯一索引 uk_fe_enterprise_finance。',
|
|
91
|
89
|
`bank_name` VARCHAR(100) COMMENT '对公账户开户银行名称。企业主在财务设置页填写时写入。示例:中国工商银行上海张江支行。可空。',
|
|
92
|
90
|
`bank_account_enc` TEXT COMMENT '对公银行账号加密密文。企业提交账户信息时由应用层加密写入。高度敏感;禁止明文入库与前端回显;可空。',
|
|
93
|
91
|
`bank_account_mask` VARCHAR(32) COMMENT '对公账号脱敏展示值。与 bank_account_enc 同时生成。示例:6222****1234。可空;供运营后台列表展示。',
|
|
|
@@ -99,14 +97,13 @@ CREATE TABLE `fe_enterprise_finance` (
|
|
99
|
97
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '财务信息变更时更新。非空。',
|
|
100
|
98
|
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '逻辑删除标记。枚举:0=正常;1=已删除。非空,默认 0。',
|
|
101
|
99
|
PRIMARY KEY (`id`),
|
|
102
|
|
- UNIQUE KEY `uk_fe_enterprise_finance` (`enterprise_id`, `del_flag`),
|
|
103
|
|
- CONSTRAINT `fk_fe_enterprise_finance_enterprise_id` FOREIGN KEY (`enterprise_id`) REFERENCES `fe_enterprise` (`id`)
|
|
|
100
|
+ UNIQUE KEY `uk_fe_enterprise_finance` (`enterprise_id`, `del_flag`)
|
|
104
|
101
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企业财务与开票信息表,与企业主体一对一(enterprise_id 唯一)。存储对公账户密文、开票抬头、打款渠道等;小程序端仅展示渠道类型,不展示账户明细等敏感金融信息。';
|
|
105
|
102
|
|
|
106
|
103
|
DROP TABLE IF EXISTS `fe_enterprise_preference`;
|
|
107
|
104
|
CREATE TABLE `fe_enterprise_preference` (
|
|
108
|
105
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。偏好项创建时生成。非空。',
|
|
109
|
|
- `enterprise_id` BIGINT NOT NULL COMMENT '关联企业主键,外键 REFERENCES fe_enterprise(id)。偏好配置时写入。非空;索引 idx_fe_enterprise_pref(enterprise_id,pref_type)。',
|
|
|
106
|
+ `enterprise_id` BIGINT NOT NULL COMMENT '关联企业主键,外键。偏好配置时写入。非空;索引 idx_fe_enterprise_pref(enterprise_id,pref_type)。',
|
|
110
|
107
|
`pref_type` VARCHAR(50) NOT NULL COMMENT '偏好大类。用户或 AI 配置时写入。枚举:work_type=工种薪资基准;insurance=默认保险配置;payment_cycle=发薪/结算周期偏好。非空。',
|
|
111
|
108
|
`pref_key` VARCHAR(100) COMMENT '偏好子键,细分到具体工种或场景。示例:搬运工、仓库分拣。可空;同一 pref_type 下可有多条记录。',
|
|
112
|
109
|
`pref_value` json NOT NULL COMMENT '结构化偏好值 JSON,承载薪资区间、保险方案参数等。AI 解析或用户表单提交时写入。示例:{"daily_wage":280,"currency":"CNY"}。非空,默认 {}。',
|
|
|
@@ -117,16 +114,15 @@ CREATE TABLE `fe_enterprise_preference` (
|
|
117
|
114
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '偏好值变更时更新。非空。',
|
|
118
|
115
|
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '逻辑删除标记。枚举:0=正常;1=已删除。非空,默认 0。',
|
|
119
|
116
|
PRIMARY KEY (`id`),
|
|
120
|
|
- KEY `idx_fe_enterprise_pref` (`enterprise_id`, `pref_type`),
|
|
121
|
|
- CONSTRAINT `fk_fe_enterprise_preference_enterprise_id` FOREIGN KEY (`enterprise_id`) REFERENCES `fe_enterprise` (`id`)
|
|
|
117
|
+ KEY `idx_fe_enterprise_pref` (`enterprise_id`, `pref_type`)
|
|
122
|
118
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企业智能偏好配置表,存储工种薪资基准、默认保险档次、发薪结算周期等结构化偏好。支持用户自然语言配置后由 AI 解析入库,供草稿生成引擎复用,关联 fe_enterprise。';
|
|
123
|
119
|
|
|
124
|
120
|
DROP TABLE IF EXISTS `fe_conversation`;
|
|
125
|
121
|
CREATE TABLE `fe_conversation` (
|
|
126
|
122
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。用户发起新对话时生成。非空;被消息表、草稿表外键引用。',
|
|
127
|
123
|
`conversation_no` VARCHAR(32) NOT NULL COMMENT '会话对外业务编号,API 路径与日志中使用。创建会话时由编号生成器写入。示例:conv_001。非空;唯一索引 uk_fe_conversation_no。',
|
|
128
|
|
- `enterprise_id` BIGINT NOT NULL COMMENT '所属企业,外键 REFERENCES fe_enterprise(id)。创建会话时从当前登录上下文写入。非空;索引 idx_fe_conversation_ent 用于侧边栏按企业筛选。',
|
|
129
|
|
- `user_id` BIGINT NOT NULL COMMENT '发起对话的企业主用户,外键 REFERENCES fe_user(id)。创建会话时写入。非空;须为 enterprise 类型用户。',
|
|
|
124
|
+ `enterprise_id` BIGINT NOT NULL COMMENT '所属企业,外键。创建会话时从当前登录上下文写入。非空;索引 idx_fe_conversation_ent 用于侧边栏按企业筛选。',
|
|
|
125
|
+ `user_id` BIGINT NOT NULL COMMENT '发起对话的企业主用户,外键。创建会话时写入。非空;须为 enterprise 类型用户。',
|
|
130
|
126
|
`title` VARCHAR(200) COMMENT '会话标题,侧边栏展示用。可由首条用户消息摘要或 AI 自动生成,用户可重命名。示例:浦东仓库暑期用工。可空。',
|
|
131
|
127
|
`chat_type` VARCHAR(30) NOT NULL DEFAULT 'employment' COMMENT '对话专题类型,决定加载的子智能体与卡片模板。创建时根据入口或首条意图写入。枚举:employment=用工办理;knowledge=政策知识库;order=订单查询;cost=成本测算;attendance=考勤;emergency=应急咨询。非空,默认 employment。',
|
|
132
|
128
|
`status` VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '会话生命周期状态。用户归档或长期无消息时更新。枚举:active=进行中;archived=已归档(只读)。非空,默认 active。',
|
|
|
@@ -136,15 +132,13 @@ CREATE TABLE `fe_conversation` (
|
|
136
|
132
|
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '逻辑删除标记。枚举:0=正常;1=已删除。非空,默认 0。',
|
|
137
|
133
|
PRIMARY KEY (`id`),
|
|
138
|
134
|
UNIQUE KEY `uk_fe_conversation_no` (`conversation_no`),
|
|
139
|
|
- KEY `idx_fe_conversation_ent` (`enterprise_id`, `last_message_at`),
|
|
140
|
|
- CONSTRAINT `fk_fe_conversation_enterprise_id` FOREIGN KEY (`enterprise_id`) REFERENCES `fe_enterprise` (`id`),
|
|
141
|
|
- CONSTRAINT `fk_fe_conversation_user_id` FOREIGN KEY (`user_id`) REFERENCES `fe_user` (`id`)
|
|
|
135
|
+ KEY `idx_fe_conversation_ent` (`enterprise_id`, `last_message_at`)
|
|
142
|
136
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 对话会话主表,企业主与智能体交互的容器。通过 chat_type 区分用工、知识库、订单、成本等专题对话;一对多关联 fe_conversation_message。enterprise_id 与 user_id 共同界定会话归属与权限。';
|
|
143
|
137
|
|
|
144
|
138
|
DROP TABLE IF EXISTS `fe_conversation_message`;
|
|
145
|
139
|
CREATE TABLE `fe_conversation_message` (
|
|
146
|
140
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。每条消息入库时生成。非空。',
|
|
147
|
|
- `conversation_id` BIGINT NOT NULL COMMENT '所属会话,外键 REFERENCES fe_conversation(id)。发送消息时写入。非空;索引 idx_fe_conv_msg(conversation_id,create_time)。',
|
|
|
141
|
+ `conversation_id` BIGINT NOT NULL COMMENT '所属会话,外键。发送消息时写入。非空;索引 idx_fe_conv_msg(conversation_id,create_time)。',
|
|
148
|
142
|
`role` VARCHAR(20) NOT NULL COMMENT '消息发送方角色。写入时由网关标记。枚举:user=企业主用户;assistant=AI 助手;system=系统提示(如流程引导)。非空。',
|
|
149
|
143
|
`content` TEXT NOT NULL COMMENT '消息正文文本或卡片摘要说明,供聊天气泡展示。用户输入或 AI 生成时写入。非空;长文本需注意截断策略。',
|
|
150
|
144
|
`content_type` VARCHAR(30) NOT NULL COMMENT '消息内容形态,决定前端渲染组件。写入时标记。枚举:text=纯文本;card_draft=用工草稿卡;card_cost=成本对比卡;card_order=订单进度卡。非空,默认 text。',
|
|
|
@@ -155,15 +149,14 @@ CREATE TABLE `fe_conversation_message` (
|
|
155
|
149
|
`token_usage` json COMMENT '大模型 token 消耗统计 JSON,含 prompt/completion 分项。AI 调用完成后写入,供成本核算。示例:{"prompt":1200,"completion":800}。可空;不展示给用户。',
|
|
156
|
150
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '消息发送/入库时间,聊天气泡排序依据。非空,默认 NOW()。',
|
|
157
|
151
|
PRIMARY KEY (`id`),
|
|
158
|
|
- KEY `idx_fe_conv_msg` (`conversation_id`, `create_time`),
|
|
159
|
|
- CONSTRAINT `fk_fe_conversation_message_conversation_id` FOREIGN KEY (`conversation_id`) REFERENCES `fe_conversation` (`id`)
|
|
|
152
|
+ KEY `idx_fe_conv_msg` (`conversation_id`, `create_time`)
|
|
160
|
153
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='对话消息明细表,存储用户与助手往返的文本及结构化卡片(草稿卡、成本卡、订单卡)。通过 next_action 驱动小程序路由跳转;关联 fe_conversation,可软链 fe_employment_draft。';
|
|
161
|
154
|
|
|
162
|
155
|
DROP TABLE IF EXISTS `fe_agent_action_log`;
|
|
163
|
156
|
CREATE TABLE `fe_agent_action_log` (
|
|
164
|
157
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。每次子模块调用时生成。非空。',
|
|
165
|
|
- `conversation_id` BIGINT COMMENT '关联会话,外键 REFERENCES fe_conversation(id)。对话内调用时写入;后台定时任务触发时可为空。可空。',
|
|
166
|
|
- `enterprise_id` BIGINT NOT NULL COMMENT '所属企业,外键 REFERENCES fe_enterprise(id)。调用上下文中的企业 ID,必填以便按企业排障。非空;索引 idx_fe_agent_log。',
|
|
|
158
|
+ `conversation_id` BIGINT COMMENT '关联会话,外键。对话内调用时写入;后台定时任务触发时可为空。可空。',
|
|
|
159
|
+ `enterprise_id` BIGINT NOT NULL COMMENT '所属企业,外键。调用上下文中的企业 ID,必填以便按企业排障。非空;索引 idx_fe_agent_log。',
|
|
167
|
160
|
`module_name` VARCHAR(50) NOT NULL COMMENT '被调用的模块名称。调用发起时写入。枚举示例:main_agent=主路由;flexible_employment=用工子模块;cost_engine=成本测算引擎。非空。',
|
|
168
|
161
|
`action` VARCHAR(100) NOT NULL COMMENT '模块内具体动作编码。示例:generate_draft、calc_cost、parse_nl_preference。非空;与 module_name 组合定位代码路径。',
|
|
169
|
162
|
`request_json` json COMMENT '请求体 JSON 快照,含用户输入与上下文参数。调用前由中间件序列化写入。可空;可能含业务敏感字段,访问需授权。',
|
|
|
@@ -173,9 +166,7 @@ CREATE TABLE `fe_agent_action_log` (
|
|
173
|
166
|
`duration_ms` int COMMENT '调用耗时(毫秒)。调用结束时计算写入。示例:2350。可空;用于性能监控。',
|
|
174
|
167
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '调用发生时间。非空;按时间倒序查最近异常。',
|
|
175
|
168
|
PRIMARY KEY (`id`),
|
|
176
|
|
- KEY `idx_fe_agent_log` (`enterprise_id`, `create_time`),
|
|
177
|
|
- CONSTRAINT `fk_fe_agent_action_log_conversation_id` FOREIGN KEY (`conversation_id`) REFERENCES `fe_conversation` (`id`),
|
|
178
|
|
- CONSTRAINT `fk_fe_agent_action_log_enterprise_id` FOREIGN KEY (`enterprise_id`) REFERENCES `fe_enterprise` (`id`)
|
|
|
169
|
+ KEY `idx_fe_agent_log` (`enterprise_id`, `create_time`)
|
|
179
|
170
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='智能体与子模块调用审计日志表,记录主智能体、灵活用工模块、成本引擎等的入参出参与耗时。用于技术排障与合规审计,不对小程序用户直接展示;可关联 fe_conversation。';
|
|
180
|
171
|
|
|
181
|
172
|
DROP TABLE IF EXISTS `fe_service_plan`;
|
|
|
@@ -204,7 +195,7 @@ CREATE TABLE `fe_service_plan` (
|
|
204
|
195
|
DROP TABLE IF EXISTS `fe_service_plan_fee_rule`;
|
|
205
|
196
|
CREATE TABLE `fe_service_plan_fee_rule` (
|
|
206
|
197
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。运营为方案配置费用项时生成。非空。',
|
|
207
|
|
- `plan_id` BIGINT NOT NULL COMMENT '关联方案,外键 REFERENCES fe_service_plan(id)。配置费用规则时写入。非空;索引 idx_fe_plan_fee。',
|
|
|
198
|
+ `plan_id` BIGINT NOT NULL COMMENT '关联方案,外键。配置费用规则时写入。非空;索引 idx_fe_plan_fee。',
|
|
208
|
199
|
`fee_code` VARCHAR(50) NOT NULL COMMENT '费用项编码。枚举:labor_fee=劳务费;service_fee=平台服务费;insurance=保险费;tax_withhold=税费代征。非空。',
|
|
209
|
200
|
`fee_name` VARCHAR(100) NOT NULL COMMENT '费用项中文展示名。示例:劳务费、服务费。非空。',
|
|
210
|
201
|
`calc_type` VARCHAR(30) NOT NULL COMMENT '计算方式类型。枚举:fixed=固定金额;rate=按基数比例;formula=自定义公式(由 calc_expression 描述)。非空。',
|
|
|
@@ -214,8 +205,7 @@ CREATE TABLE `fe_service_plan_fee_rule` (
|
|
214
|
205
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间。非空。',
|
|
215
|
206
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '规则变更时更新。非空。',
|
|
216
|
207
|
PRIMARY KEY (`id`),
|
|
217
|
|
- KEY `idx_fe_plan_fee` (`plan_id`),
|
|
218
|
|
- CONSTRAINT `fk_fe_service_plan_fee_rule_plan_id` FOREIGN KEY (`plan_id`) REFERENCES `fe_service_plan` (`id`)
|
|
|
208
|
+ KEY `idx_fe_plan_fee` (`plan_id`)
|
|
219
|
209
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='方案费用项计算规则表,定义劳务费、服务费、保险、税费代征等分项的计算方式(固定额/比例/公式)。成本测算引擎读取本表与 fe_service_plan 联合计算;一对多归属 plan_id。';
|
|
220
|
210
|
|
|
221
|
211
|
DROP TABLE IF EXISTS `fe_workflow_definition`;
|
|
|
@@ -235,7 +225,7 @@ CREATE TABLE `fe_workflow_definition` (
|
|
235
|
225
|
DROP TABLE IF EXISTS `fe_workflow_step`;
|
|
236
|
226
|
CREATE TABLE `fe_workflow_step` (
|
|
237
|
227
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。流程版本初始化时批量插入。非空。',
|
|
238
|
|
- `workflow_id` BIGINT NOT NULL COMMENT '关联流程定义,外键 REFERENCES fe_workflow_definition(id)。步骤归属的流程版本。非空。',
|
|
|
228
|
+ `workflow_id` BIGINT NOT NULL COMMENT '关联流程定义,外键。步骤归属的流程版本。非空。',
|
|
239
|
229
|
`step_code` VARCHAR(50) NOT NULL COMMENT '步骤唯一编码,订单 current_step_code 引用此值。枚举(九步):draft_created=草稿创建;plan_confirmed=方案确认;registration=扫码登记;enterprise_audit=企业审核;contract_signing=合同签署;work_started=开始用工;settlement_pending=待结算;settlement_paid=已支付;completed=已完成。非空;与 workflow_id 组成唯一索引。',
|
|
240
|
230
|
`step_name` VARCHAR(100) NOT NULL COMMENT '步骤中文展示名。示例:扫码登记、合同签署。非空。',
|
|
241
|
231
|
`step_order` int NOT NULL COMMENT '步骤顺序号,从小到大推进。初始化时写入 1-9。非空。',
|
|
|
@@ -243,8 +233,7 @@ CREATE TABLE `fe_workflow_step` (
|
|
243
|
233
|
`auto_advance` tinyint(1) NOT NULL DEFAULT 0 COMMENT '满足系统条件后是否自动推进到下一步,无需人工点击。非空,默认 FALSE;如登记人数达标可自动推进。',
|
|
244
|
234
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '步骤定义创建时间。非空。',
|
|
245
|
235
|
PRIMARY KEY (`id`),
|
|
246
|
|
- UNIQUE KEY `uk_fe_workflow_step` (`workflow_id`, `step_code`),
|
|
247
|
|
- CONSTRAINT `fk_fe_workflow_step_workflow_id` FOREIGN KEY (`workflow_id`) REFERENCES `fe_workflow_definition` (`id`)
|
|
|
236
|
+ UNIQUE KEY `uk_fe_workflow_step` (`workflow_id`, `step_code`)
|
|
248
|
237
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='合规流程步骤定义表,订单 fe_employment_order.current_step_code 对应本表 step_code。强制校验实名、合同、结算、完税、开票等必经节点完整性;归属 fe_workflow_definition。';
|
|
249
|
238
|
|
|
250
|
239
|
DROP TABLE IF EXISTS `fe_policy_rule`;
|
|
|
@@ -268,9 +257,9 @@ DROP TABLE IF EXISTS `fe_employment_draft`;
|
|
268
|
257
|
CREATE TABLE `fe_employment_draft` (
|
|
269
|
258
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。AI 子模块生成草稿时创建。非空;被 fe_draft_field、fe_draft_cost_snapshot 引用。',
|
|
270
|
259
|
`draft_no` VARCHAR(32) NOT NULL COMMENT '草稿业务编号,对外 API 使用。生成时由编号器写入。示例:draft_001。非空;唯一索引 uk_fe_draft_no。',
|
|
271
|
|
- `enterprise_id` BIGINT NOT NULL COMMENT '所属企业,外键 REFERENCES fe_enterprise(id)。从对话上下文写入。非空;索引 idx_fe_draft_ent。',
|
|
272
|
|
- `user_id` BIGINT NOT NULL COMMENT '发起草稿的企业主用户,外键 REFERENCES fe_user(id)。创建时从 fe_conversation.user_id 写入。非空;索引 idx_fe_draft_user。',
|
|
273
|
|
- `conversation_id` BIGINT COMMENT '来源 AI 对话,外键 REFERENCES fe_conversation(id)。对话触发生成时写入;后台批量生成可为空。可空。',
|
|
|
260
|
+ `enterprise_id` BIGINT NOT NULL COMMENT '所属企业,外键。从对话上下文写入。非空;索引 idx_fe_draft_ent。',
|
|
|
261
|
+ `user_id` BIGINT NOT NULL COMMENT '发起草稿的企业主用户,外键。创建时从 fe_conversation.user_id 写入。非空;索引 idx_fe_draft_user。',
|
|
|
262
|
+ `conversation_id` BIGINT COMMENT '来源 AI 对话,外键。对话触发生成时写入;后台批量生成可为空。可空。',
|
|
274
|
263
|
`scenario` VARCHAR(50) NOT NULL COMMENT '用工业务场景类型。AI 识别用户意图时写入。枚举:existing_worker_regularization=已有非正规临时工规范转正;new_demand=全新用工需求。非空。',
|
|
275
|
264
|
`title` VARCHAR(200) COMMENT '草稿标题,列表与卡片展示。AI 摘要或用户输入。示例:浦东仓库暑期搬运。可空。',
|
|
276
|
265
|
`status` VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '草稿生命周期状态。枚举:pending=待用户确认;confirmed=已确认并转订单;cancelled=用户取消;expired=超时未确认自动过期。非空,默认 pending。',
|
|
|
@@ -293,27 +282,22 @@ CREATE TABLE `fe_employment_draft` (
|
|
293
|
282
|
`risk_prompts` json COMMENT '风险提示 JSON 数组,合规引擎输出。示例:["未签劳动合同存在用工风险"]。可空,默认 []。',
|
|
294
|
283
|
`estimated_total` decimal(14,2) COMMENT '预估企业总支出(元)。成本引擎测算后回写。可空。',
|
|
295
|
284
|
`estimated_per_capita` decimal(12,2) COMMENT '预估人均成本(元)。成本引擎测算后回写。可空。',
|
|
296
|
|
- `selected_plan_id` BIGINT COMMENT '用户选中的用工方案,外键 REFERENCES fe_service_plan(id)。用户在成本对比页确认方案时写入;确认草稿时必填。可空(待确认阶段)。',
|
|
|
285
|
+ `selected_plan_id` BIGINT COMMENT '用户选中的用工方案,外键。用户在成本对比页确认方案时写入;确认草稿时必填。可空(待确认阶段)。',
|
|
297
|
286
|
`confirmed_at` datetime COMMENT '用户点击确认草稿的时间戳。确认接口成功时写入。可空。',
|
|
298
|
|
- `confirmed_by` BIGINT COMMENT '确认操作用户,外键 REFERENCES fe_user(id)。确认接口写入。可空。',
|
|
|
287
|
+ `confirmed_by` BIGINT COMMENT '确认操作用户,外键。确认接口写入。可空。',
|
|
299
|
288
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '草稿创建时间。非空。',
|
|
300
|
289
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '草稿字段或状态变更时更新。非空。',
|
|
301
|
290
|
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '逻辑删除标记。枚举:0=正常;1=已删除。非空,默认 0。',
|
|
302
|
291
|
PRIMARY KEY (`id`),
|
|
303
|
292
|
UNIQUE KEY `uk_fe_draft_no` (`draft_no`),
|
|
304
|
293
|
KEY `idx_fe_draft_ent` (`enterprise_id`, `status`, `create_time`),
|
|
305
|
|
- KEY `idx_fe_draft_user` (`user_id`, `status`, `create_time`),
|
|
306
|
|
- CONSTRAINT `fk_fe_employment_draft_enterprise_id` FOREIGN KEY (`enterprise_id`) REFERENCES `fe_enterprise` (`id`),
|
|
307
|
|
- CONSTRAINT `fk_fe_employment_draft_user_id` FOREIGN KEY (`user_id`) REFERENCES `fe_user` (`id`),
|
|
308
|
|
- CONSTRAINT `fk_fe_employment_draft_conversation_id` FOREIGN KEY (`conversation_id`) REFERENCES `fe_conversation` (`id`),
|
|
309
|
|
- CONSTRAINT `fk_fe_employment_draft_selected_plan_id` FOREIGN KEY (`selected_plan_id`) REFERENCES `fe_service_plan` (`id`),
|
|
310
|
|
- CONSTRAINT `fk_fe_employment_draft_confirmed_by` FOREIGN KEY (`confirmed_by`) REFERENCES `fe_user` (`id`)
|
|
|
294
|
+ KEY `idx_fe_draft_user` (`user_id`, `status`, `create_time`)
|
|
311
|
295
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用工草稿主表,体现「草稿优先」产品原则:AI 根据对话生成,用户确认前均为草稿状态。确认并选定方案后生成 fe_employment_order 与 fe_registration_batch;关联 fe_enterprise、fe_conversation、fe_service_plan。';
|
|
312
|
296
|
|
|
313
|
297
|
DROP TABLE IF EXISTS `fe_draft_field`;
|
|
314
|
298
|
CREATE TABLE `fe_draft_field` (
|
|
315
|
299
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。草稿生成或字段补全时插入。非空。',
|
|
316
|
|
- `draft_id` BIGINT NOT NULL COMMENT '关联草稿,外键 REFERENCES fe_employment_draft(id)。非空;与 field_key 组成唯一索引 uk_fe_draft_field。',
|
|
|
300
|
+ `draft_id` BIGINT NOT NULL COMMENT '关联草稿,外键。非空;与 field_key 组成唯一索引 uk_fe_draft_field。',
|
|
317
|
301
|
`field_key` VARCHAR(100) NOT NULL COMMENT '字段键名,与草稿主表列名或扩展字段对应。示例:work_location、daily_wage。非空。',
|
|
318
|
302
|
`field_label` VARCHAR(100) COMMENT '字段中文标签,表单展示用。示例:工作地点、日薪标准。可空。',
|
|
319
|
303
|
`field_value` TEXT COMMENT '简单文本类型字段值。用户输入或 AI 填充时写入。可空;复杂结构用 value_json。',
|
|
|
@@ -324,15 +308,14 @@ CREATE TABLE `fe_draft_field` (
|
|
324
|
308
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '字段记录创建时间。非空。',
|
|
325
|
309
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '字段值变更时更新。非空。',
|
|
326
|
310
|
PRIMARY KEY (`id`),
|
|
327
|
|
- UNIQUE KEY `uk_fe_draft_field` (`draft_id`, `field_key`),
|
|
328
|
|
- CONSTRAINT `fk_fe_draft_field_draft_id` FOREIGN KEY (`draft_id`) REFERENCES `fe_employment_draft` (`id`)
|
|
|
311
|
+ UNIQUE KEY `uk_fe_draft_field` (`draft_id`, `field_key`)
|
|
329
|
312
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='草稿字段明细细表,逐字段记录值、数据来源与可编辑性,支撑前端「默认生成」角标(is_default=true)与字段级审计。一对多归属 fe_employment_draft。';
|
|
330
|
313
|
|
|
331
|
314
|
DROP TABLE IF EXISTS `fe_draft_cost_snapshot`;
|
|
332
|
315
|
CREATE TABLE `fe_draft_cost_snapshot` (
|
|
333
|
316
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。成本引擎每次全量测算时批量插入。非空。',
|
|
334
|
|
- `draft_id` BIGINT NOT NULL COMMENT '关联草稿,外键 REFERENCES fe_employment_draft(id)。非空;索引 idx_fe_cost_snapshot。',
|
|
335
|
|
- `plan_id` BIGINT COMMENT '关联方案目录,外键 REFERENCES fe_service_plan(id)。current 行可能为空(表示非平台方案)。可空。',
|
|
|
317
|
+ `draft_id` BIGINT NOT NULL COMMENT '关联草稿,外键。非空;索引 idx_fe_cost_snapshot。',
|
|
|
318
|
+ `plan_id` BIGINT COMMENT '关联方案目录,外键。current 行可能为空(表示非平台方案)。可空。',
|
|
336
|
319
|
`plan_code` VARCHAR(32) NOT NULL COMMENT '方案编码快照,防止方案后续改名影响历史展示。示例:plan_1。非空。',
|
|
337
|
320
|
`plan_name` VARCHAR(100) NOT NULL COMMENT '方案名称快照。示例:合规优先 (A)。非空。',
|
|
338
|
321
|
`employer_total_outflow` decimal(14,2) NOT NULL COMMENT '企业总支出(元),含劳务+服务费+保险+税费等。成本引擎计算写入。非空。',
|
|
|
@@ -345,33 +328,30 @@ CREATE TABLE `fe_draft_cost_snapshot` (
|
|
345
|
328
|
`calc_version` VARCHAR(20) COMMENT '测算引擎版本号,便于回放与排障。示例:v1.2.0。可空。',
|
|
346
|
329
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '快照生成时间,同一 draft_id 下多条记录时间相近。非空。',
|
|
347
|
330
|
PRIMARY KEY (`id`),
|
|
348
|
|
- KEY `idx_fe_cost_snapshot` (`draft_id`),
|
|
349
|
|
- CONSTRAINT `fk_fe_draft_cost_snapshot_draft_id` FOREIGN KEY (`draft_id`) REFERENCES `fe_employment_draft` (`id`),
|
|
350
|
|
- CONSTRAINT `fk_fe_draft_cost_snapshot_plan_id` FOREIGN KEY (`plan_id`) REFERENCES `fe_service_plan` (`id`)
|
|
|
331
|
+ KEY `idx_fe_cost_snapshot` (`draft_id`)
|
|
351
|
332
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='草稿成本对比快照表,一次测算为同一草稿生成多行(current + plan_1/2/3)。核心指标:企业总支出、人均成本、员工到手;一对多关联 fe_draft_cost_detail。';
|
|
352
|
333
|
|
|
353
|
334
|
DROP TABLE IF EXISTS `fe_draft_cost_detail`;
|
|
354
|
335
|
CREATE TABLE `fe_draft_cost_detail` (
|
|
355
|
336
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。生成快照时同步插入各费用项。非空。',
|
|
356
|
|
- `snapshot_id` BIGINT NOT NULL COMMENT '关联成本快照,外键 REFERENCES fe_draft_cost_snapshot(id)。非空;索引 idx_fe_cost_detail。',
|
|
|
337
|
+ `snapshot_id` BIGINT NOT NULL COMMENT '关联成本快照,外键。非空;索引 idx_fe_cost_detail。',
|
|
357
|
338
|
`fee_code` VARCHAR(50) NOT NULL COMMENT '费用项编码,与 fe_service_plan_fee_rule.fee_code 对齐。示例:labor_fee、service_fee。非空。',
|
|
358
|
339
|
`fee_name` VARCHAR(100) NOT NULL COMMENT '费用项中文名。示例:劳务费、平台服务费。非空。',
|
|
359
|
340
|
`amount` decimal(14,2) NOT NULL COMMENT '该费用项金额(元),NUMERIC(14,2)。非空。',
|
|
360
|
341
|
`rate` decimal(8,4) COMMENT '适用费率或系数,NUMERIC(8,4)。可空;固定额费用项无费率。',
|
|
361
|
342
|
`sort_order` int NOT NULL DEFAULT 0 COMMENT '明细列表展示顺序。非空,默认 0。',
|
|
362
|
343
|
PRIMARY KEY (`id`),
|
|
363
|
|
- KEY `idx_fe_cost_detail` (`snapshot_id`),
|
|
364
|
|
- CONSTRAINT `fk_fe_draft_cost_detail_snapshot_id` FOREIGN KEY (`snapshot_id`) REFERENCES `fe_draft_cost_snapshot` (`id`)
|
|
|
344
|
+ KEY `idx_fe_cost_detail` (`snapshot_id`)
|
|
365
|
345
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成本对比费用明细细表,对应快照下劳务费、服务费、保险、税费代征等分项金额与费率。归属 fe_draft_cost_snapshot,供前端展开明细列表。';
|
|
366
|
346
|
|
|
367
|
347
|
DROP TABLE IF EXISTS `fe_employment_order`;
|
|
368
|
348
|
CREATE TABLE `fe_employment_order` (
|
|
369
|
349
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。草稿确认接口成功时创建。非空。',
|
|
370
|
350
|
`order_no` VARCHAR(32) NOT NULL COMMENT '订单业务编号,企业主可见。示例:2024-001、ORD20260707001。非空;唯一索引 uk_fe_order_no。',
|
|
371
|
|
- `enterprise_id` BIGINT NOT NULL COMMENT '所属企业,外键 REFERENCES fe_enterprise(id)。非空;索引 idx_fe_order_ent。',
|
|
372
|
|
- `user_id` BIGINT NOT NULL COMMENT '下单企业主用户,外键 REFERENCES fe_user(id)。确认草稿时从 fe_employment_draft.user_id 复制。非空;索引 idx_fe_order_user。',
|
|
373
|
|
- `draft_id` BIGINT COMMENT '来源草稿,外键 REFERENCES fe_employment_draft(id)。确认时写入,追溯对话与方案选择。可空(极少数后台直创订单)。',
|
|
374
|
|
- `selected_plan_id` BIGINT COMMENT '确认选用的用工方案,外键 REFERENCES fe_service_plan(id)。草稿确认时从 draft.selected_plan_id 复制。可空;应尽早补齐。',
|
|
|
351
|
+ `enterprise_id` BIGINT NOT NULL COMMENT '所属企业,外键。非空;索引 idx_fe_order_ent。',
|
|
|
352
|
+ `user_id` BIGINT NOT NULL COMMENT '下单企业主用户,外键。确认草稿时从 fe_employment_draft.user_id 复制。非空;索引 idx_fe_order_user。',
|
|
|
353
|
+ `draft_id` BIGINT COMMENT '来源草稿,外键。确认时写入,追溯对话与方案选择。可空(极少数后台直创订单)。',
|
|
|
354
|
+ `selected_plan_id` BIGINT COMMENT '确认选用的用工方案,外键。草稿确认时从 draft.selected_plan_id 复制。可空;应尽早补齐。',
|
|
375
|
355
|
`title` VARCHAR(200) NOT NULL COMMENT '订单标题,通常继承草稿标题。非空。',
|
|
376
|
356
|
`worker_count` int NOT NULL COMMENT '计划用工人数。非空;与登记批次 expected_count 对齐。',
|
|
377
|
357
|
`work_days` decimal(8,2) COMMENT '工作天数,支持小数。可空。',
|
|
|
@@ -391,11 +371,7 @@ CREATE TABLE `fe_employment_order` (
|
|
391
|
371
|
PRIMARY KEY (`id`),
|
|
392
|
372
|
UNIQUE KEY `uk_fe_order_no` (`order_no`),
|
|
393
|
373
|
KEY `idx_fe_order_ent` (`enterprise_id`, `order_status`, `create_time`),
|
|
394
|
|
- KEY `idx_fe_order_user` (`user_id`, `order_status`, `create_time`),
|
|
395
|
|
- CONSTRAINT `fk_fe_employment_order_enterprise_id` FOREIGN KEY (`enterprise_id`) REFERENCES `fe_enterprise` (`id`),
|
|
396
|
|
- CONSTRAINT `fk_fe_employment_order_user_id` FOREIGN KEY (`user_id`) REFERENCES `fe_user` (`id`),
|
|
397
|
|
- CONSTRAINT `fk_fe_employment_order_draft_id` FOREIGN KEY (`draft_id`) REFERENCES `fe_employment_draft` (`id`),
|
|
398
|
|
- CONSTRAINT `fk_fe_employment_order_selected_plan_id` FOREIGN KEY (`selected_plan_id`) REFERENCES `fe_service_plan` (`id`)
|
|
|
374
|
+ KEY `idx_fe_order_user` (`user_id`, `order_status`, `create_time`)
|
|
399
|
375
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用工订单主表,草稿确认并选定方案后生成,承载办理全流程业务状态与登记进度冗余统计。current_step_code 驱动合规状态机;关联 fe_enterprise、fe_employment_draft、fe_service_plan,一对多关联登记批次与结算单。';
|
|
400
|
376
|
|
|
401
|
377
|
DROP TABLE IF EXISTS `fe_registration_batch`;
|
|
|
@@ -429,26 +405,24 @@ CREATE TABLE `fe_registration_batch` (
|
|
429
|
405
|
DROP TABLE IF EXISTS `fe_order_workflow_log`;
|
|
430
|
406
|
CREATE TABLE `fe_order_workflow_log` (
|
|
431
|
407
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。每次步骤推进时追加写入,不可修改。非空。',
|
|
432
|
|
- `order_id` BIGINT NOT NULL COMMENT '关联订单,外键 REFERENCES fe_employment_order(id)。非空;索引 idx_fe_order_wf_log。',
|
|
|
408
|
+ `order_id` BIGINT NOT NULL COMMENT '关联订单,外键。非空;索引 idx_fe_order_wf_log。',
|
|
433
|
409
|
`from_step` VARCHAR(50) COMMENT '变更前合规步骤编码。首次创建订单时可为空。可空。',
|
|
434
|
410
|
`to_step` VARCHAR(50) NOT NULL COMMENT '变更后合规步骤编码,对应 fe_workflow_step.step_code。非空。',
|
|
435
|
411
|
`from_status` VARCHAR(30) COMMENT '变更前订单业务状态 order_status。可空。',
|
|
436
|
412
|
`to_status` VARCHAR(30) NOT NULL COMMENT '变更后订单业务状态。非空。',
|
|
437
|
|
- `operator_id` BIGINT COMMENT '操作人用户 ID,外键 REFERENCES fe_user(id)。系统自动推进时为 NULL。可空。',
|
|
|
413
|
+ `operator_id` BIGINT COMMENT '操作人用户 ID,外键。系统自动推进时为 NULL。可空。',
|
|
438
|
414
|
`operator_type` VARCHAR(20) NOT NULL DEFAULT 'system' COMMENT '操作方类型。枚举:system=系统自动;enterprise=企业主/管理员;worker=临时工;provider=第三方合作平台。非空,默认 system。',
|
|
439
|
415
|
`remark` TEXT COMMENT '变更说明,如「登记人数已达预期,自动推进」。可空。',
|
|
440
|
416
|
`extra_json` json COMMENT '扩展上下文 JSON,如触发条件、关联合格人数。可空。',
|
|
441
|
417
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '变更发生时间,审计时间轴依据。非空。',
|
|
442
|
418
|
PRIMARY KEY (`id`),
|
|
443
|
|
- KEY `idx_fe_order_wf_log` (`order_id`, `create_time`),
|
|
444
|
|
- CONSTRAINT `fk_fe_order_workflow_log_order_id` FOREIGN KEY (`order_id`) REFERENCES `fe_employment_order` (`id`),
|
|
445
|
|
- CONSTRAINT `fk_fe_order_workflow_log_operator_id` FOREIGN KEY (`operator_id`) REFERENCES `fe_user` (`id`)
|
|
|
419
|
+ KEY `idx_fe_order_wf_log` (`order_id`, `create_time`)
|
|
446
|
420
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单合规流程状态变更日志表,记录状态机每一步推进的前后步骤、操作人与备注,构成五流合一合规证据链。关联 fe_employment_order,operator_id 可引用 fe_user。';
|
|
447
|
421
|
|
|
448
|
422
|
DROP TABLE IF EXISTS `fe_worker`;
|
|
449
|
423
|
CREATE TABLE `fe_worker` (
|
|
450
|
424
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。首次登记提交且实名核验通过后创建或匹配已有档案。非空。',
|
|
451
|
|
- `user_id` BIGINT COMMENT '关联微信用户,外键 REFERENCES fe_user(id)。临时工首次扫码授权微信后绑定。可空;未授权前仅通过身份证匹配。',
|
|
|
425
|
+ `user_id` BIGINT COMMENT '关联微信用户,外键。临时工首次扫码授权微信后绑定。可空;未授权前仅通过身份证匹配。',
|
|
452
|
426
|
`worker_no` VARCHAR(32) COMMENT '临时工业务编号,平台内唯一标识。档案创建时生成。示例:WK20260001。可空。',
|
|
453
|
427
|
`real_name` VARCHAR(64) NOT NULL COMMENT '临时工真实姓名,与身份证一致。登记提交时写入。非空。',
|
|
454
|
428
|
`id_card_no_enc` TEXT NOT NULL COMMENT '身份证号加密密文。登记页提交时应用层加密写入。非空;高度敏感,禁止明文。',
|
|
|
@@ -467,17 +441,16 @@ CREATE TABLE `fe_worker` (
|
|
467
|
441
|
PRIMARY KEY (`id`),
|
|
468
|
442
|
UNIQUE KEY `uk_fe_worker_worker_no` (`worker_no`, `del_flag`),
|
|
469
|
443
|
UNIQUE KEY `uk_fe_worker_user_id` (`user_id`, `del_flag`),
|
|
470
|
|
- KEY `idx_fe_worker_mobile` (`mobile_mask`),
|
|
471
|
|
- CONSTRAINT `fk_fe_worker_user_id` FOREIGN KEY (`user_id`) REFERENCES `fe_user` (`id`)
|
|
|
444
|
+ KEY `idx_fe_worker_mobile` (`mobile_mask`)
|
|
472
|
445
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='临时工自然人档案主表,跨登记批次复用,避免重复录入身份证与银行卡。身份证、银行卡、手机号均加密存储(*_enc),列表仅展示脱敏值(*_mask);可关联 fe_user 实现微信绑定。';
|
|
473
|
446
|
|
|
474
|
447
|
DROP TABLE IF EXISTS `fe_worker_registration`;
|
|
475
|
448
|
CREATE TABLE `fe_worker_registration` (
|
|
476
|
449
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。临时工打开登记页或提交时创建。非空。',
|
|
477
|
450
|
`batch_id` BIGINT NOT NULL COMMENT '所属登记批次 fe_registration_batch.id(逻辑关联,无数据库外键)。非空;索引 idx_fe_worker_reg_batch。',
|
|
478
|
|
- `order_id` BIGINT NOT NULL COMMENT '关联订单,外键 REFERENCES fe_employment_order(id)。冗余便于按订单查登记列表。非空;索引 idx_fe_worker_reg_order。',
|
|
479
|
|
- `enterprise_id` BIGINT NOT NULL COMMENT '所属企业,外键 REFERENCES fe_enterprise(id)。冗余。非空。',
|
|
480
|
|
- `worker_id` BIGINT COMMENT '关联临时工档案,外键 REFERENCES fe_worker(id)。提交成功且匹配/创建档案后绑定。可空(登记进行中)。',
|
|
|
451
|
+ `order_id` BIGINT NOT NULL COMMENT '关联订单,外键。冗余便于按订单查登记列表。非空;索引 idx_fe_worker_reg_order。',
|
|
|
452
|
+ `enterprise_id` BIGINT NOT NULL COMMENT '所属企业,外键。冗余。非空。',
|
|
|
453
|
+ `worker_id` BIGINT COMMENT '关联临时工档案,外键。提交成功且匹配/创建档案后绑定。可空(登记进行中)。',
|
|
481
|
454
|
`real_name` VARCHAR(64) NOT NULL COMMENT '本次登记填写的姓名。非空;可能与 worker 档案后续同步。',
|
|
482
|
455
|
`mobile_enc` TEXT COMMENT '登记手机号密文。提交时加密写入。可空;高度敏感。',
|
|
483
|
456
|
`mobile_mask` VARCHAR(20) COMMENT '登记手机号脱敏。可空。',
|
|
|
@@ -488,7 +461,7 @@ CREATE TABLE `fe_worker_registration` (
|
|
488
|
461
|
`fail_reason` TEXT COMMENT '失败或企业驳回原因。可空。',
|
|
489
|
462
|
`submitted_at` datetime COMMENT '临时工点击提交时间。可空。',
|
|
490
|
463
|
`reviewed_at` datetime COMMENT '企业审核完成时间。可空。',
|
|
491
|
|
- `reviewed_by` BIGINT COMMENT '审核人,外键 REFERENCES fe_user(id)。可空。',
|
|
|
464
|
+ `reviewed_by` BIGINT COMMENT '审核人,外键。可空。',
|
|
492
|
465
|
`remind_count` int NOT NULL DEFAULT 0 COMMENT '企业主催办次数,每次催办 +1。非空,默认 0。',
|
|
493
|
466
|
`last_remind_at` datetime COMMENT '最近一次催办时间。可空。',
|
|
494
|
467
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '登记记录创建时间。非空。',
|
|
|
@@ -496,18 +469,14 @@ CREATE TABLE `fe_worker_registration` (
|
|
496
|
469
|
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '逻辑删除标记。枚举:0=正常;1=已删除。非空,默认 0。',
|
|
497
|
470
|
PRIMARY KEY (`id`),
|
|
498
|
471
|
KEY `idx_fe_worker_reg_batch` (`batch_id`, `reg_status`),
|
|
499
|
|
- KEY `idx_fe_worker_reg_order` (`order_id`),
|
|
500
|
|
- CONSTRAINT `fk_fe_worker_registration_order_id` FOREIGN KEY (`order_id`) REFERENCES `fe_employment_order` (`id`),
|
|
501
|
|
- CONSTRAINT `fk_fe_worker_registration_enterprise_id` FOREIGN KEY (`enterprise_id`) REFERENCES `fe_enterprise` (`id`),
|
|
502
|
|
- CONSTRAINT `fk_fe_worker_registration_worker_id` FOREIGN KEY (`worker_id`) REFERENCES `fe_worker` (`id`),
|
|
503
|
|
- CONSTRAINT `fk_fe_worker_registration_reviewed_by` FOREIGN KEY (`reviewed_by`) REFERENCES `fe_user` (`id`)
|
|
|
472
|
+ KEY `idx_fe_worker_reg_order` (`order_id`)
|
|
504
|
473
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='批次登记记录表,记录每个临时工在某一 fe_registration_batch 下的一次登记全过程。reg_status 驱动进度页统计、催办与审核;关联 fe_worker 档案,敏感证件信息加密存储。batch_id 暂无数据库外键。';
|
|
505
|
474
|
|
|
506
|
475
|
DROP TABLE IF EXISTS `fe_worker_consent`;
|
|
507
|
476
|
CREATE TABLE `fe_worker_consent` (
|
|
508
|
477
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。临时工勾选协议并提交时插入。非空。',
|
|
509
|
|
- `registration_id` BIGINT COMMENT '关联登记记录,外键 REFERENCES fe_worker_registration(id)。首次档案登记可为空;批次扫码登记时写入。',
|
|
510
|
|
- `worker_id` BIGINT COMMENT '关联临时工档案,外键 REFERENCES fe_worker(id)。档案绑定后写入。可空。',
|
|
|
478
|
+ `registration_id` BIGINT COMMENT '关联登记记录,外键。首次档案登记可为空;批次扫码登记时写入。',
|
|
|
479
|
+ `worker_id` BIGINT COMMENT '关联临时工档案,外键。档案绑定后写入。可空。',
|
|
511
|
480
|
`consent_type` VARCHAR(50) NOT NULL COMMENT '协议类型。枚举:labor_contract=电子劳动合同;privacy_policy=隐私政策;authorization=个人信息处理授权。非空。',
|
|
512
|
481
|
`consent_version` VARCHAR(20) COMMENT '协议版本号,对应法务发布的协议版本。示例:v2.1。可空。',
|
|
513
|
482
|
`consent_title` VARCHAR(200) COMMENT '协议标题展示文案。示例:《灵活用工电子劳动合同》。可空。',
|
|
|
@@ -517,19 +486,17 @@ CREATE TABLE `fe_worker_consent` (
|
|
517
|
486
|
`user_agent` VARCHAR(500) COMMENT '客户端 User-Agent 字符串。可空;最长 500 字符。',
|
|
518
|
487
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录入库时间。非空。',
|
|
519
|
488
|
PRIMARY KEY (`id`),
|
|
520
|
|
- KEY `idx_fe_worker_consent` (`registration_id`),
|
|
521
|
|
- CONSTRAINT `fk_fe_worker_consent_registration_id` FOREIGN KEY (`registration_id`) REFERENCES `fe_worker_registration` (`id`),
|
|
522
|
|
- CONSTRAINT `fk_fe_worker_consent_worker_id` FOREIGN KEY (`worker_id`) REFERENCES `fe_worker` (`id`)
|
|
|
489
|
+ KEY `idx_fe_worker_consent` (`registration_id`)
|
|
523
|
490
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='临时工协议授权确认表,记录勾选电子劳动合同、隐私政策、信息授权等合规留痕。含同意时间、客户端 IP 与 UA,满足电子证据要求;首次档案登记可不关联 fe_worker_registration。';
|
|
524
|
491
|
|
|
525
|
492
|
DROP TABLE IF EXISTS `fe_contract`;
|
|
526
|
493
|
CREATE TABLE `fe_contract` (
|
|
527
|
494
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。登记完成进入合同签署步骤时创建。非空。',
|
|
528
|
495
|
`contract_no` VARCHAR(32) NOT NULL COMMENT '合同业务编号。示例:CT20260707001。非空;唯一索引 uk_fe_contract_no。',
|
|
529
|
|
- `order_id` BIGINT NOT NULL COMMENT '关联订单,外键 REFERENCES fe_employment_order(id)。非空;索引 idx_fe_contract_order。',
|
|
530
|
|
- `registration_id` BIGINT COMMENT '关联登记记录(一人一合同),外键 REFERENCES fe_worker_registration(id)。可空;建议必填。',
|
|
531
|
|
- `worker_id` BIGINT COMMENT '签约临时工,外键 REFERENCES fe_worker(id)。可空。',
|
|
532
|
|
- `enterprise_id` BIGINT NOT NULL COMMENT '签约企业,外键 REFERENCES fe_enterprise(id)。非空。',
|
|
|
496
|
+ `order_id` BIGINT NOT NULL COMMENT '关联订单,外键。非空;索引 idx_fe_contract_order。',
|
|
|
497
|
+ `registration_id` BIGINT COMMENT '关联登记记录(一人一合同),外键。可空;建议必填。',
|
|
|
498
|
+ `worker_id` BIGINT COMMENT '签约临时工,外键。可空。',
|
|
|
499
|
+ `enterprise_id` BIGINT NOT NULL COMMENT '签约企业,外键。非空。',
|
|
533
|
500
|
`contract_type` VARCHAR(50) NOT NULL DEFAULT 'labor' COMMENT '合同类型编码。非空,默认 labor(劳动合同)。',
|
|
534
|
501
|
`contract_title` VARCHAR(200) COMMENT '合同标题。示例:劳务派遣协议-张三。可空。',
|
|
535
|
502
|
`sign_status` VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '签署状态。枚举:pending=待签署;signing=签署中;signed=已签署;rejected=拒签;expired=已过期。非空,默认 pending。',
|
|
|
@@ -543,20 +510,16 @@ CREATE TABLE `fe_contract` (
|
|
543
|
510
|
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '逻辑删除标记。枚举:0=正常;1=已删除。非空,默认 0。',
|
|
544
|
511
|
PRIMARY KEY (`id`),
|
|
545
|
512
|
UNIQUE KEY `uk_fe_contract_no` (`contract_no`),
|
|
546
|
|
- KEY `idx_fe_contract_order` (`order_id`, `sign_status`),
|
|
547
|
|
- CONSTRAINT `fk_fe_contract_order_id` FOREIGN KEY (`order_id`) REFERENCES `fe_employment_order` (`id`),
|
|
548
|
|
- CONSTRAINT `fk_fe_contract_registration_id` FOREIGN KEY (`registration_id`) REFERENCES `fe_worker_registration` (`id`),
|
|
549
|
|
- CONSTRAINT `fk_fe_contract_worker_id` FOREIGN KEY (`worker_id`) REFERENCES `fe_worker` (`id`),
|
|
550
|
|
- CONSTRAINT `fk_fe_contract_enterprise_id` FOREIGN KEY (`enterprise_id`) REFERENCES `fe_enterprise` (`id`)
|
|
|
513
|
+ KEY `idx_fe_contract_order` (`order_id`, `sign_status`)
|
|
551
|
514
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='电子劳动合同表,合规流程「合同签署」节点核心数据。一人一登记一条合同;MVP 阶段 sign_provider 可用 mock,对接电子签平台后替换。关联 fe_employment_order、fe_worker_registration、fe_worker。';
|
|
552
|
515
|
|
|
553
|
516
|
DROP TABLE IF EXISTS `fe_settlement_order`;
|
|
554
|
517
|
CREATE TABLE `fe_settlement_order` (
|
|
555
|
518
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。结算引擎生成结算单时创建。非空。',
|
|
556
|
519
|
`settlement_no` VARCHAR(32) NOT NULL COMMENT '结算单业务编号。示例:STL20260707001。非空;唯一索引 uk_fe_settlement_no。',
|
|
557
|
|
- `order_id` BIGINT NOT NULL COMMENT '关联用工订单,外键 REFERENCES fe_employment_order(id)。非空。',
|
|
|
520
|
+ `order_id` BIGINT NOT NULL COMMENT '关联用工订单,外键。非空。',
|
|
558
|
521
|
`batch_id` BIGINT COMMENT '关联登记批次 fe_registration_batch.id(逻辑关联,无数据库外键)。可空;多批次订单可只关联主批次。',
|
|
559
|
|
- `enterprise_id` BIGINT NOT NULL COMMENT '所属企业,外键 REFERENCES fe_enterprise(id)。非空;索引 idx_fe_settlement_ent。',
|
|
|
522
|
+ `enterprise_id` BIGINT NOT NULL COMMENT '所属企业,外键。非空;索引 idx_fe_settlement_ent。',
|
|
560
|
523
|
`worker_count` int NOT NULL COMMENT '本次结算涵盖人数。非空。',
|
|
561
|
524
|
`gross_amount` decimal(14,2) NOT NULL DEFAULT 0 COMMENT '应发总额(元),税前劳务合计。非空,默认 0。',
|
|
562
|
525
|
`deduction_amount` decimal(14,2) NOT NULL DEFAULT 0 COMMENT '扣款及个税合计(元)。非空,默认 0。',
|
|
|
@@ -568,7 +531,7 @@ CREATE TABLE `fe_settlement_order` (
|
|
568
|
531
|
`compliance_tags` json COMMENT '五流合一合规校验结果标签 JSON。示例:["个税已申报","发票合规"]。可空,默认 []。',
|
|
569
|
532
|
`compliance_remark` TEXT COMMENT '合规说明文案。示例:可全额税前扣除。可空。',
|
|
570
|
533
|
`confirmed_at` datetime COMMENT '企业主确认结算单时间。可空。',
|
|
571
|
|
- `confirmed_by` BIGINT COMMENT '确认人,外键 REFERENCES fe_user(id)。可空。',
|
|
|
534
|
+ `confirmed_by` BIGINT COMMENT '确认人,外键。可空。',
|
|
572
|
535
|
`paid_at` datetime COMMENT '支付完成时间,全部打款成功后写入。可空。',
|
|
573
|
536
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '结算单生成时间。非空。',
|
|
574
|
537
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '状态或金额变更时更新。非空。',
|
|
|
@@ -576,18 +539,15 @@ CREATE TABLE `fe_settlement_order` (
|
|
576
|
539
|
PRIMARY KEY (`id`),
|
|
577
|
540
|
UNIQUE KEY `uk_fe_settlement_no` (`settlement_no`),
|
|
578
|
541
|
KEY `idx_fe_settlement_ent` (`enterprise_id`, `settlement_status`),
|
|
579
|
|
- KEY `idx_fe_settlement_batch` (`batch_id`),
|
|
580
|
|
- CONSTRAINT `fk_fe_settlement_order_order_id` FOREIGN KEY (`order_id`) REFERENCES `fe_employment_order` (`id`),
|
|
581
|
|
- CONSTRAINT `fk_fe_settlement_order_enterprise_id` FOREIGN KEY (`enterprise_id`) REFERENCES `fe_enterprise` (`id`),
|
|
582
|
|
- CONSTRAINT `fk_fe_settlement_order_confirmed_by` FOREIGN KEY (`confirmed_by`) REFERENCES `fe_user` (`id`)
|
|
|
542
|
+ KEY `idx_fe_settlement_batch` (`batch_id`)
|
|
583
|
543
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='结算确认单主表,用工结束后按考勤或约定生成,展示应发/扣款/实发、服务费、开票额与企业总支出。企业确认后进入支付环节;一对多关联 fe_settlement_item、fe_settlement_fee、fe_payment_record。batch_id 暂无数据库外键。';
|
|
584
|
544
|
|
|
585
|
545
|
DROP TABLE IF EXISTS `fe_settlement_item`;
|
|
586
|
546
|
CREATE TABLE `fe_settlement_item` (
|
|
587
|
547
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。生成结算单时按登记记录逐人插入。非空。',
|
|
588
|
|
- `settlement_id` BIGINT NOT NULL COMMENT '关联结算单,外键 REFERENCES fe_settlement_order(id)。非空;索引 idx_fe_settlement_item。',
|
|
589
|
|
- `registration_id` BIGINT COMMENT '关联登记记录,外键 REFERENCES fe_worker_registration(id)。可空;建议必填以追溯人员。',
|
|
590
|
|
- `worker_id` BIGINT COMMENT '关联临时工档案,外键 REFERENCES fe_worker(id)。可空。',
|
|
|
548
|
+ `settlement_id` BIGINT NOT NULL COMMENT '关联结算单,外键。非空;索引 idx_fe_settlement_item。',
|
|
|
549
|
+ `registration_id` BIGINT COMMENT '关联登记记录,外键。可空;建议必填以追溯人员。',
|
|
|
550
|
+ `worker_id` BIGINT COMMENT '关联临时工档案,外键。可空。',
|
|
591
|
551
|
`worker_name_mask` VARCHAR(64) COMMENT '姓名脱敏展示,如张*三。可空;禁止存明文全名。',
|
|
592
|
552
|
`work_days` decimal(8,2) COMMENT '结算工作天数,NUMERIC(8,2)。可空。',
|
|
593
|
553
|
`work_hours` decimal(8,2) COMMENT '结算工作小时数。可空。',
|
|
|
@@ -600,37 +560,33 @@ CREATE TABLE `fe_settlement_item` (
|
|
600
|
560
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '明细创建时间。非空。',
|
|
601
|
561
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '明细金额调整时更新。非空。',
|
|
602
|
562
|
PRIMARY KEY (`id`),
|
|
603
|
|
- KEY `idx_fe_settlement_item` (`settlement_id`),
|
|
604
|
|
- CONSTRAINT `fk_fe_settlement_item_settlement_id` FOREIGN KEY (`settlement_id`) REFERENCES `fe_settlement_order` (`id`),
|
|
605
|
|
- CONSTRAINT `fk_fe_settlement_item_registration_id` FOREIGN KEY (`registration_id`) REFERENCES `fe_worker_registration` (`id`),
|
|
606
|
|
- CONSTRAINT `fk_fe_settlement_item_worker_id` FOREIGN KEY (`worker_id`) REFERENCES `fe_worker` (`id`)
|
|
|
563
|
+ KEY `idx_fe_settlement_item` (`settlement_id`)
|
|
607
|
564
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='结算单人明细表,按临时工拆分应发、个税、其他扣款与实发金额。支持按天、按小时、计件多种计量维度;关联 fe_settlement_order、fe_worker_registration、fe_worker。';
|
|
608
|
565
|
|
|
609
|
566
|
DROP TABLE IF EXISTS `fe_settlement_fee`;
|
|
610
|
567
|
CREATE TABLE `fe_settlement_fee` (
|
|
611
|
568
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。结算单生成时同步写入各费用分项。非空。',
|
|
612
|
|
- `settlement_id` BIGINT NOT NULL COMMENT '关联结算单,外键 REFERENCES fe_settlement_order(id)。非空;索引 idx_fe_settlement_fee。',
|
|
|
569
|
+ `settlement_id` BIGINT NOT NULL COMMENT '关联结算单,外键。非空;索引 idx_fe_settlement_fee。',
|
|
613
|
570
|
`fee_code` VARCHAR(50) NOT NULL COMMENT '费用项编码。示例:labor_fee、service_fee、insurance、tax_withhold。非空。',
|
|
614
|
571
|
`fee_name` VARCHAR(100) NOT NULL COMMENT '费用项中文名。非空。',
|
|
615
|
572
|
`amount` decimal(14,2) NOT NULL COMMENT '费用金额(元),NUMERIC(14,2)。非空。',
|
|
616
|
573
|
`rate` decimal(8,4) COMMENT '适用费率,NUMERIC(8,4)。可空。',
|
|
617
|
574
|
`sort_order` int NOT NULL DEFAULT 0 COMMENT '资金总览展示顺序。非空,默认 0。',
|
|
618
|
575
|
PRIMARY KEY (`id`),
|
|
619
|
|
- KEY `idx_fe_settlement_fee` (`settlement_id`),
|
|
620
|
|
- CONSTRAINT `fk_fe_settlement_fee_settlement_id` FOREIGN KEY (`settlement_id`) REFERENCES `fe_settlement_order` (`id`)
|
|
|
576
|
+ KEY `idx_fe_settlement_fee` (`settlement_id`)
|
|
621
|
577
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='结算单费用汇总项表,订单级劳务费、服务费、保险、税费等分项金额,对应小程序「资金总览」模块。归属 fe_settlement_order,结构与 fe_draft_cost_detail 类似但为实际结算数据。';
|
|
622
|
578
|
|
|
623
|
579
|
DROP TABLE IF EXISTS `fe_payment_record`;
|
|
624
|
580
|
CREATE TABLE `fe_payment_record` (
|
|
625
|
581
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。发起支付时创建。非空。',
|
|
626
|
582
|
`payment_no` VARCHAR(32) NOT NULL COMMENT '支付单业务编号。示例:PAY20260707001。非空;唯一索引 uk_fe_payment_no。',
|
|
627
|
|
- `settlement_id` BIGINT NOT NULL COMMENT '关联结算单,外键 REFERENCES fe_settlement_order(id)。非空;索引 idx_fe_payment_settlement。',
|
|
628
|
|
- `enterprise_id` BIGINT NOT NULL COMMENT '付款企业,外键 REFERENCES fe_enterprise(id)。非空。',
|
|
|
583
|
+ `settlement_id` BIGINT NOT NULL COMMENT '关联结算单,外键。非空;索引 idx_fe_payment_settlement。',
|
|
|
584
|
+ `enterprise_id` BIGINT NOT NULL COMMENT '付款企业,外键。非空。',
|
|
629
|
585
|
`payment_channel` VARCHAR(50) NOT NULL COMMENT '支付渠道类型,前端仅展示此字段。枚举:wechat=微信支付;alipay=支付宝;bank=银行转账。非空。',
|
|
630
|
586
|
`payment_amount` decimal(14,2) NOT NULL COMMENT '支付金额(元)。非空。',
|
|
631
|
587
|
`payment_status` VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '支付状态。枚举:pending=处理中;success=成功;failed=失败;refunded=已退款。非空,默认 pending。',
|
|
632
|
588
|
`external_trade_no` VARCHAR(100) COMMENT '微信/支付宝/银行等第三方交易流水号。支付回调成功时写入。可空。',
|
|
633
|
|
- `payer_user_id` BIGINT COMMENT '发起付款的企业主用户,外键 REFERENCES fe_user(id)。可空。',
|
|
|
589
|
+ `payer_user_id` BIGINT COMMENT '发起付款的企业主用户,外键。可空。',
|
|
634
|
590
|
`paid_at` datetime COMMENT '支付成功时间戳。可空。',
|
|
635
|
591
|
`receipt_url` VARCHAR(512) COMMENT '支付凭证或回单下载地址。可空。',
|
|
636
|
592
|
`fail_reason` TEXT COMMENT '支付失败原因。可空。',
|
|
|
@@ -638,17 +594,14 @@ CREATE TABLE `fe_payment_record` (
|
|
638
|
594
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '状态变更时更新。非空。',
|
|
639
|
595
|
PRIMARY KEY (`id`),
|
|
640
|
596
|
UNIQUE KEY `uk_fe_payment_no` (`payment_no`),
|
|
641
|
|
- KEY `idx_fe_payment_settlement` (`settlement_id`),
|
|
642
|
|
- CONSTRAINT `fk_fe_payment_record_settlement_id` FOREIGN KEY (`settlement_id`) REFERENCES `fe_settlement_order` (`id`),
|
|
643
|
|
- CONSTRAINT `fk_fe_payment_record_enterprise_id` FOREIGN KEY (`enterprise_id`) REFERENCES `fe_enterprise` (`id`),
|
|
644
|
|
- CONSTRAINT `fk_fe_payment_record_payer_user_id` FOREIGN KEY (`payer_user_id`) REFERENCES `fe_user` (`id`)
|
|
|
597
|
+ KEY `idx_fe_payment_settlement` (`settlement_id`)
|
|
645
|
598
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付/打款记录表,企业确认结算后发起付款,记录渠道、金额、第三方交易流水与凭证。小程序仅展示 payment_channel 渠道类型,不展示对公账户;关联 fe_settlement_order、fe_enterprise。';
|
|
646
|
599
|
|
|
647
|
600
|
DROP TABLE IF EXISTS `fe_attendance_batch`;
|
|
648
|
601
|
CREATE TABLE `fe_attendance_batch` (
|
|
649
|
602
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。每日定时任务或企业主手动生成日报时创建。非空。',
|
|
650
|
603
|
`batch_id` BIGINT NOT NULL COMMENT '关联登记批次 fe_registration_batch.id(逻辑关联,无数据库外键)。非空;与 attendance_date 组成唯一索引 uk_fe_attendance_batch。',
|
|
651
|
|
- `order_id` BIGINT NOT NULL COMMENT '关联订单,外键 REFERENCES fe_employment_order(id)。冗余便于订单维度查考勤。非空。',
|
|
|
604
|
+ `order_id` BIGINT NOT NULL COMMENT '关联订单,外键。冗余便于订单维度查考勤。非空。',
|
|
652
|
605
|
`attendance_date` DATE NOT NULL COMMENT '考勤统计日期,DATE 类型。示例:2026-08-15。非空。',
|
|
653
|
606
|
`total_workers` int NOT NULL DEFAULT 0 COMMENT '当日应考勤人数。非空,默认 0。',
|
|
654
|
607
|
`normal_count` int NOT NULL DEFAULT 0 COMMENT '正常出勤人数。非空,默认 0。',
|
|
|
@@ -658,22 +611,20 @@ CREATE TABLE `fe_attendance_batch` (
|
|
658
|
611
|
`total_pieces` decimal(12,2) DEFAULT 0 COMMENT '当日总计件数。可空,默认 0。',
|
|
659
|
612
|
`estimated_cost` decimal(14,2) DEFAULT 0 COMMENT '当日预估劳务费用(元)。可空,默认 0。',
|
|
660
|
613
|
`status` VARCHAR(20) NOT NULL DEFAULT 'draft' COMMENT '日报状态。枚举:draft=草稿可编辑;confirmed=已确认锁定;archived=已归档。非空,默认 draft。',
|
|
661
|
|
- `confirmed_by` BIGINT COMMENT '确认人,外键 REFERENCES fe_user(id)。企业主确认日报时写入。可空。',
|
|
|
614
|
+ `confirmed_by` BIGINT COMMENT '确认人,外键。企业主确认日报时写入。可空。',
|
|
662
|
615
|
`confirmed_at` datetime COMMENT '日报确认时间。可空。',
|
|
663
|
616
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '日报创建时间。非空。',
|
|
664
|
617
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '考勤数据变更时更新。非空。',
|
|
665
|
618
|
PRIMARY KEY (`id`),
|
|
666
|
|
- UNIQUE KEY `uk_fe_attendance_batch` (`batch_id`, `attendance_date`),
|
|
667
|
|
- CONSTRAINT `fk_fe_attendance_batch_order_id` FOREIGN KEY (`order_id`) REFERENCES `fe_employment_order` (`id`),
|
|
668
|
|
- CONSTRAINT `fk_fe_attendance_batch_confirmed_by` FOREIGN KEY (`confirmed_by`) REFERENCES `fe_user` (`id`)
|
|
|
619
|
+ UNIQUE KEY `uk_fe_attendance_batch` (`batch_id`, `attendance_date`)
|
|
669
|
620
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤日报批次表(二期功能),按登记批次与日期汇总当日应考勤人数、出勤/加班/请假统计及预估费用。一期 MVP 可不实现业务逻辑,表结构先行预留;batch_id 暂无数据库外键。';
|
|
670
|
621
|
|
|
671
|
622
|
DROP TABLE IF EXISTS `fe_attendance_record`;
|
|
672
|
623
|
CREATE TABLE `fe_attendance_record` (
|
|
673
|
624
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。录入或导入单人考勤时插入。非空。',
|
|
674
|
|
- `attendance_batch_id` BIGINT NOT NULL COMMENT '关联考勤日报,外键 REFERENCES fe_attendance_batch(id)。非空;索引 idx_fe_attendance_rec。',
|
|
675
|
|
- `registration_id` BIGINT NOT NULL COMMENT '关联登记记录,外键 REFERENCES fe_worker_registration(id)。非空;确定考勤对象。',
|
|
676
|
|
- `worker_id` BIGINT COMMENT '关联临时工档案,外键 REFERENCES fe_worker(id)。可空;冗余加速查询。',
|
|
|
625
|
+ `attendance_batch_id` BIGINT NOT NULL COMMENT '关联考勤日报,外键。非空;索引 idx_fe_attendance_rec。',
|
|
|
626
|
+ `registration_id` BIGINT NOT NULL COMMENT '关联登记记录,外键。非空;确定考勤对象。',
|
|
|
627
|
+ `worker_id` BIGINT COMMENT '关联临时工档案,外键。可空;冗余加速查询。',
|
|
677
|
628
|
`attendance_type` VARCHAR(20) NOT NULL DEFAULT 'normal' COMMENT '考勤类型。枚举:normal=正常出勤;overtime=加班;leave=请假;piece=计件产量。非空,默认 normal。',
|
|
678
|
629
|
`work_hours` decimal(8,2) COMMENT '正常工作小时数,NUMERIC(8,2)。可空。',
|
|
679
|
630
|
`overtime_hours` decimal(8,2) COMMENT '加班小时数。可空。',
|
|
|
@@ -683,32 +634,26 @@ CREATE TABLE `fe_attendance_record` (
|
|
683
|
634
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间。非空。',
|
|
684
|
635
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '考勤数据修改时更新。非空。',
|
|
685
|
636
|
PRIMARY KEY (`id`),
|
|
686
|
|
- KEY `idx_fe_attendance_rec` (`attendance_batch_id`),
|
|
687
|
|
- CONSTRAINT `fk_fe_attendance_record_attendance_batch_id` FOREIGN KEY (`attendance_batch_id`) REFERENCES `fe_attendance_batch` (`id`),
|
|
688
|
|
- CONSTRAINT `fk_fe_attendance_record_registration_id` FOREIGN KEY (`registration_id`) REFERENCES `fe_worker_registration` (`id`),
|
|
689
|
|
- CONSTRAINT `fk_fe_attendance_record_worker_id` FOREIGN KEY (`worker_id`) REFERENCES `fe_worker` (`id`)
|
|
|
637
|
+ KEY `idx_fe_attendance_rec` (`attendance_batch_id`)
|
|
690
|
638
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤明细表(二期),记录单人单日考勤类型(正常/加班/请假/计件)、工时与计件数。支持 manual/voice/import 多种录入来源;关联 fe_attendance_batch、fe_worker_registration、fe_worker。';
|
|
691
|
639
|
|
|
692
|
640
|
DROP TABLE IF EXISTS `fe_user_confirmation`;
|
|
693
|
641
|
CREATE TABLE `fe_user_confirmation` (
|
|
694
|
642
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。用户执行确认类操作时同步插入,不可篡改。非空。',
|
|
695
|
|
- `enterprise_id` BIGINT NOT NULL COMMENT '所属企业,外键 REFERENCES fe_enterprise(id)。非空;索引 idx_fe_user_confirm。',
|
|
696
|
|
- `user_id` BIGINT NOT NULL COMMENT '操作用户,外键 REFERENCES fe_user(id)。非空;须为 enterprise 类型企业主或管理员。',
|
|
|
643
|
+ `enterprise_id` BIGINT NOT NULL COMMENT '所属企业,外键。非空;索引 idx_fe_user_confirm。',
|
|
|
644
|
+ `user_id` BIGINT NOT NULL COMMENT '操作用户,外键。非空;须为 enterprise 类型企业主或管理员。',
|
|
697
|
645
|
`biz_type` VARCHAR(50) NOT NULL COMMENT '业务场景类型。枚举:draft_confirm=确认用工草稿;plan_select=选定用工方案;settlement_pay=确认并支付结算;external_submit=授权提交第三方平台。非空。',
|
|
698
|
646
|
`biz_id` BIGINT NOT NULL COMMENT '关联业务主键 ID,如 draft_id、settlement_id。非空;与 biz_type 组合解析。',
|
|
699
|
647
|
`biz_no` VARCHAR(32) COMMENT '关联业务编号冗余,便于人工审计。示例:draft_001。可空。',
|
|
700
|
648
|
`action` VARCHAR(50) NOT NULL COMMENT '用户动作类型。枚举:confirm=确认;modify=修改后确认;authorize=授权。非空。',
|
|
701
|
649
|
`confirmed_fields` json COMMENT '用户确认时的关键字段快照 JSON,固化确认瞬间数据。示例:{"worker_count":15,"daily_wage":280}。可空,默认 {}。',
|
|
702
|
|
- `selected_plan_id` BIGINT COMMENT '确认选用的方案,外键 REFERENCES fe_service_plan(id)。biz_type=plan_select 或 draft_confirm 时写入。可空。',
|
|
|
650
|
+ `selected_plan_id` BIGINT COMMENT '确认选用的方案,外键。biz_type=plan_select 或 draft_confirm 时写入。可空。',
|
|
703
|
651
|
`client_ip` VARCHAR(64) COMMENT '客户端 IP,合规取证。网关提取。可空。',
|
|
704
|
652
|
`user_agent` VARCHAR(500) COMMENT '客户端 UA 字符串。可空。',
|
|
705
|
653
|
`remark` TEXT COMMENT '用户填写的备注或系统附注。可空。',
|
|
706
|
654
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '确认操作发生时间。非空。',
|
|
707
|
655
|
PRIMARY KEY (`id`),
|
|
708
|
|
- KEY `idx_fe_user_confirm` (`enterprise_id`, `biz_type`, `create_time`),
|
|
709
|
|
- CONSTRAINT `fk_fe_user_confirmation_enterprise_id` FOREIGN KEY (`enterprise_id`) REFERENCES `fe_enterprise` (`id`),
|
|
710
|
|
- CONSTRAINT `fk_fe_user_confirmation_user_id` FOREIGN KEY (`user_id`) REFERENCES `fe_user` (`id`),
|
|
711
|
|
- CONSTRAINT `fk_fe_user_confirmation_selected_plan_id` FOREIGN KEY (`selected_plan_id`) REFERENCES `fe_service_plan` (`id`)
|
|
|
656
|
+ KEY `idx_fe_user_confirm` (`enterprise_id`, `biz_type`, `create_time`)
|
|
712
|
657
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户确认与授权留痕表,草稿确认、方案选择、结算支付、外部平台提交等高风险操作必须写入,满足审计与合规举证。关联 fe_enterprise、fe_user,可引用 fe_service_plan。';
|
|
713
|
658
|
|
|
714
|
659
|
DROP TABLE IF EXISTS `fe_field_change_log`;
|
|
|
@@ -720,11 +665,10 @@ CREATE TABLE `fe_field_change_log` (
|
|
720
|
665
|
`old_value` TEXT COMMENT '变更前的文本值。可空;首次填入时 old_value 为空。',
|
|
721
|
666
|
`new_value` TEXT COMMENT '变更后的文本值。可空。',
|
|
722
|
667
|
`change_source` VARCHAR(30) NOT NULL COMMENT '变更来源。枚举:user_edit=用户表单编辑;nl_edit=自然语言对话修改;ai_regenerate=AI 重新生成草稿;system=系统自动(如状态联动)。非空。',
|
|
723
|
|
- `operator_id` BIGINT COMMENT '操作人,外键 REFERENCES fe_user(id)。系统自动变更时可为空。可空。',
|
|
|
668
|
+ `operator_id` BIGINT COMMENT '操作人,外键。系统自动变更时可为空。可空。',
|
|
724
|
669
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '变更发生时间。非空。',
|
|
725
|
670
|
PRIMARY KEY (`id`),
|
|
726
|
|
- KEY `idx_fe_field_change` (`biz_type`, `biz_id`, `create_time`),
|
|
727
|
|
- CONSTRAINT `fk_fe_field_change_log_operator_id` FOREIGN KEY (`operator_id`) REFERENCES `fe_user` (`id`)
|
|
|
671
|
+ KEY `idx_fe_field_change` (`biz_type`, `biz_id`, `create_time`)
|
|
728
|
672
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='关键字段变更历史表,记录草稿、订单、登记等业务对象重要字段的修改前后值,区分用户手工编辑、自然语言修改、AI 重新生成与系统自动变更,支撑争议追溯。';
|
|
729
|
673
|
|
|
730
|
674
|
DROP TABLE IF EXISTS `fe_provider`;
|
|
|
@@ -744,9 +688,9 @@ CREATE TABLE `fe_provider` (
|
|
744
|
688
|
DROP TABLE IF EXISTS `fe_provider_api_log`;
|
|
745
|
689
|
CREATE TABLE `fe_provider_api_log` (
|
|
746
|
690
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。每次调用第三方 API 时追加。非空。',
|
|
747
|
|
- `provider_id` BIGINT NOT NULL COMMENT '合作平台,外键 REFERENCES fe_provider(id)。非空;索引 idx_fe_provider_log。',
|
|
748
|
|
- `enterprise_id` BIGINT COMMENT '关联企业,外键 REFERENCES fe_enterprise(id)。调用上下文企业。可空。',
|
|
749
|
|
- `order_id` BIGINT COMMENT '关联订单,外键 REFERENCES fe_employment_order(id)。可空;索引 idx_fe_provider_log_order。',
|
|
|
691
|
+ `provider_id` BIGINT NOT NULL COMMENT '合作平台,外键。非空;索引 idx_fe_provider_log。',
|
|
|
692
|
+ `enterprise_id` BIGINT COMMENT '关联企业,外键。调用上下文企业。可空。',
|
|
|
693
|
+ `order_id` BIGINT COMMENT '关联订单,外键。可空;索引 idx_fe_provider_log_order。',
|
|
750
|
694
|
`action` VARCHAR(100) NOT NULL COMMENT 'API 动作编码。示例:create_requirement=创建用工需求;query_status=查询办理状态;callback=异步回调。非空。',
|
|
751
|
695
|
`request_payload` json COMMENT '请求体 JSON 快照。可空;可能含敏感业务数据,访问受控。',
|
|
752
|
696
|
`response_payload` json COMMENT '响应体 JSON 快照。可空。',
|
|
|
@@ -758,17 +702,14 @@ CREATE TABLE `fe_provider_api_log` (
|
|
758
|
702
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '调用时间。非空。',
|
|
759
|
703
|
PRIMARY KEY (`id`),
|
|
760
|
704
|
KEY `idx_fe_provider_log` (`provider_id`, `create_time`),
|
|
761
|
|
- KEY `idx_fe_provider_log_order` (`order_id`),
|
|
762
|
|
- CONSTRAINT `fk_fe_provider_api_log_provider_id` FOREIGN KEY (`provider_id`) REFERENCES `fe_provider` (`id`),
|
|
763
|
|
- CONSTRAINT `fk_fe_provider_api_log_enterprise_id` FOREIGN KEY (`enterprise_id`) REFERENCES `fe_enterprise` (`id`),
|
|
764
|
|
- CONSTRAINT `fk_fe_provider_api_log_order_id` FOREIGN KEY (`order_id`) REFERENCES `fe_employment_order` (`id`)
|
|
|
705
|
+ KEY `idx_fe_provider_log_order` (`order_id`)
|
|
765
|
706
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='合作平台 API 调用日志表,保存原始 HTTP 请求响应、技术状态码与转换后的业务状态 biz_status。技术细节不对用户展示;audit_required 标识是否需用户确认后才能继续推进订单流程。';
|
|
766
|
707
|
|
|
767
|
708
|
DROP TABLE IF EXISTS `fe_notification`;
|
|
768
|
709
|
CREATE TABLE `fe_notification` (
|
|
769
|
710
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '表主键,自增。业务事件触发时由通知服务写入。非空。',
|
|
770
|
|
- `enterprise_id` BIGINT COMMENT '所属企业,外键 REFERENCES fe_enterprise(id)。企业维度消息筛选。可空;索引 idx_fe_notification_ent。',
|
|
771
|
|
- `user_id` BIGINT COMMENT '接收用户,外键 REFERENCES fe_user(id)。可空;索引 idx_fe_notification_user;与 enterprise_id 至少其一有值。',
|
|
|
711
|
+ `enterprise_id` BIGINT COMMENT '所属企业,外键。企业维度消息筛选。可空;索引 idx_fe_notification_ent。',
|
|
|
712
|
+ `user_id` BIGINT COMMENT '接收用户,外键。可空;索引 idx_fe_notification_user;与 enterprise_id 至少其一有值。',
|
|
772
|
713
|
`notify_type` VARCHAR(30) NOT NULL COMMENT '通知展示样式。枚举:pending=待办(橙色);error=异常(红色);info=提示(蓝色);success=成功(绿色)。非空。',
|
|
773
|
714
|
`category` VARCHAR(50) NOT NULL COMMENT '业务分类。枚举:settlement=结算;registration=登记;verify=实名核验;workflow=流程进度。非空。',
|
|
774
|
715
|
`title` VARCHAR(200) NOT NULL COMMENT '通知标题,列表主文案。非空。',
|
|
|
@@ -784,9 +725,7 @@ CREATE TABLE `fe_notification` (
|
|
784
|
725
|
`handled_time` datetime COMMENT '待办完成时间。可空。',
|
|
785
|
726
|
PRIMARY KEY (`id`),
|
|
786
|
727
|
KEY `idx_fe_notification_user` (`user_id`, `read_flag`, `create_time`),
|
|
787
|
|
- KEY `idx_fe_notification_ent` (`enterprise_id`, `handled_flag`, `create_time`),
|
|
788
|
|
- CONSTRAINT `fk_fe_notification_enterprise_id` FOREIGN KEY (`enterprise_id`) REFERENCES `fe_enterprise` (`id`),
|
|
789
|
|
- CONSTRAINT `fk_fe_notification_user_id` FOREIGN KEY (`user_id`) REFERENCES `fe_user` (`id`)
|
|
|
728
|
+ KEY `idx_fe_notification_ent` (`enterprise_id`, `handled_flag`, `create_time`)
|
|
790
|
729
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息与待办中心表,推送结算待确认、实名失败、登记进度、流程节点变更等通知。支持 action_url 跳转小程序对应页面/弹窗;关联 fe_enterprise、fe_user,通过 read_flag 与 handled_flag 区分已读与已办。';
|
|
791
|
730
|
-- -----------------------------------------------------------------------------
|
|
792
|
731
|
-- 初始化数据(测试阶段默认值)
|