diff --git a/.env.example b/.env.example index 251f6f495..561af1009 100644 --- a/.env.example +++ b/.env.example @@ -14,6 +14,10 @@ ENABLE_PROVIDER_PLUGINS=false CANVAS_DATA_PATH=./data CANVAS_WORKER_CONCURRENCY=3 CANVAS_CHANNEL_CONCURRENCY=3 +# 时间线字幕转写由本地 whisper.cpp 服务执行;指向其 HTTP 地址(如 http://127.0.0.1:8082),不配置则转写任务明确失败。 +CANVAS_WHISPER_BASE_URL= +# 时间线渲染/播放副本转码使用的 ffmpeg 可执行文件;留空时在 PATH 中查找。 +CANVAS_FFMPEG_PATH= # 收到 SIGTERM 后等待活动后台任务完成的最长时间;生产 Compose 的 stop_grace_period 使用同一值。 CANVAS_SHUTDOWN_TIMEOUT=10m # 开发和旧部署默认由后端启动时迁移;受管生产部署由独立 migrate 服务执行并将此项设为 false。 diff --git a/.gitignore b/.gitignore index a53f08137..b023579bb 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ node_modules/ docs/* !docs/design/ !docs/index.md +!docs/adr/ +!docs/plans/ # Keep the new plugin design spec versioned without unignoring generated docs. !docs/content/ docs/content/* diff --git a/CONTEXT.md b/CONTEXT.md new file mode 100644 index 000000000..0f48d1a51 --- /dev/null +++ b/CONTEXT.md @@ -0,0 +1,81 @@ +# 影策 · 编辑器上下文 + +面向 AI 影视与短剧创作工作台中的"时间线智能编辑器"子域:时间线模型、编辑命令、预览与导出、自动字幕、插件体系的统一语言。术语主要受 Concat(WolfCut)架构启发,插件部分参考 open-vetta「万物皆可插件」理念,适配 Web + Go 技术栈,详见 `docs/adr/`。 + +## 语言 + +**时间线 (Timeline)**: +项目的时序编排视图,由轨道与片段组成;`TimelineProject`(v2)是编辑真相源的数据形状。 +_Avoid_: 时间轴、剪辑线 + +**轨道 (Track)**: +同一类型片段的有序序列(video / audio / subtitle / text / image),有 `order` 与 `locked`。 +_Avoid_: 层(Layer 特指画布节点叠放,不用于时间线) + +**片段 (Clip)**: +时间线上对素材的一段引用:`startMs` + `durationMs` 定位在时间线,`sourceStartMs` / `sourceDurationMs` 定位在源素材内。 +_Avoid_: 素材(Media 指源头资产,Clip 是其时间线引用) + +**直连媒体 (directMedia)**: +仅时间线作用域的媒体引用(素材库/项目资产/本地上传直接入轨),存在时预览/导出优先从该字段解析,不回画布查节点。 +_Avoid_: 内联媒体、画布素材 + +**编辑命令 (EditCommand)**: +唯一允许修改时间线的可序列化指令 `{ op, payload }`,经单队列顺序应用;UI 不直接改写模型。 +_Avoid_: 操作、mutate、setState(指组件内部状态) + +**手势回显 (Echo)**: +拖拽/裁剪等手势期间在本地预演的位置与效果,手势结束才提交一个编辑命令——撤销的粒度是手势而非每一像素。 +_Avoid_: 预览态、假数据 + +**预览近似 (Preview Approximation)**: +交互期间用浏览器原生能力(`