小鱼开发
95e55293c6
security: 全面生产安全加固与部署修复
...
后端安全:
- DEBUG 默认 True → False
- 彻底移除 AUTH_BYPASS 认证绕过
- 验证码不再明文打印到日志
- 上传接口增加大小限制(500MB/20MB/100MB)与魔数校验
- python-jose → PyJWT, 更新 requirements.lock/uv.lock
- Bandit 恢复关键规则(B104/B301/B305/B314/B324/B603/B607)
- 修复 5 处 try_except_pass, 15 处加 nosec 注释
- 启用 Bandit pre-commit 钩子
前端安全:
- 配置完整 CSP 策略
- 收紧 Capabilities(fs:allow-read-file → $RESOURCE/**)
- 移除硬编码 devToken
- 清理前端 TODO(美家卡智影命名统一)
部署修复:
- docker-compose.prod 增加 alembic 迁移步骤
- api + scheduler 增加 Redis 心跳健康检查
- Nginx 添加安全响应头
- Nginx client_max_body_size 100M → 500M
- .env.example 补充 UPLOAD_MAX_* 配置与安全注释
其他:
- /voice/upload 合并到 /upload/audio
- Rust 上传增加文件大小检查
- 清理 Rust 19 处 println! + 前端 21 处 console.info
- 修复 VideoCompose.tsx toast 未导入(已有bug)
2026-05-10 23:31:34 +08:00
小鱼开发
04e467e433
feat(points): 积分系统收尾 + 充值弹窗改造 + 命名统一
...
后端:
- 微信回调 db.commit 失败仍返回 SUCCESS,避免无限重试
- recharge() 加 order_id 幂等保护,防重复充值
- time_expire 使用北京时间(UTC+8),修复时区 bug
- 充值档位后端配置化(points-config.yaml + /recharge-options API)
- 代码审查 20 项修复(认证加固、扣费顺序、错误响应、状态同步等)
前端:
- 充值弹窗:自动轮询 + 【我已支付】手动兜底
- 二维码倒计时显示,过期后遮罩 + 刷新按钮
- 充值档位从后端动态加载
- 去掉 select/qrcode 弹窗标题,金额红色突出显示
- 全项目命名统一(视频生成/压制成片/配音合成/声音复刻等)
- Modal 关闭按钮独立于 title 显示
2026-05-09 21:29:35 +08:00
小鱼开发
0722225c62
feat(points): 积分流水表支持时长显示,说明字段简化
...
后端:
- PointTransaction 模型添加 duration 字段(float, nullable)
- PointTransactionItem schema 添加 duration
- consume() 新增 duration 参数,写入流水记录
- 各业务 description 统一简化为【脚本生成】【配音合成】等格式
- duration 类业务(tts/video)传入实际秒数
- Alembic 迁移: 95eb1a1c0af9_add_duration_to_point_transaction
前端:
- PointTransaction 类型添加 duration
- UsageDetail: 来源列 → 时长列(有值显示 xs,无值显示 -)
- 说明列直接显示后端返回的简化描述
2026-05-09 17:08:50 +08:00
小鱼开发
368fdfa094
fix(points): 修复积分系统联调 bugs
...
致命级(扣费不落库):
- /points/consume、/admin/recharge、/recharge/query/{id} 补单路径添加缺失的 db.commit()
- voice.py 三个端点(synthesize/synthesize-batch/clone/submit)consume 后添加 db.commit()
- script.py 两个端点(polish/generate-title)consume 后添加 db.commit()
严重级(运行时错误):
- 清理 points.py 对已删除 schema(ConsumeFreezeRequest 等)的导入
- 修复 schemas.ConsumeRequest 引用为直接导入 ConsumeRequest
- video_handler.py: duration 字符串类型安全转换 float()
- tasks.py VideoParams 添加 duration 字段并写入 Redis params
中等级(体验):
- CoverDesign: consumePoints 移到 exportPng() 成功后
- 三个消费页面 RechargeModal 添加 onRechargeSuccess 刷新余额
2026-05-09 16:00:28 +08:00
小鱼开发
c6eba97b43
feat(points): 积分消耗系统全链路集成
...
后端:
- 简化积分服务: 删除 freeze/settle/refund, 保留 consume/recharge/expire
- 计费配置化: config/points-config.yaml 驱动 fixed/duration/free 三种模式
- TTS 时长探测: app/utils/audio_utils.py (httpx + mutagen 纯 Python)
- Python 层扣费: script(5)/polish(1)/title(1)/voice_clone(200)/tts(按秒)/video(按秒)
- 字幕 free_services: caption/auto_align 不扣费
- 新增 POST /points/consume 端点(402余额预检)
- 新增 check_balance + /points/cost 返回 sufficient/balance/required
- 新增 expire_batches 定时回收, 接入 scheduler main(每5分钟)
- 删除废弃 tts_handler.py
- Alembic 迁移: 删除 frozen/total_refunded 字段
- 同步 requirements.lock 添加 mutagen
前端:
- Rust/IPC 层扣费: compose(5)/subtitle_burn(2)/cover_design(2)
- 字幕打轴改异步: 走 scheduler subtitle handler
- 对口型传 duration: VideoGeneration 传 actualDuration
- 创建 pointStore: 全局余额 + fetchBalance + 充值弹窗控制
- 402 欠费弹 RechargeModal: VideoGeneration/SubtitleBurning/CoverDesign
- 修复 VoiceDubbing.tsx 类型错误 (alignResult never)
- 同步 PointBalance 类型(删除 frozen/available/totalRefunded)
Refs: 积分消耗集成收尾
2026-05-09 15:42:54 +08:00
小鱼开发
b597d715c8
fix: 认证流程修复 + alembic 迁移补全 + 前端僵尸代码清理
...
后端:
- 修复 get_current_user 未校验 is_active,被封禁用户仍可用旧 Token
- auth.py 捕获 ValueError 转 HTTPException(验证码错误、账号被封、Token 无效等不再返回 500)
- 修正 SMS 每日上限注释(3次 → 10次)
- 修复迁移脚本外键引用错误:users.id → mjk_users.id
- 新建积分系统 4 张表的迁移(mjk_user_points/batches/transactions/recharge_orders)
- pyproject.toml 补充 alembic + psycopg2-binary 依赖
- ruff 格式修复(import 排序等)
前端:
- 修复 doRefreshToken 成功后不持久化新 Token 的严重 bug
- 修复应用重启后 SSE 不自动重连(收不到踢人通知)
- 修复 App.tsx handleLogout 未 await
- client.ts 统一从 utils/env 导入 isTauri,默认 base URL 兜底 localhost:8000
- 清理 ~20 个未使用的 hooks/utils/api 模块/组件导出
- 修复所有 ESLint 警告(206 → 0)和 TSC 错误
- 测试通过(5/5)
其他:
- 更新 requirements.lock 和 uv.lock
2026-05-08 11:10:48 +08:00
小鱼开发
c45cb02385
fix: 七牛云 SDK 同步 I/O 阻塞事件循环
...
- QiniuService 新增 async 包装方法(upload_stream_async 等)
- upload.py / voice.py 上传路由改为 await async 版本
- voice.py 改用 get_qiniu_service() 单例
2026-05-06 22:56:23 +08:00
小鱼开发
8f8256ddfb
fix: 声音克隆暴露原始错误 + 脚本生成去掉中间进度提示
...
- voice.py: 异常处理不再吞掉原始错误,直接暴露具体原因
- vidu_service.py: clone_voice 错误消息包含 Vidu 返回的 error_message
- ScriptCreation.tsx: 去掉一闪而过的'任务已创建,等待执行...'中间状态
2026-05-06 11:04:26 +08:00
小鱼开发
30536276ba
refactor(scheduler): 统一异步任务调度架构
...
核心变更:
- 统一第三方接口架构:所有服务走 PlatformGateway(call_sync/submit_task/query_task/handle_webhook)
- 视频生成(Vidu 对口型)纳入 Async Engine,与 script/subtitle/tts 统一为 POST /tasks/{task_type} 模式
- 新增 VideoHandler、TTSHandler,完善 ScriptHandler/SubtitleHandler
- PlatformGateway 生成 internal_task_id,建立 Redis 双向映射,callback 场景传入 Async Engine task_id 保证映射一致
- SlotManager 新增 acquire_ctx 上下文管理器,所有 Handler 统一使用
- ViduAdapter 状态映射归一化(normalize_state/denormalize_state)
- 移除 ViduService Semaphore 和 tenacity 重试,并发控制完全交予 SlotManager
- nonce 防重放下沉到 CallbackCapable 协议
- Service 层错误统一为 PlatformError,路由层错误信息脱敏
- 废弃 /voice/lip-sync,清理 vidu.py 遗留路由
Bug 修复:
- VideoHandler 轮询阶段后添加 continue,防止已提交任务重复创建
- voice.py synthesize_to_file 变量名冲突(request vs request_body)
- PlatformGateway.submit_task 空 data 防护
- ScriptHandler 动态导入 asyncio 改为模块级导入
- SubtitleHandler 完成时补充 progress=100
文档:
- 更新 AGENTS.md 核心功能、运行时架构、异步调度描述
2026-05-05 20:53:18 +08:00
小鱼开发
82657c2d65
chore: 删除形象克隆相关代码、配置及注释
2026-05-04 19:06:45 +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
小鱼开发
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
小鱼开发
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
小鱼开发
773065536c
refactor: 统一项目命名为 meijiaka-zy / 美家卡智影
...
- 中文产品名统一为 美家卡智影
- 代码目录/容器名/数据卷: meijiaka-zy
- 本地存储路径: Meijiaka-zy
- 数据库名: meijiaka_zy
- 七牛云资源前缀: meijiaka-zy
- 部署脚本指向新仓库 meijiaka-zy.git
2026-04-26 23:02:05 +08:00
小鱼开发
3c08cccdd8
fix: Vidu 克隆 voice_id 长度校验,自动规范化用户输入名称
2026-04-22 07:32:56 +08:00
小鱼开发
4795acc367
feat: Vidu 语音能力全面接入,音频归属修正至项目级
...
- 后端 Voice API 全面切换至 Vidu(TTS/克隆/对口型)
- 前端配音页面 UI 优化:重新生成+播放音频双按钮
- 素材库克隆适配:Vidu 同步克隆,前端预校验格式/大小/时长
- 音频数据归属修正:生成配音保存到 meta.json(dubbingAudioUrl/Path/VoiceId)
- 不再写入 audios.json 和 segments.json,统一项目级一份配音
- Rust save_audio 支持 skip_list 参数跳过 audios.json 写入
2026-04-22 00:17:04 +08:00
小鱼开发
189fdf5ed6
feat: 接入 Vidu TTS/复刻/对口型,替换 MiniMax 语音能力
...
- 新增 ViduProvider: TTS同步、声音复刻、对口型、任务查询
- 新增 ViduTTSService: 业务封装,6个精选中文预设音色
- Voice API 路由全面切换至 Vidu
- 新增 /voice/lip-sync 对口型异步接口
- 前端适配: 16个音色→6个、slider范围更新、音量默认0
- 添加 vidu-tts-api.md 开发文档
- docker-compose 新增 VIDU_API_KEY 环境变量映射
2026-04-21 23:26:24 +08:00
小鱼开发
bb08d0f586
refactor: 从智影 Fork 重构为智剪,独立 Docker 基础设施,开发模式认证兜底
...
主要变更:
- 修复 /tasks/script 路由 404(去掉重复 prefix)
- 开发模式自动认证兜底(无需登录即可测试流程)
- Docker 基础设施独立化(共用 db/redis)
- 前端 API 端口改为 8081
- 新增 TTS/语音克隆、视频粗剪、音频混音等智剪功能
- 删除智影专属模块(avatar、model_usage、qiniu 上传等)
2026-04-21 12:35:50 +08:00