420 lines
21 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- =====================================================
-- 数据库初始化脚本
-- 数据库: shujuku2_system
-- =====================================================
SET NAMES utf8mb4;
-- 创建数据库
CREATE DATABASE IF NOT EXISTS shujuku2_system DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE shujuku2_system;
-- =====================================================
-- 1. 用户表
-- =====================================================
DROP TABLE IF EXISTS users;
CREATE TABLE users (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
username VARCHAR(50) NOT NULL COMMENT '用户名',
password_hash VARCHAR(255) NOT NULL COMMENT '密码哈希',
name VARCHAR(50) NOT NULL COMMENT '姓名',
email VARCHAR(100) NOT NULL COMMENT '邮箱',
department_id BIGINT COMMENT '部门ID',
role ENUM('admin', 'analyst', 'user', 'guest') DEFAULT 'user' COMMENT '角色',
status ENUM('active', 'inactive') DEFAULT 'active' COMMENT '状态',
auth_source VARCHAR(20) NOT NULL DEFAULT 'local' COMMENT '最近登录来源',
avatar_url VARCHAR(500) COMMENT '头像地址',
mobile VARCHAR(30) COMMENT '手机号',
job_title VARCHAR(100) COMMENT '职位',
dingtalk_user_id VARCHAR(128) COMMENT '钉钉用户ID',
dingtalk_union_id VARCHAR(128) COMMENT '钉钉UnionID',
google_sub VARCHAR(128) COMMENT 'Google账号唯一标识',
department_names TEXT COMMENT '外部部门信息',
dingtalk_department_ids TEXT COMMENT '钉钉部门ID列表(JSON)',
last_login_at DATETIME COMMENT '最后登录时间',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_username (username),
UNIQUE KEY uk_email (email),
INDEX idx_department (department_id),
INDEX idx_role (role),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
-- 插入默认管理员用户 (密码: admin123)
INSERT INTO users (username, password_hash, name, email, role, status) VALUES
('admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iKTVKIUi', '系统管理员', 'admin@company.com', 'admin', 'active');
-- =====================================================
-- 2. 部门表
-- =====================================================
DROP TABLE IF EXISTS departments;
CREATE TABLE departments (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '部门ID',
parent_id BIGINT DEFAULT 0 COMMENT '父部门ID',
name VARCHAR(100) NOT NULL COMMENT '部门名称',
code VARCHAR(50) NOT NULL COMMENT '部门编码',
sort INT DEFAULT 0 COMMENT '排序',
status ENUM('active', 'inactive') DEFAULT 'active' COMMENT '状态',
source VARCHAR(20) NOT NULL DEFAULT 'local' COMMENT '来源',
external_id VARCHAR(64) COMMENT '外部部门ID',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_parent (parent_id),
INDEX idx_code (code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';
-- 插入示例部门
INSERT INTO departments (name, code, sort) VALUES
('总公司', 'ROOT', 1),
('技术部', 'TECH', 2),
('市场部', 'SALES', 3),
('财务部', 'FINANCE', 4),
('运营部', 'OPS', 5);
-- =====================================================
-- 3. 权限表
-- =====================================================
DROP TABLE IF EXISTS permissions;
CREATE TABLE permissions (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '权限ID',
page_key VARCHAR(50) NOT NULL COMMENT '页面标识',
page_name VARCHAR(100) NOT NULL COMMENT '页面名称',
role VARCHAR(20) NOT NULL COMMENT '角色',
allowed BOOLEAN DEFAULT TRUE COMMENT '是否允许',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
UNIQUE KEY uk_page_role (page_key, role)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限表';
-- 插入默认权限配置
INSERT INTO permissions (page_key, page_name, role, allowed) VALUES
('dashboard', '仪表盘', 'admin', TRUE),
('dashboard', '仪表盘', 'analyst', TRUE),
('dashboard', '仪表盘', 'user', TRUE),
('dashboard', '仪表盘', 'guest', TRUE),
('analysis_summary', '监控', 'admin', TRUE),
('analysis_summary', '监控', 'analyst', TRUE),
('analysis_summary', '监控', 'user', TRUE),
('analysis_summary', '监控', 'guest', TRUE),
('analysis_customer_service', '客服', 'admin', TRUE),
('analysis_customer_service', '客服', 'analyst', TRUE),
('analysis_customer_service', '客服', 'user', TRUE),
('analysis_customer_service', '客服', 'guest', TRUE),
('analysis_product_design', '开发', 'admin', TRUE),
('analysis_product_design', '开发', 'analyst', TRUE),
('analysis_product_design', '开发', 'user', TRUE),
('analysis_product_design', '开发', 'guest', TRUE),
('analysis_logistics', '快递', 'admin', TRUE),
('analysis_logistics', '快递', 'analyst', TRUE),
('analysis_logistics', '快递', 'user', TRUE),
('analysis_logistics', '快递', 'guest', TRUE),
('analysis_warehouse', '仓库', 'admin', TRUE),
('analysis_warehouse', '仓库', 'analyst', TRUE),
('analysis_warehouse', '仓库', 'user', TRUE),
('analysis_warehouse', '仓库', 'guest', TRUE),
('analysis_supplier', '供应', 'admin', TRUE),
('analysis_supplier', '供应', 'analyst', TRUE),
('analysis_supplier', '供应', 'user', TRUE),
('analysis_supplier', '供应', 'guest', TRUE),
('analysis_procurement', '采购', 'admin', TRUE),
('analysis_procurement', '采购', 'analyst', TRUE),
('analysis_procurement', '采购', 'user', TRUE),
('analysis_procurement', '采购', 'guest', TRUE),
('analysis_region', '地区', 'admin', TRUE),
('analysis_region', '地区', 'analyst', TRUE),
('analysis_region', '地区', 'user', TRUE),
('analysis_region', '地区', 'guest', TRUE),
('reports', '报表管理', 'admin', TRUE),
('reports', '报表管理', 'analyst', TRUE),
('reports', '报表管理', 'user', FALSE),
('reports', '报表管理', 'guest', FALSE),
('export', '数据导出', 'admin', TRUE),
('export', '数据导出', 'analyst', TRUE),
('export', '数据导出', 'user', FALSE),
('export', '数据导出', 'guest', FALSE),
('alerts', '预警配置', 'admin', TRUE),
('alerts', '预警配置', 'analyst', FALSE),
('alerts', '预警配置', 'user', FALSE),
('alerts', '预警配置', 'guest', FALSE),
('users', '用户管理', 'admin', TRUE),
('users', '用户管理', 'analyst', FALSE),
('users', '用户管理', 'user', FALSE),
('users', '用户管理', 'guest', FALSE),
('settings', '系统设置', 'admin', TRUE),
('settings', '系统设置', 'analyst', FALSE),
('settings', '系统设置', 'user', FALSE),
('settings', '系统设置', 'guest', FALSE);
-- =====================================================
-- 4. 系统配置表
-- =====================================================
CREATE TABLE IF NOT EXISTS system_config (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '配置ID',
config_key VARCHAR(100) NOT NULL COMMENT '配置键',
config_value TEXT COMMENT '配置值',
config_type VARCHAR(20) DEFAULT 'string' COMMENT '配置类型',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_config_key (config_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
-- 插入默认配置
INSERT IGNORE INTO system_config (config_key, config_value, config_type) VALUES
('site_name', '拼多多自动化运营平台', 'string'),
('site_description', '数据分析平台', 'string'),
('logo', '', 'string'),
('favicon', '', 'string'),
('copyright', '© 2024 公司名称. All rights reserved.', 'string'),
('enable_alert', 'true', 'boolean'),
('enable_export', 'true', 'boolean'),
('enable_sso', 'true', 'boolean'),
('default_theme', 'light', 'string'),
('setup_completed', 'false', 'boolean'),
('setup_completed_at', '', 'string');
-- 专用服务密钥与普通配置隔离,升级时不得删除。
CREATE TABLE IF NOT EXISTS system_secrets (
secret_key VARCHAR(120) PRIMARY KEY COMMENT '密钥用途',
secret_value TEXT NOT NULL COMMENT '仅服务端读取的密钥值',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统持久密钥';
-- =====================================================
-- 5. 部门功能页面权限表
-- =====================================================
DROP TABLE IF EXISTS department_page_permissions;
CREATE TABLE department_page_permissions (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '部门页面权限ID',
department_id BIGINT NOT NULL COMMENT '部门ID',
page_key VARCHAR(100) NOT NULL COMMENT '页面标识',
page_name VARCHAR(100) NOT NULL COMMENT '页面名称',
allowed BOOLEAN DEFAULT TRUE COMMENT '是否允许访问',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_department_page (department_id, page_key),
INDEX idx_department_id (department_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门功能页面权限表';
-- =====================================================
-- 6. 认证配置表
-- =====================================================
DROP TABLE IF EXISTS auth_configs;
CREATE TABLE auth_configs (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '配置ID',
auth_base_url VARCHAR(255) COMMENT '认证回调基础地址',
dingtalk_enabled BOOLEAN DEFAULT FALSE COMMENT '是否启用钉钉登录',
dingtalk_app_key VARCHAR(255) COMMENT '钉钉AppKey',
dingtalk_app_secret VARCHAR(255) COMMENT '钉钉AppSecret',
dingtalk_sync_root_dept_id BIGINT DEFAULT 1 COMMENT '钉钉同步根部门ID',
google_enabled BOOLEAN DEFAULT FALSE COMMENT '是否启用Google登录',
google_client_id VARCHAR(255) COMMENT 'Google Client ID',
google_client_secret VARCHAR(255) COMMENT 'Google Client Secret',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='认证配置表';
-- =====================================================
-- 6.1 Redis 配置表
-- =====================================================
DROP TABLE IF EXISTS redis_configs;
CREATE TABLE redis_configs (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '配置ID',
profile_key VARCHAR(64) NOT NULL DEFAULT 'default' COMMENT 'Redis配置标识:default/changzhou',
profile_name VARCHAR(100) COMMENT 'Redis配置名称',
host VARCHAR(255) COMMENT 'Redis主机地址',
port INT NOT NULL DEFAULT 6379 COMMENT 'Redis端口',
password VARCHAR(255) COMMENT 'Redis密码',
db INT NOT NULL DEFAULT 0 COMMENT 'Redis数据库编号',
enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否启用',
is_default BOOLEAN DEFAULT TRUE COMMENT '是否默认',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_redis_configs_default (is_default),
INDEX idx_redis_configs_profile_key (profile_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Redis配置表';
-- =====================================================
-- 7. 预警规则表
-- =====================================================
DROP TABLE IF EXISTS alert_rules;
CREATE TABLE alert_rules (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '规则ID',
name VARCHAR(100) NOT NULL COMMENT '规则名称',
cube_name VARCHAR(50) NOT NULL COMMENT 'Cube模型名',
measure_name VARCHAR(100) NOT NULL COMMENT '监控指标',
dimension_filter JSON COMMENT '维度过滤条件',
`condition` VARCHAR(20) NOT NULL COMMENT '条件: gt/lt/eq/gte/lte',
threshold DECIMAL(18,4) NOT NULL COMMENT '阈值',
time_granularity VARCHAR(20) COMMENT '时间粒度',
time_range VARCHAR(50) COMMENT '时间范围',
notify_channels JSON COMMENT '通知渠道',
severity ENUM('low', 'medium', 'high', 'critical') DEFAULT 'medium' COMMENT '严重程度',
status ENUM('active', 'paused') DEFAULT 'active' COMMENT '状态',
creator_id BIGINT COMMENT '创建者ID',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_status (status),
INDEX idx_cube (cube_name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警规则表';
-- =====================================================
-- 8. 预警记录表
-- =====================================================
DROP TABLE IF EXISTS alert_records;
CREATE TABLE alert_records (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '记录ID',
rule_id BIGINT NOT NULL COMMENT '规则ID',
triggered_at DATETIME NOT NULL COMMENT '触发时间',
actual_value DECIMAL(18,4) NOT NULL COMMENT '实际值',
threshold DECIMAL(18,4) NOT NULL COMMENT '阈值',
status ENUM('triggered', 'acknowledged', 'resolved') DEFAULT 'triggered' COMMENT '状态',
notified_channels JSON COMMENT '已通知渠道',
notification_results JSON COMMENT '通知结果',
acknowledged_by BIGINT COMMENT '确认人ID',
acknowledged_at DATETIME COMMENT '确认时间',
resolved_at DATETIME COMMENT '解决时间',
INDEX idx_rule_triggered (rule_id, triggered_at),
INDEX idx_status (status),
INDEX idx_triggered (triggered_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警记录表';
-- =====================================================
-- 9. 通知渠道表
-- =====================================================
DROP TABLE IF EXISTS notification_channels;
CREATE TABLE notification_channels (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '渠道ID',
user_id BIGINT NOT NULL COMMENT '用户ID',
channel_type ENUM('wechat', 'email', 'sms', 'dingtalk') NOT NULL COMMENT '渠道类型',
channel_value VARCHAR(255) NOT NULL COMMENT '渠道值(邮箱/手机/企业微信ID)',
is_enabled BOOLEAN DEFAULT TRUE COMMENT '是否启用',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_user (user_id),
INDEX idx_type (channel_type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知渠道表';
-- =====================================================
-- 10. S3 配置表
-- =====================================================
DROP TABLE IF EXISTS s3_configs;
CREATE TABLE s3_configs (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '配置ID',
provider VARCHAR(20) NOT NULL COMMENT '提供商: aws/aliyun/tencent/qiniu/minio/custom',
endpoint VARCHAR(255) COMMENT 'S3 Endpoint',
region VARCHAR(50) COMMENT 'S3区域',
zone VARCHAR(32) COMMENT '厂商区域短码,例如 z0',
protocol VARCHAR(10) NOT NULL DEFAULT 'https' COMMENT '访问协议',
storage_class VARCHAR(32) NOT NULL DEFAULT 'STANDARD' COMMENT '默认存储类型',
bucket VARCHAR(100) NOT NULL COMMENT '存储桶名称',
access_key_id VARCHAR(255) NOT NULL COMMENT 'Access Key ID',
secret_access_key VARCHAR(255) NOT NULL COMMENT 'Secret Access Key',
custom_domain VARCHAR(255) COMMENT '自定义域名',
cdn_url VARCHAR(255) COMMENT 'CDN地址',
is_default BOOLEAN DEFAULT FALSE COMMENT '是否默认',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='S3配置表';
-- =====================================================
-- 11. 数据库配置表
-- =====================================================
DROP TABLE IF EXISTS database_configs;
CREATE TABLE database_configs (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '配置ID',
name VARCHAR(100) NOT NULL COMMENT '配置名称',
driver VARCHAR(20) NOT NULL COMMENT '驱动: mysql/postgresql',
host VARCHAR(255) NOT NULL COMMENT '主机地址',
port INT NOT NULL DEFAULT 3306 COMMENT '端口',
database_name VARCHAR(100) NOT NULL COMMENT '数据库名',
username VARCHAR(100) NOT NULL COMMENT '用户名',
password VARCHAR(255) COMMENT '密码',
`ssl` BOOLEAN DEFAULT TRUE COMMENT '是否SSL',
ssl_ca TEXT COMMENT 'SSL CA证书',
max_pool_size INT DEFAULT 10 COMMENT '最大连接池',
query_timeout INT DEFAULT 300 COMMENT '查询超时(秒)',
use_env_config BOOLEAN DEFAULT FALSE COMMENT '是否优先使用 .env 业务数据库配置',
is_default BOOLEAN DEFAULT FALSE COMMENT '是否默认',
status ENUM('active', 'inactive') DEFAULT 'active' COMMENT '状态',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据库配置表';
-- =====================================================
-- 12. 操作日志表
-- =====================================================
DROP TABLE IF EXISTS operation_logs;
CREATE TABLE operation_logs (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '日志ID',
user_id BIGINT COMMENT '用户ID',
action VARCHAR(50) NOT NULL COMMENT '操作类型',
module VARCHAR(50) NOT NULL COMMENT '模块',
description TEXT COMMENT '操作描述',
ip_address VARCHAR(45) COMMENT 'IP地址',
user_agent TEXT COMMENT 'User Agent',
request_params TEXT COMMENT '请求参数',
response_status INT COMMENT '响应状态',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_user (user_id),
INDEX idx_action (action),
INDEX idx_module (module),
INDEX idx_created (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志表';
-- =====================================================
-- 11. KPI目标值配置表
-- =====================================================
DROP TABLE IF EXISTS sys_kpi_targets;
CREATE TABLE sys_kpi_targets (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '配置ID',
page_code VARCHAR(50) NOT NULL COMMENT '页面编码',
kpi_code VARCHAR(50) NOT NULL COMMENT '指标编码',
kpi_name VARCHAR(100) NOT NULL COMMENT '指标名称',
unit VARCHAR(20) DEFAULT '' COMMENT '单位',
direction VARCHAR(10) DEFAULT 'lower' COMMENT '越低越好lower/越高越好higher',
target_good DECIMAL(18, 4) COMMENT '优秀线',
target_pass DECIMAL(18, 4) COMMENT '达标线',
target_warn DECIMAL(18, 4) COMMENT '预警线',
is_enabled TINYINT(1) DEFAULT 1 COMMENT '是否启用',
sort_order INT DEFAULT 0 COMMENT '排序',
remark VARCHAR(200) DEFAULT '' COMMENT '备注',
created_by BIGINT COMMENT '创建人',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_by BIGINT COMMENT '更新人',
updated_at DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_page_kpi (page_code, kpi_code),
INDEX idx_page (page_code),
INDEX idx_enabled (is_enabled)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='KPI目标值配置表';
-- 插入默认KPI目标值配置
INSERT INTO sys_kpi_targets (page_code, kpi_code, kpi_name, unit, direction, target_good, target_pass, target_warn, sort_order) VALUES
-- 客服分析
('customerService', 'refundProcessTime', '退款处理时长', 'h', 'lower', 12, 24, 48, 1),
('customerService', 'disputeRate', '纠纷判责率', '%', 'lower', 10, 20, 30, 2),
('customerService', 'compensationRate', '赔付率', '%', 'lower', 0.3, 0.5, 1, 3),
('customerService', 'avgCompensation', '单笔平均赔付', '元', 'lower', 30, 50, 80, 4),
('customerService', 'labelRate', '打标完成率', '%', 'higher', 98, 90, 80, 5),
-- 仓库分析
('warehouse', 'sameDayShipRate', '当日发货率', '%', 'higher', 98, 95, 90, 1),
('warehouse', 'wrongShipRate', '错发漏发率', '%', 'lower', 0.2, 0.5, 1, 2),
('warehouse', 'nextDayRate', '次日达占比', '%', 'higher', 50, 30, 20, 3),
('warehouse', 'inventoryTurnover', '库存周转率', '次/月', 'higher', 10, 6, 4, 4),
-- 快递分析
('logistics', 'pickupRate24h', '24h揽收及时率', '%', 'higher', 98, 95, 90, 1),
('logistics', 'avgDeliveryTime', '平均物流时长', 'h', 'lower', 48, 72, 96, 2),
('logistics', 'abnormalRate', '物流异常率', '%', 'lower', 1, 2, 5, 3),
('logistics', 'lostDamageRate', '丢件破损率', '%', 'lower', 0.2, 0.5, 1, 4),
-- 供应商分析
('supplier', 'qualityRefundRate', '品质退款率', '%', 'lower', 1.5, 3, 5, 1),
('supplier', 'defectRate', '次品率', '%', 'lower', 1, 2, 3, 2),
('supplier', 'shipTimelyRate', '发货及时率', '%', 'higher', 98, 95, 90, 3),
-- 采购分析
('procurement', 'purchaseRefundRate', '采购SKU退款率', '%', 'lower', 1.5, 3, 5, 1),
('procurement', 'dropshipTimelyRate', '代发准时率', '%', 'higher', 98, 95, 90, 2),
('procurement', 'stockoutImpactRate', '缺货影响订单率', '%', 'lower', 0.5, 1, 2, 3),
-- 开发分析
('productDesign', 'designAttributionRate', '开发归因退款率', '%', 'lower', 5, 8, 12, 1),
('productDesign', 'firstQualityReturnRate', '首次品退率', '%', 'lower', 1, 2, 3, 2),
('productDesign', 'visualIssueRate', '视觉问题率', '%', 'lower', 2, 5, 8, 3);