## 计费体系 - 团队额度从秒数改为金额(余额/冻结/月消费上限) - 用户限额从秒数改为次数(每日50次/每月1500次) - 新增 billing.py 工具模块(分辨率→像素映射 + token/费用计算) - 扣费流程:预扣制→冻结制(提交冻结预估金额,完成按实际tokens扣费,失败释放) - 允许小额透支(实际费用超预估时余额可变负) - 团队加价比例(markup_percentage),创建团队时必填 ## Token 追踪 - GenerationRecord 新增 tokens_consumed/cost_amount/base_cost_amount - 任务完成时从 Seedance API usage.total_tokens 获取精确值 - 生成页显示预估消耗(tokens + 金额),按团队售价计算 ## 管理后台 - 仪表盘新增利润分析板块(总收入/成本/利润/利润率 + 团队利润排行) - 消费记录新增 Tokens/售价/成本/利润列 - 团队管理:充值改为充金额,新增加价比例设置 - 系统设置:默认限额改为次数,新增基础token单价配置 ## Bug 修复 - 登录弹窗:拖选输入框内容不再误关闭(onClick→mousedown+mouseup) - 视频详情弹窗:遮罩层覆盖全视口(left:76px→0),admin/团管侧栏不再露出 ## UI 增强 - 图片大图预览:上传区和视频详情弹窗的图片支持点击查看大图(ImageLightbox) - 移除 adaptive 比例和智能时长选项,确保 token 预估可精确计算 - 视频详情弹窗显示实际消耗 tokens 和费用 ## 前端全量更新 - 所有页面秒数显示替换为金额(元)和次数(次) - TypeScript 类型全量更新 - API 调用参数同步更新 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
54 lines
2.0 KiB
Python
54 lines
2.0 KiB
Python
# Generated by Django 4.2.29 on 2026-03-20 11:53
|
|
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('accounts', '0008_anomaly_detection_phase2'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.AddField(
|
|
model_name='team',
|
|
name='balance',
|
|
field=models.DecimalField(decimal_places=2, default=0, max_digits=12, verbose_name='团队余额(元)'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='team',
|
|
name='daily_member_spending_default',
|
|
field=models.DecimalField(decimal_places=2, default=50, max_digits=12, verbose_name='新成员默认每日消费限额(元)'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='team',
|
|
name='frozen_amount',
|
|
field=models.DecimalField(decimal_places=2, default=0, max_digits=12, verbose_name='冻结金额(元)'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='team',
|
|
name='markup_percentage',
|
|
field=models.DecimalField(decimal_places=2, default=0, max_digits=5, verbose_name='加价百分比'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='team',
|
|
name='monthly_spending_limit',
|
|
field=models.DecimalField(decimal_places=2, default=-1, max_digits=12, verbose_name='每月消费上限(元)'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='team',
|
|
name='total_spent',
|
|
field=models.DecimalField(decimal_places=2, default=0, max_digits=12, verbose_name='已消费总额(元)'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='user',
|
|
name='daily_generation_limit',
|
|
field=models.IntegerField(default=50, verbose_name='每日生成次数上限'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='user',
|
|
name='monthly_generation_limit',
|
|
field=models.IntegerField(default=1500, verbose_name='每月生成次数上限'),
|
|
),
|
|
]
|