按 2026-11-02 需求补齐计划交付后端能力: - 角色授权:权限目录化,接口统一准入校验,未登记默认拒绝; 管理员判断改为按数据库角色重新判定,防止权限码持有者绕过 - 系统监控:单进程采集资源、请求与异常指标,分钟级聚合, 阈值配置化;敏感配置增加 repr 保护,Redis 密码 URL 转义 - 试用期计提:按回款日判定并写入快照,年度结清与调整单联动; 人员模型补试用期、离职日期与工资版本历史字段 - 计提模板:公式骨架受控,页面维护名称与参数绑定 - T+ 采集:自动化配置表与进度查询 内置角色禁停用保护对齐模块注释;核算规则版本提为常量并 补充批量核算失败堆栈日志。 影响范围:后端全部模块、数据库迁移 V22-V28 验证:uv run ruff check 通过;922 个单元测试全部通过; 集成测试因本机 MySQL 数据卷被其他容器锁定暂未运行
67 lines
5.6 KiB
SQL
67 lines
5.6 KiB
SQL
-- Running upgrade 23b4c5d6e7f8 -> 24c5d6e7f8a9
|
||
|
||
ALTER TABLE personnel ADD COLUMN probation_start_date DATE COMMENT '试用期开始日(含当日)';
|
||
|
||
ALTER TABLE personnel ADD COLUMN regularization_date DATE COMMENT '转正生效日(当日不再属于试用期)';
|
||
|
||
ALTER TABLE personnel ADD COLUMN resignation_date DATE COMMENT '离职生效日(当日起不计基本工资)';
|
||
|
||
ALTER TABLE personnel ADD COLUMN salary_history_json JSON COMMENT '工资标准、岗位及任职资料生效版本';
|
||
|
||
ALTER TABLE products ADD COLUMN source_trade_json JSON COMMENT '最近有效发货数量、含税成交价及源单据快照';
|
||
|
||
ALTER TABLE products ADD COLUMN quantity_price_manual SMALLINT NOT NULL COMMENT '数量单价人工保护:1人工维护 0随源更新' DEFAULT '0';
|
||
|
||
ALTER TABLE settlement_items ADD COLUMN normal_payable_sum NUMERIC(14, 2) NOT NULL COMMENT '当月正常实付绩效' DEFAULT '0';
|
||
|
||
ALTER TABLE settlement_items ADD COLUMN deferred_sum NUMERIC(14, 2) NOT NULL COMMENT '当月试用期缓发变化' DEFAULT '0';
|
||
|
||
ALTER TABLE settlement_items ADD COLUMN probation_payment_sum NUMERIC(14, 2) NOT NULL COMMENT '本月年度补发或扣回' DEFAULT '0';
|
||
|
||
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);
|
||
|
||
|