2026-10-09 06:46:36 -04:00
|
|
|
|
-- ============================================================================
|
|
|
|
|
|
-- 开发环境初始化脚本
|
|
|
|
|
|
--
|
|
|
|
|
|
-- 执行时机:docker-entrypoint-initdb.d —— **仅在 MySQL 数据卷为空时的首次启动执行**
|
|
|
|
|
|
-- 数据卷已存在时修改本文件不会生效,需要:
|
|
|
|
|
|
-- docker compose -f docker/docker-compose.dev.yml down -v && up -d
|
|
|
|
|
|
--
|
2026-10-09 22:44:05 -04:00
|
|
|
|
-- 内容 = db/migration/ 下**全部迁移**的最终结构(额外带 DROP,开发环境允许重置)
|
|
|
|
|
|
-- 必须与 db/migration/V*.sql 的合集保持一致,
|
2026-10-09 06:46:36 -04:00
|
|
|
|
-- 由 backend/tests/integration/test_schema_sync.py 自动校验,防止两份 DDL 漂移
|
|
|
|
|
|
--
|
2026-10-09 22:44:05 -04:00
|
|
|
|
-- 结尾写入 alembic_version 记录(**须等于当前 head**,否则开发库重建后
|
|
|
|
|
|
-- 执行 alembic upgrade head 会重复建表并报 1050 Table already exists)
|
2026-10-09 06:46:36 -04:00
|
|
|
|
-- ============================================================================
|
|
|
|
|
|
|
|
|
|
|
|
SET NAMES utf8mb4;
|
|
|
|
|
|
|
|
|
|
|
|
-- 删除顺序遵循外键依赖:先删子表
|
2026-10-27 23:41:38 -04:00
|
|
|
|
DROP TABLE IF EXISTS `tplus_sync_watermarks`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `tplus_sync_records`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `tplus_sync_errors`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `tplus_sync_batches`;
|
2026-10-16 04:31:25 -04:00
|
|
|
|
DROP TABLE IF EXISTS `performance_ledgers`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `settlement_items`;
|
2026-11-02 22:20:55 -05:00
|
|
|
|
DROP TABLE IF EXISTS `user_permission_overrides`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `authorization_settings`;
|
2026-10-16 04:31:25 -04:00
|
|
|
|
DROP TABLE IF EXISTS `adjustment_orders`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `monthly_settlements`;
|
2026-10-15 05:25:23 -04:00
|
|
|
|
DROP TABLE IF EXISTS `approval_steps`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `approval_orders`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `business_secondary_allocations`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `system_settings`;
|
2026-10-12 04:13:13 -04:00
|
|
|
|
DROP TABLE IF EXISTS `param_values`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `param_change_batches`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `param_definitions`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `business_roles`;
|
2026-10-09 22:44:05 -04:00
|
|
|
|
DROP TABLE IF EXISTS `operation_logs`;
|
2026-10-09 06:46:36 -04:00
|
|
|
|
DROP TABLE IF EXISTS `role_permissions`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `user_roles`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `login_logs`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `permissions`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `users`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `roles`;
|
|
|
|
|
|
DROP TABLE IF EXISTS `alembic_version`;
|
|
|
|
|
|
|
|
|
|
|
|
-- 服务端字符集应为 utf8mb4 / utf8mb4_general_ci(与 compose 的启动参数一致)
|
|
|
|
|
|
SELECT @@character_set_server AS charset, @@collation_server AS collation;
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 权限表
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE permissions (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
perm_code VARCHAR(128) NOT NULL COMMENT '权限编码,如 system:user:create',
|
|
|
|
|
|
perm_name VARCHAR(64) NOT NULL COMMENT '权限名称',
|
|
|
|
|
|
perm_type TINYINT NOT NULL COMMENT '类型:1菜单 2按钮 3接口' DEFAULT '1',
|
|
|
|
|
|
parent_id BIGINT UNSIGNED COMMENT '父权限ID(permissions.id),顶级为空',
|
|
|
|
|
|
sort_order INTEGER NOT NULL COMMENT '显示排序' DEFAULT '0',
|
|
|
|
|
|
status TINYINT NOT NULL COMMENT '状态:1启用 0禁用' DEFAULT '1',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_permissions PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_permissions_parent_id FOREIGN KEY(parent_id) REFERENCES permissions (id) ON DELETE CASCADE,
|
|
|
|
|
|
CONSTRAINT uk_permissions_perm_code UNIQUE (perm_code)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='权限表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 角色表
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE roles (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
role_code VARCHAR(32) NOT NULL COMMENT '角色编码:admin系统管理员 user普通用户',
|
|
|
|
|
|
role_name VARCHAR(64) NOT NULL COMMENT '角色名称',
|
|
|
|
|
|
description VARCHAR(255) COMMENT '角色说明',
|
|
|
|
|
|
sort_order INTEGER NOT NULL COMMENT '显示排序' DEFAULT '0',
|
|
|
|
|
|
status TINYINT NOT NULL COMMENT '状态:1启用 0禁用' DEFAULT '1',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_roles PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_roles_role_code UNIQUE (role_code)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='角色表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 系统用户表
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE users (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
username VARCHAR(64) NOT NULL COMMENT '登录用户名',
|
|
|
|
|
|
password VARCHAR(100) NOT NULL COMMENT '密码哈希(BCrypt,固定60字符)',
|
|
|
|
|
|
real_name VARCHAR(64) COMMENT '真实姓名',
|
|
|
|
|
|
phone VARCHAR(20) COMMENT '手机号',
|
|
|
|
|
|
email VARCHAR(128) COMMENT '邮箱',
|
|
|
|
|
|
status TINYINT NOT NULL COMMENT '状态:1启用 0禁用' DEFAULT '1',
|
|
|
|
|
|
token_version INTEGER NOT NULL COMMENT '令牌版本号:改密/禁用/强制下线时+1,使已签发Token立即失效' DEFAULT '1',
|
|
|
|
|
|
last_login_time DATETIME COMMENT '最后登录时间',
|
|
|
|
|
|
remark VARCHAR(255) COMMENT '备注',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_users PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_users_username UNIQUE (username)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='系统用户表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_users_phone ON users (phone);
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 登录日志表
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE login_logs (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
user_id BIGINT UNSIGNED COMMENT '用户ID(账号不存在时为空)',
|
|
|
|
|
|
username VARCHAR(64) NOT NULL COMMENT '登录用户名(原样记录)',
|
|
|
|
|
|
ip VARCHAR(45) COMMENT '客户端IP(45位兼容IPv6)',
|
|
|
|
|
|
user_agent VARCHAR(255) COMMENT '客户端User-Agent(截断存储)',
|
|
|
|
|
|
success TINYINT NOT NULL COMMENT '是否成功:1成功 0失败' DEFAULT '0',
|
|
|
|
|
|
fail_reason VARCHAR(64) COMMENT '失败原因:验证码错误/用户名或密码错误/账号锁定/账号禁用',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_login_logs PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_login_logs_user_id FOREIGN KEY(user_id) REFERENCES users (id) ON DELETE SET NULL
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='登录日志表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_login_logs_create_time ON login_logs (create_time);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_login_logs_username ON login_logs (username);
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 角色权限关联表
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE role_permissions (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
role_id BIGINT UNSIGNED NOT NULL COMMENT '角色ID(roles.id)',
|
|
|
|
|
|
permission_id BIGINT UNSIGNED NOT NULL COMMENT '权限ID(permissions.id)',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_role_permissions PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_role_permissions_permission_id FOREIGN KEY(permission_id) REFERENCES permissions (id) ON DELETE CASCADE,
|
|
|
|
|
|
CONSTRAINT fk_role_permissions_role_id FOREIGN KEY(role_id) REFERENCES roles (id) ON DELETE CASCADE,
|
|
|
|
|
|
CONSTRAINT uk_role_permissions_role_id_permission_id UNIQUE (role_id, permission_id)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='角色权限关联表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_role_permissions_permission_id ON role_permissions (permission_id);
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 用户角色关联表
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE user_roles (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
user_id BIGINT UNSIGNED NOT NULL COMMENT '用户ID(users.id)',
|
|
|
|
|
|
role_id BIGINT UNSIGNED NOT NULL COMMENT '角色ID(roles.id)',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_user_roles PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_user_roles_role_id FOREIGN KEY(role_id) REFERENCES roles (id) ON DELETE CASCADE,
|
|
|
|
|
|
CONSTRAINT fk_user_roles_user_id FOREIGN KEY(user_id) REFERENCES users (id) ON DELETE CASCADE,
|
|
|
|
|
|
CONSTRAINT uk_user_roles_user_id_role_id UNIQUE (user_id, role_id)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='用户角色关联表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_user_roles_role_id ON user_roles (role_id);
|
|
|
|
|
|
|
2026-10-09 22:44:05 -04:00
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 操作日志表(V2 迁移)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE operation_logs (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
user_id BIGINT UNSIGNED COMMENT '操作人ID(账号删除后置空)',
|
|
|
|
|
|
username VARCHAR(64) NOT NULL COMMENT '操作人用户名(冗余存储便于追溯)',
|
|
|
|
|
|
module VARCHAR(64) NOT NULL COMMENT '所属模块,如 用户管理',
|
|
|
|
|
|
action VARCHAR(32) NOT NULL COMMENT '操作类型:新增/修改/删除/导出',
|
|
|
|
|
|
summary VARCHAR(255) NOT NULL COMMENT '操作摘要(中文,供人阅读)',
|
|
|
|
|
|
method VARCHAR(8) COMMENT 'HTTP 方法',
|
|
|
|
|
|
path VARCHAR(255) COMMENT '请求路径',
|
|
|
|
|
|
ip VARCHAR(45) COMMENT '客户端IP(45位兼容IPv6)',
|
|
|
|
|
|
user_agent VARCHAR(255) COMMENT '客户端User-Agent(截断存储)',
|
|
|
|
|
|
request_data TEXT COMMENT '请求参数(已脱敏)',
|
|
|
|
|
|
success TINYINT NOT NULL COMMENT '是否成功:1成功 0失败' DEFAULT '0',
|
|
|
|
|
|
error_message VARCHAR(500) COMMENT '失败原因(写入方须截断)',
|
|
|
|
|
|
duration_ms INTEGER COMMENT '处理耗时(毫秒)',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_operation_logs PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_operation_logs_user_id FOREIGN KEY(user_id) REFERENCES users (id) ON DELETE SET NULL
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='操作日志表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_operation_logs_create_time ON operation_logs (create_time);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_operation_logs_module ON operation_logs (module);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_operation_logs_user_id ON operation_logs (user_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_operation_logs_username ON operation_logs (username);
|
|
|
|
|
|
|
2026-10-12 04:13:13 -04:00
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 业务岗位角色表(V3 迁移)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE business_roles (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
role_code VARCHAR(32) NOT NULL COMMENT '岗位编码:salesperson营销员 sales_manager营销经理 info_officer信息员,创建后不可修改',
|
|
|
|
|
|
role_name VARCHAR(64) NOT NULL COMMENT '岗位名称',
|
|
|
|
|
|
calc_template VARCHAR(32) NOT NULL COMMENT '计提公式模板编码(以代码内模板注册表为准)',
|
|
|
|
|
|
description VARCHAR(255) COMMENT '岗位说明',
|
|
|
|
|
|
sort_order INTEGER NOT NULL COMMENT '显示排序' DEFAULT '0',
|
|
|
|
|
|
status TINYINT NOT NULL COMMENT '状态:1启用 0禁用' DEFAULT '1',
|
|
|
|
|
|
is_builtin TINYINT NOT NULL COMMENT '是否内置岗位:1内置(禁删禁停) 0自定义' DEFAULT '0',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_business_roles PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_business_roles_role_code UNIQUE (role_code)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='业务岗位角色表(与登录角色roles区分,决定计提公式与参数)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 计提参数定义表(V3 迁移)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE param_definitions (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
param_code VARCHAR(64) NOT NULL COMMENT '参数编码,如 salesperson.rate.slope',
|
|
|
|
|
|
param_name VARCHAR(64) NOT NULL COMMENT '参数名称',
|
|
|
|
|
|
param_group VARCHAR(32) NOT NULL COMMENT '参数分组:业务员个人户/经理分成/企业户/信息员/支付环节/产品阈值/月工资口径',
|
|
|
|
|
|
value_type VARCHAR(16) NOT NULL COMMENT '值类型:DECIMAL/INT/BOOL/ENUM/TEXT',
|
|
|
|
|
|
unit VARCHAR(16) COMMENT '展示单位:‰/%/元/天,无单位为空',
|
|
|
|
|
|
dimension_type VARCHAR(32) NOT NULL COMMENT '维度类型:NONE/PRODUCT_CATEGORY/BUSINESS_ROLE' DEFAULT 'NONE',
|
|
|
|
|
|
options_text VARCHAR(255) COMMENT '枚举选项(竖线分隔),仅 ENUM 使用',
|
|
|
|
|
|
default_value VARCHAR(64) COMMENT '系统默认值(Fraction 可解析字符串)',
|
|
|
|
|
|
value_min VARCHAR(64) COMMENT '取值下限(含),校验用',
|
|
|
|
|
|
value_max VARCHAR(64) COMMENT '取值上限(含),校验用',
|
|
|
|
|
|
description VARCHAR(255) COMMENT '口径说明(配置页展示)',
|
|
|
|
|
|
sort_order INTEGER NOT NULL COMMENT '显示排序' DEFAULT '0',
|
|
|
|
|
|
status TINYINT NOT NULL COMMENT '状态:1启用 0停用' DEFAULT '1',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_param_definitions PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_param_definitions_param_code UNIQUE (param_code)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='计提参数定义表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 参数变更批次表(V3 迁移)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE param_change_batches (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
version_no VARCHAR(32) NOT NULL COMMENT '版本号,如 P20261012-01',
|
|
|
|
|
|
effective_date DATE NOT NULL COMMENT '生效日期(业务日期口径)',
|
|
|
|
|
|
change_type TINYINT NOT NULL COMMENT '生效方式:1立即生效 2指定日期生效',
|
|
|
|
|
|
remark VARCHAR(255) COMMENT '变更说明',
|
|
|
|
|
|
operator_id BIGINT UNSIGNED COMMENT '操作人ID(账号删除后置空)',
|
|
|
|
|
|
operator_name VARCHAR(64) NOT NULL COMMENT '操作人用户名(冗余固化)',
|
|
|
|
|
|
item_count INTEGER NOT NULL COMMENT '变更参数项数' DEFAULT '0',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_param_change_batches PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_param_change_batches_operator_id FOREIGN KEY(operator_id) REFERENCES users (id) ON DELETE SET NULL,
|
|
|
|
|
|
CONSTRAINT uk_param_change_batches_version_no UNIQUE (version_no)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='参数变更批次表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 参数版本条目表(V3 迁移,append-only)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE param_values (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
param_id BIGINT UNSIGNED NOT NULL COMMENT '参数定义ID(param_definitions.id)',
|
|
|
|
|
|
dimension_value VARCHAR(32) NOT NULL COMMENT '维度取值:NONE维度为空串;产品类别/岗位编码为具体值' DEFAULT '',
|
|
|
|
|
|
effective_date DATE NOT NULL COMMENT '生效日期(按业务日期时点化取值)',
|
|
|
|
|
|
value_text VARCHAR(64) NOT NULL COMMENT '参数值(Fraction 可解析字符串/枚举码/开关)',
|
|
|
|
|
|
old_value_text VARCHAR(64) COMMENT '变更前值(留痕)',
|
|
|
|
|
|
batch_id BIGINT UNSIGNED NOT NULL COMMENT '变更批次ID(param_change_batches.id)',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_param_values PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_param_values_batch_id FOREIGN KEY(batch_id) REFERENCES param_change_batches (id) ON DELETE RESTRICT,
|
|
|
|
|
|
CONSTRAINT fk_param_values_param_id FOREIGN KEY(param_id) REFERENCES param_definitions (id) ON DELETE RESTRICT
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='参数版本条目表(append-only,按生效日期时点化取值)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_param_values_batch_id ON param_values (batch_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_param_values_effective_date ON param_values (effective_date);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_param_values_param_id_dimension_value_effective_date ON param_values (param_id, dimension_value, effective_date);
|
|
|
|
|
|
|
2026-10-12 21:49:05 -04:00
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 营销人员表(V4 迁移;T+ 同步不覆盖岗位与工资标准)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE personnel (
|
2026-11-02 22:20:55 -05:00
|
|
|
|
salary_history_json JSON COMMENT '工资标准、岗位及任职资料生效版本',
|
|
|
|
|
|
resignation_date DATE COMMENT '离职生效日(当日起不计基本工资)',
|
|
|
|
|
|
regularization_date DATE COMMENT '转正生效日(当日不再属于试用期)',
|
|
|
|
|
|
probation_start_date DATE COMMENT '试用期开始日(含当日)',
|
2026-10-12 21:49:05 -04:00
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
personnel_name VARCHAR(64) NOT NULL COMMENT '姓名',
|
|
|
|
|
|
business_role_id BIGINT UNSIGNED NOT NULL COMMENT '岗位角色ID(决定计提公式模板;T+同步不覆盖)',
|
|
|
|
|
|
manager_id BIGINT UNSIGNED COMMENT '直属营销经理ID(NULL=经理本人或未分配;团队成员关系锚点)',
|
|
|
|
|
|
phone VARCHAR(20) COMMENT '联系电话',
|
|
|
|
|
|
hire_date DATE COMMENT '入职日期',
|
|
|
|
|
|
is_probation TINYINT NOT NULL COMMENT '是否试用期:1是 0否(试用期绩效照算不发放)' DEFAULT '0',
|
|
|
|
|
|
salary_standard DECIMAL(12, 2) COMMENT '月工资标准(元;T+同步不覆盖)',
|
|
|
|
|
|
status TINYINT NOT NULL COMMENT '状态:1在职 0离职(离职人员不可再被业务/客户归属引用)' DEFAULT '1',
|
|
|
|
|
|
remark VARCHAR(255) COMMENT '备注',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
source_no VARCHAR(64) COMMENT 'T+ 原始单据号(同步幂等去重锚点;唯一键待 IT 定键后升级)',
|
|
|
|
|
|
t_plus_id VARCHAR(64) COMMENT 'T+ 系统内部标识',
|
|
|
|
|
|
sync_batch_no VARCHAR(32) COMMENT '同步批次号(同步模块写入)',
|
|
|
|
|
|
synced_at DATETIME COMMENT '最近同步时间',
|
2026-10-27 23:41:38 -04:00
|
|
|
|
source_updated_at DATETIME COMMENT 'T+ 源数据更新时间(未确认时可为空)',
|
2026-10-12 21:49:05 -04:00
|
|
|
|
CONSTRAINT pk_personnel PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_personnel_business_role_id FOREIGN KEY(business_role_id) REFERENCES business_roles (id) ON DELETE RESTRICT,
|
|
|
|
|
|
CONSTRAINT fk_personnel_manager_id FOREIGN KEY(manager_id) REFERENCES personnel (id) ON DELETE RESTRICT
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='营销人员表(T+同步不覆盖岗位与工资标准)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_personnel_business_role_id ON personnel (business_role_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_personnel_manager_id ON personnel (manager_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_personnel_source_no ON personnel (source_no);
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 产品辐射区域表(V4 迁移)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE personnel_regions (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
personnel_id BIGINT UNSIGNED NOT NULL COMMENT '人员ID(personnel.id)',
|
|
|
|
|
|
region_name VARCHAR(128) NOT NULL COMMENT '区域名称(产品辐射地理范围)',
|
|
|
|
|
|
remark VARCHAR(255) COMMENT '备注',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_personnel_regions PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_personnel_regions_personnel_id FOREIGN KEY(personnel_id) REFERENCES personnel (id) ON DELETE RESTRICT
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='产品辐射区域表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_personnel_regions_personnel_id ON personnel_regions (personnel_id);
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 市场拓展计划表(V4 迁移)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE personnel_plans (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
personnel_id BIGINT UNSIGNED NOT NULL COMMENT '人员ID(personnel.id)',
|
|
|
|
|
|
plan_period VARCHAR(32) NOT NULL COMMENT '计划期间(如 2026Q1、2026-05)',
|
|
|
|
|
|
plan_content VARCHAR(500) NOT NULL COMMENT '计划内容',
|
|
|
|
|
|
target_desc VARCHAR(255) COMMENT '指标说明(文字描述)',
|
|
|
|
|
|
source_no VARCHAR(64) COMMENT 'T+ 原始条目号(预留)',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_personnel_plans PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_personnel_plans_personnel_id FOREIGN KEY(personnel_id) REFERENCES personnel (id) ON DELETE RESTRICT
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='市场拓展计划表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_personnel_plans_personnel_id ON personnel_plans (personnel_id);
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 产品表(V4 迁移;类别锚定折算阈值参数,T+ 同步不覆盖产品类别)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE products (
|
2026-11-02 22:20:55 -05:00
|
|
|
|
quantity_price_manual SMALLINT NOT NULL COMMENT '数量单价人工保护:1人工维护 0随源更新' DEFAULT '0',
|
|
|
|
|
|
source_trade_json JSON COMMENT '最近有效发货数量、含税成交价及源单据快照',
|
2026-10-12 21:49:05 -04:00
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
product_name VARCHAR(128) NOT NULL COMMENT '产品名称',
|
|
|
|
|
|
spec_model VARCHAR(128) NOT NULL COMMENT '规格型号(空串而非 NULL:参与组合唯一键,MySQL 组合索引对 NULL 不去重)' DEFAULT '',
|
|
|
|
|
|
unit VARCHAR(16) COMMENT '计量单位',
|
|
|
|
|
|
stock_quantity DECIMAL(14, 2) COMMENT '数量(T+ 同步原样存储,语义待 IT 确认)',
|
|
|
|
|
|
sale_price DECIMAL(14, 4) COMMENT '销售单价(元,T+ 同步)',
|
|
|
|
|
|
product_category VARCHAR(32) NOT NULL COMMENT '产品类别:municipal_water市政水利 rail_transit轨道交通(决定折算阈值 30%/20%;T+同步不覆盖)',
|
|
|
|
|
|
status TINYINT NOT NULL COMMENT '状态:1启用 0停用' DEFAULT '1',
|
|
|
|
|
|
remark VARCHAR(255) COMMENT '备注',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
source_no VARCHAR(64) COMMENT 'T+ 原始单据号(同步幂等去重锚点;唯一键待 IT 定键后升级)',
|
|
|
|
|
|
t_plus_id VARCHAR(64) COMMENT 'T+ 系统内部标识',
|
|
|
|
|
|
sync_batch_no VARCHAR(32) COMMENT '同步批次号(同步模块写入)',
|
|
|
|
|
|
synced_at DATETIME COMMENT '最近同步时间',
|
2026-10-27 23:41:38 -04:00
|
|
|
|
source_updated_at DATETIME COMMENT 'T+ 源数据更新时间(未确认时可为空)',
|
2026-10-12 21:49:05 -04:00
|
|
|
|
CONSTRAINT pk_products PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_products_name_spec UNIQUE (product_name, spec_model)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='产品表(类别锚定折算阈值参数;T+同步不覆盖产品类别)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_products_source_no ON products (source_no);
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 客户表(V4 迁移;公司名称+负责人为业务唯一标识,T+ 同步不覆盖客户分类)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE customers (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
company_name VARCHAR(128) NOT NULL COMMENT '公司名称',
|
|
|
|
|
|
owner_name VARCHAR(64) NOT NULL COMMENT '客户负责人姓名(客户公司负责人的人名,非系统人员)',
|
|
|
|
|
|
contact_person VARCHAR(64) COMMENT '联系人',
|
|
|
|
|
|
contact_phone VARCHAR(20) COMMENT '联系电话',
|
|
|
|
|
|
address VARCHAR(255) COMMENT '地址',
|
|
|
|
|
|
industry VARCHAR(64) COMMENT '所属行业(自由文本)',
|
|
|
|
|
|
customer_type VARCHAR(32) NOT NULL COMMENT '客户分类:personal个人户 manager_personal经理个人户 enterprise企业户(计提规则匹配锚点;T+同步不覆盖)' DEFAULT 'personal',
|
|
|
|
|
|
owner_personnel_id BIGINT UNSIGNED COMMENT '归属负责营销人员ID(手动修改不回溯历史,变更留痕见 ownership_change_logs)',
|
|
|
|
|
|
remark VARCHAR(255) COMMENT '备注',
|
2026-10-22 22:59:33 -04:00
|
|
|
|
rating_score TINYINT COMMENT '评级总分(0-100,评级计算器保存;null=未评分;人工维护字段,T+ 同步不覆盖)',
|
|
|
|
|
|
rating_time DATETIME COMMENT '最近评级时间(评级计算器保存评分时刷新;人工维护字段)',
|
2026-10-12 21:49:05 -04:00
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
source_no VARCHAR(64) COMMENT 'T+ 原始单据号(同步幂等去重锚点;唯一键待 IT 定键后升级)',
|
|
|
|
|
|
t_plus_id VARCHAR(64) COMMENT 'T+ 系统内部标识',
|
|
|
|
|
|
sync_batch_no VARCHAR(32) COMMENT '同步批次号(同步模块写入)',
|
|
|
|
|
|
synced_at DATETIME COMMENT '最近同步时间',
|
2026-10-27 23:41:38 -04:00
|
|
|
|
source_updated_at DATETIME COMMENT 'T+ 源数据更新时间(未确认时可为空)',
|
2026-10-12 21:49:05 -04:00
|
|
|
|
CONSTRAINT pk_customers PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_customers_company_owner UNIQUE (company_name, owner_name),
|
|
|
|
|
|
CONSTRAINT fk_customers_owner_personnel_id FOREIGN KEY(owner_personnel_id) REFERENCES personnel (id) ON DELETE RESTRICT
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='客户表(公司名称+负责人为业务唯一标识;T+同步不覆盖客户分类)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_customers_customer_type ON customers (customer_type);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_customers_owner_personnel_id ON customers (owner_personnel_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_customers_source_no ON customers (source_no);
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 归属变更记录表(V4 迁移,append-only;客户/业务归属变更留痕,不回溯历史)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE ownership_change_logs (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
owner_type TINYINT NOT NULL COMMENT '归属类型:1客户归属 2业务归属',
|
|
|
|
|
|
customer_id BIGINT UNSIGNED COMMENT '客户ID(固化,owner_type=1 时非空)',
|
|
|
|
|
|
business_id BIGINT UNSIGNED COMMENT '业务ID(固化,owner_type=2 时非空)',
|
|
|
|
|
|
old_owner_personnel_id BIGINT UNSIGNED COMMENT '变更前负责营销人员ID(固化)',
|
|
|
|
|
|
new_owner_personnel_id BIGINT UNSIGNED COMMENT '变更后负责营销人员ID(固化)',
|
|
|
|
|
|
old_assistant_personnel_id BIGINT UNSIGNED COMMENT '变更前协助营销人员ID(固化,仅业务归属使用)',
|
|
|
|
|
|
new_assistant_personnel_id BIGINT UNSIGNED COMMENT '变更后协助营销人员ID(固化,仅业务归属使用)',
|
|
|
|
|
|
change_reason VARCHAR(255) COMMENT '变更原因',
|
|
|
|
|
|
operator_id BIGINT UNSIGNED COMMENT '操作人ID(账号删除后置空)',
|
|
|
|
|
|
operator_name VARCHAR(64) NOT NULL COMMENT '操作人用户名(冗余固化)',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_ownership_change_logs PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_ownership_change_logs_operator_id FOREIGN KEY(operator_id) REFERENCES users (id) ON DELETE SET NULL
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='归属变更记录表(append-only;客户/业务归属变更留痕,不回溯历史)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_ownership_change_logs_customer_id ON ownership_change_logs (customer_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_ownership_change_logs_business_id ON ownership_change_logs (business_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_ownership_change_logs_create_time ON ownership_change_logs (create_time);
|
|
|
|
|
|
|
2026-10-09 06:46:36 -04:00
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 字典数据:角色(与 V1 迁移中的初始化数据一致)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
INSERT INTO roles (role_code, role_name, description, sort_order) VALUES ('admin', '系统管理员', '全部权限,含计提参数与系数表配置', 1);
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO roles (role_code, role_name, description, sort_order) VALUES ('user', '普通用户', '业务操作', 2);
|
|
|
|
|
|
|
2026-10-15 05:25:23 -04:00
|
|
|
|
-- 2026-10-15 复核审批补充需求:三个职能登录角色(与 V6 迁移种子一致;
|
|
|
|
|
|
-- 内置保护由 role_service 的 BUILTIN_ROLE_CODES 白名单承担)
|
|
|
|
|
|
INSERT INTO roles (role_code, role_name, description, sort_order) VALUES ('marketing_ops', '营销后勤', '提交与录入(审批链第一节点:月结/二次分配提交)', 3);
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO roles (role_code, role_name, description, sort_order) VALUES ('finance', '财务', '复核(审批链第二节点)', 4);
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO roles (role_code, role_name, description, sort_order) VALUES ('leader', '领导', '审核(审批链第三节点;全览只读)', 5);
|
|
|
|
|
|
|
2026-10-12 04:13:13 -04:00
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 字典数据:业务岗位与计提参数(与 V3 迁移种子一致;口径依据 2026-10-12 业务裁决)
|
|
|
|
|
|
-- 显式指定 id:param_values 按 param_id 引用定义,与迁移种子保持同源一致
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
INSERT INTO business_roles (id, role_code, role_name, calc_template, description, sort_order, is_builtin) VALUES
|
|
|
|
|
|
(1, 'salesperson', '营销员', 'TPL_SALESPERSON_DECAY', '业务员个人户:回款天数线性递减(10‰ − 天数×4/360‰,361 天起固定 4‰)', 1, 1),
|
|
|
|
|
|
(2, 'sales_manager', '营销经理', 'TPL_MANAGER_SHARE', '经理绩效:∑本团队业务员绩效×12.5% + ∑全公司业务员绩效×5%', 2, 1),
|
|
|
|
|
|
(3, 'info_officer', '信息员', 'TPL_INFO_SALES_FIXED', '信息员绩效:本人销售额×1‰', 3, 1);
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO param_change_batches (id, version_no, effective_date, change_type, remark, operator_name, item_count) VALUES
|
2026-10-18 23:09:05 -04:00
|
|
|
|
(1, 'P20260101-00', '2026-01-01', 1, '初始版本(系统初始化种子,口径依据 2026-10-12 业务裁决与 2026-10-19 澄清答复)', 'system', 19);
|
2026-10-12 04:13:13 -04:00
|
|
|
|
|
|
|
|
|
|
INSERT INTO param_definitions (id, param_code, param_name, param_group, value_type, unit, dimension_type, options_text, default_value, value_min, value_max, description, sort_order) VALUES
|
2026-10-23 04:20:05 -04:00
|
|
|
|
(1, 'salesperson.rate.start', '业务员起始计提比例', '业务员个人户', 'DECIMAL', '‰', 'BUSINESS_ROLE', NULL, '10', '0', NULL, '回款当天能拿到的最高计提比例。回款每晚一天,按日递减斜率往下走,直到分界天数为止。', 1),
|
|
|
|
|
|
(2, 'salesperson.rate.slope', '业务员日递减斜率', '业务员个人户', 'DECIMAL', '‰/天', 'BUSINESS_ROLE', NULL, '4/360', '0', NULL, '回款每延后一天,计提比例下降多少。按分数填写(如 4/360)可保持精确,填小数会引入四舍五入误差。', 2),
|
|
|
|
|
|
(3, 'salesperson.rate.floor', '业务员计提下限', '业务员个人户', 'DECIMAL', '‰', 'BUSINESS_ROLE', NULL, '4', '0', NULL, '回款天数超过分界天数后,计提比例不再下降,固定按这个值计算,即最低计提比例。', 3),
|
|
|
|
|
|
(4, 'salesperson.days.boundary', '线性递减分界天数', '业务员个人户', 'INT', '天', 'BUSINESS_ROLE', NULL, '360', '0', NULL, '回款天数在这个范围内按日递减;超过这个天数就固定按下限计提。默认 360 天。', 4),
|
|
|
|
|
|
(5, 'manager.share.team', '经理本团队分成比例', '经理分成', 'DECIMAL', '%', 'BUSINESS_ROLE', NULL, '12.5', '0', '100', '经理按本团队业务员的绩效总额提取的分成比例,只统计自己带的业务员。', 5),
|
|
|
|
|
|
(6, 'manager.share.company', '经理全公司分成比例', '经理分成', 'DECIMAL', '%', 'BUSINESS_ROLE', NULL, '5', '0', '100', '经理按全公司业务员的绩效总额提取的分成比例,与本团队分成叠加计算。', 6),
|
|
|
|
|
|
(7, 'enterprise.rate', '企业户计提比例', '企业户', 'DECIMAL', '‰', 'PRODUCT_CATEGORY', NULL, '3', '0', NULL, '企业户客户的回款统一按这个比例计提,不看回款天数。2026-08-13 起由 2‰ 调整为 3‰。', 7),
|
|
|
|
|
|
(8, 'info.rate', '信息员计提比例', '信息员', 'DECIMAL', '‰', 'BUSINESS_ROLE', NULL, '1', '0', NULL, '信息员的绩效按本人销售额乘这个比例计算,不随回款天数递减。', 8),
|
|
|
|
|
|
(9, 'prepay.rate', '预付款计提比例', '支付环节', 'DECIMAL', '‰', 'NONE', NULL, '10', '0', NULL, '预付款到账即按这个比例计提绩效,不必等到全额回款。', 9),
|
|
|
|
|
|
(10, 'barter.discount', '以物抵顶折算比例', '支付环节', 'DECIMAL', '%', 'NONE', NULL, '80', '0', '100', '以物抵顶的回款,按应发绩效的这个比例折算,即打折后的金额参与绩效。', 10),
|
|
|
|
|
|
(11, 'payment.start.ratio', '支付起付比例', '支付环节', 'DECIMAL', '%', 'NONE', NULL, '60', '0', '100', '单项业务的回款累计达到销售额(不含运费)的这个比例后才开始发放绩效;达标之前只累计、不发放。', 11),
|
|
|
|
|
|
(12, 'payment.weight.mode', '支付权重应用方式', '支付环节', 'ENUM', NULL, 'NONE', 'FULL|BALANCE', 'FULL', NULL, NULL, '选择支付权重乘在哪个基数上:当月全额 = 乘本月全部应发绩效;余额 = 只乘尚未发放的部分。', 12),
|
|
|
|
|
|
(13, 'product.threshold', '折算毛利润额阈值', '产品阈值', 'DECIMAL', '%', 'PRODUCT_CATEGORY', NULL, '30', '0', '100', '折算毛利润额 = 销售额 ×(毛利润率 − 阈值),低于阈值的部分不参与绩效。市政水利默认 30%,轨道交通默认 20%。', 13),
|
|
|
|
|
|
(14, 'salary.basic.mode', '月工资基本工资口径', '月工资口径', 'ENUM', NULL, 'BUSINESS_ROLE', 'INCLUDE|DEDUCT|EXCLUDE', 'INCLUDE', NULL, NULL, '算月工资时怎么处理基本工资:含基本工资 = 与绩效一起发;扣除基本工资 = 从绩效里扣掉已发的基本工资;不计 = 月工资只发绩效。', 14),
|
|
|
|
|
|
(15, 'probation.annual.threshold', '试用期年累计结算阈值', '月工资口径', 'DECIMAL', '元', 'NONE', NULL, '18000', '0', NULL, '试用期绩效先不发放;年内累计超过这个金额的部分,年底一次性结算。', 15),
|
|
|
|
|
|
(17, 'approval.secondary_allocation.enabled', '二次分配审批开关', '审批开关', 'BOOL', NULL, 'NONE', NULL, '1', NULL, NULL, '二次分配方案提交后是否要审批:开启 = 先经财务复核、再经领导审核,通过后才生效;关闭 = 提交即生效,系统自动记录各节点留痕。', 17),
|
|
|
|
|
|
(18, 'approval.monthly_settlement.enabled', '月度结算审批开关', '审批开关', 'BOOL', NULL, 'NONE', NULL, '1', NULL, NULL, '月度结算提交后是否要审批:开启 = 先经财务复核、再经领导审核;关闭 = 生成即生效。月结涉及工资发放,默认开启。', 18),
|
|
|
|
|
|
(19, 'approval.adjustment.enabled', '调整单审批开关', '审批开关', 'BOOL', NULL, 'NONE', NULL, '0', NULL, NULL, '调整单提交后是否要审批:开启 = 先经财务复核、再经领导审核;关闭 = 提交即生效。调整单是已锁定月份补发或扣减的唯一通道。', 19),
|
|
|
|
|
|
(20, 'manager.personal.included', '经理个人户计入聚合基数', '经理分成', 'BOOL', NULL, 'NONE', NULL, '0', NULL, NULL, '经理提取团队分成时,是否把经理本人名下的业绩(经理个人户)也算进分成基数。默认不计入。', 20),
|
|
|
|
|
|
-- 预警规则参数:工作台预警阈值,可按业务需要调整
|
|
|
|
|
|
(21, 'warning.enabled', '风险预警总开关', '预警规则', 'BOOL', NULL, 'NONE', NULL, '1', NULL, NULL, '工作台风险预警区块的总开关:关闭后不再扫描、也不展示预警条目。默认开启。', 21),
|
|
|
|
|
|
(22, 'warning.receipt.overdue.days', '回款逾期天数阈值', '预警规则', 'INT', '天', 'NONE', NULL, '90', '1', NULL, '发货后超过这么多天仍未收到回款的发货批次,会出现在工作台的预警列表里。默认 90 天。', 22),
|
|
|
|
|
|
(23, 'warning.approval.timeout.days', '审批超时天数阈值', '预警规则', 'INT', '天', 'NONE', NULL, '3', '1', NULL, '审批单提交后超过这么多天还没处理,会出现在工作台的预警列表里。默认 3 天。', 23);
|
2026-10-12 04:13:13 -04:00
|
|
|
|
|
|
|
|
|
|
INSERT INTO param_values (id, param_id, dimension_value, effective_date, value_text, batch_id) VALUES
|
|
|
|
|
|
(1, 1, 'salesperson', '2026-02-17', '10', 1),
|
|
|
|
|
|
(2, 2, 'salesperson', '2026-02-17', '4/360', 1),
|
|
|
|
|
|
(3, 3, 'salesperson', '2026-02-17', '4', 1),
|
|
|
|
|
|
(4, 4, 'salesperson', '2026-02-17', '360', 1),
|
|
|
|
|
|
(5, 5, 'sales_manager', '2026-08-13', '12.5', 1),
|
|
|
|
|
|
(6, 6, 'sales_manager', '2026-08-13', '5', 1),
|
|
|
|
|
|
(7, 7, '', '2026-02-17', '2', 1),
|
|
|
|
|
|
(8, 7, '', '2026-08-13', '3', 1),
|
|
|
|
|
|
(9, 8, 'info_officer', '2026-08-13', '1', 1),
|
|
|
|
|
|
(10, 9, '', '2026-01-01', '10', 1),
|
|
|
|
|
|
(11, 10, '', '2026-01-01', '80', 1),
|
|
|
|
|
|
(12, 11, '', '2026-01-01', '60', 1),
|
|
|
|
|
|
(13, 12, '', '2026-01-01', 'FULL', 1),
|
|
|
|
|
|
(14, 13, 'municipal_water', '2026-02-17', '30', 1),
|
|
|
|
|
|
(15, 13, 'rail_transit', '2026-02-17', '20', 1),
|
|
|
|
|
|
(16, 14, 'salesperson', '2026-01-01', 'INCLUDE', 1),
|
|
|
|
|
|
(17, 14, 'sales_manager', '2026-01-01', 'DEDUCT', 1),
|
|
|
|
|
|
(18, 15, '', '2026-01-01', '18000', 1),
|
2026-10-18 23:09:05 -04:00
|
|
|
|
-- 审批开关默认开启(澄清 #5/#7 答复 2026-10-19);试用期统一工资参数已撤
|
|
|
|
|
|
-- (#16 答复:按人员档案 personnel.salary_standard 逐人维护),本脚本直达终态
|
|
|
|
|
|
(20, 17, '', '2026-01-01', '1', 1),
|
|
|
|
|
|
(21, 18, '', '2026-01-01', '1', 1),
|
|
|
|
|
|
(22, 19, '', '2026-01-01', '0', 1),
|
2026-10-19 06:44:15 -04:00
|
|
|
|
(25, 20, '', '2026-01-01', '0', 1),
|
|
|
|
|
|
-- 预警规则参数生效值(M4 ⑧)
|
|
|
|
|
|
(26, 21, '', '2026-10-19', '1', 1),
|
|
|
|
|
|
(27, 22, '', '2026-10-19', '90', 1),
|
|
|
|
|
|
(28, 23, '', '2026-10-19', '3', 1);
|
2026-10-12 04:13:13 -04:00
|
|
|
|
|
2026-10-12 23:22:34 -04:00
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 业务表(V5 迁移;业务编号自动生成,五项汇总冗余列由服务层事务内维护)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE businesses (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
business_no VARCHAR(32) NOT NULL COMMENT '业务编号,自动生成 YW{YYYYMMDD}-{4位当日序号}(报表合同编号)',
|
|
|
|
|
|
customer_id BIGINT UNSIGNED NOT NULL COMMENT '客户ID(customers.id)',
|
|
|
|
|
|
business_date DATE COMMENT '业务日期(T+ 同步口径)',
|
|
|
|
|
|
status TINYINT NOT NULL COMMENT '业务状态:1执行中 2已完成 3已终止(终态不可变更;T+同步不覆盖)' DEFAULT '1',
|
|
|
|
|
|
owner_personnel_id BIGINT UNSIGNED COMMENT '负责营销人员ID(核算归属锚点;NULL=待指定,M3 核算前置校验非空;变更留痕不回溯)',
|
|
|
|
|
|
assistant_personnel_id BIGINT UNSIGNED COMMENT '协助营销人员ID(一期核算不使用,对照表 #15;仅记录事实)',
|
|
|
|
|
|
is_special TINYINT NOT NULL COMMENT '特殊业务标记:1是 0否(公司参与等)' DEFAULT '0',
|
|
|
|
|
|
special_note VARCHAR(255) COMMENT '特殊业务说明',
|
|
|
|
|
|
total_sale_amount DECIMAL(14, 2) COMMENT '销售额合计(明细行汇总冗余,服务层事务内维护,禁手工直改;不含运费口径)' DEFAULT '0',
|
|
|
|
|
|
total_cost_amount DECIMAL(14, 2) COMMENT '成本合计(明细行汇总冗余,服务层事务内维护,禁手工直改)' DEFAULT '0',
|
|
|
|
|
|
total_ship_amount DECIMAL(14, 2) COMMENT '发货金额合计(发货明细汇总冗余,服务层事务内维护,禁手工直改)' DEFAULT '0',
|
|
|
|
|
|
total_received_amount DECIMAL(14, 2) COMMENT '回款合计(回款记录汇总冗余,服务层事务内维护;M3 起付判定直接消费)' DEFAULT '0',
|
|
|
|
|
|
total_freight_amount DECIMAL(14, 2) COMMENT '运费合计(发货单汇总冗余,仅记录展示;不计入毛利润口径,对照表 #2)' DEFAULT '0',
|
|
|
|
|
|
remark VARCHAR(255) COMMENT '备注',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
source_no VARCHAR(64) COMMENT 'T+ 原始单据号(同步幂等去重锚点;唯一键待 IT 定键后升级)',
|
|
|
|
|
|
t_plus_id VARCHAR(64) COMMENT 'T+ 系统内部标识',
|
|
|
|
|
|
sync_batch_no VARCHAR(32) COMMENT '同步批次号(同步模块写入)',
|
|
|
|
|
|
synced_at DATETIME COMMENT '最近同步时间',
|
2026-10-27 23:41:38 -04:00
|
|
|
|
source_updated_at DATETIME COMMENT 'T+ 源数据更新时间(未确认时可为空)',
|
2026-10-12 23:22:34 -04:00
|
|
|
|
CONSTRAINT pk_businesses PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_businesses_business_no UNIQUE (business_no),
|
|
|
|
|
|
CONSTRAINT fk_businesses_customer_id FOREIGN KEY(customer_id) REFERENCES customers (id) ON DELETE RESTRICT,
|
|
|
|
|
|
CONSTRAINT fk_businesses_owner_personnel_id FOREIGN KEY(owner_personnel_id) REFERENCES personnel (id) ON DELETE RESTRICT,
|
|
|
|
|
|
CONSTRAINT fk_businesses_assistant_personnel_id FOREIGN KEY(assistant_personnel_id) REFERENCES personnel (id) ON DELETE RESTRICT
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='业务表(业务编号自动生成;T+同步不覆盖业务状态)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_businesses_business_date ON businesses (business_date);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_businesses_customer_id ON businesses (customer_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_businesses_owner_personnel_id ON businesses (owner_personnel_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_businesses_source_no ON businesses (source_no);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_businesses_status ON businesses (status);
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 业务产品明细表(V5 迁移;行级类别为折算锚点,指导价 T+ 同步不覆盖)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE business_items (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
business_id BIGINT UNSIGNED NOT NULL COMMENT '业务ID(businesses.id)',
|
|
|
|
|
|
product_id BIGINT UNSIGNED COMMENT '产品ID(products.id;NULL=自由录入,未入产品库)',
|
|
|
|
|
|
product_name VARCHAR(128) NOT NULL COMMENT '产品名称(引用产品时冗余固化)',
|
|
|
|
|
|
spec_model VARCHAR(128) NOT NULL COMMENT '规格型号(冗余固化;空串对齐 products 组合唯一键口径)' DEFAULT '',
|
|
|
|
|
|
unit VARCHAR(16) COMMENT '计量单位',
|
|
|
|
|
|
product_category VARCHAR(32) NOT NULL COMMENT '产品类别(行级折算锚点,混合业务按产品逐条计算,对照表 #14;值域同 PRODUCT_CATEGORIES)',
|
|
|
|
|
|
quantity DECIMAL(14, 2) NOT NULL COMMENT '数量(>0)',
|
|
|
|
|
|
sale_price DECIMAL(14, 4) COMMENT '销售单价(元;T+ 同步或人工)',
|
|
|
|
|
|
sale_amount DECIMAL(14, 2) NOT NULL COMMENT '销售额 = 数量×销售单价(服务层计算固化;不含运费口径,毛利润率分母)',
|
|
|
|
|
|
cost_amount DECIMAL(14, 2) COMMENT '成本额(T+ 同步或人工录入,来源待 T+ 确认;毛利润额 = 销售额 − 成本额)',
|
|
|
|
|
|
guided_price DECIMAL(14, 4) COMMENT '指导价(人工录入;T+同步不覆盖,需规 2.2.1/2.2.4)',
|
|
|
|
|
|
remark VARCHAR(255) COMMENT '备注',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_business_items PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_business_items_business_id FOREIGN KEY(business_id) REFERENCES businesses (id) ON DELETE RESTRICT,
|
|
|
|
|
|
CONSTRAINT fk_business_items_product_id FOREIGN KEY(product_id) REFERENCES products (id) ON DELETE RESTRICT
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='业务产品明细表(毛利润行级源数据;指导价 T+同步不覆盖)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_business_items_business_id ON business_items (business_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_business_items_product_category ON business_items (product_category);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_business_items_product_id ON business_items (product_id);
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 业务状态变更记录表(V5 迁移,append-only;创建时写首条 old=new=1)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE business_status_logs (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
business_id BIGINT UNSIGNED NOT NULL COMMENT '业务ID(固化,无外键;删除保护由服务层承担)',
|
|
|
|
|
|
old_status TINYINT NOT NULL COMMENT '变更前状态(创建首条为 1)',
|
|
|
|
|
|
new_status TINYINT NOT NULL COMMENT '变更后状态',
|
|
|
|
|
|
change_reason VARCHAR(255) COMMENT '变更原因(终止时必填)',
|
|
|
|
|
|
operator_id BIGINT UNSIGNED COMMENT '操作人ID(账号删除后置空)',
|
|
|
|
|
|
operator_name VARCHAR(64) NOT NULL COMMENT '操作人用户名(冗余固化)',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_business_status_logs PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_business_status_logs_operator_id FOREIGN KEY(operator_id) REFERENCES users (id) ON DELETE SET NULL
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='业务状态变更记录表(append-only)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_business_status_logs_business_id ON business_status_logs (business_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_business_status_logs_create_time ON business_status_logs (create_time);
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 发货单表(V5 迁移;发货日为回款天数基准日,发货日首日计第 1 天)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE shipments (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
shipment_no VARCHAR(32) NOT NULL COMMENT '发货单号,自动生成 SH{YYYYMMDD}-{4位当日序号}(内部追溯用)',
|
|
|
|
|
|
business_id BIGINT UNSIGNED NOT NULL COMMENT '业务ID(businesses.id;终态业务禁止新发货)',
|
|
|
|
|
|
ship_date DATE NOT NULL COMMENT '发货日期(回款天数基准日,发货日首日=第 1 天)',
|
|
|
|
|
|
freight_amount DECIMAL(14, 2) NOT NULL COMMENT '运费金额(仅记录展示;不计入毛利润口径,对照表 #2)' DEFAULT '0',
|
|
|
|
|
|
total_amount DECIMAL(14, 2) NOT NULL COMMENT '发货总金额(明细行汇总冗余,服务层事务内维护,禁手工直改)' DEFAULT '0',
|
|
|
|
|
|
remark VARCHAR(255) COMMENT '备注',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
source_no VARCHAR(64) COMMENT 'T+ 原始单据号(同步幂等去重锚点;唯一键待 IT 定键后升级)',
|
|
|
|
|
|
t_plus_id VARCHAR(64) COMMENT 'T+ 系统内部标识',
|
|
|
|
|
|
sync_batch_no VARCHAR(32) COMMENT '同步批次号(同步模块写入)',
|
|
|
|
|
|
synced_at DATETIME COMMENT '最近同步时间',
|
2026-10-27 23:41:38 -04:00
|
|
|
|
source_updated_at DATETIME COMMENT 'T+ 源数据更新时间(未确认时可为空)',
|
2026-10-12 23:22:34 -04:00
|
|
|
|
CONSTRAINT pk_shipments PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_shipments_shipment_no UNIQUE (shipment_no),
|
|
|
|
|
|
CONSTRAINT fk_shipments_business_id FOREIGN KEY(business_id) REFERENCES businesses (id) ON DELETE RESTRICT
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='发货单表(发货日为回款天数基准日,发货日首日计第 1 天)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_shipments_business_id ON shipments (business_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_shipments_ship_date ON shipments (ship_date);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_shipments_source_no ON shipments (source_no);
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 发货产品明细表(V5 迁移)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE shipment_items (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
shipment_id BIGINT UNSIGNED NOT NULL COMMENT '发货单ID(shipments.id)',
|
|
|
|
|
|
product_id BIGINT UNSIGNED COMMENT '产品ID(products.id;NULL=自由录入)',
|
|
|
|
|
|
product_name VARCHAR(128) NOT NULL COMMENT '产品名称(引用产品时冗余固化)',
|
|
|
|
|
|
spec_model VARCHAR(128) NOT NULL COMMENT '规格型号(冗余固化;空串对齐 products 组合唯一键口径)' DEFAULT '',
|
|
|
|
|
|
unit VARCHAR(16) COMMENT '计量单位',
|
|
|
|
|
|
quantity DECIMAL(14, 2) NOT NULL COMMENT '发货数量(>0)',
|
|
|
|
|
|
sale_price DECIMAL(14, 4) COMMENT '发货单价(元;T+ 同步或人工,口径待 IT 确认)',
|
|
|
|
|
|
amount DECIMAL(14, 2) NOT NULL COMMENT '行金额 = 数量×单价(服务层计算固化,不信任前端传值)',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_shipment_items PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_shipment_items_shipment_id FOREIGN KEY(shipment_id) REFERENCES shipments (id) ON DELETE RESTRICT,
|
|
|
|
|
|
CONSTRAINT fk_shipment_items_product_id FOREIGN KEY(product_id) REFERENCES products (id) ON DELETE RESTRICT
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='发货产品明细表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_shipment_items_product_id ON shipment_items (product_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_shipment_items_shipment_id ON shipment_items (shipment_id);
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 回款表(V5 迁移;手动指定发货批次,已核算回款禁改禁删)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE receipts (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
receipt_batch_no VARCHAR(32) NOT NULL COMMENT '回款批次号,自动生成 HK{YYYYMMDD}-{4位当日序号}(系统内唯一;T+ 同步回款以 source_no 幂等)',
|
|
|
|
|
|
business_id BIGINT UNSIGNED NOT NULL COMMENT '业务ID(businesses.id)',
|
|
|
|
|
|
shipment_id BIGINT UNSIGNED COMMENT '发货单ID(shipments.id;手动指定的回款对应批次,须与本行业务一致;NULL=暂未指定)',
|
|
|
|
|
|
receipt_date DATE NOT NULL COMMENT '回款到账日(M3 按此日匹配参数版本,对照表 #11)',
|
|
|
|
|
|
amount DECIMAL(14, 2) NOT NULL COMMENT '回款金额(≥0;一期禁负数/红字)',
|
2026-11-06 01:49:06 -05:00
|
|
|
|
is_barter TINYINT NOT NULL COMMENT '以物抵顶标记:1是 0否(特殊绩效线下核实,系统不自动折算)' DEFAULT '0',
|
2026-10-12 23:22:34 -04:00
|
|
|
|
settlement_status TINYINT NOT NULL COMMENT '绩效核算状态:0未核算 1已核算(M3 核算防重锚点;已核算回款禁改禁删)' DEFAULT '0',
|
2026-11-06 01:49:06 -05:00
|
|
|
|
confirmation_status TINYINT NOT NULL DEFAULT 0 COMMENT '人工确认状态:0待确认 1已确认,独立于凭证及核算状态',
|
|
|
|
|
|
confirmed_by VARCHAR(64) COMMENT '人工确认人账号快照',
|
|
|
|
|
|
confirmed_at DATETIME COMMENT '人工确认时间',
|
|
|
|
|
|
confirmed_revision VARCHAR(64) COMMENT '人工确认时回款关键内容指纹',
|
2026-10-12 23:22:34 -04:00
|
|
|
|
remark VARCHAR(255) COMMENT '备注',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
source_no VARCHAR(64) COMMENT 'T+ 原始单据号(同步幂等去重锚点;唯一键待 IT 定键后升级)',
|
|
|
|
|
|
t_plus_id VARCHAR(64) COMMENT 'T+ 系统内部标识',
|
|
|
|
|
|
sync_batch_no VARCHAR(32) COMMENT '同步批次号(同步模块写入)',
|
|
|
|
|
|
synced_at DATETIME COMMENT '最近同步时间',
|
2026-10-27 23:41:38 -04:00
|
|
|
|
source_updated_at DATETIME COMMENT 'T+ 源数据更新时间(未确认时可为空)',
|
2026-10-12 23:22:34 -04:00
|
|
|
|
CONSTRAINT pk_receipts PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_receipts_receipt_batch_no UNIQUE (receipt_batch_no),
|
|
|
|
|
|
CONSTRAINT fk_receipts_business_id FOREIGN KEY(business_id) REFERENCES businesses (id) ON DELETE RESTRICT,
|
|
|
|
|
|
CONSTRAINT fk_receipts_shipment_id FOREIGN KEY(shipment_id) REFERENCES shipments (id) ON DELETE RESTRICT
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='回款表(手动指定发货批次;已核算回款禁改禁删)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_receipts_business_id ON receipts (business_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_receipts_receipt_date ON receipts (receipt_date);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_receipts_settlement_status ON receipts (settlement_status);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_receipts_shipment_id ON receipts (shipment_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_receipts_source_no ON receipts (source_no);
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 客户评级等级配置表(V5 迁移;判定按 sort_order 升序首个 min_score≤总分)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE customer_rating_grades (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
grade_name VARCHAR(32) NOT NULL COMMENT '等级名称(如 A/优秀)',
|
|
|
|
|
|
min_score DECIMAL(5, 1) NOT NULL COMMENT '总分下限(含);判定=按 sort_order 升序首个 min_score ≤ 总分',
|
|
|
|
|
|
max_score DECIMAL(5, 1) NOT NULL COMMENT '总分上限(展示用)',
|
|
|
|
|
|
sort_order INT NOT NULL COMMENT '排序(判定顺序,升序)' DEFAULT '0',
|
|
|
|
|
|
remark VARCHAR(255) COMMENT '说明',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_customer_rating_grades PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_customer_rating_grades_grade_name UNIQUE (grade_name)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='客户评级等级配置表(等级映射可配置;判定按 sort_order 升序首个 min_score≤总分)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 字典数据:评级等级(与 V5 迁移种子一致;评分项固定 5 项×20 分为前端常量,对照表 #25)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
INSERT INTO customer_rating_grades (grade_name, min_score, max_score, sort_order, remark) VALUES
|
|
|
|
|
|
('A', 90, 100, 1, '优秀'),
|
|
|
|
|
|
('B', 75, 89, 2, '良好'),
|
|
|
|
|
|
('C', 60, 74, 3, '合格'),
|
|
|
|
|
|
('D', 0, 59, 4, '待改进');
|
|
|
|
|
|
|
2026-10-15 05:25:23 -04:00
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 系统设置/二次分配/审批(V6 迁移;公司信息单行;分摊计算待澄清另批)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE system_settings (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
company_name VARCHAR(64) NOT NULL COMMENT '公司名称(登录页与导出页眉展示)',
|
|
|
|
|
|
logo_path VARCHAR(255) COMMENT 'logo 相对路径(文件存 uploads/logo/,null=未上传使用默认)',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_system_settings PRIMARY KEY (id)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='系统设置表(公司信息,全系统单行)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE approval_orders (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
order_no VARCHAR(32) NOT NULL COMMENT '审批单号,自动生成 AP{YYYYMMDD}-{4位当日序号}',
|
|
|
|
|
|
order_type TINYINT NOT NULL COMMENT '审批对象类型:1二次分配方案 2月度结算(预留)',
|
|
|
|
|
|
ref_id BIGINT UNSIGNED NOT NULL COMMENT '引用对象ID(order_type=1 时为 businesses.id;固化无外键,删除保护由服务层承担)',
|
|
|
|
|
|
refer_no VARCHAR(32) NOT NULL COMMENT '引用对象单号(冗余固化,列表页免联查)',
|
2026-10-20 06:30:51 -04:00
|
|
|
|
version_no INT NOT NULL COMMENT '提交版本号(同一对象类型+引用对象从1递增;重提产生新版本,旧单快照不覆盖)' DEFAULT '1',
|
|
|
|
|
|
snapshot_json JSON COMMENT '提交时内容快照(信封:schema_version/order_type/captured_at/data;历史单可空)',
|
2026-10-15 05:25:23 -04:00
|
|
|
|
status TINYINT NOT NULL COMMENT '审批状态:1待财务复核 2待领导审核 3已通过 4已驳回 5已撤回' DEFAULT '1',
|
|
|
|
|
|
submitter_id BIGINT UNSIGNED COMMENT '提交人ID(账号删除后置空)',
|
|
|
|
|
|
submitter_name VARCHAR(64) NOT NULL COMMENT '提交人用户名(冗余固化)',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_approval_orders PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_approval_orders_order_no UNIQUE (order_no),
|
2026-10-22 01:31:01 -04:00
|
|
|
|
CONSTRAINT uk_approval_orders_order_type_ref_version UNIQUE (order_type, ref_id, version_no),
|
2026-10-15 05:25:23 -04:00
|
|
|
|
CONSTRAINT fk_approval_orders_submitter_id FOREIGN KEY(submitter_id) REFERENCES users (id) ON DELETE SET NULL
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='审批单表(营销后勤提交→财务复核→领导审核;开关关闭时自动通过留痕)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_approval_orders_type_status ON approval_orders (order_type, status);
|
|
|
|
|
|
|
2026-10-20 06:30:51 -04:00
|
|
|
|
CREATE INDEX idx_approval_orders_type_ref ON approval_orders (order_type, ref_id);
|
|
|
|
|
|
|
2026-10-15 05:25:23 -04:00
|
|
|
|
CREATE TABLE approval_steps (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
order_id BIGINT UNSIGNED NOT NULL COMMENT '审批单ID(approval_orders.id;单删记录随删)',
|
|
|
|
|
|
node TINYINT NOT NULL COMMENT '审批节点:0撤回留痕 1财务复核 2领导审核',
|
|
|
|
|
|
action TINYINT NOT NULL COMMENT '动作:1通过 2驳回 3自动通过 4撤回',
|
|
|
|
|
|
opinion VARCHAR(255) COMMENT '审批意见(驳回时填写)',
|
|
|
|
|
|
operator_id BIGINT UNSIGNED COMMENT '操作人ID(自动通过/系统动作置空)',
|
|
|
|
|
|
operator_name VARCHAR(64) NOT NULL COMMENT '操作人用户名(冗余固化;系统动作记「系统」)',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_approval_steps PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_approval_steps_operator_id FOREIGN KEY(operator_id) REFERENCES users (id) ON DELETE SET NULL,
|
|
|
|
|
|
CONSTRAINT fk_approval_steps_order_id FOREIGN KEY(order_id) REFERENCES approval_orders (id) ON DELETE CASCADE
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='审批节点记录表(append-only;自动通过/撤回均有留痕)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_approval_steps_order_id ON approval_steps (order_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE business_secondary_allocations (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
business_id BIGINT UNSIGNED NOT NULL COMMENT '业务ID(businesses.id;业务删除随删)',
|
2026-10-20 06:30:51 -04:00
|
|
|
|
version_no INT NOT NULL COMMENT '方案版本号(同一业务从1递增;编辑/重提产生新版本,旧版本仅置历史)' DEFAULT '1',
|
2026-10-15 05:25:23 -04:00
|
|
|
|
personnel_id BIGINT UNSIGNED NOT NULL COMMENT '参与业务员ID(personnel.id;被方案引用禁删)',
|
|
|
|
|
|
personnel_name VARCHAR(64) NOT NULL COMMENT '参与业务员姓名(冗余固化,离职后回显有名)',
|
|
|
|
|
|
ratio DECIMAL(5, 2) NOT NULL COMMENT '分摊比例(0-100 两位小数;不要求合计满额,余额归属待澄清#2)',
|
2026-10-20 06:30:51 -04:00
|
|
|
|
is_active TINYINT NOT NULL COMMENT '是否当前生效版本:1生效 0历史(编辑替换/驳回清空后置0,行不删除)' DEFAULT '1',
|
2026-10-15 05:25:23 -04:00
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_business_secondary_allocations PRIMARY KEY (id),
|
2026-10-20 06:30:51 -04:00
|
|
|
|
CONSTRAINT uk_business_secondary_allocations_business_version_personnel UNIQUE (business_id, version_no, personnel_id),
|
2026-10-15 05:25:23 -04:00
|
|
|
|
CONSTRAINT fk_business_secondary_allocations_business_id FOREIGN KEY(business_id) REFERENCES businesses (id) ON DELETE CASCADE,
|
|
|
|
|
|
CONSTRAINT fk_business_secondary_allocations_personnel_id FOREIGN KEY(personnel_id) REFERENCES personnel (id) ON DELETE RESTRICT
|
2026-10-20 06:30:51 -04:00
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='业务二次分配方案版本表(append-only;比例不要求合计满额,余额归属待澄清)' COLLATE utf8mb4_general_ci;
|
2026-10-15 05:25:23 -04:00
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_business_secondary_allocations_business_id ON business_secondary_allocations (business_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_business_secondary_allocations_personnel_id ON business_secondary_allocations (personnel_id);
|
|
|
|
|
|
|
2026-10-20 06:30:51 -04:00
|
|
|
|
CREATE INDEX idx_business_secondary_allocations_business_active ON business_secondary_allocations (business_id, is_active);
|
|
|
|
|
|
|
2026-10-16 04:31:25 -04:00
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- 绩效核算台账/月结/调整单(V7 迁移;append-only 版本行;通过即锁定走调整单)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE monthly_settlements (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
settlement_month VARCHAR(7) NOT NULL COMMENT '结算月份(YYYY-MM;全表唯一)',
|
|
|
|
|
|
status TINYINT NOT NULL COMMENT '状态:1草稿 2待审批 3已审定(终态=已锁定)4已驳回(回草稿)' DEFAULT '1',
|
|
|
|
|
|
total_performance NUMERIC(14, 2) COMMENT '绩效金额合计(可负)',
|
|
|
|
|
|
total_payable NUMERIC(14, 2) COMMENT '应付绩效合计(可负)',
|
|
|
|
|
|
person_count TINYINT NOT NULL COMMENT '结算人数' DEFAULT '0',
|
|
|
|
|
|
snapshot_json JSON COMMENT '月度总览快照(生成时刻的确认回款口径说明与汇总参数)',
|
|
|
|
|
|
approval_order_no VARCHAR(32) COMMENT '关联审批单号(冗余固化;开关关闭自动通过时也有单)',
|
|
|
|
|
|
submitter_id BIGINT UNSIGNED COMMENT '提交人ID(账号删除后置空)',
|
|
|
|
|
|
submitter_name VARCHAR(64) NOT NULL COMMENT '提交人用户名(冗余固化)',
|
|
|
|
|
|
locked_at DATETIME COMMENT '锁定时间(status=3 时回填)',
|
|
|
|
|
|
locked_by VARCHAR(64) COMMENT '锁定操作人(冗余固化)',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_monthly_settlements PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_monthly_settlements_settlement_month UNIQUE (settlement_month),
|
|
|
|
|
|
CONSTRAINT fk_monthly_settlements_submitter_id FOREIGN KEY(submitter_id) REFERENCES users (id) ON DELETE SET NULL
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='月度结算表(按月一行;通过即锁定,锁定后走调整单)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE settlement_items (
|
2026-11-02 22:20:55 -05:00
|
|
|
|
probation_payment_sum NUMERIC(14, 2) NOT NULL COMMENT '本月年度补发或扣回' DEFAULT '0',
|
|
|
|
|
|
deferred_sum NUMERIC(14, 2) NOT NULL COMMENT '当月试用期缓发变化' DEFAULT '0',
|
|
|
|
|
|
normal_payable_sum NUMERIC(14, 2) NOT NULL COMMENT '当月正常实付绩效' DEFAULT '0',
|
2026-10-16 04:31:25 -04:00
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
settlement_id BIGINT UNSIGNED NOT NULL COMMENT '月结ID(monthly_settlements.id;头删明细随删)',
|
|
|
|
|
|
personnel_id BIGINT UNSIGNED NOT NULL COMMENT '结算人员ID(personnel.id)',
|
|
|
|
|
|
personnel_name VARCHAR(64) NOT NULL COMMENT '结算人员姓名(冗余固化)',
|
|
|
|
|
|
role_code VARCHAR(32) NOT NULL COMMENT '岗位编码(主岗,聚合锚点)',
|
|
|
|
|
|
calc_type TINYINT NOT NULL COMMENT '核算类型:1单笔回款 2经理团队聚合',
|
|
|
|
|
|
performance_sum NUMERIC(14, 2) NOT NULL COMMENT '绩效金额合计(可负;聚合行排除经理个人户业绩,#12 暂口径)',
|
|
|
|
|
|
payable_sum NUMERIC(14, 2) NOT NULL COMMENT '应付绩效合计(可负)',
|
|
|
|
|
|
basic_amount NUMERIC(14, 2) COMMENT '月工资标准(personnel.salary_standard 当月快照)',
|
|
|
|
|
|
salary_mode VARCHAR(16) COMMENT '月工资口径快照:INCLUDE/DEDUCT/EXCLUDE',
|
|
|
|
|
|
net_amount NUMERIC(14, 2) COMMENT '净工资 = 绩效±基本工资(按口径;试用期 0)',
|
|
|
|
|
|
is_probation TINYINT NOT NULL COMMENT '试用期:1绩效照算不发放(net=0,超年累计记 note)0否' DEFAULT '0',
|
|
|
|
|
|
probation_note VARCHAR(255) COMMENT '试用期说明(年累计超阈值部分年底一次性结算)',
|
|
|
|
|
|
snapshot_json JSON COMMENT '个人明细快照(台账行引用列表)',
|
|
|
|
|
|
CONSTRAINT pk_settlement_items PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_settlement_items_settlement_id FOREIGN KEY(settlement_id) REFERENCES monthly_settlements (id) ON DELETE CASCADE,
|
|
|
|
|
|
CONSTRAINT fk_settlement_items_personnel_id FOREIGN KEY(personnel_id) REFERENCES personnel (id) ON DELETE RESTRICT
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='月结明细表(按人固化;支持负数工资;锁定后只读)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE adjustment_orders (
|
2026-11-01 20:42:53 -05:00
|
|
|
|
adjustment_type VARCHAR(32) NOT NULL DEFAULT 'GENERAL' COMMENT '调整类型:GENERAL普通 ALLOCATION分配差额',
|
|
|
|
|
|
source_ledger_id BIGINT UNSIGNED NULL COMMENT '分配差额对应的原台账ID',
|
|
|
|
|
|
attribution_json JSON NULL COMMENT '原台账业务与分管归属快照',
|
2026-10-16 04:31:25 -04:00
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
order_no VARCHAR(32) NOT NULL COMMENT '调整单号,自动生成 TZ{YYYYMMDD}-{4位当日序号}',
|
|
|
|
|
|
settlement_month VARCHAR(7) NOT NULL COMMENT '调整月份(YYYY-MM;跨月规则待澄清 #9 前不限制)',
|
|
|
|
|
|
personnel_id BIGINT UNSIGNED NOT NULL COMMENT '调整人员ID(personnel.id)',
|
|
|
|
|
|
personnel_name VARCHAR(64) NOT NULL COMMENT '调整人员姓名(冗余固化)',
|
|
|
|
|
|
direction TINYINT NOT NULL COMMENT '方向:1补发 2扣减',
|
|
|
|
|
|
amount NUMERIC(14, 2) NOT NULL COMMENT '调整金额(恒正,方向表达语义)',
|
|
|
|
|
|
reason VARCHAR(255) NOT NULL COMMENT '扣补说明(必填,审批与追溯锚点)',
|
|
|
|
|
|
status TINYINT NOT NULL COMMENT '状态:1待审批 2已生效 3已驳回 4已撤回' DEFAULT '1',
|
|
|
|
|
|
submitter_id BIGINT UNSIGNED COMMENT '提交人ID(账号删除后置空)',
|
|
|
|
|
|
submitter_name VARCHAR(64) NOT NULL COMMENT '提交人用户名(冗余固化)',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_adjustment_orders PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_adjustment_orders_order_no UNIQUE (order_no),
|
|
|
|
|
|
CONSTRAINT fk_adjustment_orders_personnel_id FOREIGN KEY(personnel_id) REFERENCES personnel (id) ON DELETE RESTRICT,
|
|
|
|
|
|
CONSTRAINT fk_adjustment_orders_submitter_id FOREIGN KEY(submitter_id) REFERENCES users (id) ON DELETE SET NULL
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='调整单表(已锁定月份的补发/扣减;走审批;生效后不回写月结快照)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE performance_ledgers (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
receipt_id BIGINT UNSIGNED COMMENT '回款ID(receipts.id;聚合行可为 NULL)',
|
2026-11-01 20:42:53 -05:00
|
|
|
|
allocation_key VARCHAR(64) NOT NULL DEFAULT '' COMMENT '正式FIFO事件键;历史单笔核算为空串',
|
2026-10-16 04:31:25 -04:00
|
|
|
|
calc_version TINYINT NOT NULL COMMENT '核算版本(重算+1,旧行 is_active=0)' DEFAULT '1',
|
|
|
|
|
|
is_active TINYINT NOT NULL COMMENT '生效标记:1当前生效 0已被重算替代(重算受控 UPDATE 例外)' DEFAULT '1',
|
|
|
|
|
|
calc_type TINYINT NOT NULL COMMENT '核算类型:1单笔回款 2经理团队聚合(月度)' DEFAULT '1',
|
|
|
|
|
|
business_id BIGINT UNSIGNED NOT NULL COMMENT '业务ID(固化无外键;聚合行为该经理名下首行业务ID,报表下钻锚点)',
|
|
|
|
|
|
business_no VARCHAR(32) NOT NULL COMMENT '业务编号(冗余固化,列表免联查)',
|
|
|
|
|
|
personnel_id BIGINT UNSIGNED NOT NULL COMMENT '归属营销人员ID(personnel.id;核算归属锚点)',
|
|
|
|
|
|
personnel_name VARCHAR(64) NOT NULL COMMENT '归属营销人员姓名(冗余固化)',
|
|
|
|
|
|
role_code VARCHAR(32) NOT NULL COMMENT '岗位编码(business_roles.role_code,计提公式锚点)',
|
|
|
|
|
|
customer_type VARCHAR(32) NOT NULL COMMENT '客户分类:personal/manager_personal/enterprise',
|
|
|
|
|
|
product_category VARCHAR(32) NOT NULL COMMENT '产品类别:municipal_water/rail_transit/mixed(混合业务,行级明细入 snapshot_json)',
|
|
|
|
|
|
ship_date DATE COMMENT '发货日期(回款天数基准)',
|
|
|
|
|
|
receipt_date DATE NOT NULL COMMENT '回款日期(参数版本匹配日,裁决 #11)',
|
|
|
|
|
|
payment_days INTEGER COMMENT '回款天数(发货日首日计第 1 天;未指定批次为 NULL;先款后货照实负值)',
|
|
|
|
|
|
rate_text VARCHAR(32) NOT NULL COMMENT '计提比例原文(如 4/360,防 Fraction 截断;聚合行存 12.5%/5% 结构说明)',
|
|
|
|
|
|
converted_profit NUMERIC(14, 2) COMMENT '折算毛利润额(可负;混合业务为各行汇总)',
|
|
|
|
|
|
performance_amount NUMERIC(14, 2) COMMENT '绩效金额(可负,裁决:负绩效照算不归零)',
|
2026-11-06 01:49:06 -05:00
|
|
|
|
barter_applied TINYINT NOT NULL COMMENT '以物抵顶处理标记:当前系统不自动折算,1表示由线下规则处理 0表示未标记' DEFAULT '0',
|
2026-10-16 04:31:25 -04:00
|
|
|
|
weight_r INTEGER COMMENT '支付权重 R(回款占销售额百分比向下取整)',
|
|
|
|
|
|
payment_weight NUMERIC(7, 6) COMMENT '支付权重系数 R×R(展示用)',
|
|
|
|
|
|
payable_amount NUMERIC(14, 2) COMMENT '当期应付绩效(绩效 × 支付权重;聚合行为当月汇总)',
|
|
|
|
|
|
settlement_month VARCHAR(7) NOT NULL COMMENT '归属月(回款日期所在月,YYYY-MM;月结与报表维度)',
|
|
|
|
|
|
is_probation TINYINT NOT NULL COMMENT '试用期:1照算不发放 0否' DEFAULT '0',
|
|
|
|
|
|
missing_cost TINYINT NOT NULL COMMENT '成本缺失:1有明细行缺成本(该行毛利按 0 计)0否' DEFAULT '0',
|
|
|
|
|
|
snapshot_json JSON COMMENT '计算快照(所用参数版本与行级折算明细,重算可回溯)',
|
|
|
|
|
|
settlement_id BIGINT UNSIGNED COMMENT '所属月结ID(月结生成时回填;NULL=未入结)',
|
|
|
|
|
|
calc_reason VARCHAR(255) COMMENT '核算/重算原因(重算必填留痕)',
|
|
|
|
|
|
remark VARCHAR(255) COMMENT '备注',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_performance_ledgers PRIMARY KEY (id),
|
2026-11-01 20:42:53 -05:00
|
|
|
|
INDEX idx_performance_ledgers_receipt_id (receipt_id),
|
|
|
|
|
|
CONSTRAINT uk_performance_ledgers_receipt_id_calc_version_personnel UNIQUE (receipt_id, calc_version, personnel_id, allocation_key),
|
2026-10-16 04:31:25 -04:00
|
|
|
|
CONSTRAINT fk_performance_ledgers_settlement_id FOREIGN KEY(settlement_id) REFERENCES monthly_settlements (id) ON DELETE RESTRICT,
|
|
|
|
|
|
CONSTRAINT fk_performance_ledgers_personnel_id FOREIGN KEY(personnel_id) REFERENCES personnel (id) ON DELETE RESTRICT,
|
|
|
|
|
|
CONSTRAINT fk_performance_ledgers_receipt_id FOREIGN KEY(receipt_id) REFERENCES receipts (id) ON DELETE RESTRICT
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='绩效核算台账表(append-only 版本行;重算插新版本旧行仅翻 is_active)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_performance_ledgers_business_id ON performance_ledgers (business_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_performance_ledgers_month_active ON performance_ledgers (settlement_month, is_active);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_performance_ledgers_month_personnel_type ON performance_ledgers (settlement_month, personnel_id, calc_type);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_performance_ledgers_personnel_id ON performance_ledgers (personnel_id);
|
|
|
|
|
|
|
2026-10-27 23:41:38 -04:00
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
-- T+ 同步批次、错误、原始 staging 与增量水位表(V14)
|
|
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE tplus_sync_batches (
|
2026-11-01 20:42:53 -05:00
|
|
|
|
trigger_type VARCHAR(16) NOT NULL DEFAULT 'MANUAL' COMMENT '触发来源:MANUAL/SCHEDULED/AUTO_RETRY',
|
|
|
|
|
|
automatic_attempt INTEGER NOT NULL DEFAULT 0 COMMENT '自动重试序号(0为原始任务)',
|
2026-10-27 23:41:38 -04:00
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
batch_no VARCHAR(32) NOT NULL COMMENT '同步批次号',
|
|
|
|
|
|
sync_mode VARCHAR(16) NOT NULL COMMENT '任务方式:FULL全量 AUDIT关联核验 INCREMENTAL预留',
|
|
|
|
|
|
status VARCHAR(16) NOT NULL COMMENT '状态:QUEUED/RUNNING/SUCCEEDED/PARTIAL/FAILED',
|
|
|
|
|
|
source_database VARCHAR(128) COMMENT 'T+ 源数据库名',
|
|
|
|
|
|
started_at DATETIME COMMENT '开始执行时间(排队时为空)',
|
|
|
|
|
|
finished_at DATETIME COMMENT '结束时间',
|
|
|
|
|
|
watermark_from DATETIME COMMENT '增量起始水位',
|
|
|
|
|
|
watermark_to DATETIME COMMENT '本批次结束水位',
|
|
|
|
|
|
source_record_count INT NOT NULL DEFAULT 0 COMMENT '源记录数',
|
|
|
|
|
|
staged_record_count INT NOT NULL DEFAULT 0 COMMENT '写入 staging 的记录数',
|
|
|
|
|
|
failed_record_count INT NOT NULL DEFAULT 0 COMMENT '失败记录数',
|
|
|
|
|
|
error_message TEXT COMMENT '批次错误摘要',
|
2026-11-01 20:42:53 -05:00
|
|
|
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
|
|
|
-- 以下 6 列对应 V15 的 ADD COLUMN:物理列序须与迁移终态一致(表尾追加)。
|
2026-10-27 23:41:38 -04:00
|
|
|
|
entity_types_json JSON COMMENT '请求读取的实体类型;历史批次可为空',
|
|
|
|
|
|
skipped_record_count INT NOT NULL DEFAULT 0 COMMENT '重复快照跳过条数',
|
|
|
|
|
|
parent_batch_no VARCHAR(32) COMMENT '重试来源批次号,保留原批次记录',
|
|
|
|
|
|
request_key VARCHAR(36) COMMENT '请求幂等键,空值用于历史和直接CLI任务',
|
|
|
|
|
|
requested_by BIGINT UNSIGNED COMMENT '请求用户ID,CLI任务为空,无物理外键',
|
|
|
|
|
|
audit_result_json JSON COMMENT '关联核验结果,只含系统字典和汇总',
|
|
|
|
|
|
CONSTRAINT pk_tplus_sync_batches PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_tplus_sync_batches_batch_no UNIQUE (batch_no),
|
|
|
|
|
|
CONSTRAINT uk_tplus_sync_batches_request_key UNIQUE (request_key)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='T+ 同步批次表(记录读取范围、结果和对账统计)' COLLATE=utf8mb4_general_ci;
|
|
|
|
|
|
CREATE INDEX idx_tplus_sync_batches_status ON tplus_sync_batches (status);
|
|
|
|
|
|
CREATE INDEX idx_tplus_sync_batches_started_at ON tplus_sync_batches (started_at);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_tplus_sync_batches_parent_status ON tplus_sync_batches (parent_batch_no, status);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE tplus_sync_errors (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
batch_no VARCHAR(32) NOT NULL COMMENT '同步批次号',
|
|
|
|
|
|
entity_type VARCHAR(32) NOT NULL COMMENT '业务实体类型',
|
|
|
|
|
|
source_table VARCHAR(128) NOT NULL COMMENT 'T+ 源表',
|
|
|
|
|
|
source_id VARCHAR(64) COMMENT 'T+ 源主键',
|
|
|
|
|
|
source_line_no VARCHAR(64) COMMENT 'T+ 明细行号或明细主键',
|
|
|
|
|
|
error_code VARCHAR(32) NOT NULL COMMENT '错误编码',
|
|
|
|
|
|
error_message TEXT NOT NULL COMMENT '错误说明',
|
|
|
|
|
|
retry_count INT NOT NULL DEFAULT 0 COMMENT '已重试次数',
|
|
|
|
|
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
|
|
|
CONSTRAINT pk_tplus_sync_errors PRIMARY KEY (id)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='T+ 同步错误表(记录失败行和重试信息)' COLLATE=utf8mb4_general_ci;
|
|
|
|
|
|
CREATE INDEX idx_tplus_sync_errors_batch_no ON tplus_sync_errors (batch_no);
|
|
|
|
|
|
CREATE INDEX idx_tplus_sync_errors_entity_type ON tplus_sync_errors (entity_type);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE tplus_sync_records (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
batch_no VARCHAR(32) NOT NULL COMMENT '同步批次号',
|
|
|
|
|
|
entity_type VARCHAR(32) NOT NULL COMMENT '业务实体类型',
|
|
|
|
|
|
source_table VARCHAR(128) NOT NULL COMMENT 'T+ 源表',
|
|
|
|
|
|
source_id VARCHAR(64) NOT NULL COMMENT 'T+ 源主键',
|
|
|
|
|
|
source_no VARCHAR(64) COMMENT 'T+ 原始编号',
|
|
|
|
|
|
source_line_no VARCHAR(64) COMMENT 'T+ 明细行号或明细主键',
|
|
|
|
|
|
source_updated_at DATETIME COMMENT 'T+ 源数据更新时间',
|
|
|
|
|
|
row_hash VARCHAR(64) NOT NULL COMMENT '原始行 SHA-256',
|
|
|
|
|
|
state VARCHAR(16) NOT NULL DEFAULT 'PENDING' COMMENT '状态:PENDING/APPLIED/SKIPPED/ERROR',
|
|
|
|
|
|
payload_json JSON NOT NULL COMMENT '原始行 JSON',
|
|
|
|
|
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
|
|
|
CONSTRAINT pk_tplus_sync_records PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_tplus_sync_records_entity_source_hash UNIQUE (entity_type, source_id, row_hash)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='T+ 原始同步 staging 表(映射确认前只保存原始行,不直接改业务表)' COLLATE=utf8mb4_general_ci;
|
|
|
|
|
|
CREATE INDEX idx_tplus_sync_records_batch_no ON tplus_sync_records (batch_no);
|
|
|
|
|
|
CREATE INDEX idx_tplus_sync_records_source_no ON tplus_sync_records (source_no);
|
|
|
|
|
|
CREATE INDEX idx_tplus_sync_records_state ON tplus_sync_records (state);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE tplus_sync_watermarks (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
entity_type VARCHAR(32) NOT NULL COMMENT '业务实体类型',
|
|
|
|
|
|
last_source_updated_at DATETIME COMMENT '最近源更新时间',
|
|
|
|
|
|
last_source_id VARCHAR(64) COMMENT '同一时间点的最后源主键',
|
|
|
|
|
|
status VARCHAR(16) NOT NULL DEFAULT 'READY' COMMENT '状态:READY/BLOCKED',
|
|
|
|
|
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
|
|
|
CONSTRAINT pk_tplus_sync_watermarks PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_tplus_sync_watermarks_entity_type UNIQUE (entity_type)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='T+ 增量同步水位表' COLLATE=utf8mb4_general_ci;
|
|
|
|
|
|
|
2026-10-16 04:31:25 -04:00
|
|
|
|
ALTER TABLE approval_orders MODIFY order_type TINYINT NOT NULL COMMENT '审批对象类型:1二次分配方案 2月度结算 3调整单';
|
|
|
|
|
|
|
2026-10-15 05:25:23 -04:00
|
|
|
|
-- 公司信息单行(system_settings 恒为一行,id=1 由迁移保底)
|
|
|
|
|
|
INSERT INTO system_settings (id, company_name, logo_path) VALUES (1, '衍水集团', NULL);
|
|
|
|
|
|
|
2026-10-09 06:46:36 -04:00
|
|
|
|
-- ---------------------------------------------------------------------------
|
2026-10-09 22:44:05 -04:00
|
|
|
|
-- 迁移版本记录:须等于当前 head,使 alembic upgrade head 成为空操作
|
2026-10-09 06:46:36 -04:00
|
|
|
|
-- ---------------------------------------------------------------------------
|
2026-11-01 20:42:53 -05:00
|
|
|
|
-- V16:基础导入与核算预演的隔离工作区;无正式工资写入。
|
|
|
|
|
|
CREATE TABLE tplus_source_heads (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
source_database VARCHAR(128) NOT NULL COMMENT '源账套',
|
|
|
|
|
|
entity_type VARCHAR(32) NOT NULL COMMENT '实体类型',
|
|
|
|
|
|
source_id VARCHAR(64) NOT NULL COMMENT '源内部ID',
|
|
|
|
|
|
record_id BIGINT UNSIGNED NOT NULL COMMENT '原始快照ID',
|
|
|
|
|
|
batch_no VARCHAR(32) NOT NULL COMMENT '最后观察批次',
|
|
|
|
|
|
CONSTRAINT pk_tplus_source_heads PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_tplus_source_heads_source_entity_id UNIQUE (source_database, entity_type, source_id)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+ 源当前快照指针(按成功全量批次读取,删除不自动回写业务表)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_tplus_source_heads_batch_entity ON tplus_source_heads (batch_no, entity_type);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE tplus_facts (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
source_database VARCHAR(128) NOT NULL COMMENT '源账套',
|
|
|
|
|
|
kind VARCHAR(32) NOT NULL COMMENT '事实类别',
|
|
|
|
|
|
fact_key VARCHAR(128) NOT NULL COMMENT '事实业务键',
|
|
|
|
|
|
version INTEGER NOT NULL COMMENT '版本号',
|
|
|
|
|
|
data_json JSON NOT NULL COMMENT '经校验的事实内容',
|
|
|
|
|
|
evidence VARCHAR(500) NOT NULL COMMENT '依据和修改原因',
|
|
|
|
|
|
requested_by BIGINT UNSIGNED NOT NULL COMMENT '操作者ID',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_tplus_facts PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_tplus_facts_source_kind_key_version UNIQUE (source_database, kind, fact_key, version)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+ 人工补充事实版本表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE tplus_source_links (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
source_database VARCHAR(128) NOT NULL COMMENT '源账套',
|
|
|
|
|
|
entity_type VARCHAR(32) NOT NULL COMMENT '实体类型',
|
|
|
|
|
|
source_id VARCHAR(64) NOT NULL COMMENT '源内部ID',
|
|
|
|
|
|
target_id BIGINT UNSIGNED NOT NULL COMMENT '业务目标ID',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_tplus_source_links PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_tplus_source_links_source_entity_id UNIQUE (source_database, entity_type, source_id),
|
|
|
|
|
|
CONSTRAINT uk_tplus_source_links_entity_target UNIQUE (entity_type, target_id)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+ 基础数据源目标关联' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE tplus_work_runs (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
run_no VARCHAR(32) NOT NULL COMMENT '运行编号',
|
|
|
|
|
|
request_key VARCHAR(36) NOT NULL COMMENT '请求幂等键',
|
|
|
|
|
|
kind VARCHAR(32) NOT NULL COMMENT 'MASTER_PREVIEW/MASTER_APPLY/CALC_PREVIEW',
|
|
|
|
|
|
status VARCHAR(16) NOT NULL COMMENT '运行状态',
|
|
|
|
|
|
source_database VARCHAR(128) NOT NULL COMMENT '固定源账套',
|
|
|
|
|
|
requested_by BIGINT UNSIGNED NOT NULL COMMENT '操作者ID',
|
|
|
|
|
|
input_json JSON NOT NULL COMMENT '请求输入',
|
|
|
|
|
|
snapshot_json JSON COMMENT '规则和补充资料的固定快照',
|
|
|
|
|
|
snapshot_hash VARCHAR(64) COMMENT '输入指纹',
|
|
|
|
|
|
summary_json JSON COMMENT '结果汇总',
|
|
|
|
|
|
error_code VARCHAR(64) COMMENT '固定错误编码',
|
|
|
|
|
|
started_at DATETIME COMMENT '开始时间',
|
|
|
|
|
|
finished_at DATETIME COMMENT '结束时间',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_tplus_work_runs PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_tplus_work_runs_run_no UNIQUE (run_no),
|
|
|
|
|
|
CONSTRAINT uk_tplus_work_runs_request_key UNIQUE (request_key)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+ 导入与预演运行表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_tplus_work_runs_status_id ON tplus_work_runs (status, id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE tplus_work_lines (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
run_no VARCHAR(32) NOT NULL COMMENT '运行编号',
|
|
|
|
|
|
line_no INTEGER NOT NULL COMMENT '稳定行序号',
|
|
|
|
|
|
entity_type VARCHAR(32) NOT NULL COMMENT '实体或分组类型',
|
|
|
|
|
|
source_id VARCHAR(128) NOT NULL COMMENT '源ID或平账组',
|
|
|
|
|
|
action VARCHAR(32) NOT NULL COMMENT '新增/更新/跳过/待补/冲突/分配',
|
|
|
|
|
|
reason VARCHAR(128) COMMENT '固定原因编码',
|
|
|
|
|
|
data_json JSON NOT NULL COMMENT '最小必要的业务明细',
|
|
|
|
|
|
CONSTRAINT pk_tplus_work_lines PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_tplus_work_lines_run_line UNIQUE (run_no, line_no)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+ 导入预览与核算预演明细' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
2026-10-09 06:46:36 -04:00
|
|
|
|
CREATE TABLE alembic_version (
|
|
|
|
|
|
version_num VARCHAR(32) NOT NULL,
|
|
|
|
|
|
CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
|
|
|
|
|
|
)CHARSET=utf8mb4 ENGINE=InnoDB COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
2026-11-02 22:20:55 -05:00
|
|
|
|
|
2026-11-01 20:42:53 -05:00
|
|
|
|
|
|
|
|
|
|
-- 正式工资输入、FIFO过程及生成锁定;新增表,不改写历史结果。
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE payroll_months (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
month VARCHAR(7) NOT NULL COMMENT '工资月份',
|
|
|
|
|
|
maker_id BIGINT UNSIGNED NOT NULL COMMENT '实际工资制作人账号ID',
|
|
|
|
|
|
maker_name VARCHAR(64) NOT NULL COMMENT '制作人用户名快照',
|
|
|
|
|
|
generated_at DATETIME COMMENT '首次成功生成时间(不可解锁)',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_payroll_months PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_payroll_months_month UNIQUE (month)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='工资月份控制表(首次生成即锁定分配,审批不解锁)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE payroll_inputs (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
business_id BIGINT UNSIGNED NOT NULL COMMENT '正式业务ID',
|
|
|
|
|
|
version INTEGER NOT NULL COMMENT '输入版本',
|
|
|
|
|
|
source_database VARCHAR(128) NOT NULL COMMENT '源账套或人工来源',
|
|
|
|
|
|
group_key VARCHAR(128) NOT NULL COMMENT '独立业务平账组',
|
|
|
|
|
|
fingerprint VARCHAR(64) NOT NULL COMMENT '来源及事实指纹',
|
|
|
|
|
|
data_json JSON NOT NULL COMMENT '经核实的源数据及人工事实快照',
|
|
|
|
|
|
requested_by BIGINT UNSIGNED NOT NULL COMMENT '录入人账号ID',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_payroll_inputs PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_payroll_inputs_business_version UNIQUE (business_id, version)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='正式工资输入版本表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_payroll_inputs_source_group ON payroll_inputs (source_database, group_key);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE payroll_allocations (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
ledger_id BIGINT UNSIGNED NOT NULL COMMENT '所属正式台账ID',
|
|
|
|
|
|
business_id BIGINT UNSIGNED NOT NULL COMMENT '正式业务ID',
|
|
|
|
|
|
line_no INTEGER NOT NULL COMMENT '本台账稳定明细序号',
|
|
|
|
|
|
input_id BIGINT UNSIGNED NOT NULL COMMENT '所用输入版本ID',
|
|
|
|
|
|
amount NUMERIC(14, 2) NOT NULL COMMENT '分配回款金额',
|
|
|
|
|
|
data_json JSON NOT NULL COMMENT '单据、成本、归属、参数和逐段计算依据',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_payroll_allocations PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_payroll_allocations_ledger_line UNIQUE (ledger_id, line_no)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='正式FIFO分配明细表' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_payroll_allocations_business_id ON payroll_allocations (business_id);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE tplus_automation_states (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
source_key VARCHAR(64) NOT NULL COMMENT '源连接身份摘要(不含凭据)',
|
|
|
|
|
|
source_database VARCHAR(128) NOT NULL COMMENT '源账套',
|
|
|
|
|
|
scheduled_period VARCHAR(16) COMMENT '最近已排队ISO周',
|
|
|
|
|
|
root_batch_no VARCHAR(32) COMMENT '本周期原始采集批次',
|
|
|
|
|
|
current_batch_no VARCHAR(32) COMMENT '当前原始或重试批次',
|
|
|
|
|
|
retry_attempts INTEGER NOT NULL COMMENT '本周期自动重试次数' DEFAULT '0',
|
|
|
|
|
|
next_retry_at DATETIME COMMENT '下一次自动重试时间',
|
|
|
|
|
|
last_success_at DATETIME COMMENT '最近成功采集时间',
|
|
|
|
|
|
maintenance_at DATETIME COMMENT '最近周期检查时间',
|
|
|
|
|
|
heartbeat_at DATETIME COMMENT '独立进程心跳时间',
|
|
|
|
|
|
worker_owner VARCHAR(36) COMMENT '当前持锁进程身份',
|
|
|
|
|
|
worker_phase VARCHAR(16) NOT NULL COMMENT '进程状态:IDLE/RUNNING/STOPPED' DEFAULT 'STOPPED',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_tplus_automation_states PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_tplus_automation_states_source_key UNIQUE (source_key)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+自动采集周期与进程状态(不自动导入正式业务)' COLLATE utf8mb4_general_ci;
|
2026-11-02 22:20:55 -05:00
|
|
|
|
|
|
|
|
|
|
-- V22 完整权限管理;原有账号与工资数据保留。
|
|
|
|
|
|
CREATE TABLE authorization_settings (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '单例主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
maker_user_id BIGINT UNSIGNED COMMENT '现任工资制作人账号ID',
|
|
|
|
|
|
revision INTEGER NOT NULL COMMENT '全局授权版本' DEFAULT '1',
|
|
|
|
|
|
updated_by BIGINT UNSIGNED COMMENT '最近修改人ID',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_authorization_settings PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT fk_authorization_settings_maker_user_id FOREIGN KEY(maker_user_id) REFERENCES users (id) ON DELETE RESTRICT,
|
|
|
|
|
|
CONSTRAINT fk_authorization_settings_updated_by FOREIGN KEY(updated_by) REFERENCES users (id) ON DELETE SET NULL
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='授权设置表(单例与并发修改锁)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE user_permission_overrides (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
user_id BIGINT UNSIGNED NOT NULL COMMENT '系统用户ID',
|
|
|
|
|
|
permission_id BIGINT UNSIGNED NOT NULL COMMENT '权限ID',
|
|
|
|
|
|
effect VARCHAR(8) NOT NULL COMMENT '个人覆盖:ALLOW允许 DENY禁止',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_user_permission_overrides PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_user_permission_overrides_user_permission UNIQUE (user_id, permission_id),
|
|
|
|
|
|
CONSTRAINT fk_user_permission_overrides_user_id FOREIGN KEY(user_id) REFERENCES users (id) ON DELETE CASCADE,
|
|
|
|
|
|
CONSTRAINT fk_user_permission_overrides_permission_id FOREIGN KEY(permission_id) REFERENCES permissions (id) ON DELETE RESTRICT
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='用户权限覆盖表(个人禁止优先)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_user_permission_overrides_permission_id ON user_permission_overrides (permission_id);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('dashboard:view','首页:查看',1,1,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:users:view','用户管理:查看',1,2,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:users:create','用户管理:新增',2,3,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:users:update','用户管理:编辑',2,4,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:users:delete','用户管理:删除',2,5,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:users:status','用户管理:变更状态',2,6,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:users:password','用户管理:重置密码',2,7,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:roles:view','角色管理:查看',1,8,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:roles:create','角色管理:新增',2,9,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:roles:update','角色管理:编辑',2,10,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:roles:delete','角色管理:删除',2,11,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:roles:status','角色管理:变更状态',2,12,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:authorization:view','权限与工资制作人:查看',1,13,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:authorization:update','权限与工资制作人:编辑',2,14,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:business_roles:view','岗位角色:查看',1,15,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:business_roles:create','岗位角色:新增',2,16,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:business_roles:update','岗位角色:编辑',2,17,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:business_roles:delete','岗位角色:删除',2,18,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:business_roles:status','岗位角色:变更状态',2,19,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:params:view','计提参数:查看',1,20,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:params:update','计提参数:编辑',2,21,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:params:withdraw','计提参数:撤回参数',2,22,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:params:export','计提参数:导出',2,23,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:params:preview','计提参数:预览',2,24,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:settings:view','公司信息:查看',1,25,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:settings:update','公司信息:编辑',2,26,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:logs:view','日志查询:查看',1,27,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:personnel:view','人员管理:查看',1,28,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:personnel:create','人员管理:新增',2,29,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:personnel:update','人员管理:编辑',2,30,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:personnel:delete','人员管理:删除',2,31,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:personnel:status','人员管理:变更状态',2,32,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:personnel:regions','人员管理:维护区域',2,33,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:personnel:plans','人员管理:维护计划',2,34,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:products:view','产品管理:查看',1,35,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:products:create','产品管理:新增',2,36,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:products:update','产品管理:编辑',2,37,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:products:delete','产品管理:删除',2,38,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:products:status','产品管理:变更状态',2,39,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:customers:view','客户管理:查看',1,40,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:customers:create','客户管理:新增',2,41,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:customers:update','客户管理:编辑',2,42,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:customers:delete','客户管理:删除',2,43,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:customers:rating','客户管理:客户评级',2,44,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('base:customers:ownership','客户管理:变更归属',2,45,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:businesses:view','业务管理:查看',1,46,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:businesses:create','业务管理:新增',2,47,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:businesses:update','业务管理:编辑',2,48,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:businesses:delete','业务管理:删除',2,49,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:businesses:status','业务管理:变更状态',2,50,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:businesses:ownership','业务管理:变更归属',2,51,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:shipments:view','发货管理:查看',1,52,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:shipments:create','发货管理:新增',2,53,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:shipments:update','发货管理:编辑',2,54,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:shipments:delete','发货管理:删除',2,55,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:receipts:view','回款管理:查看',1,56,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:receipts:create','回款管理:新增',2,57,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:receipts:update','回款管理:编辑',2,58,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:receipts:delete','回款管理:删除',2,59,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:ratings:view','评级标准:查看',1,60,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:ratings:create','评级标准:新增',2,61,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:ratings:update','评级标准:编辑',2,62,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('business:ratings:delete','评级标准:删除',2,63,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('tplus:view','采集与导入:查看',1,64,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('tplus:collect','采集与导入:创建采集',2,65,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('tplus:retry','采集与导入:重试采集',2,66,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('tplus:preview','采集与导入:预览',2,67,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('tplus:import','采集与导入:执行导入',2,68,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('tplus:facts','采集与导入:维护补充资料',2,69,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('tplus:export','采集与导入:导出',2,70,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('payroll:view','正式核算与分配:查看',1,71,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('payroll:prepare','正式核算与分配:准备核算资料',2,72,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('payroll:calculate','正式核算与分配:核算与重算',2,73,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('payroll:allocation','正式核算与分配:修改工资分配',2,74,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('settlements:view','月度工资:查看',1,75,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('settlements:generate','月度工资:生成工资',2,76,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('settlements:submit','月度工资:提交审核',2,77,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('adjustments:view','工资调整:查看',1,78,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('adjustments:create','工资调整:新增',2,79,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('approvals:view','审核记录:查看',1,80,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('approvals:finance','审核记录:财务复核',2,81,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('approvals:leader','审核记录:领导审核',2,82,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('reports:business:view','业务统计:查看',1,83,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('reports:business:export','业务统计:导出',2,84,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('reports:personal:view','个人明细:查看',1,85,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('reports:personal:export','个人明细:导出',2,86,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('reports:department:view','部门汇总:查看',1,87,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('reports:department:export','部门汇总:导出',2,88,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('reports:payments:view','回款统计:查看',1,89,1);
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('reports:payments:export','回款统计:导出',2,90,1);
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:users:view' SET p.parent_id=parent.id WHERE p.perm_code='system:users:create';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:users:view' SET p.parent_id=parent.id WHERE p.perm_code='system:users:update';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:users:view' SET p.parent_id=parent.id WHERE p.perm_code='system:users:delete';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:users:view' SET p.parent_id=parent.id WHERE p.perm_code='system:users:status';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:users:view' SET p.parent_id=parent.id WHERE p.perm_code='system:users:password';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:roles:view' SET p.parent_id=parent.id WHERE p.perm_code='system:roles:create';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:roles:view' SET p.parent_id=parent.id WHERE p.perm_code='system:roles:update';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:roles:view' SET p.parent_id=parent.id WHERE p.perm_code='system:roles:delete';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:roles:view' SET p.parent_id=parent.id WHERE p.perm_code='system:roles:status';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:authorization:view' SET p.parent_id=parent.id WHERE p.perm_code='system:authorization:update';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:business_roles:view' SET p.parent_id=parent.id WHERE p.perm_code='system:business_roles:create';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:business_roles:view' SET p.parent_id=parent.id WHERE p.perm_code='system:business_roles:update';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:business_roles:view' SET p.parent_id=parent.id WHERE p.perm_code='system:business_roles:delete';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:business_roles:view' SET p.parent_id=parent.id WHERE p.perm_code='system:business_roles:status';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:params:view' SET p.parent_id=parent.id WHERE p.perm_code='system:params:update';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:params:view' SET p.parent_id=parent.id WHERE p.perm_code='system:params:withdraw';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:params:view' SET p.parent_id=parent.id WHERE p.perm_code='system:params:export';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:params:view' SET p.parent_id=parent.id WHERE p.perm_code='system:params:preview';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:settings:view' SET p.parent_id=parent.id WHERE p.perm_code='system:settings:update';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:personnel:view' SET p.parent_id=parent.id WHERE p.perm_code='base:personnel:create';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:personnel:view' SET p.parent_id=parent.id WHERE p.perm_code='base:personnel:update';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:personnel:view' SET p.parent_id=parent.id WHERE p.perm_code='base:personnel:delete';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:personnel:view' SET p.parent_id=parent.id WHERE p.perm_code='base:personnel:status';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:personnel:view' SET p.parent_id=parent.id WHERE p.perm_code='base:personnel:regions';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:personnel:view' SET p.parent_id=parent.id WHERE p.perm_code='base:personnel:plans';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:products:view' SET p.parent_id=parent.id WHERE p.perm_code='base:products:create';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:products:view' SET p.parent_id=parent.id WHERE p.perm_code='base:products:update';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:products:view' SET p.parent_id=parent.id WHERE p.perm_code='base:products:delete';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:products:view' SET p.parent_id=parent.id WHERE p.perm_code='base:products:status';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:customers:view' SET p.parent_id=parent.id WHERE p.perm_code='base:customers:create';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:customers:view' SET p.parent_id=parent.id WHERE p.perm_code='base:customers:update';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:customers:view' SET p.parent_id=parent.id WHERE p.perm_code='base:customers:delete';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:customers:view' SET p.parent_id=parent.id WHERE p.perm_code='base:customers:rating';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='base:customers:view' SET p.parent_id=parent.id WHERE p.perm_code='base:customers:ownership';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:businesses:view' SET p.parent_id=parent.id WHERE p.perm_code='business:businesses:create';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:businesses:view' SET p.parent_id=parent.id WHERE p.perm_code='business:businesses:update';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:businesses:view' SET p.parent_id=parent.id WHERE p.perm_code='business:businesses:delete';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:businesses:view' SET p.parent_id=parent.id WHERE p.perm_code='business:businesses:status';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:businesses:view' SET p.parent_id=parent.id WHERE p.perm_code='business:businesses:ownership';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:shipments:view' SET p.parent_id=parent.id WHERE p.perm_code='business:shipments:create';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:shipments:view' SET p.parent_id=parent.id WHERE p.perm_code='business:shipments:update';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:shipments:view' SET p.parent_id=parent.id WHERE p.perm_code='business:shipments:delete';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:receipts:view' SET p.parent_id=parent.id WHERE p.perm_code='business:receipts:create';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:receipts:view' SET p.parent_id=parent.id WHERE p.perm_code='business:receipts:update';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:receipts:view' SET p.parent_id=parent.id WHERE p.perm_code='business:receipts:delete';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:ratings:view' SET p.parent_id=parent.id WHERE p.perm_code='business:ratings:create';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:ratings:view' SET p.parent_id=parent.id WHERE p.perm_code='business:ratings:update';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:ratings:view' SET p.parent_id=parent.id WHERE p.perm_code='business:ratings:delete';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='tplus:view' SET p.parent_id=parent.id WHERE p.perm_code='tplus:collect';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='tplus:view' SET p.parent_id=parent.id WHERE p.perm_code='tplus:retry';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='tplus:view' SET p.parent_id=parent.id WHERE p.perm_code='tplus:preview';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='tplus:view' SET p.parent_id=parent.id WHERE p.perm_code='tplus:import';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='tplus:view' SET p.parent_id=parent.id WHERE p.perm_code='tplus:facts';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='tplus:view' SET p.parent_id=parent.id WHERE p.perm_code='tplus:export';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='payroll:view' SET p.parent_id=parent.id WHERE p.perm_code='payroll:prepare';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='payroll:view' SET p.parent_id=parent.id WHERE p.perm_code='payroll:calculate';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='payroll:view' SET p.parent_id=parent.id WHERE p.perm_code='payroll:allocation';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='settlements:view' SET p.parent_id=parent.id WHERE p.perm_code='settlements:generate';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='settlements:view' SET p.parent_id=parent.id WHERE p.perm_code='settlements:submit';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='adjustments:view' SET p.parent_id=parent.id WHERE p.perm_code='adjustments:create';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='approvals:view' SET p.parent_id=parent.id WHERE p.perm_code='approvals:finance';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='approvals:view' SET p.parent_id=parent.id WHERE p.perm_code='approvals:leader';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='reports:business:view' SET p.parent_id=parent.id WHERE p.perm_code='reports:business:export';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='reports:personal:view' SET p.parent_id=parent.id WHERE p.perm_code='reports:personal:export';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='reports:department:view' SET p.parent_id=parent.id WHERE p.perm_code='reports:department:export';
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='reports:payments:view' SET p.parent_id=parent.id WHERE p.perm_code='reports:payments:export';
|
|
|
|
|
|
INSERT INTO roles (role_code,role_name,description,sort_order,status) VALUES ('payroll_maker','工资制作人','指定制作人还需在权限设置中绑定,角色本身不能绕过月份锁',5,1);
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='adjustments:create' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='adjustments:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='approvals:finance' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='approvals:leader' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='approvals:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:create' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:delete' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:ownership' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:rating' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:update' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:create' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:delete' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:plans' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:regions' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:status' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:update' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:products:create' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:products:delete' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:products:status' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:products:update' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:products:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:create' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:delete' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:ownership' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:status' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:update' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:ratings:create' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:ratings:delete' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:ratings:update' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:ratings:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:receipts:create' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:receipts:delete' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:receipts:update' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:receipts:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:shipments:create' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:shipments:delete' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:shipments:update' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:shipments:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='dashboard:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='payroll:allocation' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='payroll:calculate' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='payroll:prepare' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='payroll:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:business:export' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:business:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:department:export' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:department:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:payments:export' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:payments:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:personal:export' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:personal:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='settlements:generate' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='settlements:submit' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='settlements:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:authorization:update' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:authorization:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:business_roles:create' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:business_roles:delete' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:business_roles:status' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:business_roles:update' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:business_roles:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:logs:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:params:export' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:params:preview' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:params:update' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:params:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:params:withdraw' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:roles:create' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:roles:delete' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:roles:status' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:roles:update' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:roles:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:settings:update' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:settings:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:users:create' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:users:delete' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:users:password' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:users:status' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:users:update' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:users:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='tplus:collect' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='tplus:export' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='tplus:facts' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='tplus:import' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='tplus:preview' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='tplus:retry' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='tplus:view' WHERE r.role_code='admin';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:view' WHERE r.role_code='user';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:view' WHERE r.role_code='user';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:products:view' WHERE r.role_code='user';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:view' WHERE r.role_code='user';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:ratings:view' WHERE r.role_code='user';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:receipts:view' WHERE r.role_code='user';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:shipments:view' WHERE r.role_code='user';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:view' WHERE r.role_code='marketing_ops';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:view' WHERE r.role_code='marketing_ops';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:products:view' WHERE r.role_code='marketing_ops';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:view' WHERE r.role_code='marketing_ops';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:ratings:view' WHERE r.role_code='marketing_ops';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:receipts:view' WHERE r.role_code='marketing_ops';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:shipments:view' WHERE r.role_code='marketing_ops';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='adjustments:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='approvals:finance' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='approvals:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:products:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:ratings:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:receipts:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:shipments:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='dashboard:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='payroll:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:business:export' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:business:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:department:export' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:department:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:payments:export' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:payments:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:personal:export' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:personal:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='settlements:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:params:preview' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:params:view' WHERE r.role_code='finance';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='adjustments:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='approvals:leader' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='approvals:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:products:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:ratings:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:receipts:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:shipments:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='dashboard:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='payroll:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:business:export' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:business:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:department:export' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:department:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:payments:export' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:payments:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:personal:export' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:personal:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='settlements:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:params:preview' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:params:view' WHERE r.role_code='leader';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='adjustments:create' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='adjustments:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='approvals:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:create' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:delete' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:ownership' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:rating' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:update' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:customers:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:create' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:delete' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:plans' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:regions' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:status' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:update' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:personnel:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:products:create' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:products:delete' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:products:status' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:products:update' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='base:products:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:create' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:delete' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:ownership' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:status' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:update' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:businesses:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:ratings:create' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:ratings:delete' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:ratings:update' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:ratings:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:receipts:create' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:receipts:delete' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:receipts:update' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:receipts:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:shipments:create' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:shipments:delete' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:shipments:update' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:shipments:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='payroll:allocation' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='payroll:calculate' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='payroll:prepare' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='payroll:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:business:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:department:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:payments:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='reports:personal:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='settlements:generate' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='settlements:submit' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='settlements:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='tplus:collect' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='tplus:export' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='tplus:facts' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='tplus:import' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='tplus:preview' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='tplus:retry' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='tplus:view' WHERE r.role_code='payroll_maker';
|
|
|
|
|
|
INSERT INTO authorization_settings (id,maker_user_id,revision) VALUES (1,NULL,1);
|
|
|
|
|
|
|
|
|
|
|
|
-- V23:系统监控,独立新表,不修改业务及审计数据。
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:monitor:view','系统监控:查看',1,100,1);
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:monitor:view' WHERE r.role_code='admin';
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE monitor_snapshots (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
instance_id VARCHAR(32) NOT NULL COMMENT '应用实例标识',
|
|
|
|
|
|
minute DATETIME NOT NULL COMMENT '采集分钟,北京时间',
|
|
|
|
|
|
sample_count INTEGER NOT NULL COMMENT '实际采样次数',
|
|
|
|
|
|
resources JSON NOT NULL COMMENT '资源均值与采集范围,不含配置',
|
|
|
|
|
|
requests JSON NOT NULL COMMENT '请求汇总与固定耗时直方图',
|
|
|
|
|
|
CONSTRAINT pk_monitor_snapshots PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_monitor_snapshots_instance_minute UNIQUE (instance_id, minute)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='分钟级运行监控快照' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_monitor_snapshots_minute ON monitor_snapshots (minute);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE monitor_request_minutes (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
instance_id VARCHAR(32) NOT NULL COMMENT '应用实例标识',
|
|
|
|
|
|
minute DATETIME NOT NULL COMMENT '请求分钟,北京时间',
|
|
|
|
|
|
method VARCHAR(8) NOT NULL COMMENT 'HTTP方法,固定集合',
|
|
|
|
|
|
route VARCHAR(256) NOT NULL COMMENT '路由模板,不含原始地址及参数',
|
|
|
|
|
|
metrics JSON NOT NULL COMMENT '请求数、状态分类与固定直方图',
|
|
|
|
|
|
CONSTRAINT pk_monitor_request_minutes PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_monitor_request_minutes_endpoint UNIQUE (instance_id, minute, method, route)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='接口分钟级运行统计' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_monitor_request_minutes_minute ON monitor_request_minutes (minute);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE monitor_events (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
instance_id VARCHAR(32) NOT NULL COMMENT '应用实例标识',
|
|
|
|
|
|
kind VARCHAR(24) NOT NULL COMMENT '事件类型,固定集合',
|
|
|
|
|
|
code VARCHAR(64) NOT NULL COMMENT '稳定错误码',
|
|
|
|
|
|
component VARCHAR(128) NOT NULL COMMENT '所属组件或日志模块',
|
|
|
|
|
|
level VARCHAR(16) NOT NULL COMMENT '异常级别',
|
|
|
|
|
|
message VARCHAR(256) NOT NULL COMMENT '通用说明,不保存内部异常文本',
|
|
|
|
|
|
fingerprint VARCHAR(64) COMMENT '同类健康异常合并键',
|
|
|
|
|
|
request_id VARCHAR(32) COMMENT '请求关联编号',
|
|
|
|
|
|
method VARCHAR(8) COMMENT 'HTTP方法',
|
|
|
|
|
|
route VARCHAR(256) COMMENT '路由模板',
|
|
|
|
|
|
status_code INTEGER COMMENT 'HTTP状态码',
|
|
|
|
|
|
duration_ms FLOAT COMMENT '请求耗时,毫秒',
|
|
|
|
|
|
batch_no VARCHAR(32) COMMENT '相关同步批次编号',
|
|
|
|
|
|
first_seen DATETIME NOT NULL COMMENT '首次发生时间',
|
|
|
|
|
|
last_seen DATETIME NOT NULL COMMENT '最近发生时间',
|
|
|
|
|
|
occurrences INTEGER NOT NULL COMMENT '发生或持续采样次数',
|
|
|
|
|
|
resolved_at DATETIME COMMENT '恢复时间,仅用于健康异常',
|
|
|
|
|
|
CONSTRAINT pk_monitor_events PRIMARY KEY (id)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='脱敏诊断事件与异常恢复记录' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_monitor_events_fingerprint ON monitor_events (fingerprint, resolved_at);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_monitor_events_last_seen ON monitor_events (last_seen);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_monitor_events_request_id ON monitor_events (request_id);
|
|
|
|
|
|
|
|
|
|
|
|
-- V24 需求补齐
|
|
|
|
|
|
-- Running upgrade 23b4c5d6e7f8 -> 24c5d6e7f8a9
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE probation_deferrals (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
ledger_id BIGINT UNSIGNED NOT NULL COMMENT '原核算台账版本ID',
|
|
|
|
|
|
personnel_id BIGINT UNSIGNED NOT NULL COMMENT '归属人员ID',
|
|
|
|
|
|
year VARCHAR(4) NOT NULL COMMENT '原计提年度',
|
|
|
|
|
|
month VARCHAR(7) NOT NULL COMMENT '本次计提或应付变化月份',
|
|
|
|
|
|
accrued NUMERIC(14, 2) NOT NULL COMMENT '本次试用期计提额,可负',
|
|
|
|
|
|
eligible NUMERIC(14, 2) NOT NULL COMMENT '满足起付及权重的本次应付差额,可负',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_probation_deferrals PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_probation_deferrals_ledger_id UNIQUE (ledger_id),
|
|
|
|
|
|
CONSTRAINT fk_probation_deferrals_ledger_id FOREIGN KEY(ledger_id) REFERENCES performance_ledgers (id) ON DELETE RESTRICT
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='试用期缓发台账(每个正式台账版本一条)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_probation_deferrals_personnel_id_year ON probation_deferrals (personnel_id, year);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE probation_payments (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
settlement_id BIGINT UNSIGNED COMMENT '月结ID(当月调整单结清时为空)',
|
|
|
|
|
|
adjustment_order_id BIGINT UNSIGNED COMMENT '已生成工资后的结清调整单ID',
|
|
|
|
|
|
personnel_id BIGINT UNSIGNED NOT NULL COMMENT '归属人员ID',
|
|
|
|
|
|
year VARCHAR(4) NOT NULL COMMENT '原累计年度',
|
|
|
|
|
|
month VARCHAR(7) NOT NULL COMMENT '本次实际支付月份',
|
|
|
|
|
|
amount NUMERIC(14, 2) NOT NULL COMMENT '本次补发或扣回金额',
|
|
|
|
|
|
snapshot_json JSON NOT NULL COMMENT '计提、起付权重、门槛及历史补发依据',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_probation_payments PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_probation_payments_settlement_person_year UNIQUE (settlement_id, personnel_id, year),
|
|
|
|
|
|
CONSTRAINT uk_probation_payments_adjustment_order_id UNIQUE (adjustment_order_id),
|
|
|
|
|
|
CONSTRAINT fk_probation_payments_settlement_id FOREIGN KEY(settlement_id) REFERENCES monthly_settlements (id) ON DELETE CASCADE,
|
|
|
|
|
|
CONSTRAINT fk_probation_payments_adjustment_order_id FOREIGN KEY(adjustment_order_id) REFERENCES adjustment_orders (id) ON DELETE RESTRICT
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='试用期年终及后续结清记录(工资生成事务内固化)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
CREATE INDEX idx_probation_payments_personnel_id_year ON probation_payments (personnel_id, year);
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO param_definitions (param_code, param_name, param_group, value_type, unit, dimension_type, value_min, value_max, description, sort_order, status) VALUES ('coefficient.personal.first', '个人户首日比例', '产品系数表', 'DECIMAL', '‰', 'PRODUCT_CATEGORY', '0', NULL, '按产品类别维护;未配置时沿用同日期的通用业务员参数。', 52, 1);
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO param_definitions (param_code, param_name, param_group, value_type, unit, dimension_type, value_min, value_max, description, sort_order, status) VALUES ('coefficient.personal.start', '个人户线性阶段起始比例', '产品系数表', 'DECIMAL', '‰', 'PRODUCT_CATEGORY', '0', NULL, '按产品类别维护;未配置时沿用同日期的通用业务员参数。', 53, 1);
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO param_definitions (param_code, param_name, param_group, value_type, unit, dimension_type, value_min, value_max, description, sort_order, status) VALUES ('coefficient.personal.slope', '个人户线性阶段日斜率', '产品系数表', 'DECIMAL', '‰/天', 'PRODUCT_CATEGORY', '0', NULL, '按产品类别维护;未配置时沿用同日期的通用业务员参数。', 54, 1);
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO param_definitions (param_code, param_name, param_group, value_type, unit, dimension_type, value_min, value_max, description, sort_order, status) VALUES ('coefficient.personal.floor', '个人户超期比例', '产品系数表', 'DECIMAL', '‰', 'PRODUCT_CATEGORY', '0', NULL, '按产品类别维护;未配置时沿用同日期的通用业务员参数。', 55, 1);
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO param_definitions (param_code, param_name, param_group, value_type, unit, dimension_type, value_min, value_max, description, sort_order, status) VALUES ('coefficient.personal.boundary', '个人户线性阶段截止天数', '产品系数表', 'INT', '天', 'PRODUCT_CATEGORY', '1', '3660', '按产品类别维护;未配置时沿用同日期的通用业务员参数。', 56, 1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- 新增模块只授予管理员,普通角色不会随版本扩张权限。
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) SELECT 'system:monitor:view','系统监控:查看',1,100,1 WHERE NOT EXISTS (SELECT 1 FROM permissions WHERE perm_code='system:monitor:view');
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) SELECT 'system:monitor:export','系统监控:导出',2,100,1 WHERE NOT EXISTS (SELECT 1 FROM permissions WHERE perm_code='system:monitor:export');
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:monitor:view' SET p.parent_id=parent.id WHERE p.perm_code='system:monitor:export';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code IN ('system:monitor:view','system:monitor:export') WHERE r.role_code='admin' AND NOT EXISTS (SELECT 1 FROM role_permissions old WHERE old.role_id=r.id AND old.permission_id=p.id);
|
|
|
|
|
|
|
|
|
|
|
|
-- V26:仅允许没有个人权限覆盖的环境应用。
|
|
|
|
|
|
-- 执行前核对 SELECT COUNT(*) FROM user_permission_overrides 的结果为 0;
|
|
|
|
|
|
-- 存在覆盖时先整理为等效角色。Alembic 版本会强制核验,禁止静默忽略。
|
|
|
|
|
|
-- 旧表和历史工资制作人、月份锁定数据均保留。
|
|
|
|
|
|
UPDATE authorization_settings SET maker_user_id=NULL, revision=revision+1 WHERE id=1;
|
|
|
|
|
|
UPDATE permissions SET status=0 WHERE perm_code IN ('system:authorization:view','system:authorization:update');
|
|
|
|
|
|
UPDATE roles SET role_name='工资经办', description='按角色授权维护核算资料、计算工资及生成工资;月份锁定和实际经办人留痕继续生效' WHERE role_code='payroll_maker' AND role_name='工资制作人';
|
|
|
|
|
|
UPDATE roles SET description='管理业务基础资料,具体功能由角色权限配置决定' WHERE role_code='marketing_ops' AND description LIKE '%审批链%';
|
|
|
|
|
|
|
|
|
|
|
|
-- V27:T+ 自动采集设置
|
|
|
|
|
|
CREATE TABLE tplus_automation_configs (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
source_key VARCHAR(64) NOT NULL COMMENT '源连接身份摘要',
|
|
|
|
|
|
source_database VARCHAR(128) NOT NULL COMMENT '源账套',
|
|
|
|
|
|
enabled TINYINT NOT NULL COMMENT '自动采集是否开启:1开启0关闭',
|
|
|
|
|
|
version INTEGER NOT NULL COMMENT '设置版本号,防止并发覆盖',
|
|
|
|
|
|
updated_by BIGINT UNSIGNED NOT NULL COMMENT '最近修改账号ID',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_tplus_automation_configs PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_tplus_automation_configs_source_key UNIQUE (source_key)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+自动采集设置(不含连接凭据)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
-- V28:计提公式模板定义;公式骨架受控,页面只维护名称、说明和参数绑定。
|
|
|
|
|
|
CREATE TABLE calc_template_definitions (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
template_code VARCHAR(32) NOT NULL COMMENT '模板编码,创建后不可修改;岗位表calc_template引用',
|
|
|
|
|
|
template_name VARCHAR(64) NOT NULL COMMENT '模板名称',
|
|
|
|
|
|
formula_type VARCHAR(32) NOT NULL COMMENT '公式骨架类型:linear_decay/fixed_profit/fixed_sales/manager_share/prepay_fixed,创建后不可修改',
|
|
|
|
|
|
params_json JSON NOT NULL COMMENT '骨架参数角色到参数编码的JSON映射',
|
|
|
|
|
|
description VARCHAR(255) NULL COMMENT '模板说明',
|
|
|
|
|
|
sort_order INTEGER NOT NULL DEFAULT 0 COMMENT '显示排序',
|
|
|
|
|
|
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1启用0停用',
|
|
|
|
|
|
is_system TINYINT NOT NULL DEFAULT 0 COMMENT '是否系统模板:1内置(禁删、骨架与编码锁定)0自定义',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_calc_template_definitions PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_calc_template_definitions_template_code UNIQUE (template_code)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='计提公式模板定义表(页面可维护,骨架受控)' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO calc_template_definitions
|
|
|
|
|
|
(template_code, template_name, formula_type, params_json, description, sort_order, status, is_system)
|
|
|
|
|
|
VALUES
|
|
|
|
|
|
('TPL_SALESPERSON_DECAY', '业务员个人户·天数线性递减', 'linear_decay', JSON_OBJECT('start','salesperson.rate.start','slope','salesperson.rate.slope','floor','salesperson.rate.floor','boundary','salesperson.days.boundary'), '分段:≤分界天数 = 起始 − 天数×斜率;>分界天数 = 下限', 10, 1, 1),
|
|
|
|
|
|
('TPL_MANAGER_SHARE', '营销经理·团队与全公司分成', 'manager_share', JSON_OBJECT('team','manager.share.team','company','manager.share.company'), '聚合:本团队业务员绩效×团队比例 + 全公司业务员绩效×公司比例', 20, 1, 1),
|
|
|
|
|
|
('TPL_ENTERPRISE_FIXED', '企业户·固定计提', 'fixed_profit', JSON_OBJECT('rate','enterprise.rate'), '乘法:折算毛利润额 × 固定计提比例', 30, 1, 1),
|
|
|
|
|
|
('TPL_INFO_SALES_FIXED', '信息员·销售额固定比例', 'fixed_sales', JSON_OBJECT('rate','info.rate'), '乘法:本人销售额 × 固定计提比例', 40, 1, 1),
|
|
|
|
|
|
('TPL_PREPAY_FIXED', '预付款·固定计提', 'prepay_fixed', JSON_OBJECT('rate','prepay.rate'), '乘法:预付回款额 × 预付比例', 50, 1, 1);
|
|
|
|
|
|
|
|
|
|
|
|
-- 迁移版本记录:须等于当前 head,使 alembic upgrade head 成为空操作
|
2026-11-06 01:49:06 -05:00
|
|
|
|
INSERT INTO param_definitions (param_code,param_name,param_group,value_type,dimension_type,default_value,description,sort_order,status) SELECT 'receipt.confirmation.enabled','回款人工确认开关','回款确认','BOOL','NONE','1','默认开启。关闭仅跳过人工确认,继续校验凭证等资格;与工资审核独立。',16,1 WHERE NOT EXISTS (SELECT 1 FROM param_definitions WHERE param_code='receipt.confirmation.enabled');
|
|
|
|
|
|
INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) SELECT 'business:receipts:confirm','回款管理:人工确认',2,100,1 WHERE NOT EXISTS (SELECT 1 FROM permissions WHERE perm_code='business:receipts:confirm');
|
|
|
|
|
|
UPDATE permissions p JOIN permissions parent ON parent.perm_code='business:receipts:view' SET p.parent_id=parent.id,p.status=1 WHERE p.perm_code='business:receipts:confirm';
|
|
|
|
|
|
INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='business:receipts:confirm' WHERE r.role_code IN ('admin','payroll_maker') AND NOT EXISTS (SELECT 1 FROM role_permissions old WHERE old.role_id=r.id AND old.permission_id=p.id);
|
|
|
|
|
|
|
|
|
|
|
|
-- V30:业务接入与核算准备解耦;默认关闭自动接入,不执行回填或工资核算。
|
|
|
|
|
|
ALTER TABLE products MODIFY product_category VARCHAR(32) NULL COMMENT '核算分类,NULL=待确认';
|
|
|
|
|
|
ALTER TABLE customers MODIFY customer_type VARCHAR(32) NULL DEFAULT NULL COMMENT '核算客户类型,NULL=待确认';
|
|
|
|
|
|
ALTER TABLE business_items MODIFY product_category VARCHAR(32) NULL COMMENT '核算分类,NULL=待确认';
|
|
|
|
|
|
ALTER TABLE shipments MODIFY freight_amount DECIMAL(14,2) NULL DEFAULT NULL COMMENT '运费金额,NULL=来源待核实';
|
|
|
|
|
|
ALTER TABLE businesses ADD integration_json JSON NULL COMMENT 'T+接入范围及来源人员摘要,非核算快照';
|
|
|
|
|
|
ALTER TABLE tplus_source_heads ADD source_parent_id VARCHAR(64) NULL COMMENT '源父单据ID查询投影', ADD source_customer_id VARCHAR(64) NULL COMMENT '源客户ID查询投影', ADD source_date VARCHAR(10) NULL COMMENT '源业务日期查询投影';
|
|
|
|
|
|
UPDATE tplus_source_heads h JOIN tplus_sync_records r ON r.id=h.record_id SET h.source_parent_id=NULLIF(JSON_UNQUOTE(JSON_EXTRACT(r.payload_json,'$.source_parent_id')),'null'), h.source_customer_id=NULLIF(JSON_UNQUOTE(COALESCE(JSON_EXTRACT(r.payload_json,'$.idcustomer'),JSON_EXTRACT(r.payload_json,'$.idpartner'))),'null'), h.source_date=LEFT(NULLIF(JSON_UNQUOTE(COALESCE(JSON_EXTRACT(r.payload_json,'$.voucherdate'),JSON_EXTRACT(r.payload_json,'$.voucherDate'))),'null'),10);
|
|
|
|
|
|
CREATE INDEX idx_tplus_source_heads_parent ON tplus_source_heads(source_database,entity_type,source_parent_id);
|
|
|
|
|
|
CREATE INDEX idx_tplus_source_heads_customer_date ON tplus_source_heads(source_database,entity_type,source_customer_id,source_date);
|
|
|
|
|
|
CREATE INDEX idx_tplus_source_heads_date ON tplus_source_heads(source_database,entity_type,source_date,id);
|
|
|
|
|
|
CREATE TABLE tplus_business_sync_configs (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
source_database VARCHAR(128) NOT NULL COMMENT '源账套',
|
|
|
|
|
|
enabled INTEGER NOT NULL COMMENT '自动接入是否启用',
|
|
|
|
|
|
start_date DATE NOT NULL COMMENT '业务接入起点',
|
|
|
|
|
|
version INTEGER NOT NULL COMMENT '配置乐观版本',
|
|
|
|
|
|
updated_by BIGINT UNSIGNED NOT NULL COMMENT '授权启用账号',
|
|
|
|
|
|
last_error VARCHAR(64) COMMENT '后台接入暂停原因',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_tplus_business_sync_configs PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_tplus_business_sync_configs_source UNIQUE (source_database)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+业务自动接入设置' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
CREATE TABLE tplus_business_documents (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|
|
|
|
|
source_database VARCHAR(128) NOT NULL COMMENT '源账套',
|
|
|
|
|
|
entity_type VARCHAR(32) NOT NULL COMMENT '源实体',
|
|
|
|
|
|
source_id VARCHAR(64) NOT NULL COMMENT '源单据或明细ID',
|
|
|
|
|
|
source_no VARCHAR(128) COMMENT '原始单号',
|
|
|
|
|
|
record_id BIGINT UNSIGNED NOT NULL COMMENT '当前观察到的源快照ID',
|
|
|
|
|
|
applied_record_id BIGINT UNSIGNED COMMENT '已接入的源快照ID',
|
|
|
|
|
|
fingerprint VARCHAR(64) COMMENT '已应用的业务字段指纹',
|
|
|
|
|
|
business_id BIGINT UNSIGNED COMMENT '关联业务ID',
|
|
|
|
|
|
target_id BIGINT UNSIGNED COMMENT '正式单据或明细ID',
|
|
|
|
|
|
status VARCHAR(24) NOT NULL COMMENT 'APPLIED/PENDING/CONFLICT/EXCLUDED',
|
|
|
|
|
|
reason VARCHAR(128) COMMENT '固定待补或差异编码',
|
|
|
|
|
|
data_json JSON NOT NULL COMMENT '最小必要来源与差异说明',
|
|
|
|
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_tplus_business_documents PRIMARY KEY (id),
|
|
|
|
|
|
CONSTRAINT uk_tplus_business_documents_source_entity_id UNIQUE (source_database, entity_type, source_id)
|
|
|
|
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+业务单据接入与差异账本' COLLATE utf8mb4_general_ci;
|
|
|
|
|
|
CREATE INDEX idx_tplus_business_documents_business_entity ON tplus_business_documents (business_id, entity_type, id);
|
|
|
|
|
|
CREATE INDEX idx_tplus_business_documents_source_status ON tplus_business_documents (source_database, status, id);
|
|
|
|
|
|
|
|
|
|
|
|
-- 运行控制不随开发初始化删除;已有设置保留,新库默认停止。
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS tplus_runtime_controls (
|
|
|
|
|
|
id BIGINT UNSIGNED NOT NULL,
|
|
|
|
|
|
desired_state VARCHAR(16) NOT NULL DEFAULT 'STOPPED',
|
|
|
|
|
|
actual_state VARCHAR(16) NOT NULL DEFAULT 'STOPPED',
|
|
|
|
|
|
worker_phase VARCHAR(16) NOT NULL DEFAULT 'STOPPED',
|
|
|
|
|
|
heartbeat_at DATETIME NULL,
|
|
|
|
|
|
last_error VARCHAR(255) NULL,
|
|
|
|
|
|
host VARCHAR(128) NULL,
|
|
|
|
|
|
platform VARCHAR(32) NULL,
|
|
|
|
|
|
owner VARCHAR(36) NULL,
|
|
|
|
|
|
version INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
|
updated_by BIGINT UNSIGNED NULL,
|
|
|
|
|
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
CONSTRAINT pk_tplus_runtime_control PRIMARY KEY (id)
|
|
|
|
|
|
) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='T+读取服务运行控制';
|
|
|
|
|
|
INSERT IGNORE INTO tplus_runtime_controls (id) VALUES (1);
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO alembic_version (version_num) VALUES ('33e4f5a6b7c8');
|