文档
03 平台04 媒体供应03_设计

MG-03-001 领域模型

状态说明:以当前有效边界为准。供应执行规则与历史实现证据保留;客户身份、售价、结算、全量旧跨仓契约及图像开放计划不代表当前验收范围。

1. 领域边界

系统分为五个领域:

  1. 身份与访问:用户、客户组和 API Key;
  2. 供给目录:渠道、Credential、Supply、能力和成本;
  3. 公开模型:模型广场、Supply Binding、调度和降级政策;
  4. 执行控制:同步请求、异步任务、Attempt、健康和容量;
  5. 使用与运营:统一使用记录、输出、告警和审计。

图像和视频只共享稳定基础概念。请求 DTO、能力、Provider 请求、执行和结果解析 分别实现。

2. 身份与访问

User

id
email_or_username
password_hash
role                 admin / user
customer_group_id
status               active / disabled
created_at

首版没有个人资料。用户仅用于登录、Key 所有权、权限和使用记录归属。

CustomerGroup

id
name
enabled
request_rate_limit
sync_concurrency_limit
async_concurrency_limit

客户组不携带渠道、价格或调度信息。

Customer Price Book

客户售价与 Provider 成本严格分离:

DefaultPublicModelPrice
public_model_id
material_profile
resolution
billing_mode
amount
currency

UserPublicModelPrice
user_id
public_model_id
material_profile
resolution
billing_mode
amount

默认售价按公开模型和完整规格唯一。用户专属售价必须覆盖一个已有默认售价并继承其币种; 未覆盖时回退到默认售价。价格簿不携带 Channel、Supply、调度或 Provider 成本信息。

APIKey

id
user_id
name
secret_hash
secret_prefix
enabled
expires_at
last_used_at
rate_limit_override
sync_concurrency_override
async_concurrency_override

Key 可以附加 Public Model Allowlist;未配置时继承客户组可用模型。

3. 渠道与供给

Channel

id
media_type           image / video,不可修改
provider_type
name
base_url
enabled
credential_version_id
connection_settings
account_status
created_at
updated_at

Channel 不保存模型能力、价格、优先级、权重或 Public Model Mapping。 Channel 媒体类型在创建时固定;其 Credential、健康、容量和全部 Supply 只服务该媒体类型。 图像 Channel 与视频 Channel 是独立聚合,即使它们连接同一 Provider 账户也不能共用。

ProviderCredentialVersion

Provider Credential 加密且版本化。新 Credential 发布后,新 Attempt 使用新版本; 已提交异步 Attempt 继续绑定旧版本完成查询。

id
channel_id
encrypted_secret
encryption_key_version
created_at
retired_at

Supply

Supply 是调度原子。相同 Provider 模型在协议、能力、分辨率、计费模式或故障隔离 边界不同的情况下必须拆成多个 Supply。

同一 Channel、同一 request profile、同一 431/900/903/933 配置可以发现多个 upstream_model。配置号、能力参数和分辨率均不能代替模型身份。具体 SKU 身份至少 包含 channel_id + media_type + upstream_model + request_profile + variant_key; 分辨率、时长、比例和素材数量进入不可变能力版本。若不同分辨率实际提交不同 upstream_model,必须建立不同 Supply,禁止在调度时临时猜测或复用一个含糊映射。

id
channel_id
media_type             image / video
upstream_model
request_profile
variant_key
display_name
enabled
production_ready
cost_rule_version_id
concurrency_limit
rate_limit               每分钟最多接纳的新尝试数;null 或 0 表示不限速
capability_version
created_at
updated_at

建议唯一性:

(channel_id, upstream_model, request_profile, variant_key)

VideoCapability

supply_id
resolutions
duration_mode          exact / range
durations
min_duration
max_duration
aspect_ratios
min_reference_images
max_reference_images
max_reference_videos
max_reference_audios
max_image_bytes
max_video_bytes
max_audio_bytes
max_reference_video_duration
max_total_material_bytes
prompt_required
prompt_or_image_required
generate_audio
real_person_policy
evidence

0 表示明确不支持;null 表示未知。生产供给的关键字段不能保持未知。

ImageCapability

supply_id
operations
resolutions
aspect_ratios
quality_levels
min_output_count
max_output_count
max_reference_images
supported_response_formats
provider_execution_mode   sync / async / both

图像能力不包含真人政策、视频时长或参考音视频字段。

4. 成本

CostRuleVersion

成本规则发布后不可变。修改价格创建新版本。

id
supply_id
source                 manual / provider_api / adapter_catalog
currency
billing_mode           per_second / per_request / fixed_range / table
charge_on              submit / success / provider_reported
rule
effective_from
source_observed_at
created_at

rule 表达:

  • 每秒单价和最小计费秒数;
  • 固定单次价格;
  • 4–15 秒等固定区间;
  • 分辨率、时长和音频附加费;
  • 失败是否收费。

所有金额使用十进制定点表示。

2026-10-18 拆分:本页只保留领域模型的前半部分;其余章节见 领域模型(续)。

On this page