小鱼开发
ca4a0b1303
feat: 用户数据隔离、动态分辨率、字幕缩放、多项体验优化
...
- 用户数据隔离:所有用户数据按 users/{user_id}/ 隔离,Rust IPC 命令自治读取 auth.json
- 安全加固:delete_local_product/rename_local_product/export_product 增加前缀校验
- 移除音调(pitch)功能:从 VoiceSynthesis、projectStore、types 等完全移除
- 动态视频分辨率:根据素材最小高度自动选择 720p/1080p,9:16 比例强校验
- ASS 字幕按目标分辨率等比例缩放(720p 和 1080p 视觉一致)
- Canvas 预览支持参数化 playResY,预览与压制效果一致
- 配音合成增加台词字数校验弹窗(语速>1.0时要求更多字)
- BGM 默认音量从 25% 调至 15%
- 素材选择提示文案更新(9:16 比例,5-60秒)
- 视频校验从严格 1080x1920 改为 9:16 比例判断
- 背景图片弹窗宽度从 440px 放大到 560px
2026-06-04 17:30:54 +08:00
小鱼开发
aa818b75a8
refactor: 脚本提示词体系重构 — 子类从目录改为单个文件
...
- 删除 system/bk/ 下所有旧提示词,平铺替换为 23 个新文件
- 文件名格式统一为: 文案——描述.txt
- 后端: _meta.json 扁平化,loader.py 新增 list_prompt_files() + load_prompt_file()
- 后端: API 从 subcategory 改为 filename,按指定文件读取
- 后端: categories 接口返回文件列表(label/desc/filename)供前端展示
- 前端: ScriptCreation 分类选择改为卡片网格,展示文案+描述
- 前端: 清理 subcategoryCode,统一改为 filename
- 前端: 字幕字号调整为 64/96/80px
2026-06-01 13:44:59 +08:00
小鱼开发
06ec0ee202
feat: BGM 云端化 + 步骤页面 UI 统一重构
...
后端:
- 新增 BGM 数据库模型、Schema、CRUD、API 路由
- BgmMusic 增加 url 字段存储七牛云地址
- Alembic 迁移: 创建 BGM 表 + 添加 url 字段
- import_bgm.py 导入时自动上传七牛云 (meijiaka-zy/bgm/...)
前端:
- VideoCompose BGM 选择改为卡片弹窗 (系统BGM + 本地上传)
- 去掉 BGM 硬编码本地路径, 直接使用云端 URL
- CoverDesign 视觉重构: 绿色边框卡片、角标、hover 遮罩
- CoverDesign 去掉预选背景, 默认空白需手动选择
- 所有步骤按钮规范统一: 左=重新生成(主色), 右=导出/预览(次色)
- 预览按钮状态统一: 文字变为'视频预览中...', 保持 btn-secondary
- 去掉所有步骤按钮的 svg/emoji 图标
Rust:
- mix_bgm_to_video 支持临时文件保护 (输入输出同路径时自动中转)
- FFmpeg BGM 混合使用 aloop 循环 + amix 滤镜
2026-05-24 15:39:54 +08:00
小鱼开发
1a0679049e
refactor(profile): restore recent transactions table
...
Replace menu list (使用明细 + 设置) with recent transactions table:
- Add back recentTx state and loading state
- Fetch last 5 transactions in loadData
- Display table with type/amount/description/time columns
- Add '查看全部' link to usage-detail page
- Remove unused icon components (FileTextIcon, SettingsIcon, ChevronRightIcon)
2026-05-22 15:02:11 +08:00
小鱼开发
51fc7641b8
fix: 视频创作按钮状态管理、积分计算、封面背景图渲染
...
- 统一6个步骤任务按钮状态:生成中只disabled,不做文字变化
- 封面设计新增isDesigning loading state
- 进度弹窗去掉(x/y)数量显示
- 视频生成积分统一用配音音频时长口径,新增dubbingAudioDuration
- 封面背景图URL数据修复SQL
- 修复Fabric.js 7.x中originX/originY默认CENTER导致图片位置偏移
- 未选背景图时预览区显示提示
- 背景图加载失败时显示占位文字
2026-05-18 14:09:24 +08:00
小鱼开发
aff4ca59ab
feat: 创作主题保存/加载 + 支付二维码过期提示
...
- ScriptCreation: 大类/小类 selection 持久化到 project meta
- ProjectMeta: 新增 subcategoryCode 字段
- projectStore: 新增 setSubcategoryCode action
- localStorage: orderedMeta 补全 categoryCode/subcategoryCode
- RechargeModal: 过期后点击'我已支付'给出 toast 提示,按钮禁用并显示'二维码已过期'
2026-05-17 20:48:57 +08:00
小鱼开发
e2ecdfa24d
fix: Vidu对口型任务提交失败、背景图加载失败、FFmpeg sidecar HTTPS支持
...
- projectStore: 修复 updateSegment 直接替换数组元素导致 Zustand/Immer
无法检测变化的问题,改用 Object.assign 修改 draft 属性
- projectStore: 修复 setCategoryCode 未持久化到 meta.json,刷新后丢失
- CoverDesign: 细化背景图加载失败提示(区分无分类/空数据/网络错误)
- ffmpeg_cmd.rs: 增加 Rosetta 兼容层,支持 Apple Silicon 运行 x86_64 evermeet
静态编译 FFmpeg(支持 HTTPS)
2026-05-16 02:55:39 +08:00
小鱼开发
de7a6b734f
chore(release): bump to v1.5.15
...
- 统一版本号管理(VERSION + scripts/bump-version.py)
- 添加 GitLab CI/CD 前端多平台构建配置
- 替换应用图标为品牌 logo
- 清理无效文件(tauri.svg, vite.svg, bg-config.json, audio/presets, .DS_Store)
- 修复 ESLint 错误和全部 warnings
- 清理 console.warn,保留 console.error
- 更新 Cargo.toml 元数据(description + authors)
- 更新 .gitignore(dist/, src-tauri/target/, binaries/)
- authStore appVersion 改为动态获取(getVersion)
- 修复 login 错误处理
- 将 FFmpeg sidecar 二进制移出 Git 跟踪(CI 构建时准备)
2026-05-14 23:32:45 +08:00
小鱼开发
fc4ebb7de0
feat: 封面背景图迁移到数据库,按script_code分类获取
...
后端:
- 新建 mjk_cover_backgrounds 表(Alembic e02c96e264d9)
- CoverBackground模型/CRUD/Schema/API(GET /cover-backgrounds?script_code=)
前端:
- ScriptCreation保存categoryCode到store和meta.json
- CoverDesign从API获取背景图,替换bg-config.json
- 修复useEffect不响应categoryCode变化的bug
其他:
- 删除Rust遗留的generate_cover_image命令和burn_ass_subtitle_to_image函数
2026-05-13 11:07:11 +08:00
小鱼开发
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
小鱼开发
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
小鱼开发
ea9720394d
refactor: 删除历史遗留的 selectedHumanId/selectedElementId 字段
...
这两个字段是早期数字人方案的遗留,当前业务已完全不使用:
- types/project.ts: 删除字段定义
- store/projectStore.ts: 删除 setSelectedHumanId/setSelectedAvatarInfo action
- api/modules/localStorage.ts: 删除序列化
- VideoCreation/index.tsx: 删除加载恢复逻辑
- utils/projectMeta.ts: 删除默认值
当前素材选择实际只有:
- 人物素材: avatarMaterialPath/Name/Duration(对口型用)
- 空镜素材: userUploadedMaterials + emptyShotMaterial
2026-05-06 14:25:12 +08:00
小鱼开发
bd2f7b9afe
feat: title 与 topic 解耦 + 草稿列表支持重命名项目
...
title/topic 职责分离:
- topic: 创作主题分类标签
- title: 用户自定义项目名称,独立保存
数据层:
- buildTitle 不再截断,优先保留已有 title
- MetaOverrides 允许覆盖 title
- projectStore 新增 setTitle action
- VideoCreation 加载时恢复 title
UI:
- 草稿列表项 hover 显示编辑按钮,点击可重命名
- 直接修改 meta.json,无需进入项目
后端:
- script_handler 返回中文分类名称作为 title
2026-05-06 14:03:15 +08:00
小鱼开发
c79b2323f4
refactor: 删除脚本生成未使用的 duration/style/scriptType/scriptDuration 参数
...
前端:
- 删除 scriptType 字段及相关 store action、持久化、API 类型
- 删除 scriptDuration 字段及相关 store action、持久化、加载逻辑
- ScriptCreation 不再传 duration/style 参数给后端
后端:
- ScriptParams 删除 duration/style 字段
- ScriptHandler 删除 duration/style 参数读取和传递
- ScriptService.generate_script 签名删除 duration/script_type
- load_script_user_prompt 删除 duration 参数
影响:无,duration/style 在 prompt 模板中未被实际使用
2026-05-06 13:30:40 +08:00
小鱼开发
001de1fc8e
refactor: 删除 scriptType 字段及相关逻辑
...
scriptType 始终为 'default',无实际业务用途,清理冗余字段:
- ProjectMeta 类型定义
- projectStore setScriptType action
- localStorage 序列化
- project API 模块(Project/Create/Update)
- projectMeta 工具函数默认值
- VideoCreation 页面加载/保存逻辑
2026-05-06 13:14:37 +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
小鱼开发
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
小鱼开发
18f4cbf562
fix: 视频生成流程修复 - 对口型回调、store同步、按钮状态、音频冗余
...
- vidu.py: 修复回调body字段(id vs task_id)和状态判断(success vs succeeded)
- VideoGeneration: 修复composedVideoPath未同步store导致无法预览/下一步
- VideoGeneration: 修复userUploadedMaterials未同步store
- VideoGeneration: 精简恢复逻辑,避免与index重复恢复
- VideoGeneration: 直接用dubbingAudioPath替换音频,避免重新下载
- VideoGeneration: 添加isComposedPreview状态,支持卡片素材预览 vs 完整视频预览
- VideoGeneration: 生成完成后显示重新生成+视频预览双按钮
- VoiceDubbing: 用store dubbingAudioUrl替代本地state,修复按钮状态丢失
- index.tsx: 补全meta.json恢复逻辑,覆盖所有步骤字段
- projectStore.ts: saveMetaToLocalFile补全avatarMaterial和userUploadedMaterials
- docs: 添加视频生成完整数据流文档
2026-04-29 12:19:32 +08:00
小鱼开发
aa11b5327f
feat: 人物出镜素材持久化走 store action
2026-04-28 12:14:35 +08:00
小鱼开发
698730f885
feat: 空镜镜头支持上传本地素材
...
- 形象素材时长要求改为 5-10 秒
- validateLocalVideo 改为可配置参数
- 空镜卡片新增【上传素材】按钮
- 用户上传素材优先于后端匹配
- 支持素材持久化到 meta.json
2026-04-28 11:23:36 +08:00
小鱼开发
bc724810a6
feat: 视频创作流程全链路优化
...
- 后端: Vidu Provider、System API、Upload API、素材服务更新
- 前端: 字幕压制、视频生成、配音、本地存储、类型定义优化
- Rust: FFmpeg 命令、视频合成、语音命令、库注册更新
- Store: 项目状态、语音状态管理优化
- 新增: 对口型替换文档、健康检查器、字幕 API 模块、音频对齐工具
- 删除: 废弃的 polish 提示词模板
2026-04-26 21:24:42 +08:00
小鱼开发
ee3d4c4658
feat: Vidu 对口型传 refPhotoUrl + 项目切换数据隔离 + 成品去重存储
...
- 提交 Vidu 对口型任务时,动态截取人物素材首帧上传七牛云,作为 refPhotoUrl
- 新增 Rust IPC upload_image_file、get_product_save_path
- 修复 extract_first_frame 对输入路径的安全校验过严问题(用户素材可能在任意目录)
- 修复新建/切换项目时 store 残留旧数据的问题:createNewProject 和 loadMeta 显式清空所有业务字段
- Step 6 最终合成直接输出到 products 目录,去掉二次复制
- 新增 VideoComposite 前置条件提示(缺少 coverPath/burnedVideoPath 时显示具体原因)
- 更新 materials.json 关键词映射
2026-04-24 12:56:46 +08:00
小鱼开发
aa7072c0cd
feat: 封面制作、字幕压制、视频合成全流程优化
...
- 封面制作(CoverDesign): Fabric.js 双标题+标签模板,6张预设背景图
- useCoverFabric: 金色主标题+副标题+绿色勾选标签,阴影/描边增强
- 字幕压制(SubtitleBurning): 改为单视频全局压制,结果存 burnedVideoPath
- 视频合成(VideoComposite): 合成条件改为 coverPath + burnedVideoPath 都必须有值
- ffmpeg_cmd: concat 保留音频(去掉-an),临时文件放项目目录(修复沙箱限制)
- localStorage: 修复 saveMeta 遗漏 lipSyncedVideoPath/Url/avatarMaterial* 等字段
- VideoGeneration: Vidu 对口型轮询,成功后保存 lipSyncedVideoPath/Url
- projectStore: initProjectStore 恢复所有字段,saveMetaToLocalFile 正确合并
- 修复 13+ TS 类型错误,消除未使用变量/导入警告
- 新增 public/bg/ 6张 720x1280 竖版背景图素材
2026-04-23 01:42:04 +08:00
小鱼开发
9b8d24b435
feat: 视频生成流程重构 - 本地拼接 + Vidu 对口型 + 空镜去重
...
- 后端: 空镜匹配支持 exclude_urls 去重
- 后端: materials.json 关键词映射扩充
- Rust: compose_video 参数平铺化修复 IPC 调用
- Rust: concat_videos_copy 去除音频
- Rust: 上传接口 API 地址改为 8081
- Rust: clip_video 放宽输入路径校验
- 前端: VideoGeneration 人物素材本地选择 + 保存恢复
- 前端: 空镜自动匹配 + 串行去重
- 前端: 对口型任务提交 + 字段重命名
- 前端: 分镜卡片去除点击/选中/hover 交互
- 前端: 视频预览改为成品视频
- Makefile: Docker 命令适配共享基础设施
2026-04-22 23:08:07 +08:00
小鱼开发
1057727fc5
refactor: 统一 system/_meta.json 管理分类;修复前端 TypeScript 报错
2026-04-22 11:10:33 +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
小鱼开发
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
小鱼开发
74983ce5ec
feat: init meijiaka-zj project from ai-meijiaka template
2026-04-20 16:39:57 +08:00