# ad-video **Repository Path**: caocaoca3/ad-video ## Basic Information - **Project Name**: ad-video - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-23 - **Last Updated**: 2026-10-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 映册 · AI 短剧 / 漫画创作工作台 基于原始 Electron 空项目逐步补齐的本地 MVP。保留 `index.js` 作为入口、`ai-video` 包名和 Yarn 锁文件。原始配置备份为 `package.original.json`。 ## 启动 需要 Node.js 22.12+ 和 Yarn。 ```sh yarn install yarn start ``` `yarn start` 先做类型检查和生产构建,再启动桌面窗口;`yarn dev` 开启 Vue 页面热更新。修改 electron/ 或 shared/ 后重启开发进程。`yarn build` 仅构建,`yarn test` 检查数据库完整性,`yarn smoke` 在构建后用隔离测试目录验证真实 Electron 页面与 IPC,并自动退出。 ## Codex 插件 公开的[映册插件](plugins/yingce/README.md)可让 Codex 连接本机运行中的映册,查看和编辑项目、剧情、分镜与素材。插件源码与本项目一起维护,安装方法见插件说明。 ## 分享 Windows 安装包 在 Windows x64 上运行 `yarn dist:msi`,会生成 `release/YingCeStudio-Setup-0.1.1.msi`。发送 MSI 给朋友即可;安装程序按当前 Windows 用户安装,并创建桌面和开始菜单快捷方式。升级版本时只增加 `package.json` 中的 `version`,始终保留 `build.msi.upgradeCode`。 首次打包需要联网准备 Electron 和 WiX 工具。 MSI 使用 electron-builder / WiX 生成,目前未使用商业代码签名证书;首次安装时 Windows 可能显示未知发布者提示。分享时附上 SHA256 校验值,方便确认文件完整。 ## 已实现 - 项目创建、编辑、切换、删除;每个项目的数据隔离。 - 世界书、人物、场景、提示词的创建、编辑、搜索、分类筛选和删除。 - 图片 / 视频 / 音频导入(单文件最大 1 GB),复制到受管理的本地目录;图片详情预览(最大 15 MB),文件夹定位。 - 人物与场景的提示词、参考素材;素材及提示词关联人物、场景。 - 剧情 → Scene → Shot 的强制上级关系,镜头景别、时长、顺序、运镜、台词、生成提示词、制作状态。 - 删除确认、错误提示、SQLite 原子保存、重启恢复;关联条目删除后清理引用。 - 「整合到待办」按场与分镜顺序组合世界书、剧情、人物、场景、提示词模板和参考图;可预览、检查缺失资料并加入待办任务区。 - 生成任务保存在本机 `studio/generation-jobs/`,包含 `prompt.md`、参考图副本和任务状态。生成后的图片可经映册本机插件回写素材库,并关联原场景。 ## 漫画生成流程 在「整合到待办」选择一场戏、提示词模板及要带入的设定,检查预览,然后点击「加入待办任务」。映册会保存整合提示词和参考图,并在当前项目的「待办任务」中显示。创建任务不会复制提示词、打开 ChatGPT 或自动生成。需要制作时,在 Codex 对话中主动让映册处理待办任务;映册插件可读取任务、生成图片并回写漫画书。 映册不调用 OpenAI API。待办任务保存在本机,只有用户主动要求处理时才由当前 Codex 会话读取与制作。 ## 结构 ```text index.js 原有入口约定 electron/main.ts 窗口、受限 IPC、文件导入 electron/preload.ts 类型化白名单 API electron/database.ts SQLite 存储与数据校验 electron/schema.ts Drizzle 表定义 shared/types.ts Project / Entry / Scene / Shot 共用契约 src/App.vue 页面与编辑器 src/store.ts Pinia 项目状态 src/catalog.ts 左侧导航与分类 scripts/ 构建、开发、测试入口 tests/ 存储与关联测试 ``` SQLite 通过 sql.js 在主进程中运行,Drizzle 负责查询,避免 Electron 原生模块重编译。每次修改事务成功后写入临时文件并原子替换数据库;写入失败时恢复内存快照。适合当前本地单用户 MVP,大规模资源元数据未来可迁移到原生 SQLite 驱动。单实例运行,避免同时覆盖数据库。 所有条目使用 `entries.kind` 区分类型;`scene.parentId` 必须关联当前项目的 `story`,`shot.parentId` 必须关联当前项目的 `scene`。人物、地点、素材通过 `data.characterId/locationId/assetId` 关联。扩展字段使用 JSON 保存,数据库版本为 1;后续结构修改需添加迁移,不能删除旧数据库。 数据位置:Electron 的 `app.getPath('userData')/studio/studio.sqlite`,素材位于同目录 `assets/`,生成任务位于 `generation-jobs/`。Windows 通常是 `%APPDATA%/ai-video/studio/`。退出应用后备份整个 studio 文件夹即可。测试数据单独位于项目 `.smoke-data/`。 删除项目/条目会删除数据库记录及下属剧情关系,但保留已导入的物理素材文件,避免误删;暂不提供孤立文件清理。原始导入文件始终保持不变。 ## 第一版边界 当前未接入 AI 生成服务、全局跨项目库、人物关系图、版本历史或时间线剪辑。每个条目暂支持一个关联人物、一个场景和一个参考素材;后续可扩展为多对多关联。镜头顺序已存储,当前列表按更新时间展示。 页面保持 contextIsolation、sandbox 开启,禁用 Node 集成;参考 [Electron 安全指南](https://www.electronjs.org/docs/latest/tutorial/security)。数据库访问仅在主进程中进行,参考 [Drizzle SQLite 文档](https://orm.drizzle.team/docs/sqlite/get-started-sqlite)。