Commit Graph

128 Commits

Author SHA1 Message Date
root a5381e5305 feat: implement Cloudflare KV utility class and React hooks
- Add CloudflareKVClient class with full CRUD operations
- Support for batch operations, metadata, and key listing
- Implement useCloudflareKV hook for React components
- Add useKVValue hook for auto-loading specific keys
- Include comprehensive error handling and loading states
- Create demo component showing all functionality
- Add detailed documentation and usage examples
- Support for JSON parsing and custom configurations
- Based on jm_video_ui.md specifications
2025-07-10 20:51:09 +08:00
root 04e5990376 refactor: extract common Python execution patterns into reusable shared code
- Create python_executor.rs module with unified Python command execution
- Remove duplicate execute_python_command functions from ai_video.rs and template.rs
- Eliminate 553 lines of duplicate code across both files
- Improve error handling and JSON-RPC message parsing consistency
- Fix template import 'Unknown error' issue by using unified JSON parsing
- Add configurable timeout and encoding settings
- Ensure consistent UTF-8 encoding across all Python executions
2025-07-10 20:45:54 +08:00
root 1435c72ba6 fix 2025-07-10 20:32:31 +08:00
root 2c609c04f1 fix: invoke 2025-07-10 20:22:37 +08:00
root 13d1127b7a fix: invoke 2025-07-10 20:21:51 +08:00
root 12ac233a5b fix: import error 2025-07-10 20:18:10 +08:00
root c73aeb58e9 feat: 添加完整的模板管理系统
🎉 新功能:
- 批量导入模板功能,支持文件夹结构解析
- 自动解析 draft_content.json 并提取轨道/素材信息
- 智能素材管理,自动复制到统一资源目录
- 路径转换为相对路径,确保模板可移植性
- 现代化的模板管理界面,支持网格/列表视图
- 搜索和筛选功能
- 模板详情预览和删除功能

🏗️ 技术实现:
- Python: TemplateManager 核心服务类
- Rust/Tauri: 跨平台命令处理和进程管理
- React/TypeScript: 响应式前端界面
- JSON-RPC: 前后端通信协议

📁 文件结构:
- 模板存储在 attachments/templates/{uuid}/ 目录
- 素材统一管理在 resources/ 子目录
- 元数据存储在 templates.json 文件

 已测试功能:
- 批量导入多个模板
- 模板列表显示和搜索
- 模板详情查看
- 模板删除操作
- CLI 命令行接口

这个系统为视频编辑提供了强大的模板管理能力,
支持从外部导入模板并自动处理素材依赖关系。
2025-07-10 20:14:49 +08:00
root 168ad4dafa fix: 修复批量处理中图片文件重复计数问题
- 替换glob模式匹配为直接文件系统遍历
- 避免在大小写不敏感文件系统上的重复匹配
- 添加更好的错误处理和调试日志
- 确保图片计数准确性

修复了Windows系统上同一图片文件被计数两次的问题
2025-07-10 19:47:17 +08:00
root 8f0cbe7995 fix: message 2025-07-10 19:42:00 +08:00
root ad3a608acd fix 2025-07-10 19:40:25 +08:00
root 3728bb007b fix 2025-07-10 19:32:44 +08:00
root 946673c699 fix 2025-07-10 19:27:14 +08:00
root 8ae1718172 fix 2025-07-10 19:18:38 +08:00
root 8a1641e7ff fix 2025-07-10 17:41:25 +08:00
root f0cd8f3e9a fix 2025-07-10 17:40:55 +08:00
root 76fe0d4550 fix 2025-07-10 17:39:29 +08:00
root 6fc4c8ba97 fix 2025-07-10 17:35:59 +08:00
root 12efdc60ab fkix 2025-07-10 17:35:06 +08:00
root 6fdd1b280d fix 2025-07-10 17:34:01 +08:00
root e865e3c68a fix 2025-07-10 17:28:13 +08:00
root 988c9e4333 fix 2025-07-10 17:25:08 +08:00
root 08b2c7080f fix 2025-07-10 17:23:30 +08:00
root 3de6b09fe5 fix 2025-07-10 17:21:53 +08:00
root ed27ecb4a0 fix 2025-07-10 17:20:19 +08:00
root 195f2207d5 fix 2025-07-10 17:19:19 +08:00
root 59ec478665 fix 2025-07-10 17:15:49 +08:00
root 22097ca2b3 fix 2025-07-10 17:10:52 +08:00
root 398c853b80 fix 2025-07-10 16:43:29 +08:00
root 988b4d10c8 fix: 添加拷贝按钮 2025-07-10 16:06:55 +08:00
root 604cb31114 fix 2025-07-10 15:34:18 +08:00
root 841fcee7b3 fix 2025-07-10 15:29:23 +08:00
root 995526ec57 fix 2025-07-10 15:27:21 +08:00
root 761f924b55 fix 2025-07-10 15:22:53 +08:00
imeepos d2bcaae157 fix: requirement 2025-07-10 15:20:02 +08:00
root 9ddd0fc0c2 fix: requirement 2025-07-10 15:08:08 +08:00
root 17a8311768 fix: requirement 2025-07-10 15:07:28 +08:00
root 3d49505e65 fix: requirement 2025-07-10 15:05:19 +08:00
root ece222ba4b fix 2025-07-10 15:02:28 +08:00
root 95f7921199 fix: add pydantic_settings to requirements 2025-07-10 14:54:38 +08:00
root a6052a731d fix: pydantic 2025-07-10 14:53:27 +08:00
root 6bab8d8499 fix: python -m 运行方式 2025-07-10 14:49:51 +08:00
root 1ff49a3c26 refactor: 统一使用相对导入,规范 Python 包结构
🏗️ **Python 包结构规范化**:

1. **导入方式统一**:
   - 移除所有 sys.path.append() hack 方式
   - 统一使用相对导入 (from ..config import settings)
   - 符合 Python 包管理最佳实践

2. **包结构简化**:
   - 简化 python_core/__init__.py,移除复杂依赖
   - 避免包初始化时的循环导入问题
   - 清理不必要的 try-except 导入逻辑

3. **模块运行方式**:
   - 支持标准的模块运行: python -m python_core.ai_video.video_generator
   - Rust 代码使用 -m 参数调用 Python 模块
   - 相对导入在模块运行时正常工作

4. **涉及文件修改**:
   - python_core/__init__.py: 简化包初始化
   - python_core/ai_video/video_generator.py: 相对导入
   - python_core/ai_video/cloud_storage.py: 移除 fallback 逻辑
   - python_core/ai_video/api_client.py: 统一相对导入
   - python_core/video_processing/core.py: 相对导入
   - python_core/audio_processing/core.py: 相对导入
   - python_core/utils/logger.py: 相对导入
   - python_core/services/*.py: 统一相对导入
   - src-tauri/src/commands/ai_video.rs: 使用模块运行方式

5. **代码质量提升**:
   - 移除重复的 sys.path 操作
   - 清理冗余的 try-except 导入
   - 统一的错误处理方式
   - 更清晰的模块依赖关系

 **改进效果**:
- 符合 Python 最佳实践 ✓
- 代码结构更清晰 ✓
- 易于维护和测试 ✓
- 消除 hack 式路径操作 ✓
- 支持标准模块运行 ✓

现在整个 Python 包结构规范且易于维护!
2025-07-10 14:47:32 +08:00
root 3cd3ac9b71 fix: import error 2025-07-10 14:38:13 +08:00
root fff058bf39 fix: 修复进程终止检测和错误处理
🔧 **进程终止检测和错误处理修复**:

1. **问题分析**:
   - Python 进程在执行过程中被意外终止
   - Rust 代码没有正确处理进程终止情况
   - 前端显示 'unknown error' 而不是具体错误信息

2. **进程状态检测增强**:
   - 添加详细的进程退出码检查
   - 识别常见的进程终止原因:
     * 退出码 1: 一般错误
     * 退出码 -1073741510: 系统安全终止
     * 退出码 3221225786: 防病毒软件终止
   - 区分正常退出和异常终止

3. **错误信息改进**:
   - 捕获并保存 stderr 输出
   - 将 stdout 和 stderr 都包含在错误报告中
   - 提供用户友好的错误描述和解决建议
   - 针对防病毒软件终止提供明确指导

4. **数据类型修复**:
   - 修复 Windows 退出码的数值溢出问题
   - 正确处理 u32 和 i32 之间的转换
   - 修复 Vec<String> 的 join 方法调用

5. **详细错误报告**:

 **修复效果**:
- 准确识别进程终止原因 ✓
- 提供详细的错误信息和解决方案 ✓
- 修复数值溢出编译错误 ✓
- 改善用户体验和问题诊断 ✓

现在用户可以看到具体的错误原因和解决建议!
2025-07-10 14:35:29 +08:00
root f47c96d2c7 fix: add logs 2025-07-10 14:27:47 +08:00
root 0485f2d75d fix: 添加调试日志 2025-07-10 14:25:58 +08:00
root 47899ba5f5 fix: 修复 Python 进程启动失败问题
🔧 **Python 进程启动修复**:

1. **问题诊断**:
   - 用户日志显示 Python 进程启动后无输出
   - Rust 代码假设 Windows 有 'python' 命令
   - 实际系统可能只有 'python3' 或 'py' 命令

2. **多 Python 命令支持**:
   - Windows: 尝试 ['python', 'python3', 'py']
   - Linux/macOS: 尝试 ['python3', 'python']
   - 自动检测可用的 Python 解释器
   - 详细的错误日志和重试机制

3. **增强错误处理**:
   - 每个 Python 命令尝试都有详细日志
   - 失败时显示具体错误原因
   - 最终失败时提供完整的错误信息

4. **Python 脚本调试增强**:
   - 添加启动时的详细信息输出
   - 显示 Python 版本、工作目录、参数
   - 模块导入错误的详细诊断
   - 关键路径和环境信息输出

5. **环境测试函数同步修复**:
   - test_ai_video_environment 使用相同的多命令策略
   - 更好的错误报告和诊断信息

 **修复效果**:
- 支持多种 Python 命令 ✓
- 详细的启动和错误日志 ✓
- 自动环境检测和适配 ✓
- 更好的问题诊断能力 ✓

现在应该能够在不同的 Python 环境中正常启动!
2025-07-10 14:21:01 +08:00
root a56400b4d2 fix: 修复 AIVideoGenerator 组件中的 Store Hooks 使用错误
🔧 **Store Hooks 修复**:

1. **问题识别**:
   - useAIVideoJobs, useAIVideoProcessing, useAIVideoSettings 使用方式错误
   - 缺少 useAIVideoStore 主 store 的导入
   - 函数名不匹配:generateBatchVideos vs batchGenerateVideos

2. **修复内容**:
   - 添加 useAIVideoStore 导入
   - 正确使用 selector hooks:
     * useAIVideoJobs() → 返回 jobs 数组
     * useAIVideoProcessing() → 返回 isProcessing 布尔值
     * useAIVideoSettings() → 返回设置对象
   - 通过主 store 获取 actions:
     * generateSingleVideo
     * batchGenerateVideos
     * clearCompletedJobs

3. **Store 架构理解**:
   - **Selector Hooks**: 用于获取特定状态片段
   - **Main Store**: 用于获取 actions 和复杂操作
   - **类型安全**: 所有 hooks 都有正确的 TypeScript 类型

4. **函数调用修复**:
   - generateBatchVideos → batchGenerateVideos
   - 保持与 store 定义的一致性

 **修复效果**:
- 编译错误消除 ✓
- Store 状态正确访问 ✓
- Actions 函数正常调用 ✓
- TypeScript 类型检查通过 ✓

现在组件可以正确使用 Zustand store 进行状态管理!
2025-07-10 14:12:23 +08:00
root cdd72240ea refactor: 完成 AIVideoGenerator 组件模块化重构
🏗️ **组件拆分重构**:

1. **主要问题解决**:
   - AIVideoGenerator 组件代码过多 (600+ 行) → 拆分为 6 个专注组件
   - 单一职责原则:每个组件专注特定功能
   - 提高代码可维护性和可读性

2. **新组件架构**:
   - **AIVideoGenerator** (170 行) - 主容器组件,状态管理和业务逻辑
   - **VideoModeSelector** (30 行) - 模式选择组件 (单个/批量)
   - **SingleVideoForm** (90 行) - 单个视频生成表单
   - **BatchVideoForm** (120 行) - 批量视频生成表单
   - **VideoSettings** (50 行) - 视频设置组件 (时长/模型)
   - **VideoJobList** (140 行) - 任务列表组件

3. **组件职责分离**:
   - **状态管理**:主组件统一管理状态
   - **UI 渲染**:子组件专注 UI 展示
   - **事件处理**:通过 props 回调通信
   - **业务逻辑**:主组件处理生成逻辑

4. **代码组织优化**:
   - 创建  目录
   - 按功能模块组织文件结构
   - 清晰的导入导出关系
   - 统一的 TypeScript 类型定义

5. **用户体验保持**:
   - 功能完全一致:所有原有功能正常工作
   - 界面布局不变:用户无感知重构
   - 性能优化:减少重复渲染
   - 错误处理:完整的错误边界

6. **开发体验提升**:
   - 代码可读性:每个文件职责清晰
   - 维护便利性:修改影响范围小
   - 测试友好:组件独立可测试
   - 扩展性强:新功能易于添加

 **重构效果**:
- 代码行数减少:600+ → 170 行主组件 ✓
- 组件职责清晰:6 个专注组件 ✓
- 功能完整保持:所有特性正常 ✓
- 构建成功:无编译错误 ✓

现在 AIVideoGenerator 具有更好的代码结构和可维护性!
2025-07-10 14:06:17 +08:00
root 58c6b6c247 feat: 添加前端输出目录选择功能
🎯 **解决问题**:
修复 AI 视频生成失败问题:'Single mode requires --image, --prompt, and --output'

🔧 **前端改进**:

1. **单个模式输出目录选择**:
   - 添加 singleOutputFolder 状态管理
   - 新增 handleSingleOutputFolderSelect 处理函数
   - UI 中添加输出目录选择按钮和输入框
   - 支持手动输入和文件夹选择两种方式

2. **批量模式输出目录优化**:
   - 重构为专门的 handleBatchOutputFolderSelect 函数
   - 替换内联函数,提高代码可维护性
   - 统一错误处理和用户反馈

3. **用户界面增强**:
   - 单个模式:'视频保存目录 (可选)' - 用户友好的可选设置
   - 批量模式:保持原有的必需输出目录设置
   - 占位符文本提供清晰的使用指导
   - 实时显示选择状态:'未选择 (将使用默认目录)'

4. **后端兼容性**:
   - Rust 代码提供默认输出路径备用方案
   - 确保 Python 脚本始终接收到 --output 参数
   - 使用系统临时目录作为默认保存位置

 **修复效果**:
- 解决 'Single mode requires --output' 错误 ✓
- 用户可以自定义视频保存位置 ✓
- 提供默认保存路径备用方案 ✓
- 改善用户体验和操作便利性 ✓

现在用户可以选择视频保存位置,解决了生成失败的问题!
2025-07-10 13:57:28 +08:00