← 返回文档中心

价格管理

价格管理

优先级: 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              # 更新

与其他模块的关系

关联模块 关系
查价引擎 每次查价时调用加价计算
销售管理 获取代理商/渠道信息匹配加价规则
结算管理 价格数据用于结算计算
管理后台 加价规则配置界面

技术选型建议