Commit Graph

80 Commits

Author SHA1 Message Date
小鱼开发 0e5bef64b8 fix: 移除 response_format=json_object,改为依赖 prompt 约束
回退上一条推断式修复(模型名匹配没有官方依据)。
改为在 script_service 调用层直接移除该参数:
- system prompt 已明确要求'只输出纯 JSON'
- safe_parse_ai_json_response 已做容错解析和 markdown 清洗
- 不依赖特定模型对 response_format 的支持
2026-05-04 20:05:38 +08:00
小鱼开发 f10d78f63e fix: 豆包模型不支持 response_format=json_object,添加兼容性判断
doubao-seed-2-0-pro 等豆包系列模型不支持 OpenAI 风格的
response_format.type=json_object 参数,会导致 400 错误。
改为仅对非豆包模型(如 DeepSeek、GPT)传递该参数。
2026-05-04 20:03:38 +08:00
小鱼开发 431c54c258 refactor: 前端脚本生成改为异步任务轮询,精简LLM模型,删除图片生成代码
- 前端:ScriptCreation SSE 流式改为 createTask + pollTask 轮询
- 后端:LLM 仅保留 doubao-seed-2-0-pro,删除降级链及相关模型
- 后端:删除所有图片生成代码(ImageParams/ImageTaskParams/generate_image)
- 更新 platform-config.yaml、model_router、volcengine_provider、tasks 等
2026-05-04 19:58:32 +08:00
小鱼开发 6c0f240369 chore: 删除脚本生成 SSE 流式相关废弃代码 2026-05-04 19:37:30 +08:00
小鱼开发 52ba99e11d refactor: Scheduler 层统一命名 job → task 2026-05-04 19:18:22 +08:00
小鱼开发 82657c2d65 chore: 删除形象克隆相关代码、配置及注释 2026-05-04 19:06:45 +08:00
小鱼开发 7a858caa01 chore: 删除 MockProvider 及相关 mock 代码 2026-05-04 18:58:40 +08:00
小鱼开发 d466539928 fix: 补全 task_defaults 配置,避免脚本生成误走 MockProvider 2026-05-04 18:56:06 +08:00
小鱼开发 a58b2d1f49 chore: 测试环境 docker-compose 显式配置 CORS_ORIGINS 2026-05-04 18:47:05 +08:00
小鱼开发 e58159fc42 refactor: 第三方平台架构改造(Adapter Protocol + Gateway)
Phase 1: 异常体系统一
- 新增 PlatformError / PlatformErrorType 标准定义
- 改造所有 Provider 异常抛出为 PlatformError
- 注册全局 PlatformError exception handler

Phase 2: Adapter Protocol
- 新增 app/ai/adapters/base.py(PlatformAdapter + SyncCapable + TaskCapable + CallbackCapable)
- 新增 app/ai/adapters/constants.py(Method 常量)
- 新增 PlatformConfigLoader(config/platform-config.yaml)

Phase 3: HTTP Client 统一
- ViduProvider 从 aiohttp 迁移到 httpx(注入方式)
- VolcengineCaptionService 改为注入 http_client
- lifespan 统一管理所有 Client 创建和关闭

Phase 4: Gateway 骨架 + Adapter 实现
- 新增 ViduAdapter / VolcengineArkAdapter / VolcengineCaptionAdapter
- 新增 PlatformGateway(call_sync / submit_task / query_task / handle_webhook)
- 新增 LLMGateway(带 Fallback 降级链)
- lifespan 注册所有 Adapter 和 Gateway

Phase 6: 清理与验证
- 从 Settings 移除 VIDU_BASE_URL / VOLCENGINE_BASE_URL
- Provider 改为从 PlatformConfigLoader 读取 base_url
- 清理 volcengine_caption_service 全局单例
- config_loader 默认路径改为 platform-config.yaml
- Scheduler 注入共享 HTTP client
- vidu.py 回调路由使用 Adapter 验签和解析
- ruff 全量通过,应用启动测试通过
2026-05-04 16:07:16 +08:00
小鱼开发 0c921aca11 chore: 清理废弃代码和文档
- 删除 anytocopy 相关文件(service、handler、文档)
- 删除 KlingAI / MiniMax 开发文档
- 删除 database-design、mvp-lip-sync-replacement 等过时文档
- 删除旧的 docker-compose.yml(已拆分为 dev/test/prod)
- 删除 config/ai_models.yaml(已合并到 platform-config.yaml)
- 从 .env.example 移除 anytocopy 配置
- 从 tasks.py、schemas 移除 copy 任务类型
2026-05-04 16:06:25 +08:00
小鱼开发 d28227f779 chore: 同步 uv.lock,补全 tenacity 依赖 2026-05-02 23:17:25 +08:00
小鱼开发 e262134148 refactor: 移除 KlingAI 和 MiniMax 相关代码
删除内容:
- KlingAI Provider、MiniMax Provider
- Kling 视频/图片/TTS/语音克隆/形象克隆 Service 和 Scheduler Handler
- 已废弃的 TTSService、VoiceCloneService
- config 中 KLINGAI_*/MINIMAX_* 配置项
- ai_models.yaml 中 klingai 平台和模型配置
- docker-compose 中相关环境变量
- .env.example 中相关配置示例
- deploy-test.sh 中相关检查
- Makefile 中 klingai 语义检查排除规则
- KlingTaskStatus 枚举

修改内容:
- model_router.py 移除 KlingAI 平台分支
- voice.py 重写,修复批量合成/文件保存中 service 未定义的 Bug
- vidu_service.py 移除 MiniMax 相关注释
- script_handler.py 更新注释
2026-05-02 23:16:14 +08:00
小鱼开发 70a87465b5 chore: unregister unused KlingAI/MiniMax handlers and imports
- Remove KlingAI handlers (video, avatar, image, tts) from scheduler registration
- Remove MiniMaxTTSService import from voice.py (deprecated, migrated to Vidu)
- Keep source files for future reference
2026-05-02 22:47:33 +08:00
小鱼开发 9299891a7f fix: merge duplicate ViduService class definitions
- Remove redundant second ViduService class that shadowed __init__
- Clean up unnecessary fallback code in get_vidu_service and global exception handler
2026-05-02 22:26:37 +08:00
小鱼开发 22057f27fa fix(vidu): move get_preset_voices to module level 2026-05-02 22:05:23 +08:00
小鱼开发 68e354b5a3 chore(deps): add tenacity for retry logic 2026-05-02 21:56:37 +08:00
小鱼开发 ab9962d333 refactor(vidu): reusable session, semaphore, retry, lifespan management
- vidu_provider: single ClientSession with TCP connector pool and explicit timeouts
- vidu_service: Semaphore(10) concurrency limit + tenacity retry (3 attempts, exponential backoff)
- voice/vidu routes: use FastAPI Depends injection instead of new Service() per request
- main.py: initialize Vidu Provider & Service in lifespan, close on shutdown
- add tenacity to dependencies
- remove vidu_tts_service.py
2026-05-02 21:55:20 +08:00
小鱼开发 02b5a89eaf refactor(script): add timeout and error handling for polish/title
- Add 15s asyncio.timeout() to polish_content and generate_title
- Add try/except to /polish route for unified error response
- Add asyncio.TimeoutError handling to /generate-title route
2026-05-02 21:23:50 +08:00
小鱼开发 feddeed950 refactor(script): remove sync endpoint, add thread-pool & timeout
- Remove unused POST /script/generate sync endpoint and frontend generate()
- Move JSON parsing/validation to asyncio.to_thread() to avoid event-loop blocking
- Add 60s asyncio.timeout() around entire script generation pipeline
- Migrate volcengine_provider to unified AsyncArk client
2026-04-30 23:51:30 +08:00
小鱼开发 08a430ad9d refactor: type-driven project meta persistence & remove fallback code
Frontend:
- Extract ProjectMeta to types/project.ts as single source of truth
- Add utils/projectMeta.ts with buildProjectMeta(), migrateMeta(), BLANK_META_OVERRIDES
- Refactor saveMetaToLocalFile() from 50+ lines to ~10 lines
- Refactor initProjectStore() with BLANK_META_OVERRIDES to prevent field leakage
- Fix createNewProject() reset logic using BLANK_META_OVERRIDES
- Remove all actualDuration/audioStartTime/audioEndTime fallback in VideoGeneration.tsx
- Add strict assertions in computeAssignedIntervals() (missing data throws)
- Remove 4 lines of dead code (commented imports, redundant disabled, dangling JSDoc)
- Pre-fill actualDuration in adaptScriptShots() and ScriptCreation handleFieldChange()
- Fix fs:allow-exists permission scope for external file paths

Backend:
- Fix extract_project_id_from_filename() rsplit bug (always returned None)
- Fix utils.rs path casing ("Projects" -> "projects")
- Add Vidu callback HMAC-SHA256 signature verification with nonce replay protection
- Update docs/vidu-tts-api.md with callback verification chapter
2026-04-30 18:34:22 +08:00
小鱼开发 8cb9e2da12 feat: reload_config 返回错误详情 + 远程配置增加 schema 校验
6. reload_config() 吞掉异常详情:
   - 返回类型从 bool 改为 tuple[bool, str],包含具体错误信息
   - API 层将错误详情返回给前端,便于排查
   - 异常统一记录到日志

8. 远程配置无 schema 校验:
   - 后端新增 MaterialsConfig Pydantic Model 校验 materials.json 结构
   - load_config() 远程/本地配置均先校验再应用,格式错误时抛出明确异常
   - 前端 CoverDesign 新增 isValidBgConfig() 运行时校验 bg-config.json
   - 校验失败时优雅降级到本地配置,避免页面白屏
2026-04-30 16:20:32 +08:00
小鱼开发 35a9eb89ce fix: 修复 material_service 规范问题 + 背景图 fetch 超时 + CSS 死代码
1. material_service.py:
   - 删除未使用的 get_settings 导入
   - 将 import logging 从函数内移到模块顶部

2. CoverDesign.tsx:
   - 远程 bg-config.json fetch 增加 5 秒 AbortController 超时
   - 超时后自动 fallback 到本地配置

3. CoverDesign.css:
   - 删除 .cover-title-overlay/.cover-title-line(旧版 assjs 遗留)
   - 删除 .template-selector/.template-btn 系列(旧版模板选择器)
   - 删除 .cover-bg-options/.cover-bg-option(旧版背景卡片)
   - 删除 .title-input-section/.cover-hint(已废弃样式)
2026-04-30 16:04:52 +08:00
小鱼开发 bdd582bd76 feat: 标题生成提示词区分视频画面与封面场景
后端:
- GenerateTitleRequest 新增 usage 字段(video/cover)
- 根据 usage 渲染不同的场景描述、风格要求、创作注意
- title_system.txt / title.txt 增加  等变量

前端:
- scriptApi.generateTitle 新增 usage 参数
- SubtitleBurning 传 usage: 'video'(视频画面标题)
- CoverDesign 传 usage: 'cover'(封面标题)
2026-04-30 15:55:25 +08:00
小鱼开发 1c31e8126b fix: 合并 materials.json 中重复的 tiling key
JSON 对象中 tiling key 出现两次,后者覆盖前者导致 8 个素材丢失。
合并后共 33 个 tiling 素材,无重复 URL。
2026-04-30 15:44:03 +08:00
小鱼开发 588c2236e6 feat: 封面制作优化 + 素材配置远程化
- 背景图配置改为从七牛云 CDN 远程拉取,支持不发版新增图片
- 删除本地 public/bg/ 图片副本,减小包体积
- 封面制作:'换一组'按钮移至标签右侧、优化按钮样式、删除冗余提示
- 封面制作/视频合成右侧预览区分别添加'封面预览'/'视频预览'标题
- 素材匹配服务支持远程 fetch materials.json + reload API
2026-04-30 15:32:10 +08:00
小鱼开发 3a3cd80ade fix: 标题生成状态独立 + 提示词优化
- 大标题/小标题生成状态分离(isGeneratingMainTitle / isGeneratingSubTitle)
- 修复按钮状态联动问题
- 提示词明确区分主标题(抓眼)与副标题(留人)角色
2026-04-30 13:58:56 +08:00
小鱼开发 475758beed feat: 大小标题支持智能生成
后端:
- 新增 POST /script/generate-title API
- 新增提示词模板 title_system.txt / title.txt(文件管理)
- 根据脚本内容调用 LLM 生成大标题(≤8字)/小标题(≤30字)

前端:
- 大标题/小标题输入框右侧新增【智能生成】按钮
- 点击后根据 utterances 拼接脚本内容调用 API
- 添加 title-input-row / title-generate-btn CSS 样式
2026-04-30 12:09:56 +08:00
小鱼开发 e9dbf4f5fc refactor: 视频生成流程重构 - concat拼接替代全局音频替换
- 新增 generate_empty_shot_clip 原子命令:截取视频→截取音频→替换音频→自动清理临时文件
- 新增 concat_video_clips 命令:直接拼接已标准化片段,零重新编码
- VideoGeneration 改为先生成各分镜标准化片段,再 concat 拼接,不再使用 replace_audio_track
- segment 对口型视频保留自带同步音频,empty_shot 注入对应配音音频
- 删除未使用的单分镜重新生成功能(handleRegenerateShot、useVideoGeneration hook)
- ScriptShot 新增 clipVideoPath 字段
2026-04-30 00:23:11 +08:00
小鱼开发 a2255b2d0d fix: Vidu回调body用id而非task_id作为任务标识 2026-04-28 23:11:56 +08:00
小鱼开发 0698f6833b fix: Vidu对口型任务成功状态从succeeded改为success 2026-04-28 22:50:08 +08:00
小鱼开发 d0a64a9ca6 fix: 测试环境ENV改为staging,移除APP_BASE_URL和CORS_ORIGINS硬编码 2026-04-28 22:07:45 +08:00
小鱼开发 7715305a63 fix: docker-compose.test.yml 从environment中移除DEBUG,改由.env文件控制 2026-04-28 21:50:27 +08:00
小鱼开发 47ec047781 fix: docker-compose.test.yml DEBUG改为从.env读取,不再硬编码false 2026-04-28 21:41:14 +08:00
小鱼开发 51ceb58581 fix: 测试环境认证短路返回测试用户;视频预览区分线上/本地并修复blob revoke 2026-04-28 21:31:18 +08:00
小鱼开发 29829d90df fix: DEBUG模式自动创建测试用户;空镜上传素材按实际分配时长校验 2026-04-28 17:36:33 +08:00
小鱼开发 d419d6732e feat: Vidu 对口型回调机制完整版(B方案)
后端:
- config.py: 新增 APP_BASE_URL 配置,支持 ENV 自动推断公网地址
- vidu.py: POST /lip-sync 自动拼接 callback_url 提交给 Vidu
- vidu.py: 新增 POST /callback 接收 Vidu 异步回调,写入 Redis
- vidu.py: GET /tasks/{id}/status 优先查 Redis,fallback 到 Vidu API

前端:
- types.ts / localStorage.ts: ScriptShot/ProjectSegment 新增 lipSyncVideoPath/VideoUrl/StartTime
- VideoGeneration.tsx: Step 1 提交对口型时保存 lipSyncStartTime(只算一次)
- VideoGeneration.tsx: 新增 Step 2 轮询后端状态(5s×120次),下载对口型视频
- VideoGeneration.tsx: Step 3 拼接时 segment 优先使用对口型视频,startTime=0

部署:
- docker-compose.test.yml / prod.yml: 添加 APP_BASE_URL 环境变量
- .env.example: 添加 APP_BASE_URL 说明

修复:
- 修复 React 闭包陷阱(updateSegment 后 shots 未同步)
- 修复 startTime 不一致(Step1/Step2 各自 random)
2026-04-28 15:23:46 +08:00
小鱼开发 1dcfdede4b fix: docker-compose.test.yml 加载 .env 文件,解决容器内环境变量缺失 2026-04-28 09:36:20 +08:00
小鱼开发 8f1939b1ab chore: 测试服 CORS 允许本地开发地址 localhost:1420 2026-04-27 16:05:35 +08:00
小鱼开发 460c738a9d chore: acme-setup.sh 改用 Let's Encrypt + webroot 模式 2026-04-27 15:41:05 +08:00
小鱼开发 ab545f5560 chore: acme-setup.sh 增加 ZeroSSL 邮箱注册交互 + 临时文件清理 2026-04-27 15:25:15 +08:00
小鱼开发 750339d96f chore: acme-setup.sh 改用 Gitee 镜像 + ZeroSSL,解决国内 GitHub 超时 2026-04-27 15:16:56 +08:00
小鱼开发 1616a2d755 chore: 添加 Nginx + acme.sh HTTPS 配置,更新测试服 CORS
- 新增 nginx/meijiaka-zy.conf: 反向代理 + SSL 配置
- 新增 nginx/acme-setup.sh: acme.sh 一键证书申请脚本
- 新增 nginx/README.md: 部署和证书管理文档
- docker-compose.test.yml: 添加 CORS_ORIGINS=https://dev.tapi.meijiaka.cn
2026-04-27 14:40:48 +08:00
小鱼开发 6f3aca5b9d chore: Dockerfile pip/uv 改用阿里云 PyPI 镜像源 2026-04-27 13:42:46 +08:00
小鱼开发 5b9d57a92a chore: Dockerfile 改用 python:3.13-slim 基础镜像,配合 Docker 镜像加速使用 2026-04-27 12:59:09 +08:00
小鱼开发 5f3d414a48 chore: 对齐测试与生产 Docker 配置
- 新增 .dockerignore,减少构建上下文体积
- 修复 Dockerfile 缺失 config/ 目录复制
- docker-compose.test.yml: DEBUG=false, ENV=production, SECRET_KEY 强制传入
- 新增 docker-compose.dev.yml(开发专用)和 docker-compose.prod.yml(生产专用)
- deploy-test.sh: 加入 SECRET_KEY 强制检查,统一步骤编号
2026-04-27 12:33:06 +08:00
小鱼开发 c59542a189 fix: staging 环境也自动创建数据库表 2026-04-26 23:08:23 +08:00
小鱼开发 773065536c refactor: 统一项目命名为 meijiaka-zy / 美家卡智影
- 中文产品名统一为 美家卡智影
- 代码目录/容器名/数据卷: meijiaka-zy
- 本地存储路径: Meijiaka-zy
- 数据库名: meijiaka_zy
- 七牛云资源前缀: meijiaka-zy
- 部署脚本指向新仓库 meijiaka-zy.git
2026-04-26 23:02:05 +08:00
小鱼开发 8f1e813a43 docs: 更新 .env.example 注释,兼容本地开发和 Docker 部署
- DATABASE_URL: 添加注释说明 localhost(本地) vs 容器名(Docker)
- REDIS_HOST: 同上
- CORS_ORIGINS: 添加注释说明不同环境的配置差异
2026-04-26 22:34:41 +08:00
小鱼开发 69c2fe1c1c chore: 清理仓库废弃代码和临时文件
删除文件:
- 根目录: package.json, package-lock.json, .DS_Store
- 后端未使用模块: token_manager_example.py, kling_dto.py, crud/avatar.py
- 未注册路由: ai_models.py, klingai.py, qiniu.py, video.py
- 废弃配置: docker-compose.dev.yml
- 前端未使用页面: AudioMixing.tsx/css, VideoEditing.tsx/css
- 所有 .DS_Store 临时文件

新增: .gitignore(忽略 .DS_Store, node_modules, __pycache__ 等)

清理后减少 ~2700+ 行无效代码
2026-04-26 22:32:12 +08:00