Initial commit: 智能项目定价模型
This commit is contained in:
224
init.sql
Normal file
224
init.sql
Normal file
@@ -0,0 +1,224 @@
|
||||
-- 智能项目定价模型 - 数据库初始化脚本
|
||||
-- 遵循瑞小美字符标准:utf8mb4, utf8mb4_unicode_ci
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET CHARACTER SET utf8mb4;
|
||||
|
||||
-- 使用数据库
|
||||
USE pricing_model;
|
||||
|
||||
-- ============================================================
|
||||
-- M2 核心功能 - 成本核算模块表
|
||||
-- ============================================================
|
||||
|
||||
-- 项目成本明细表(耗材/设备)
|
||||
CREATE TABLE IF NOT EXISTS project_cost_items (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
project_id BIGINT NOT NULL,
|
||||
item_type VARCHAR(20) NOT NULL COMMENT 'material-耗材, equipment-设备',
|
||||
item_id BIGINT NOT NULL,
|
||||
quantity DECIMAL(10,4) NOT NULL,
|
||||
unit_cost DECIMAL(12,4) NOT NULL,
|
||||
total_cost DECIMAL(12,2) NOT NULL COMMENT '= quantity * unit_cost',
|
||||
remark VARCHAR(200),
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_project_id (project_id),
|
||||
INDEX idx_item_type (item_type),
|
||||
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 项目人工成本表
|
||||
CREATE TABLE IF NOT EXISTS project_labor_costs (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
project_id BIGINT NOT NULL,
|
||||
staff_level_id BIGINT NOT NULL,
|
||||
duration_minutes INT NOT NULL,
|
||||
hourly_rate DECIMAL(10,2) NOT NULL COMMENT '记录时的时薪快照',
|
||||
labor_cost DECIMAL(12,2) NOT NULL COMMENT '= duration/60 * hourly_rate',
|
||||
remark VARCHAR(200),
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_project_id (project_id),
|
||||
INDEX idx_staff_level_id (staff_level_id),
|
||||
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (staff_level_id) REFERENCES staff_levels(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 项目成本汇总表
|
||||
CREATE TABLE IF NOT EXISTS project_cost_summaries (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
project_id BIGINT NOT NULL UNIQUE,
|
||||
material_cost DECIMAL(12,2) NOT NULL DEFAULT 0.00,
|
||||
equipment_cost DECIMAL(12,2) NOT NULL DEFAULT 0.00,
|
||||
labor_cost DECIMAL(12,2) NOT NULL DEFAULT 0.00,
|
||||
fixed_cost_allocation DECIMAL(12,2) NOT NULL DEFAULT 0.00,
|
||||
total_cost DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT '最低成本线',
|
||||
calculated_at DATETIME NOT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_project_id (project_id),
|
||||
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ============================================================
|
||||
-- M2 核心功能 - 市场行情模块表
|
||||
-- ============================================================
|
||||
|
||||
-- 竞品机构表
|
||||
CREATE TABLE IF NOT EXISTS competitors (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
competitor_name VARCHAR(100) NOT NULL,
|
||||
address VARCHAR(200),
|
||||
distance_km DECIMAL(5,2),
|
||||
positioning VARCHAR(20) NOT NULL DEFAULT 'medium' COMMENT 'high-高端, medium-中端, budget-大众',
|
||||
contact VARCHAR(50),
|
||||
is_key_competitor TINYINT(1) NOT NULL DEFAULT 0,
|
||||
is_active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_positioning (positioning),
|
||||
INDEX idx_is_key (is_key_competitor)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 竞品价格表
|
||||
CREATE TABLE IF NOT EXISTS competitor_prices (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
competitor_id BIGINT NOT NULL,
|
||||
project_id BIGINT COMMENT '关联本店项目',
|
||||
project_name VARCHAR(100) NOT NULL COMMENT '竞品项目名称',
|
||||
original_price DECIMAL(12,2) NOT NULL,
|
||||
promo_price DECIMAL(12,2),
|
||||
member_price DECIMAL(12,2),
|
||||
price_source VARCHAR(20) NOT NULL COMMENT 'official-官网, meituan-美团, dianping-大众点评, survey-实地调研',
|
||||
collected_at DATE NOT NULL,
|
||||
remark VARCHAR(200),
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_competitor_id (competitor_id),
|
||||
INDEX idx_project_id (project_id),
|
||||
INDEX idx_collected_at (collected_at),
|
||||
FOREIGN KEY (competitor_id) REFERENCES competitors(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 标杆价格表
|
||||
CREATE TABLE IF NOT EXISTS benchmark_prices (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
benchmark_name VARCHAR(100) NOT NULL,
|
||||
category_id BIGINT,
|
||||
min_price DECIMAL(12,2) NOT NULL,
|
||||
max_price DECIMAL(12,2) NOT NULL,
|
||||
avg_price DECIMAL(12,2) NOT NULL,
|
||||
price_tier VARCHAR(20) NOT NULL DEFAULT 'medium' COMMENT 'low-低端, medium-中端, high-高端, premium-奢华',
|
||||
effective_date DATE NOT NULL,
|
||||
remark VARCHAR(200),
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_category_id (category_id),
|
||||
INDEX idx_effective_date (effective_date),
|
||||
FOREIGN KEY (category_id) REFERENCES categories(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 市场分析结果表
|
||||
CREATE TABLE IF NOT EXISTS market_analysis_results (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
project_id BIGINT NOT NULL,
|
||||
analysis_date DATE NOT NULL,
|
||||
competitor_count INT NOT NULL,
|
||||
market_min_price DECIMAL(12,2) NOT NULL,
|
||||
market_max_price DECIMAL(12,2) NOT NULL,
|
||||
market_avg_price DECIMAL(12,2) NOT NULL,
|
||||
market_median_price DECIMAL(12,2) NOT NULL,
|
||||
suggested_range_min DECIMAL(12,2) NOT NULL,
|
||||
suggested_range_max DECIMAL(12,2) NOT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_project_id (project_id),
|
||||
INDEX idx_analysis_date (analysis_date),
|
||||
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ============================================================
|
||||
-- M3 智能功能 - 智能定价与利润模拟模块表
|
||||
-- ============================================================
|
||||
|
||||
-- 定价方案表
|
||||
CREATE TABLE IF NOT EXISTS pricing_plans (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
project_id BIGINT NOT NULL,
|
||||
plan_name VARCHAR(100) NOT NULL,
|
||||
strategy_type VARCHAR(20) NOT NULL DEFAULT 'profit' COMMENT 'traffic-引流款, profit-利润款, premium-高端款',
|
||||
base_cost DECIMAL(12,2) NOT NULL COMMENT '基础成本(快照)',
|
||||
target_margin DECIMAL(5,2) NOT NULL COMMENT '目标毛利率 %',
|
||||
suggested_price DECIMAL(12,2) NOT NULL COMMENT 'AI建议价格',
|
||||
final_price DECIMAL(12,2) COMMENT '最终定价',
|
||||
ai_advice TEXT COMMENT 'AI定价建议原文',
|
||||
is_active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
created_by BIGINT,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_project_id (project_id),
|
||||
INDEX idx_strategy_type (strategy_type),
|
||||
INDEX idx_is_active (is_active),
|
||||
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 利润模拟表
|
||||
CREATE TABLE IF NOT EXISTS profit_simulations (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
pricing_plan_id BIGINT NOT NULL,
|
||||
simulation_name VARCHAR(100) NOT NULL,
|
||||
price DECIMAL(12,2) NOT NULL COMMENT '模拟价格',
|
||||
estimated_volume INT NOT NULL COMMENT '预估客量',
|
||||
period_type VARCHAR(20) NOT NULL DEFAULT 'monthly' COMMENT 'daily-日, weekly-周, monthly-月, yearly-年',
|
||||
estimated_revenue DECIMAL(14,2) NOT NULL COMMENT '预估收入',
|
||||
estimated_cost DECIMAL(14,2) NOT NULL COMMENT '预估总成本',
|
||||
estimated_profit DECIMAL(14,2) NOT NULL COMMENT '预估利润',
|
||||
profit_margin DECIMAL(5,2) NOT NULL COMMENT '利润率 %',
|
||||
breakeven_volume INT NOT NULL COMMENT '盈亏平衡客量',
|
||||
created_by BIGINT,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_pricing_plan_id (pricing_plan_id),
|
||||
INDEX idx_period_type (period_type),
|
||||
FOREIGN KEY (pricing_plan_id) REFERENCES pricing_plans(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 敏感性分析表
|
||||
CREATE TABLE IF NOT EXISTS sensitivity_analyses (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
simulation_id BIGINT NOT NULL,
|
||||
price_change_rate DECIMAL(5,2) NOT NULL COMMENT '价格变动幅度 %',
|
||||
adjusted_price DECIMAL(12,2) NOT NULL COMMENT '调整后价格',
|
||||
adjusted_profit DECIMAL(14,2) NOT NULL COMMENT '调整后利润',
|
||||
profit_change_rate DECIMAL(6,2) NOT NULL COMMENT '利润变动幅度 %',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_simulation_id (simulation_id),
|
||||
FOREIGN KEY (simulation_id) REFERENCES profit_simulations(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ============================================================
|
||||
-- 初始化数据
|
||||
-- ============================================================
|
||||
|
||||
-- 初始化人员级别数据
|
||||
INSERT INTO staff_levels (level_code, level_name, hourly_rate, is_active, created_at, updated_at) VALUES
|
||||
('L1', '初级美容师', 30.00, 1, NOW(), NOW()),
|
||||
('L2', '中级美容师', 50.00, 1, NOW(), NOW()),
|
||||
('L3', '高级美容师', 80.00, 1, NOW(), NOW()),
|
||||
('L4', '资深美容师', 120.00, 1, NOW(), NOW()),
|
||||
('D1', '主治医师', 200.00, 1, NOW(), NOW()),
|
||||
('D2', '副主任医师', 350.00, 1, NOW(), NOW()),
|
||||
('D3', '主任医师', 500.00, 1, NOW(), NOW())
|
||||
ON DUPLICATE KEY UPDATE updated_at = NOW();
|
||||
|
||||
-- 初始化项目分类数据
|
||||
INSERT INTO categories (category_name, parent_id, sort_order, is_active, created_at, updated_at) VALUES
|
||||
('皮肤管理', NULL, 1, 1, NOW(), NOW()),
|
||||
('注射类', NULL, 2, 1, NOW(), NOW()),
|
||||
('光电类', NULL, 3, 1, NOW(), NOW()),
|
||||
('手术类', NULL, 4, 1, NOW(), NOW())
|
||||
ON DUPLICATE KEY UPDATE updated_at = NOW();
|
||||
Reference in New Issue
Block a user