小鱼开发
88f913b511
revert: remove auto-generated DMG background, pending design
2026-05-19 09:50:56 +08:00
小鱼开发
c04c53e061
chore(release): bump version to 1.5.18
2026-05-18 23:27:24 +08:00
小鱼开发
65d2be7700
feat(points): 修正充值档位价格与积分
...
- 100元 = 2000积分,无标签,180天有效
- 500元(热销)= 11000积分,180天有效
- 1000元(推荐)= 23000积分,365天有效
- 5000元(超值)= 125000积分,永久有效
- 1积分 = 0.05元
2026-05-18 16:36:45 +08:00
小鱼开发
07bcbc2317
release: v1.5.16
2026-05-18 16:31:58 +08:00
小鱼开发
ffffb51da4
feat(points): 调整充值档位为4档
...
- 1元档:100积分,无标签,180天有效
- 5元档(热销):1000积分,180天有效
- 10元档(推荐):3000积分,365天有效
- 50元档(超值):25000积分,永久有效
2026-05-18 16:00:58 +08:00
小鱼开发
74fd855d33
feat(points): 充值档位添加积分有效期字段
...
- config/points-config.yaml: 每个档位添加 validity_days(7/30/90/180/365/0)
- points.py: 支付回调和主动查询补单时根据档位配置设置 batch_expired_at
- RechargeModal: 卡片展示有效期(永久有效 / N 天内有效)
2026-05-18 15:26:54 +08:00
小鱼开发
ddec4a607b
fix(prompt): 修复 3 个提示词示例中使用二级分类名的错误 scene
...
将示例 JSON 中的 scene 从二级分类名改为正确的三级分类名:
- 水电改造5.9.txt: 瓷砖铺贴->墙砖定位-瓷砖铺贴
- 常见问题25选8-5.9.txt: 瓷砖铺贴->墙砖定位-瓷砖铺贴
- 油工进场5.7.txt: 墙面基层->墙固施工-墙面基层
2026-05-17 23:18:41 +08:00
小鱼开发
2d41b58021
fix(prompt): 修复 6 个提示词示例中的截断 scene
...
示例 JSON 中的 scene 值漏写了 '-施工翻车镜' 后缀,
导致 AI 可能模仿生成截断的 scene 名称,匹配失败。
受影响的文件:
- 半包谈价格5.8.txt
- 装修合同5.8.txt
- 装修监工5.8-2.txt
- 装修监工5.8.txt
- 防水5.7.txt
- 瓦工进场交代5.8.txt
2026-05-17 22:23:43 +08:00
小鱼开发
85f7e5c934
chore(prompt): 强化 24 个提示词的 scene 格式约束
...
要求 AI 输出 scene 时必须从内置素材库标题中完整原样复制,
包括连字符-前后的顺序,不得调换、缩写或改写。
从源头减少 scene 名称与数据库分类名不匹配的问题。
2026-05-17 21:37:49 +08:00
小鱼开发
2a36e4ec3d
fix(material): 支持 scene 名称顺序颠倒兜底匹配
...
AI 生成 scene 时常将三级分类名中的 '-' 前后顺序写反
(如 瓷砖铺贴-瓷砖完工展示 vs 瓷砖完工展示-瓷砖铺贴),
导致精确匹配失败、素材匹配为空。
- match_material: 精确匹配失败后,尝试倒序匹配
- batch_match: 批量查询时同时查询原始名和倒序名,
内存中构建 scene->category 映射,优先精确匹配、fallback 倒序
2026-05-17 21:35:44 +08:00
小鱼开发
43e736c32d
fix(wxpay): 修复微信下单重入错误
...
out_trade_no 原格式 MJZ{order.id:012d} 在数据库重建后 ID 从 1 重新开始,
导致与微信支付缓存中的历史订单号冲突,触发 INVALID_REQUEST 重入错误。
新格式加入时间戳:MJZ{timestamp}{order.id:08d},确保全局唯一。
2026-05-17 19:39:43 +08:00
小鱼开发
1f7201f593
fix(schema): 移除 PolishRequest 中错误的字段
...
PolishRequest 中误入了 message 和 result 字段(应为响应模型字段),
导致后端验证要求请求体必须包含 message,润色接口调用失败。
2026-05-16 15:14:18 +08:00
小鱼开发
d3069d423b
perf(material): batch_match 批量查询优化,减少 DB 往返
...
- CRUD 新增 get_by_names_and_level() 批量查分类
- CRUD 新增 get_active_by_categories() 批量查素材
- CRUD 新增 increment_usage_count_batch() 批量更新 usage_count
- 重写 batch_match:从 N 次 DB 往返降到 3 次(查分类 + 查素材 + UPDATE)
- Redis 改用 pipeline 批量 sadd + expire
- 解决并发/连接池不足导致的间歇性 500 错误
2026-05-16 14:48:28 +08:00
小鱼开发
83b10945c8
feat(points): 新增今日消耗接口 + 个人中心字体调整
...
后端:
- CRUD 新增 sum_consumed_today() 方法,统计用户今日消费积分总和
- API 新增 GET /points/today-consumed 路由
前端:
- 个人中心积分数字从 40px 改为 32px
- 今日消耗从本地计算改为调用后端接口
2026-05-16 09:46:41 +08:00
小鱼开发
f8fd241d58
chore(prompts): 移除水电材料(sc)分类
2026-05-16 09:22:12 +08:00
小鱼开发
cbd4068776
fix(db): unify table name prefix to mjk_ for update tables
...
- Rename app_releases → mjk_app_releases
- Rename release_packages → mjk_release_packages
- Update ForeignKey reference and migration file
- Add pre-commit hook: check_table_prefix.py to prevent future violations
2026-05-15 18:28:07 +08:00
小鱼开发
5abd9fdeee
fix(seed): correct CDN domain for cover backgrounds
...
media.liche.cn -> img.liche.cn
2026-05-15 18:08:55 +08:00
小鱼开发
04b9b92241
feat(seed): add cover backgrounds seed data for bk category
...
- 72 cover background images for script_code='bk' (装修避坑)
- CDN path: https://media.liche.cn/meijiaka-zy/cover_templete/
- Generated from /Users/0fun/Downloads/bk/
2026-05-15 18:08:03 +08:00
小鱼开发
60b4178cff
fix(material): _normalize_scene 去除所有 Unicode 空白字符
...
之前只处理了半角空格和全角空格,换行、tab 等字符会导致
scene 与三级分类 name 匹配失败。改用 re.sub(r'\s+', '', scene)
统一清理所有 Unicode 空白字符。
2026-05-15 17:40:41 +08:00
小鱼开发
542bc1f070
refactor(alembic): squash all migrations into clean initial_schema
...
- Replace 8 messy migration files (~2000+ lines) with single clean initial_schema (215 lines)
- All table comments defined inline at CREATE TABLE time (no more alter_column spam)
- Final table names used directly (mjk_broll_categories, etc. — no rename chain)
- Includes diagnosis report at docs/alembic-diagnosis-report.md
2026-05-15 17:35:54 +08:00
小鱼开发
ffcbb5105d
fix(api): 恢复 /health 根路径健康检查端点
...
Docker/Nginx 健康检查请求 /health 返回 404,
在 main.py 中重新添加轻量级 /health 端点供负载均衡使用。
2026-05-15 17:08:34 +08:00
小鱼开发
4fa8bd7c65
fix(alembic): 修复迁移历史分支,合并双 head
...
将 rename_mjk_to_mjk_broll 的 down_revision 从 e02c96e264d9 改为 d0a7c5a375c6,
解决 alembic upgrade head 时的 Multiple head revisions 错误。
2026-05-15 17:03:17 +08:00
小鱼开发
95fa5b6fab
fix: 将 /health 路由从根路径移到 /api/v1/system/health
...
- 原 /health 注册在 FastAPI 根应用上,Nginx 代理 /api/v1/ 前缀无法访问
- 移到 system router 下,外部通过 /api/v1/system/health 访问
- 同步更新 docker-compose.test.yml 和 docker-compose.prod.yml 的 healthcheck 路径
2026-05-15 16:56:28 +08:00
小鱼开发
50e8b7cda3
feat(seed): 更新素材 seed 数据(2771条,含木作阶段验收镜)
...
- 基于最新本地素材目录重新扫描(2771个MP4)
- 新增二级分类:木作阶段验收镜(2个文件)
- 全部 ffprobe 探测时长,无0值异常
- 生成 scripts/seed_materials.sql 入库脚本
- 保留 generate_seed_materials.py 供后续复用
2026-05-15 16:55:08 +08:00
小鱼开发
cb56698836
feat: 应用自动更新系统 + 草稿箱删除 + 分类缓存优化
...
- 新增 Tauri 自动更新(updater 插件)
- Rust: 集成 tauri-plugin-updater + tauri-plugin-process
- 后端: app_releases / release_packages 表 + /update/check API
- 前端: UpdateDialog 组件 + useUpdater hook + SystemUpdate 手动检查
- 发版脚本: scripts/publish_release.py(扫描 .sig → 上传七牛云 → 写入数据库)
- 配置 test 环境域名 dev.tapi.meijiaka.cn
- 草稿箱删除功能
- DraftListItem 添加删除按钮
- MyWorks 添加删除确认弹窗 + localProjectApi.deleteProject 调用
- 创作主题分类本地缓存
- scriptApi.getCategoriesCached() 先读 localStorage 再静默刷新
- TermsModal tab 居中
- 更新应用图标(Big Sur 风格圆角矩形)
- 清理: 删除未使用文件 create_user.py / video-replace-mvp.py / DEPS_*.md
2026-05-15 16:41:57 +08:00
小鱼开发
3bfaea018c
chore: 更新分类 seed,同步目录结构调整
...
- 二级分类: 木作阶段验收-木作阶段验收镜 -> 木作阶段验收镜
- 三级场景: 木作阶段验收-木作阶段验收镜 -> 木作阶段验收-木作验收
- 总分类数: 220 (9+28+183)
2026-05-15 16:33:46 +08:00
小鱼开发
ada29a48a8
feat: 空镜素材分类&数据入库
...
- 素材表统一为 mjk_broll_ 前缀(mjk_broll_categories/materials/tags)
- 新增 218 条分类 seed + 2495 条素材 seed(含 ffprobe 时长)
- 新增 Alembic 迁移: rename mjk_* to mjk_broll_*
2026-05-15 15:49:29 +08:00
小鱼开发
17455b405c
Revert "feat: 空镜素材分类&数据入库"
...
This reverts commit 91e5cdefbb .
2026-05-15 15:45:55 +08:00
小鱼开发
91e5cdefbb
feat: 空镜素材分类&数据入库
...
- 重命名素材表 mjk_* -> broll_*,与模型命名保持一致
- 新增 182 个三级场景分类 seed 数据
- 新增 2495 条素材 INSERT SQL(含 ffprobe 时长探测)
- 新增 Alembic 迁移: rename mjk_categories/materials/tags to broll_*
2026-05-15 15:41:23 +08:00
小鱼开发
d67bd9c067
chore: 删除废弃的 materials.json
2026-05-15 11:59:58 +08:00
小鱼开发
f20de12fa2
feat: macOS Big Sur 风格图标 + Docker 日志轮转 + 后台运维 SQL
...
图标:
- 添加白色圆角矩形底板,占画布 80%(四周留透明呼吸边距)
- M 内容占底板 65%,裁剪透明边距后居中
- 底板微妙渐变(#FAFAFA → #F0F0F0)
- 清理原始图标幽灵半透明像素
- 全平台图标重新生成(PNG / ICNS / ICO / Android / iOS)
运维:
- docker-compose.prod.yml & test.yml 添加 json-file 日志轮转
max-size: 100m, max-file: 5
- scripts/admin-ops.sql: 新增用户、积分赠送、积分补偿、批量补偿
- scripts/generate-rounded-icon.py: 可复用的图标生成脚本
其他:
- prompts 文件重命名为语义化文件名
- .gitignore 移除 binaries/ 忽略(FFmpeg sidecar 需提交)
2026-05-15 11:33:51 +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
小鱼开发
8f99d0166b
chore: 清理后端未使用文件(307 行)
...
- 删除 core/health_checker.py(完全未使用)
- 删除 crud/point_batch.py(CRUD 封装未被引用,service 直接用 SQLAlchemy)
- 删除 crud/user_point.py(同上)
- 顺手修复 point_service.py 缺失 logger 定义(ruff F821)
2026-05-14 23:10:46 +08:00
小鱼开发
7330fdd401
fix: 生产安全检查 — 鉴权 + 资金安全 + Slot TTL
...
1. upload.py: /video /audio 端点添加 get_current_user 鉴权
2. caption.py: /ata/align 端点添加 get_current_user 鉴权
3. points.py: allow_negative 硬编码 False,禁止客户端控制欠费
4. slot_manager.py: TTL 1800s → 1200s,减少异常崩溃后的槽位泄漏时间
5. points.py: 顺手修复 ruff UP017(timezone.utc → UTC)
2026-05-14 23:02:40 +08:00
小鱼开发
d4a13ece17
chore: 清理后端未使用 import(9 处)
...
ruff --select F401 --fix 自动修复:
- deps.py: user_crud
- caption.py: ApiResponse, VolcengineCaptionService
- points.py: UTC
- tasks.py: json
- voice.py: asyncio
- main.py: init_db
- broll_category.py: Text, ARRAY
2026-05-14 22:40:01 +08:00
小鱼开发
689aef0946
refactor: 统一 sourceId 格式规范
...
规范: <source_type>_<user_id>_<timestamp_ms>
前端 4 处(projectId → userId):
- VideoGeneration: video_${userId}_${Date.now()}
- SubtitleBurning: subtitle_burn_${userId}_${Date.now()}
- VideoCompose: compose_${userId}_${Date.now()}
- CoverDesign: cover_design_${userId}_${Date.now()}
后端 4 处(浮点秒 → 毫秒整数):
- script.py polish: polish_${userId}_${int(time.time()*1000)}
- script.py title: title_${userId}_${int(time.time()*1000)}
- voice.py TTS: tts_${userId}_${int(time.time()*1000)}
- voice.py voice_clone: voice_clone_${userId}_${ts}_${voice_id}
(原裸传第三方 voice_id,现包装为规范格式)
Refs: P2-1
2026-05-14 21:18:59 +08:00
小鱼开发
28d75c84e1
chore: 删除死代码 caption.ts
...
该文件无任何外部引用,autoAlignCaption 未被使用。
实际字幕打轴业务走 Async Engine(VoiceSynthesis.tsx 内自行定义类型)。
Refs: P2-3
2026-05-14 20:46:47 +08:00
小鱼开发
8046e408d6
refactor(VideoGeneration): 拆分 1385 行单体组件
...
按审查后的方案拆分为 8 个文件,单文件最大行数从 1385 降至 483:
utils/(纯函数,无 React 依赖)
- videoTimeline.ts: computeAssignedIntervals(57 行)
- videoValidation.ts: validateLocalVideo(85 行)
hooks/(独立领域逻辑)
- useEmptyShotMaterials.ts: 空镜素材匹配/切换/上传(210 行)
- useVideoGeneration.ts: 视频生成 4-Step 核心流程(425 行)
_components/(展示组件,接收 props)
- AvatarMaterialSelector.tsx: 人物素材卡片(99 行)
- ShotTimeline.tsx: 分镜列表 + 素材操作(182 行)
- GenerationControls.tsx: 底部控制栏(112 行)
index.tsx: 容器组件,组合子组件 + 管理人物素材/预览/activeScene(483 行)
目录采用 _components/ 下划线前缀(页面私有组件惯例)。
TypeScript 编译和 Vite 生产构建均通过。
Refs: P1-6
2026-05-14 18:28:21 +08:00
小鱼开发
7550559aa0
refactor: 清理未使用IPC命令、修正point_service注释与扣费逻辑、修复camelToSnake正则、优化vidu import
...
- 删除8个未使用IPC命令,保留validate_media_path
- file.rs返回类型优化为ApiResponse<()>
- point_service.consume()注释与签名一致
- VideoGeneration改为拼接成功后扣费
- 添加漏扣费风险注释
- 删除过时测试文件
- 修复camelToSnake连续大写字母问题
- vidu.py import移至模块顶层
Refs: P1-1~P1-6 技术债务清理
2026-05-14 17:45:28 +08:00
小鱼开发
cf1352ed41
fix: TTS合成成功弹窗显示后端实际扣费积分
2026-05-13 17:28:15 +08:00
小鱼开发
6728f9b012
fix: TTS去掉前置积分检查、扣费允许欠费,避免402打断流程
2026-05-13 16:52:57 +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
小鱼开发
353890df29
chore: 更新 prompt 配置与分类
2026-05-12 17:36:26 +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
小鱼开发
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
小鱼开发
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