All checks were successful
continuous-integration/drone/push Build is passing
- 新增告警模块 (alerts): 告警规则配置与触发 - 新增成本管理模块 (cost): 成本统计与分析 - 新增配额模块 (quota): 配额管理与限制 - 新增微信模块 (wechat): 微信相关功能接口 - 新增缓存服务 (cache): Redis 缓存封装 - 新增请求日志中间件 (request_logger) - 新增异常处理和链路追踪中间件 - 更新 dashboard 前端展示 - 更新 SDK stats_client 功能
71 lines
2.6 KiB
Python
71 lines
2.6 KiB
Python
"""费用计算相关模型"""
|
||
from datetime import datetime
|
||
from decimal import Decimal
|
||
from sqlalchemy import Column, Integer, String, Text, DECIMAL, SmallInteger, JSON, TIMESTAMP
|
||
from ..database import Base
|
||
|
||
|
||
class ModelPricing(Base):
|
||
"""模型价格配置表"""
|
||
__tablename__ = "platform_model_pricing"
|
||
|
||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||
|
||
# 模型标识
|
||
model_name = Column(String(100), nullable=False, unique=True) # 模型名称,如 gpt-4, claude-3-opus
|
||
provider = Column(String(50)) # 提供商,如 openai, anthropic, 4sapi
|
||
display_name = Column(String(100)) # 显示名称
|
||
|
||
# 价格配置(单位:元/1K tokens)
|
||
input_price_per_1k = Column(DECIMAL(10, 6), default=0) # 输入价格
|
||
output_price_per_1k = Column(DECIMAL(10, 6), default=0) # 输出价格
|
||
|
||
# 或固定价格(每次调用)
|
||
fixed_price_per_call = Column(DECIMAL(10, 6), default=0)
|
||
|
||
# 计费方式
|
||
pricing_type = Column(String(20), default='token') # token / call / hybrid
|
||
|
||
# 备注
|
||
description = Column(Text)
|
||
|
||
status = Column(SmallInteger, default=1) # 0-禁用 1-启用
|
||
created_at = Column(TIMESTAMP, default=datetime.now)
|
||
updated_at = Column(TIMESTAMP, default=datetime.now, onupdate=datetime.now)
|
||
|
||
|
||
class TenantBilling(Base):
|
||
"""租户账单表(月度汇总)"""
|
||
__tablename__ = "platform_tenant_billing"
|
||
|
||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||
|
||
tenant_id = Column(String(50), nullable=False, index=True)
|
||
billing_month = Column(String(7), nullable=False) # 格式: YYYY-MM
|
||
|
||
# 使用量统计
|
||
total_calls = Column(Integer, default=0) # 总调用次数
|
||
total_input_tokens = Column(Integer, default=0) # 总输入token
|
||
total_output_tokens = Column(Integer, default=0) # 总输出token
|
||
|
||
# 费用统计
|
||
total_cost = Column(DECIMAL(12, 4), default=0) # 总费用
|
||
|
||
# 按模型分类的费用明细
|
||
cost_by_model = Column(JSON) # {"gpt-4": 10.5, "claude-3": 5.2}
|
||
|
||
# 按应用分类的费用明细
|
||
cost_by_app = Column(JSON) # {"tools": 8.0, "interview": 7.7}
|
||
|
||
# 状态
|
||
status = Column(String(20), default='pending') # pending / confirmed / paid
|
||
|
||
created_at = Column(TIMESTAMP, default=datetime.now)
|
||
updated_at = Column(TIMESTAMP, default=datetime.now, onupdate=datetime.now)
|
||
|
||
class Config:
|
||
# 联合唯一索引
|
||
__table_args__ = (
|
||
{'mysql_charset': 'utf8mb4'}
|
||
)
|