Files
fad_oa/sql/oa_performance.sql

41 lines
2.2 KiB
SQL

-- ============================================================
-- 个人绩效(与超期/顺延强制管理联动)
-- ============================================================
-- 月度绩效汇总(同一员工同一周期一行)
DROP TABLE IF EXISTS oa_performance_score;
CREATE TABLE oa_performance_score (
id BIGINT NOT NULL AUTO_INCREMENT,
user_id BIGINT NOT NULL,
user_name VARCHAR(64),
period VARCHAR(7) NOT NULL COMMENT '考核周期 YYYY-MM',
base_score INT NOT NULL DEFAULT 100,
deduction INT NOT NULL DEFAULT 0 COMMENT '本周期总扣分(正数)',
bonus INT NOT NULL DEFAULT 0 COMMENT '本周期加分(预留)',
total_score INT NOT NULL DEFAULT 100 COMMENT '= base - deduction + bonus',
grade VARCHAR(4) DEFAULT NULL COMMENT 'A+/A/A-/B+/B/B-/C+/C/C-/D',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY uk_user_period (user_id, period)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='月度绩效汇总';
-- 每一笔扣/加分流水
DROP TABLE IF EXISTS oa_performance_deduction;
CREATE TABLE oa_performance_deduction (
id BIGINT NOT NULL AUTO_INCREMENT,
user_id BIGINT NOT NULL,
user_name VARCHAR(64),
period VARCHAR(7) NOT NULL COMMENT 'YYYY-MM',
source VARCHAR(32) NOT NULL COMMENT 'postpone / overdue30 / manual',
source_type VARCHAR(32) DEFAULT NULL COMMENT 'task/step/requirement',
source_id BIGINT DEFAULT NULL COMMENT '业务表主键',
points INT NOT NULL COMMENT '正=扣 负=加',
reason VARCHAR(500),
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_user_period (user_id, period),
KEY idx_source (source_type, source_id),
UNIQUE KEY uk_dedup (user_id, source, source_type, source_id) COMMENT '同一来源同一业务只扣一次(针对 overdue30 等一次性扣分)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='绩效流水';