小鱼开发
3258396e09
feat(ui): 消费 tab 隐藏说明列
...
消费分类与说明内容重复,消费 tab 下隐藏说明字段,
充值 tab 保留说明字段。
2026-05-16 09:40:43 +08:00
小鱼开发
5a36bb10e4
chore(VoiceSynthesis): 字幕打轴轮询去掉读秒,进度提示改为'字幕打轴处理中...'
2026-05-16 09:38:14 +08:00
小鱼开发
235075bf3f
fix(points): 修复积分记录说明重复括号问题
...
后端 /points/consume 接口已自动包 【】,前端不应重复添加:
- useVideoGeneration: 【视频生成】 -> 视频生成
- VideoCompose: 【压制成片】 -> 压制成片
2026-05-16 09:36:44 +08:00
小鱼开发
8780d73b72
fix(video-generation): 修复音频超时、上传泄漏、非空断言、hooks 依赖等 4 处问题
...
- useVideoGeneration: 音频时长读取增加 15 秒超时,避免 Promise 永久挂起
- useVideoGeneration: 将 clipAudioUrl 为空检查提前到 extract+upload 之前,
避免无意义的视频截取和七牛云垃圾文件
- videoCompose: 移除所有 res.data! 非空断言,改用安全访问 + 显式错误信息
- videoCompose: uploadAudioFile 使用 UploadAudioResult 替代 UploadVideoResult
- useEmptyShotMaterials: 补全 useEffect 缺失的 projectId 依赖
2026-05-16 09:30:59 +08:00
小鱼开发
b946c3e622
style(ui): 调整系统设置菜单顺序
...
系统更新放到关于我们上面。
2026-05-16 09:29:30 +08:00
小鱼开发
a39eedf7dd
feat(ui): 删除主题设置页面,固定浅色模式
...
- 删除 ThemeSettings 页面组件
- 从 Sidebar 移除主题设置菜单项
- 从 App.tsx 移除主题切换逻辑,固定 data-theme='light'
- 修改 settingsStore 默认主题为 'light',移除暗色初始化逻辑
- 顺手修复 useUpdater check 方法类型定义
2026-05-16 09:27:06 +08:00
小鱼开发
4b4ab66714
style(ui): 统一版本号展示格式
...
关于我们页面版本号从 'V 1.5.15' 改为 'v1.5.15',
与系统更新页面保持一致(小写v、无空格)。
2026-05-16 09:23:16 +08:00
小鱼开发
f8fd241d58
chore(prompts): 移除水电材料(sc)分类
2026-05-16 09:22:12 +08:00
小鱼开发
b521270f48
fix(SystemUpdate): 移除'上次检查时间'默认提示文本
2026-05-16 09:03:47 +08:00
小鱼开发
02886159c4
fix: AboutUs 版本号改为使用 __APP_VERSION__,消除硬编码
2026-05-16 08:06:27 +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
小鱼开发
40f4b8656b
fix(rust): add auth token to file upload requests
...
upload_file_to_backend was sending requests without Authorization header,
causing 401 Unauthorized on /upload/video and /upload/audio endpoints.
- Read accessToken from local auth.json
- Add Authorization: Bearer <token> header to multipart upload requests
- Pass AppHandle through upload_video_file and upload_audio_file commands
2026-05-16 00:41:15 +08:00
小鱼开发
ef40620e86
fix(video): pass checkBalance/handleError from parent to avoid hook instance mismatch
...
usePointsCheck was called twice: once in VideoGeneration/index.tsx
(for PointsModal) and once in useVideoGeneration.ts (for checkBalance).
This created two independent hook instances with separate state,
so setShowPointsModal(true) in checkBalance never affected the
rendered PointsModal. Now both are from the same hook instance.
2026-05-16 00:29:00 +08:00
小鱼开发
fb4984bb61
fix(video): defer progress.show() until after checkBalance passes
...
Moving progress.show() after checkBalance prevents the progress modal
from flashing briefly when the user has insufficient points.
2026-05-16 00:21:56 +08:00
小鱼开发
a04a1930e4
fix(video): wrap checkBalance in try-catch to prevent silent failure
...
checkBalance was called outside the try block; if fetchBalance() threw
(e.g. network error), handleGenerate would reject silently with no UI
feedback. Now checkBalance is inside try-catch, so any error shows a
toast and resets the button state.
2026-05-16 00:12:33 +08:00
小鱼开发
c79921b01a
fix(updater): suppress error dialog on auto-check failure
...
- Add silent parameter to check(): when true, errors are logged to console
but not surfaced in the dialog
- Auto-check on app startup uses silent=true, so network/server errors
won't interrupt the user
- Manual check in SystemUpdate.tsx keeps full error display
2026-05-15 23:08:13 +08:00
小鱼开发
6318f4a74c
fix(ui): handle error state correctly in UpdateDialog
...
- Title shows '检查更新失败' instead of '发现新版本' when error occurs
- Hide '立即更新' button on error, show '关闭' button instead
- Allow close button (×) on error state
2026-05-15 22:57:17 +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
小鱼开发
bbd4358177
fix(ui): suppress update dialog during checking phase
...
Remove 'checking' from the render condition to prevent the dialog
from flashing briefly when auto-checking for updates on app startup.
2026-05-15 18:18:09 +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
小鱼开发
065bb4f66b
chore(gitignore): ignore seed materials cache
2026-05-15 17:36:08 +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
小鱼开发
d71cfb8449
docs: 新增应用发版操作手册
2026-05-15 17:17:14 +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
小鱼开发
59179dd843
chore: 删除 .playwright-mcp 缓存并加入 .gitignore
2026-05-15 16:57:02 +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
小鱼开发
10f83bdf15
refactor: 统一轮询循环方式为 while + Date.now()
...
VoiceSynthesis 和 useVideoGeneration 原来使用 for 循环 + 计数器,
实际超时时间会因请求耗时而远超预期。统一改为 while + Date.now()
计时,与 ScriptCreation 保持一致。
- VoiceSynthesis: 120×1s → timeout=120_000ms
- useVideoGeneration: 120×5s → timeout=600_000ms
- tsc + vite build 通过
2026-05-14 22:16:11 +08:00
小鱼开发
920554ef26
refactor: 视频生成统一走通用任务接口,删除 vidu.ts 专用封装
...
业务发现:后端所有任务(script/subtitle/video)本就共用同一套
TaskRegistry + AsyncEngine + /tasks/{id} 接口。vidu.ts 中的
submitLipSync / queryLipSyncStatus 只是通用接口的包装,额外做了
completed→success 等状态映射,徒增混乱。
- 删除 src/api/modules/vidu.ts(70 行)
- useVideoGeneration.ts 改用 createTask('video') + getTaskStatus
- 状态字段统一为 status(completed/failed/running/pending)
- tsc + vite build 通过
2026-05-14 22:10:45 +08:00
小鱼开发
275b52ac63
refactor: 删除多余的 resolveHostPath 函数
...
Tauri 桌面应用的 Rust 后端直接运行在宿主机上,不会返回 Docker
容器内的 /root/... 路径。该函数基于错误假设(Rust 后端在 Docker
中运行),实际上永远不会触发路径转换。
- 删除 src/utils/path.ts(20 行)
- 4 处调用点改为直接使用原始路径
- 构建通过(tsc + vite build)
2026-05-14 21:54:46 +08:00
小鱼开发
95ed7ed331
refactor: 提取 resolveHostPath 到 utils/path.ts
...
消除 4 处重复定义:
- hooks/useLocalVideo.ts
- hooks/useCoverFabric.ts
- pages/VideoCreation/SubtitleBurning.tsx
- pages/VideoCreation/VideoCompose.tsx
统一实现:处理 undefined 输入 + home fallback
Refs: P2 债务清理
2026-05-14 21:38:04 +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
小鱼开发
7f2d61742e
fix: 积分不足弹窗支持显示积分范围
2026-05-13 20:49:48 +08:00