621 Commits

Author SHA1 Message Date
小鱼开发 63cbc10118 fix: 统一预计文案,TTS预计积分恢复±1积分范围 2026-05-13 17:33:00 +08:00
小鱼开发 cf1352ed41 fix: TTS合成成功弹窗显示后端实际扣费积分 2026-05-13 17:28:15 +08:00
小鱼开发 356de86b1f fix: 积分不足弹窗文案改为预估消耗XX积分 2026-05-13 17:23:47 +08:00
小鱼开发 d7b5d78c13 fix: 积分不足弹窗文案统一格式 2026-05-13 17:16:51 +08:00
小鱼开发 982b95a97a chore: 删除 Playwright MCP 临时日志和快照 2026-05-13 17:05:26 +08:00
小鱼开发 6728f9b012 fix: TTS去掉前置积分检查、扣费允许欠费,避免402打断流程 2026-05-13 16:52:57 +08:00
小鱼开发 2cca838aa4 fix: 积分不足弹窗显示具体余额和所需积分 2026-05-13 16:29:44 +08:00
小鱼开发 b25a08b307 feat: TTS预计积分考虑镜头切换停顿和语速,朗读误差±20%不影响停顿时间 2026-05-13 16:04:41 +08:00
小鱼开发 b1df4d7465 fix: 声音复刻成功提示文案改为复刻成功 2026-05-13 15:34:22 +08:00
小鱼开发 b27f194f78 fix: 充值成功弹窗去掉toast和标题,勾选图标改为白色 2026-05-13 15:30:58 +08:00
小鱼开发 7c1984070a fix: Modal 无标题时平衡顶部留白 2026-05-13 15:24:12 +08:00
小鱼开发 4579fa78d4 feat: 操作按钮展示积分消耗提示
后端:
- 新增 GET /points/rules 返回积分计费规则列表

前端:
- 各操作按钮添加积分消耗提示:
  - 固定积分: 生成脚本(5)/润色(1)/标题生成(1)/字幕烧录(2)/封面设计(2)/压制成片(5)
  - 按秒计费: 配音合成/视频生成 显示'按秒计费'
2026-05-13 14:52:09 +08:00
小鱼开发 86486fa4d5 chore: 添加装修避坑脚本prompt(sq/3、wt/2) 2026-05-13 13:51:16 +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
小鱼开发 2b319bc42d fix: identifier改为cn.meijiaka.ai-zy + 清理audios.json + 修复临时文件残留
- 应用标识符从 cn.meijiaka.ai-jian 改为 cn.meijiaka.ai-zy
- 删除 audios.json 相关代码(前后端 IPC/存储/状态)
- 修复 video_processing.rs 临时文件路径:从 projects/ 根目录改为项目目录
- 修复 video_processing.rs rename/copy 双失败后文件残留(有音频/无音频两分支)
- 修复 ffmpeg concat_videos_robust 标准化失败后 std_*.mp4 残留
- 修复 ffmpeg burn_ass_subtitle 首次失败原因被静默丢弃
- VideoGeneration Step1 截取片段上传后立即删除
2026-05-12 22:58:05 +08:00
小鱼开发 b3c279f4fc style: 脚本生成页面左侧面板样式优化 2026-05-12 18:00:32 +08:00
小鱼开发 353890df29 chore: 更新 prompt 配置与分类 2026-05-12 17:36:26 +08:00
小鱼开发 6889193999 feat: 目录结构迁移至 app_local_data_dir + 导出功能 + 弹窗文案优化
- 业务数据从 ~/Documents/Meijiaka-zy/ 迁移到 app_local_data_dir
- products/ 从全局目录改为每个项目的 projects/{id}/products/
- 封面关联改为目录结构 + meta.json 读取,不再依赖文件名解析 project_id
- 新增 export_product 命令,支持导出成品到用户指定位置
- 进度弹窗成功态文案合并为单行,数字红色高亮
- 删除 copy_product_cover、.cover.jpg 相关逻辑、extract_project_id_from_filename
- 修复 VoiceSynthesis handleAlignAndClip 重复设置 progress.success 的问题
2026-05-12 17:23:59 +08:00
小鱼开发 c56f805c6f fix: 移除封面 fallback 逻辑,仅从 meta.json coverPath 读取 2026-05-12 15:49:43 +08:00
小鱼开发 a09f947092 fix: 我的作品卡片封面从 meta.json 的 coverPath 读取
list_local_products 原来只在 products 目录下硬编码查找 {filename}.jpg,
但封面实际保存在项目目录的 meta.json coverPath 中。
现在优先从 meta.json 读取 coverPath,不存在时再 fallback 到 products 目录。
2026-05-12 15:46:53 +08:00
小鱼开发 68a13b472d feat: 任务完成弹窗显示积分实际消耗明细
- progressStore: success 方法增加 pointsConsumed 参数
- ProgressModal: 成功态下显示消耗积分(绿色小字)
- ScriptCreation: 脚本生成成功显示消耗 5 积分
- VideoGeneration: 视频生成成功显示实际消耗积分
- VoiceSynthesis: 配音合成成功显示实际消耗积分
- VideoCompose: 压制成片成功显示消耗 5 积分
- VoiceMaterialLibrary: 声音克隆成功显示消耗 200 积分
- SubtitleBurning: 字幕烧录成功显示消耗 2 积分
- CoverDesign: 封面设计成功显示消耗 2 积分
2026-05-12 13:40:24 +08:00
小鱼开发 4cba598b17 feat: 视频生成积分按总时长一次性扣费 + 错误文案友好化 + 弹窗样式修复
- 视频生成积分规则:从按对口型实际时长计费改为按脚本规划总时长计费
- 前端 VideoGeneration:提交 lipSync 时传 plannedDuration + totalPlannedDuration + batchId
- 后端 video_handler:tick 预检用 planned_duration,扣费改为总时长一次性扣 + batch_id 幂等
- 后端 tasks.py:VideoParams 替换字段,余额检查用 planned_duration
- 前端按钮旁显示预计消耗积分
- 新增 errorMessage.ts:统一错误信息友好化转换
- ScriptCreation/VideoGeneration/VoiceSynthesis/SubtitleBurning/CoverDesign:弹窗错误文案改用友好提示
- ProgressModal.css:错误/成功文案添加折行样式
- ContentManagement.css:补全缺失的 settings-row 样式
- ScriptCreation:删除过时空状态文案和多余 Slider.css import
2026-05-12 12:36:39 +08:00
小鱼开发 1219dd6399 fix: VideoCompose 扣费失败时回滚合成状态 2026-05-12 09:44:08 +08:00
小鱼开发 4adaa165a4 fix: VideoCompose 压制成片添加前置积分检查 2026-05-11 23:51:45 +08:00
小鱼开发 82baf1a332 fix: 前置积分检查前先刷新余额
- VideoGeneration/SubtitleBurning/CoverDesign 检查余额前调用 fetchBalance

- 避免使用缓存的旧余额导致错误判断
2026-05-11 23:45:55 +08:00
小鱼开发 61757f0d73 fix: 积分不足弹窗文案统一为'请先充值积分后再进行尝试' 2026-05-11 23:42:29 +08:00
小鱼开发 e9737cd490 fix: 积分不足弹窗统一只显示当前余额
- 去掉'需要 X 积分'的预估提示,统一为'当前余额 X,积分不足'

- 覆盖 usePointsCheck hook 及所有页面的 ConfirmModal 描述
2026-05-11 23:38:54 +08:00
小鱼开发 8118aaa3aa feat: 统一积分不足 ConfirmModal 弹窗 + usePointsCheck hook
- 新建 usePointsCheck hook:封装积分预检、402 错误捕获和弹窗组件

- ScriptCreation:脚本生成(5积分)、润色(1积分) 前置检查

- VoiceSynthesis:TTS 合成前置预估检查

- CoverDesign/SubtitleBurning:标题生成 402 错误处理

- VoiceMaterialLibrary:声音复刻(200积分) 前置检查

- 所有端点余额不足时统一显示 ConfirmModal + 立即充值按钮
2026-05-11 23:08:05 +08:00
小鱼开发 dc5d0d4959 fix: TTS/润色/标题/克隆 API 前置积分检查 + 402 异常透传
- voice.py: synthesize/synthesize-batch/synthesize-file/clone/submit 添加前置积分检查

- script.py: polish/generate_title 添加前置积分检查

- 修复 HTTPException(402) 被外层 except Exception 吞掉变成 500 的问题

- 所有端点在执行业务前先检查余额,不足直接返回 402
2026-05-11 22:55:47 +08:00
小鱼开发 367c3d352c fix: 任务创建 API 和 Scheduler 前置积分检查
- tasks.py: create_task 在写入 Redis 前检查积分余额,不足返回 402

- script_handler.py: tick 执行 AI 调用前预检积分

- video_handler.py: 提交 Vidu 任务前预检积分

- 避免余额不足的任务入队,即时反馈给用户
2026-05-11 22:06:01 +08:00
小鱼开发 873db1a26f fix: 禁止积分余额变为负数
- point_service.consume 默认 allow_negative=False
- script.py / voice.py 捕获 ValueError(积分不足) 返回 402
- Scheduler 后置扣费余额不足时静默失败并记录日志
2026-05-11 21:47:26 +08:00
小鱼开发 154b259c82 fix: 积分不足提示改为 ConfirmModal 弹窗 2026-05-11 18:25:21 +08:00
小鱼开发 c9f3ae258c fix: 积分不足提示条按钮文字颜色强制白色 2026-05-11 18:20:55 +08:00
小鱼开发 24d8d1f16d fix: 封面设计和字幕烧录页面的积分不足双弹窗 bug
与 VideoGeneration 同样的修复:
- 操作前预检积分(封面设计 2 积分 / 字幕烧录 2 积分)
- 不足时显示提示条 + 立即充值按钮,不打开进度弹窗
- 积分不足 catch 分支先 progress.hide() 再弹提示
- 充值成功后自动刷新余额并隐藏提示
2026-05-11 18:14:16 +08:00
小鱼开发 447f3c2ffe feat: 空镜素材系统数据库化 + 修复积分不足弹窗叠加
后端:
- 新增 BrollCategory/BrollMaterial/BrollTag 模型及表(mjk_categories/materials/tags)
- 新增 Alembic 迁移 69274ce979a5
- 新增 broll_category/broll_material CRUD 层
- 重构 material_service:删除 JSON 配置,改用 PostgreSQL + Redis 去重
- 新增 /materials/batch-match 接口,删除 /materials/reload
- usage_count 原子递增,Redis 失败自动降级

前端:
- materials API 改为 projectId 去重,新增 batchMatch
- VideoGeneration 批量匹配改用 batchMatch,删除 usedUrls 手动维护
- 修复积分不足时进度弹窗与充值弹窗叠加的 bug
- 操作前预检积分,不足时显示提示条+立即充值按钮
2026-05-11 17:40:38 +08:00
小鱼开发 355c69a7bc config: 从 .env.example 中移除业务规则配置
业务规则配置(Token过期时间、连接池大小、上传限制等)
已回归 config.py 默认值,.env 只保留环境相关配置。
2026-05-11 00:09:03 +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
小鱼开发 821f81b335 chore(cleanup): 移除废弃的 Account 页面
- 删除 Account.tsx(功能已合并到 Profile)
- 从 App.tsx 路由表中移除 account
- 清理不再使用的 .settings-row / .profile-logout-btn CSS
2026-05-10 21:19:36 +08:00
小鱼开发 41c6adadb9 fix(profile): 昵称编辑失焦行为统一为保存
与其他页面(MyWorks、VoiceMaterialLibrary)保持一致:
- 失焦时:内容为空或不变则取消,否则自动保存
- 之前是失焦直接取消,导致交互不一致
2026-05-10 21:15:17 +08:00
小鱼开发 82108fd13c fix(auth): PATCH /auth/me 会话隔离导致修改失败
current_user 来自 get_current_user 的数据库会话,和 update_me
的 db 不是同一个会话。直接修改对象后 commit 找不到变更。
修复:先用当前会话重新查询用户再修改。
2026-05-10 21:13:37 +08:00
小鱼开发 fe3b378117 fix(cors): 后端 CORS 允许 Tauri 桌面应用 origin
添加 tauri://localhost 到 CORS_ORIGINS 默认值,
解决 Tauri WebView 请求被跨域拦截的问题
2026-05-10 21:10:11 +08:00
小鱼开发 c7e8e89c22 fix(profile): 错误提示改为 inline 显示,避免覆盖手机号 2026-05-10 21:07:35 +08:00
小鱼开发 0366201fa1 fix(profile): 昵称错误提示不挤开布局
- 错误提示改为绝对定位,浮在输入框下方
- 输入框错误时边框变红
2026-05-10 21:03:45 +08:00
小鱼开发 9b027b8cb2 refactor(ui): 统一全部页面的编辑图标为铅笔 SVG
- MyWorks 作品/草稿重命名:统一铅笔 SVG 路径
- VoiceMaterialLibrary 音色重命名:✎ 字符 → 铅笔 SVG
- 所有编辑图标使用同一 SVG 路径:M17 3a2.828...
2026-05-10 21:01:28 +08:00
小鱼开发 4e2a0ea3b3 refactor(ui): 统一编辑图标为铅笔 SVG
- Account 页面昵称编辑:修改文字 → 铅笔图标
- 移除保存/取消按钮,统一为 Enter 保存、Esc/失焦取消
2026-05-10 20:56:36 +08:00
小鱼开发 5706042254 refactor(profile): 昵称编辑交互优化
- 修改按钮改为铅笔图标
- 移除保存/取消按钮,统一为 Enter 保存、Esc/失焦取消
2026-05-10 20:53:25 +08:00
小鱼开发 c1eaae64aa refactor(profile): 重新设计个人中心页面排版
- 合并用户信息卡片和积分资产区,移除独立的账户信息区块
- 退出登录移至页面底部,避免与侧边栏重复
- 接入真实用户数据到侧边栏头像和昵称
- 新增系统默认头像 SVG,替代首字母占位
- 清理不再使用的 CSS 样式
2026-05-10 20:49:38 +08:00
小鱼开发 6e52935768 feat(profile): 账户设置集成到个人中心页面
- Profile.tsx 底部新增账户信息区域(昵称编辑、手机号、退出登录)
- Sidebar.tsx 移除独立的账户设置菜单入口
- 保留 Account.tsx 组件文件但不作为独立导航入口
2026-05-10 08:47:59 +08:00
小鱼开发 ea1b607aca feat(profile): 拆分个人中心与账户设置,支持昵称编辑
后端:
- 新增 UpdateNicknameRequest schema
- 新增 PATCH /auth/me 修改昵称接口

前端:
- Profile.tsx 精简为纯资产中心(积分统计+最近记录+充值)
- 新建 Account.tsx 账户设置页(昵称编辑、手机号、退出登录)
- App.tsx + Sidebar.tsx 新增 account 路由和导航菜单
- 昵称修改后同步更新 authStore
2026-05-10 08:32:45 +08:00
小鱼开发 23721a4197 style(profile): PC桌面端布局重构
- 顶部用户信息栏:64px头像+昵称+退出登录按钮,横向展开
- 积分统计:3个白色卡片横向排列+充值按钮,绿色数字强调
- 个人信息与快捷入口:双列网格布局
- 最近记录:6列表格(类型/变动/余额/说明/时间),PC级信息密度
- 删除移动端渐变卡片、窄卡片堆叠等设计
2026-05-10 08:19:51 +08:00