From d05b17b61abc65917dc89607f64874d6beab00a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=B1=BC=E5=BC=80=E5=8F=91?= Date: Mon, 20 Apr 2026 17:26:55 +0800 Subject: [PATCH] init: fork from meijiaka-zy --- .DS_Store | Bin 14340 -> 8196 bytes docs/implementation-plan-meijiaka-zj.md | 65 ++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 docs/implementation-plan-meijiaka-zj.md diff --git a/.DS_Store b/.DS_Store index 62071709ba38e1be772d134f8725712fd40ca65a..16c415c86d4a3cf84e6681e620b06016d733fa79 100644 GIT binary patch delta 1101 zcmd^;TTc@~7>4(4i|pDl-Et@`bdl785DK9J0S`nDVo;D8p;3?kExU#yZJ|X$MIi=n zR5Z;5O;ikCsTeP`L5b05qDC;@$sbUI(JL>!@R;aqxBdz@nVoswZ)Wz}_nVm-nyR&O z9EbWNvYX@7AMAkS^IbqU;IF>NJ@b7g$U*r{zly>7W{Eh$!qW^L#=sl8Q-tG;mzuMV~gY zl$4S7!-0@2h*3=`CzXYCpf4N@vLvH| zCe}#}Qn&iu7GHG4Go*ynoR+lMP8REo_WL4=XEdZlk}2(GDs|^r>{eTLt3#4H)YWye zoX9!bYBNb~l9#@7^-X-{zH&bRtU)T)!iWrH!wDBEQH5%3Mm;>(i+yNA7y1#v0HPSf zF`U3S&fqN0VHy{38MC;KIo!ZJ?jw!`Jit>dVHvOS7Vq%^tN4g7_=#WmtxM5m>8v`N z&Y^SBCmA(#*qK4+?U{PA&K{q2+Cb-utrK2mpEAa)l@U`{*ni~M$p$CS>=RRxSXjic zSzM!`y`+?9r4n@sB=$|^0xO89Phv?GLuf#@ZWCB(L_-pDYZ-D0u-kVuvTc?i($)fr zPUfc2KbD$~YGyyagAAX z6Sr_1cW{>(^AL-8gy(pHmv}{IvfOn0Ml1ckK0P-1#;i}AXwGV6eWQ9M*wOx`r>2Ts c)I)flop|-OaI}Za(B9%g+LAx;|Jt?u7x_s8jQ{`u literal 14340 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 J|BnRz|3B92>d^oI diff --git a/docs/implementation-plan-meijiaka-zj.md b/docs/implementation-plan-meijiaka-zj.md new file mode 100644 index 0000000..c12e474 --- /dev/null +++ b/docs/implementation-plan-meijiaka-zj.md @@ -0,0 +1,65 @@ +# "美家卡智剪"项目终版详细执行方案 (v4) + +**总体目标:** 在 `/Users/0fun/work/meijiaka-zj` 目录下,以 `/Users/0fun/work/ai-meijiaka` 为模板,创建一个全新的、遵循“本地为王,云端为辅”架构的“美家卡智剪”应用。 + +--- + +### **阶段零:项目初始化与代码剥离** + +**阶段架构原则:** 这是奠基阶段。我们的目标是创建一个干净、独立、且符合“智剪”项目定位的代码骨架。我们将物理上复制源码,并从逻辑上剥离所有与“智影”云端架构相关的、不再需要的部分。 + +#### **任务 0.1: 创建新项目目录并复制源码** + +* **目标:** 搭建新项目的物理文件结构。 +* **架构角色与数据流:** 这是文件系统层面的操作,为后续所有开发工作提供一个隔离的工作区。 +* **具体步骤:** + 1. **创建目录:** 执行 `mkdir /Users/0fun/work/meijiaka-zj` 命令。 + 2. **复制源码:** 执行 `rsync` 命令,将 `ai-meijiaka` 的代码干净地复制到 `meijiaka-zj`。此命令会智能地排除无需复制的目录(如 `.git`, `node_modules`, `__pycache__` 等),确保新项目有一个纯净的起点。 + ```bash + rsync -av --exclude='.git' --exclude='node_modules' --exclude='.venv' --exclude='__pycache__' --exclude='target' --exclude='*.lock' /Users/0fun/work/ai-meijiaka/ /Users/0fun/work/meijiaka-zj/ + ``` + 3. **初始化版本控制:** 在新目录 `/Users/0fun/work/meijiaka-zj` 中执行 `git init` 和 `git add . && git commit -m "init: fork from meijiaka-zy"`,为新项目建立独立的版本历史。 + +#### **任务 0.2: 项目品牌化与架构清理** + +* **目标:** 修改新项目中的配置,使其从“智影”变为“智剪”,并移除无用的代码。 +* **架构角色与数据流:** 这是对代码库的“净化”操作,确保新架构的纯粹性。 +* **具体步骤:** + 1. **品牌化修改:** + * **Tauri 配置:** 修改 `/Users/0fun/work/meijiaka-zj/tauri-app/src-tauri/tauri.conf.json`,将 `productName` 和 `title` 从“智影”改为“智剪”,并更新 `identifier`。 + * **后端文档:** 修改 `/Users/0fun/work/meijiaka-zj/python-api/app/main.py` 中的 FastAPI 应用标题和描述。 + * **文档文件:** 更新根目录和各子目录下的 `README.md` 文件,反映“智剪”项目的新特性。 + 2. **架构清理 (关键步骤):** + * **移除云端模型:** 在 `/Users/0fun/work/meijiaka-zj/python-api/app/models/` 目录下,删除与云端项目管理相关的 SQLAlchemy 模型,例如 `project.py`, `script.py` 等(但保留 `user.py` 用于可能的设备认证)。 + * **移除云端API:** 在 `/Users/0fun/work/meijiaka-zj/python-api/app/api/v1/` 目录下,删除对应的API路由文件。 + * **移除数据库迁移:** 清空或删除 `/Users/0fun/work/meijiaka-zj/python-api/alembic/versions/` 目录下的所有数据库迁移脚本,因为新项目没有数据库。 + * **移除前端相关状态:** 检查 `/Users/0fun/work/meijiaka-zj/tauri-app/src/store/`,移除或重构那些强依赖云端数据的 Store 逻辑。 + +--- + +### **后续阶段 (在 `/Users/0fun/work/meijiaka-zj` 中执行)** + +在完成阶段零的初始化后,后续所有阶段的开发工作都将在新的 `/Users/0fun/work/meijiaka-zj` 目录中进行。 + +#### **第一阶段:后端改造 — 构建无状态AI代理网关** + +* **任务 1.1:** 在 `meijiaka-zj/python-api/app/services/` 中创建 `voice_clone_service.py`。 +* **任务 1.2:** 在 `meijiaka-zj/python-api/app/services/` 中创建 `tts_service.py`。 +* **任务 1.3:** 在 `meijiaka-zj/python-api/app/api/v1/` 中创建 `voice.py`。 +* **任务 1.4:** 在 `meijiaka-zj/python-api/app/scheduler/handlers/` 中创建 `tts_handler.py`。 + +#### **第二阶段:系统能力扩展 — 强化Rust本地核心** + +* **任务 2.1:** 在 `meijiaka-zj/tauri-app/src-tauri/src/` 中创建 `storage/voice.rs`。 +* **任务 2.2:** 在 `meijiaka-zj/tauri-app/src-tauri/src/` 中创建 `commands/voice.rs`。 +* **任务 2.3:** 修改 `meijiaka-zj/tauri-app/src-tauri/src/ffmpeg_cmd.rs`,实现音频替换。 + +#### **第三阶段:前端应用 — 构建本地化交互界面** + +* **任务 3.1:** 改造 `meijiaka-zj/tauri-app/src/store/projectStore.ts` 并创建 `voiceStore.ts`。 +* **任务 3.2:** 在 `meijiaka-zj/tauri-app/src/pages/VideoCreation/` 中创建 `VideoEditing.tsx`。 +* **任务 3.3:** 在 `meijiaka-zj/tauri-app/src/pages/VideoCreation/` 中创建 `VoiceDubbing.tsx`。 + +#### **第四阶段:端到端集成与验证** + +* **任务 4.1:** 在 `meijiaka-zj` 项目中,完整地运行和测试整个手动剪辑与AI配音的流程。