后端生成闸+多项修复;前端全站更新;QA 审计与报告

后端:
- 新增 celery_health 生成前置闸——无 worker 在线时图片/视频生成入口
  一律 503,防"提交到 ARK 后无人轮询、结果悬空+额度冻结"的数据丢失
- 拼接导出:帧率跟随源众数、字幕逐句重映射、原声/BGM 混音修复
- 资金核算审计脚本 + genesis 账目回填 + 滞留预留清理命令
- 接入 yunqi provider 与豆包 TTS 模型(catalog/migrations/bootstrap 命令)

前端:全站页面更新(pipeline/library/products/projects/team/account 等),
新增共享 pager 分页组件

QA:刷新 function-audit 全量输出,新增 full-qa 报告
文档:BP 产品介绍资料、design/CLAUDE.md

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
zyc
2026-06-15 10:06:15 +08:00
co-authored by Claude Fable 5
parent 890cb9ab67
commit 216a711291
92 changed files with 5114 additions and 2027 deletions
@@ -0,0 +1,46 @@
# Generated by Django 5.1.15 on 2026-06-11 07:14
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("ai", "0002_initial"),
]
operations = [
migrations.AlterField(
model_name="aitask",
name="task_type",
field=models.CharField(
choices=[
("script_generation", "Script Generation"),
("script_optimization", "Script Optimization"),
("product_image", "Product Image"),
("person_image", "Person Image"),
("scene_image", "Scene Image"),
("storyboard", "Storyboard"),
("video_segment", "Video Segment"),
("voiceover", "Voiceover"),
("export", "Export"),
],
max_length=48,
),
),
migrations.AlterField(
model_name="modelconfig",
name="capability",
field=models.CharField(
choices=[
("text", "Text"),
("image", "Image"),
("video", "Video"),
("vision", "Vision"),
("audio", "Audio"),
("export", "Export"),
],
max_length=32,
),
),
]
@@ -0,0 +1,36 @@
# 旁白配音(TTS):给 volcengine provider 补一条语音合成 ModelConfig。
# unit_price=0 时计费走 estimate_cost 默认 ¥1/次(一次=整批旁白合成),与其它能力同口径。
from django.db import migrations
def seed_tts_model(apps, schema_editor):
ModelProvider = apps.get_model("ai", "ModelProvider")
ModelConfig = apps.get_model("ai", "ModelConfig")
provider = ModelProvider.objects.filter(name="volcengine").first()
if provider is None:
return
ModelConfig.objects.get_or_create(
provider=provider,
name="doubao-voice-bigtts",
defaults={
"display_name": "豆包语音合成",
"capability": "audio",
"endpoint": "api/v1/tts",
"unit_price": "0.0000",
},
)
def unseed_tts_model(apps, schema_editor):
ModelConfig = apps.get_model("ai", "ModelConfig")
ModelConfig.objects.filter(name="doubao-voice-bigtts").delete()
class Migration(migrations.Migration):
dependencies = [
("ai", "0003_alter_aitask_task_type_alter_modelconfig_capability"),
]
operations = [
migrations.RunPython(seed_tts_model, unseed_tts_model),
]