优先级: P1(业务增长模块)
开发周期: 2 周
管理平台的价格策略,包括多币种支持、加价策略(Markup)、建议售价(RSP)、价格合规检查。
| 功能 | 描述 |
|---|---|
| 多币种管理 | 支持 CNY/USD/EUR/GBP/JPY/THB 等主流币种,实时汇率转换 |
| 加价策略 | 按渠道/代理商/供应商/酒店/时段配置不同的加价规则 |
| RSP 建议 | 根据市场价和采购价,自动计算建议售价 |
| 价格合规 | 检查售价是否符合供应商最低价要求(MAP - Minimum Advertised Price) |
| 价格日历 | 特殊日期(节假日、展会)的价格调整 |
| 价格历史 | 价格变动历史记录和趋势分析 |
| 竞品价格对比 | (P2)抓取竞品价格进行对比分析 |
最终售价(RSP) = 采购价(Net Price) × (1 + 加价率) + 固定加价
加价维度优先级 (从高到低):
1. 代理商级别 + 酒店级别 (最高优先级,针对大客户特殊协议)
2. 渠道级别 + 供应商级别
3. 代理商级别 + 供应商级别
4. 渠道级别 (默认渠道加价)
5. 全局默认加价
-- 币种与汇率表
CREATE TABLE currencies (
code VARCHAR(3) PRIMARY KEY, -- ISO 4217
name VARCHAR(64) NOT NULL,
symbol VARCHAR(8),
exchange_rate DECIMAL(12, 6) NOT NULL, # 相对基准货币(CNY)
base_currency VARCHAR(3) DEFAULT 'CNY',
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- 汇率历史表
CREATE TABLE exchange_rate_history (
id BIGSERIAL PRIMARY KEY,
from_currency VARCHAR(3) NOT NULL,
to_currency VARCHAR(3) NOT NULL,
rate DECIMAL(12, 6) NOT NULL,
source VARCHAR(32) DEFAULT 'manual', -- manual/api/exchangerate
effective_at TIMESTAMPTZ NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 加价策略表
CREATE TABLE markup_rules (
id BIGSERIAL PRIMARY KEY,
rule_name VARCHAR(128) NOT NULL,
priority SMALLINT NOT NULL DEFAULT 0, # 数字越大优先级越高
-- 匹配条件 (可为空,表示不限制)
agent_code VARCHAR(32), # 限定代理商
channel_code VARCHAR(32), # 限定渠道
supplier_code VARCHAR(32), # 限定供应商
hotel_id BIGINT, # 限定酒店
country_code VARCHAR(3), # 限定国家
city_code VARCHAR(8), # 限定城市
date_from DATE, # 有效期起
date_to DATE, # 有效期止
meal_plan VARCHAR(16), # 限定餐型
rate_plan VARCHAR(32), # 限定价格计划
-- 加价规则
markup_type VARCHAR(16) NOT NULL, -- percentage/fixed/mixed
markup_value DECIMAL(8, 4) NOT NULL, # 百分比(如 0.15=15%) 或固定金额
min_markup DECIMAL(8, 2) DEFAULT 0, # 最低加价
max_markup DECIMAL(8, 2), # 最高加价
-- 含税/不含税处理
tax_inclusive BOOLEAN DEFAULT false,
status VARCHAR(20) DEFAULT 'active',
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_markup_rules_priority ON markup_rules (priority DESC);
-- 价格合规规则表 (最低售价限制)
CREATE TABLE price_compliance_rules (
id BIGSERIAL PRIMARY KEY,
supplier_code VARCHAR(32) NOT NULL,
hotel_id BIGINT,
room_type_code VARCHAR(32),
rate_plan VARCHAR(32),
min_gross_rate DECIMAL(12, 2), # 最低售价要求
map_policy VARCHAR(32) DEFAULT 'soft', # soft(警告)/hard(拦截)
date_from DATE,
date_to DATE,
status VARCHAR(20) DEFAULT 'active',
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 特殊日期价格调整表
CREATE TABLE special_dates (
id BIGSERIAL PRIMARY KEY,
date DATE NOT NULL,
date_type VARCHAR(32) NOT NULL, -- holiday/event/low_season
name VARCHAR(128),
country_code VARCHAR(3),
city_code VARCHAR(8),
markup_adjust DECIMAL(8, 4) DEFAULT 0, # 额外加价(正数=加价)
notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
UNIQUE(date, country_code, city_code)
);
# 加价策略 API
GET /api/v1/markup/rules # 加价规则列表
POST /api/v1/markup/rules # 创建加价规则
PUT /api/v1/markup/rules/:id # 更新加价规则
DELETE /api/v1/markup/rules/:id # 删除加价规则
POST /api/v1/markup/simulate # 加价模拟计算
# 请求: { "net_price": 100, "agent_code": "AGT-001", "hotel_id": 123 }
# 响应: { "net_price": 100, "gross_price": 118, "applied_rules": [...], "currency": "CNY" }
# 汇率 API
GET /api/v1/currencies # 币种列表+当前汇率
GET /api/v1/currencies/:code/history # 汇率历史
POST /api/v1/currencies/:code/rate # 手动更新汇率
POST /api/v1/currencies/sync # 同步外部汇率
# 价格合规 API
GET /api/v1/compliance/rules # 合规规则列表
POST /api/v1/compliance/check # 价格合规检查
# 请求: { "supplier_code": "HOTELBEDS", "hotel_id": 123, "gross_price": 150, "net_price": 140 }
# 响应: { "compliant": true/false, "violations": [...], "suggestion": 160 }
# 特殊日期 API
GET /api/v1/special-dates # 特殊日期列表
POST /api/v1/special-dates # 创建
PUT /api/v1/special-dates/:id # 更新
| 关联模块 | 关系 |
|---|---|
| 查价引擎 | 每次查价时调用加价计算 |
| 销售管理 | 获取代理商/渠道信息匹配加价规则 |
| 结算管理 | 价格数据用于结算计算 |
| 管理后台 | 加价规则配置界面 |