Files
ttstd-infinite-canvas/docs/design/image-video-workbench-solution.md

27 KiB
Raw Permalink Blame History

生图与视频方案

1. 目标与范围

为普通用户提供两个独立入口:

  • 生图:面向文生图、图生图和工具化的图像编辑任务。
  • 视频:面向文生视频、图生视频,以及模型支持的视频/音频参考输入。

后台提供“工作台工具管理”,维护生图和视频工具目录、分类、预设提示词、图标/封面、使用说明及示例媒体;“功能开放”增加两个独立开关,由管理员控制对应用户入口和后端写入能力。

这不是新的模型协议实现。模型选择、能力判断、任务排队、计费、取消、媒体落库、资源访问与任务恢复均复用现有生成链路。工具目录负责组织场景、注入经过校验的预设内容和展示指南,不直接保存供应商密钥或任意上游请求配置。

2. 调研结论

外部页面

已访问:

页面可正常返回,但当前无登录会话的页面抓取只得到产品导航、页面标题和路由入口,生成区由前端/登录态驱动的内容没有暴露。因此可确认该产品将 AI 图片、AI 视频作为独立一级工作区;不能据此断言其具体参数布局、任务列表或交互细节。后续如需逐项视觉对标,应在可登录浏览器会话中再做实页观察。

仓库现状

  • 路由由 web/src/router.tsx 管理;普通用户导航在 workspace-sidebar-nav.tsx 组合,并从用户会话读取 FeatureAvailability。
  • 已有 /tasks 创作历史,可显示图片/视频任务、状态、预览和详情;任务详情数据包含输入、输出、开始/完成时间及账单摘要。
  • web/src/services/api/generation-task.ts 的 runBackendGenerationTask / submitBackendGenerationTask 负责把前端配置、模型能力和参考媒体转换为统一任务请求。页面不应直接请求供应商。
  • 后端 CreateTask 会重新解析模型/渠道/路由、能力、用户配额与账单;POST /api/tasks 是标准模型任务入口。媒体必须先保存为资源,再以资源引用提交,不能在任务 JSON 中长期持有 data URL。
  • 当前 FeatureAvailability 使用系统设置持久化,管理员更新有审计;前端 RequireFeature 只适合路由层,开放状态不能仅靠隐藏导航实现。任务写接口需在后端创建工作台任务时做强校验。
  • 后台已有系统设置、管理页面、素材上传和提示词版本管理模式,可作为工具管理 UI 的相邻实现参考;但创作工具预设与现有面向系统提示策略的模板语义不同,不建议强行共用同一数据实体。

3. 信息架构与页面布局

导航和路由

  • 一级入口名称固定为“生图”“视频”,建议路径分别为 /toolbox/image、/toolbox/video。
  • 两个入口分别绑定 imageWorkbenchEnabled、videoWorkbenchEnabled。未开放时侧栏不显示;直接访问路由显示统一的“暂未开放”状态并返回创作台。
  • 工具、分类和预设使用可分享的 URL 查询参数:tool=<toolId>、preset=<presetId>。切换工具时更新 URL,刷新和复制链接可恢复上下文;草稿提示词和本地临时文件不写 URL。
  • 任务历史可以直接作为右侧面板内的历史记录查看,不新增重复的全屏历史入口。现有 /tasks 保持全局创作历史职责。

桌面布局

在可用内容宽度足够时使用三列工作台,按用户给定比例作为基线而非固定像素:左侧约 40%,中间约 30%,右侧约 30%。三列之间用细边界和间距分区,避免卡片套卡片。建议主区最小可用宽度约 1200px;列宽使用 minmax() 并为右栏任务行预留稳定宽度。

左侧:工具与生成输入

  1. 顶部工具选择器显示当前工具图标、名称、副标题、下拉入口及“新建/切换工具”操作。
  2. 打开选择器后使用用户提供的参考图方向:标题/搜索/分类标签/工具卡片网格。卡片包括图标或缩略图、名称、简短用途和选中状态;分类可搜索,键盘可浏览及选中。没有搜索结果时提供清除搜索入口。
  3. 选中工具后,工具配置表单按工具支持项显示模型、生成参数、提示词、参考图/视频/音频。未被模型能力支持的项隐藏或解释为不可用,不能显示无效控件。
  4. 工具预设以可发现的弹窗/Popover 选择,点选后把模板内容填入提示词草稿;如果模板定义了参数默认值,只填充未被用户手动修改的字段。不能静默覆盖用户输入。
  5. 提示词支持字数提示、清空、必要的优化入口和生成前校验。参考媒体支持预览、删除、排序、模型数量/类型限制、上传进度和失败重试。界面明确区分“已保存资源”与“尚在上传”。
  6. 生成按钮显示当前模型/配置下可获得的预估积分;报价不可用时不猜测价格,提交后按服务端结果显示实际账单。

中间:生成结果与工具说明

上下两区各约占中间栏可视高度的一半:

  • 上区是当前选中任务结果。未提交显示空态;排队/生成中显示带进度语义的骨架和低强度流动高光;成功后显示图片画廊或视频播放器;失败显示原因、重试/查看任务操作。动效尊重 prefers-reduced-motion,不影响页面滚动或结果尺寸。
  • 多结果图片以稳定网格/轮播浏览,图片保持原比例并可放大、下载、保存到资产。视频结果显示封面、时长、播放控件和下载/保存操作。
  • 下区展示当前工具的说明、适用模型/模式、参数指南、注意事项和示例图/视频。说明来自后台受控 Markdown/结构化内容;禁止直接渲染未经清理的 HTML。
  • 没有工具或说明加载失败时分别显示选择工具提示/可重试错误,不用空白区占位。

右侧:运行中任务与历史

  • 上半区为正在排队/执行的工作台任务,按最近更新排序,显示缩略图、工具/模型、提示词截断、进度/阶段、已耗时及取消入口(仅在后端允许时)。状态来自后端任务服务,离开页面后仍可恢复。
  • 下半区为历史生成记录,支持图片/视频过滤、时间倒序及增量分页。条目显示缩略图、成功/失败/取消状态、工具名、模型、创建时间。
  • 点击一条历史打开详情弹窗:左侧显示图片/视频结果,右侧显示完整提示词、工具与模型、生成配置、参考素材、耗时、积分账单和状态/错误。详情以任务记录为准;不可访问或过期的媒体显示明确状态,不暴露上游 URL 或内部错误字段。
  • 右侧两区各自滚动,桌面下不跟随左侧参数表单滚动;内容区边界清晰,列表项使用紧凑行,不以重复的大型装饰卡片占据空间。

响应式退化

  • ≥1440px:采用完整三栏,按 40/30/30 比例动态分配。
  • 1024–1439px:左侧输入区与中间结果区并列,右侧任务/历史收为可切换抽屉或窄栏,默认展示输入和结果。
  • <1024px:单列工作区,顶部以“生成 / 结果 / 任务”Tab 或分段控件切换;生成表单不能被常驻任务栏挤压。弹窗变为全屏或底部抽屉。
  • 不允许在窄屏强行保持三栏导致横向滚动。拖放上传在触屏场景提供等价文件选择操作。

4. 用户核心流程

  1. 用户从导航进入图片或视频;前端确认功能开放状态。
  2. 用户通过工具选择弹窗选定场景工具,页面加载该工具可用预设和说明。
  3. 用户选择当前会话模型;前端根据模型目录能力显示对应参数和参考媒体类型,不支持的组合及时阻止提交。
  4. 用户选用预设提示词并修改,上传参考媒体到资源服务,检查报价/配额提示后提交。
  5. 前端调用现有统一任务服务创建任务;任务 ID 纳入页面状态。右栏立即出现任务,中间显示处理中状态。
  6. 订阅/轮询任务状态。成功后中间展示结果并更新右栏历史;失败、取消、过期或结果回存失败均提供相应恢复路径。
  7. 用户点击历史条目,在详情弹窗检查结果、参数、耗时和服务端账单。

重试必须创建新的尝试并保留原任务关联,不在客户端伪造任务状态;取消以服务端返回为准。刷新页面后根据后端任务重新构建运行中任务列表。

5. 功能模块边界

前端

  • 新增两个工作台路由页面和共享工作台框架,工具选择器、配置表单、结果区、任务/历史区作为页面私有组件起步;只有图片与视频确实共享交互合同后,再抽成跨页面组件。
  • 模型参数和媒体能力统一由已有模型 capability/profile 数据驱动,避免工具配置复制一份参数协议。
  • 页面负责协调选择、表单草稿和展示;API service 负责工具目录读写、上传引用和任务调用;纯映射/校验留在 lib。
  • 用户端工具目录响应不包含后台草稿、隐藏工具、内部存储地址或管理员审计内容。

后端工具管理

建议在管理后台新增“工作台工具”运营入口,包含工具列表、预览、创建/编辑、排序、上线/下线、版本历史;左右分区按“生图工具 / 视频工具”筛选。

工具清单建议字段:

  • id:稳定 ID,不以展示名称作为外键。
  • kind:image 或 video。
  • categoryId、name、subtitle、description。
  • iconResourceId / coverResourceId:引用平台资源,不保存任意 URL。
  • sortOrder、enabled、createdAt、updatedAt、updatedBy、version。
  • supportedModes / capabilityRequirements:受限的能力声明,表达文生图、图生图、图生视频、首尾帧、音频参考等 UI 需求;不能用于指定协议 URL。
  • 可选展示指南/示例媒体资源引用。

预设提示词建议独立实体,以便版本和启用状态独立维护:id、toolId、name、summary、promptTemplate、受限的 defaultParameters、sortOrder、enabled、审计字段。模板变量使用显式白名单和 schema 校验,不支持服务端代码执行或任意插值函数。删除被任务历史引用的工具/预设时采用下线/软删除,历史记录仍显示任务创建时保存的工具快照名称。

分类是导航元数据,可以做独立表或受校验的配置项;首版建议分类资源和排序统一由后台管理,内置系统分类 ID 保持稳定。工具预设中的默认参数仅可填入普通生成参数,不能覆盖用户模型凭证、渠道、资源归属、计费值、任务类型或服务端路由字段。

图片/视频资源

图标、工具封面和示例媒体走现有资源上传/访问能力,后台只保存资源 ID。按资源归属检查管理员上传、引用和删除;被工具引用的媒体不可直接物理删除。用户生成结果使用现有任务结果及资源访问接口,避免复制二进制到新表。

6. 功能开放与权限/安全

开放控制

  • 在 FeatureAvailability 增加 imageWorkbenchEnabled 与 videoWorkbenchEnabled,并沿用 /admin/settings/features 的管理员即时变更和审计约定。
  • 公共登录后会话或 /features 返回两个字段;旧配置缺字段按明确的安全默认值补齐。建议新能力初始关闭,避免代码部署后用户入口意外曝光;该默认值需与上线策略一并确认。
  • 前端侧栏和路由读取该字段,用户直接打开关闭的页面时显示未开放状态。
  • 后端对工作台目录的普通用户读取、任务创建入口分别检查对应开关。至少对 POST /tasks 增加按任务 metadata.source/规范化模式识别工作台来源并校验,但不可只信客户端传入的 source;必须同时由后端根据任务媒体模式和工作台专属入口/签名字段建立可验证边界。
  • 更推荐新增受开关保护的工作台任务创建 API,由服务端注入 workbenchKind、工具 ID 和预设 ID,再调用现有 CreateTask admission 服务;不要依赖通用 /tasks 的自由客户端 metadata 来区分是否属于工作台。内部 Agent、画布及短剧流程继续使用原任务入口,不因关闭新工作台而误停。
  • 关闭开关只阻止新目录访问和新任务创建,不应丢失或隐藏用户已有历史任务、资源、账单及正在执行任务。是否阻止关闭后访问工作台历史需保持与现有任务中心政策一致。

数据与执行安全

  • 工具/预设管理接口必须管理员授权;用户查询只返回启用版本。更新、下线和排序均审计操作人、前后值或版本号。
  • 所有查询和写入按当前用户、资源归属及任务归属检查;任何详情 API 不允许跨用户读取。
  • 请求体只提交资源 ID、表单参数和提示词,不含第三方 API Key、Cookie、远端媒体 URL或 inline data URL。参考素材先进入资源服务,再由服务端转为受控 Provider 输入。
  • 后端基于所选模型能力重新校验图像/视频/音频参考数量、类型、尺寸、时长、比例、分辨率和工具要求;前端校验仅改善反馈。
  • 计费、配额、并发限制及积分预占/退款由现有任务与账单服务负责。管理工具表不保存积分价格,详情账单直接取服务端任务/订单摘要。
  • 提示词作为用户输入按现有安全策略处理,不执行模板内容;说明 Markdown 输出需经过白名单渲染和链接协议过滤。

7. API 草案

以现有 /api 风格为准,路径最终以 OpenAPI 更新为准:

用户端

  • GET /api/workbench/tools?kind=image|video:返回启用工具、分类、启用预设、资源预览引用与说明。
  • GET /api/workbench/tools/:toolId:返回单个工具的公开详情。
  • POST /api/workbench/tasks:携带 toolId、presetId?、kind、用户提示词、模型选择意图、生成参数及资源 ID;服务端加载工具/预设快照、校验开关/模型能力后转入标准任务 admission 与账单流程。
  • GET /api/workbench/tasks?kind=&activeOnly=&cursor=:可选的工作台筛选任务查询;若现有 /tasks 查询可通过可信的服务端元数据过滤并且分页性能合格,则可以复用而不增加重复 API。
  • 历史详情优先复用 GET /api/tasks/:id 及资源访问 API,保证同一归属校验。

管理端

  • GET /api/admin/workbench/tools?kind=
  • POST /api/admin/workbench/tools
  • PATCH /api/admin/workbench/tools/:id
  • POST /api/admin/workbench/tools/:id/publish / unpublish
  • POST /api/admin/workbench/tools/:id/presets
  • PATCH /api/admin/workbench/presets/:id
  • POST /api/admin/workbench/presets/:id/activate / unpublish
  • 资源继续走现有上传/资源访问接口。

管理端写接口应采用明确 DTO 和字段白名单,不能直接反序列化到数据库实体;启用或发布动作校验必填内容、资源引用、模板 schema 和分类归属。

8. 数据存储和迁移建议

  • 建议新增 workbench_tools、workbench_tool_presets 两张表;工具与预设使用稳定 ID、状态和排序字段,工具删除采用软删除或下线。预设可支持版本表,首版如要缩小范围可采用更新时新增版本记录、始终只有一个 active 版本。
  • 若说明与示例内容较小且必须随工具原子发布,可放工具 JSON 文档字段;资源本身仍只保存资源 ID。不要把图片二进制或短期 CDN 签名地址写入数据库。
  • 任务创建时在受控任务元数据中记录工具 ID、工具名称/版本、预设 ID/版本、工作台类型和展示所需配置快照,保证工具下线、重命名后历史详情仍可解释。快照不能覆盖 Task.InputJSON 中现有凭证保护/敏感信息规则。
  • 数据表变更需更新 docs/content/docs/backend/backend-database.mdx。API 变化同步 OpenAPI 与 HTTP API 专题文档。

9. 后台管理交互

工具列表优先,顶部提供“生图 / 视频”过滤、搜索、状态筛选和新建入口。行内展示图标、名称、分类、预设数量、状态、排序和更新时间;常用的预览/编辑/上下线操作直接可见,删除作为谨慎操作并在有引用时禁用或提示下线代替。

工具编辑采用全屏抽屉或较宽编辑台,分为:基础信息、图标/封面、能力需求与 UI 字段、使用说明/示例、预设提示词。右侧或预览模式展示用户端工具卡与说明区预览。预设编辑器提供模板文本、变量白名单、默认参数 JSON schema 表单化编辑、启用状态及版本说明。发布前校验名称、分类、图像资源、提示词长度、默认参数和说明内容;保存成功后用户端目录按版本更新。

“功能开放”增加两项开关,并明确影响:关闭后隐藏入口并禁止新工作台任务;已有任务记录保留。工具本身的上线状态与全局功能开放是两层状态,用户端有效状态为两者皆开放。

10. 一次性交付范围

本功能按完整闭环一次性交付,不拆成先做生图、后补视频或先上工具目录、后补后台的阶段。交付范围同时包含用户端两个工作台、后台工具管理、功能开放控制、后端目录/任务接口、数据迁移、权限审计、文档和验收。

上线前必须同时具备可配置的生图与视频工具、预设、说明和示例素材;两个用户入口及对应服务端开关;模型能力驱动的参数表单;资源上传;异步任务恢复;任务取消/重试;结果预览;右侧运行中任务与历史;详情中的提示词、配置、耗时和实际积分;完整管理端编辑/预览/上下线能力。若任何一个闭环部分未完成,不视为该功能已交付。

建议以一个完整功能分支和统一发布窗口落地;数据迁移保持向前兼容,首次发布默认关闭两个新入口,完成线上工具配置和冒烟后由管理员开启。可以在开发过程中按模块并行实现,但这只是工程组织方式,不改变“一次完整交付”的产品验收边界。

11. UI 交互与视觉设计

工具选择弹窗(参考图 1)

  • 当前工具以一行紧凑的图标/缩略图、名称、副说明和下拉箭头呈现;右侧“新建”是清晰命令按钮。点击整行或箭头打开工具选择弹窗,弹窗从当前工作台上下文打开并保留滚动位置。
  • 弹窗顶部使用“你想创作什么?”作为标题,旁边一行短说明;右侧提供“清除选择”。下方是“推荐 / 人物 / 商品 / 场景 / 增强”等后台可配置分类标签,分类行末尾放搜索输入框。小屏时搜索移到分类下方,不能挤压标签。
  • 工具以两列图文卡片展示,每张卡片固定最小高度并采用左侧方形缩略图、右侧名称和最多两行简介。选中卡片使用清晰的深色边缘与右上角勾选标记,不选中仅用柔和表面差异和轻微悬停抬升表达;状态不能只靠颜色区分。
  • 点卡片立即选中并关闭弹窗,切换工具前若提示词或参考素材有未提交修改,不清空内容:同类别工具保留输入草稿;不兼容字段保留在草稿中但暂不提交,回切工具时恢复。只有用户明确选择“新建/清空”才重置。
  • 弹窗支持搜索工具名、简介和分类;搜索与分类可组合。点击清除选择后回到工具未选状态,但不清除生成草稿。Escape 关闭且焦点返回触发按钮;方向键和 Tab 可遍历卡片,Enter/Space 选择。弹窗内滚动,不滚动背景页面。
  • “更多技能持续上线中”作为可选的目录尾部说明,不伪装成禁用工具卡;后台没有配置更多项时不显示。

生成输入页(参考图 2)

  • 顶部保留工具摘要与“新建”命令。生图页面中央以宽阔、低干扰的提示词编辑区为主,而不是把输入项切成许多小卡片:左上显示已添加参考图数量与上限,右上放上传/排列视图/展开等图标按钮;中间提供上传占位缩略图和提示词编辑区;底部显示字符数与语音输入入口(若当前产品语音能力可复用)。
  • 参考素材槽采用轻量缩略图,未上传时展示线稿占位与“添加图片/视频/音频”入口;上传后可排序、替换、删除和放大预览。每个素材显式显示上传状态、类型和失败重试,不以头像或素材缩略图暗示上传成功。
  • 提示词区域内提供预设入口,选择预设后把文本插入光标处或替换空草稿;若草稿已有内容,弹出轻量选项“替换 / 追加 / 返回”,不直接覆盖。模板变量由用户填写或保留可读占位符,未完成必填变量时生成按钮禁用并定位到变量。
  • 提示词下方把“模型”和“生成设置”做成并排的紧凑摘要选择器。点击模型项打开模型选择层,搜索、来源/能力标签与不可用原因可查;点击生成设置打开按当前模型能力生成的参数面板。图片示例中的“自适应 · 1K 高 · PNG”是设置摘要,不应在不同模型下固定显示这些选项。
  • 视频沿用同一输入骨架,但根据能力将素材槽扩展为首帧、尾帧、角色/场景参考、视频参考和音频参考,并把时长、画幅、分辨率、音频等配置放在生成设置层。首尾帧与普通参考媒体使用不同槽位和类型标记。
  • 底部主按钮横向填满输入列,按钮主文案明确媒体类型(“立即生成图片”/“立即生成视频”),旁边显示“预估 X 积分”或“预计 -- 积分”。正在上传、必填校验失败、模型不可用、配额不足时明确说明阻塞原因;提交后按钮显示排队/生成状态,但允许用户继续编辑下一条草稿(除非当前模型/流程限制同一输入)。
  • 长提示词时输入区自然扩展或内部滚动,底部模型/设置选择器和生成按钮保持可见;键盘快捷提交需避开 IME composition,Enter 不应意外发送多行提示词。

视觉语言与 Aceternity 使用

  • 以参考截图的浅色中性表面和柔和边界为基准,减少连续硬描边:大区块通过相邻表面、留白、浅层阴影和标题层级区分;仅选中、键盘焦点、分隔和危险状态使用更明确的边界。避免每个字段都包装成卡片,也避免卡片套卡片。
  • 保持三栏工作台本身克制、适合长时间创作;颜色来自现有语义 token,不大面积铺单一紫蓝渐变或装饰光斑。工具封面、生成结果和真实示例承担主要视觉色彩。
  • 可复用 Aceternity SpotlightSurface 作为工具选择卡片/结果区域的轻量悬停光照,使用低对比 spotlight 并尊重减少动态偏好;HoverBorderGradient 仅用于主要生成按钮或确有焦点引导价值的单一主操作,不用于所有卡片边框;CometCard 可用于工具封面卡的轻微悬停视差,但只在指针设备开启,触屏和减少动态时静态呈现。生成中骨架的流动高光优先采用本地 CSS 动画和语义状态,不为此叠加重型背景组件。
  • 不在工作区主背景使用 BackgroundBeams、Meteors 或无语义粒子;生成面板不能因装饰动效影响媒体可辨识度、对比度、可读性和性能。所有动效支持 prefers-reduced-motion,键盘焦点始终清晰。
  • Aceternity 组件以现有仓库组件实现为准,先核对组件包体积、SSR/懒加载和 reduced-motion 行为;缺少必要行为时优先扩展已有包装,不为视觉效果新增重复动画库。

12. 验收标准

  • 两个开放开关分别控制各自导航、用户目录和后端新建任务;关闭其中一项不影响另一项,也不影响画布、短剧或 Agent 的既有生成。
  • 管理员可创建、修改、排序、发布和下线两类工具及预设;未启用内容对普通用户不可见,历史快照仍可读。
  • 工具卡片包含名称、说明、图标/封面、分类、搜索和明确选中状态;键盘操作可完成搜索、选择和关闭弹窗。
  • 图片与视频参数根据真实模型能力展示;服务端拒绝不匹配参数、越权资源和已下线工具请求。
  • 任务创建后中间区立即呈现占位,右栏任务可持续更新;刷新后仍能看到运行任务。任务结束后可展示媒体、状态和真实账单;所有失败路径有可恢复反馈。
  • 任务详情展示服务端记录的提示词、参数、工具/预设版本、模型、耗时和积分;媒体访问始终经过资源授权机制。
  • 不把密钥、Cookie、inline media data、内部上游地址或短期签名地址写入工具目录、任务快照、URL 或日志。
  • 三栏在宽屏无重叠;中等宽度和移动端退化为有序单列/标签切换,无页面级横向溢出;减少动态效果时骨架动画关闭或静态化。

13. 待决策项

  1. 新增功能开关的默认值是否初始关闭,建议默认关闭,待首批工具和权限路径完整后由管理员开放。
  2. 模型来源范围:首版只允许后台配置的系统/逻辑模型,还是也允许用户自己的模型配置。当前任务链路已能承接多种模型来源,但开放范围会影响报价、配置校验、用户体验和支持成本。
  3. 用户提交提示词是否允许为空(例如纯参考图编辑),按具体模型能力决定,建议由 operation/profile 声明而不是工作台写死。
  4. 预设提示词是否需要版本历史与灰度发布;建议保留版本号/历史快照,首版可不做复杂灰度。
  5. 右侧历史是否只筛选“工作台任务”,以及 /tasks 是否仍作为全局任务历史。建议两者并存,工作台只展示由工作台创建的任务。
  6. 用户提供参考图展示了 6 个工具卡和“更多技能持续上线中”,实际首发的工具目录、图标与示例媒体需产品侧提供或由运营配置。

14. 参考与代码依据

  • 外部参考:https://maolong.da-ai.cc/toolbox/image-generation、https://maolong.da-ai.cc/toolbox/video-generation。当前抓取只确认独立图片/视频入口,主体 UI 未能读取。
  • 用户提供的工具选择截图:工具选择弹窗、分类/搜索、图文卡片与选中反馈作为直接视觉参考。
  • 路由与导航:web/src/router.tsx、web/src/components/layout/workspace-sidebar-nav.tsx、web/src/stores/use-user-store.ts。
  • 功能开放:backend/internal/platform/feature_availability.go、backend/internal/handler/feature_availability.go、web/src/pages/admin/components/feature-availability-panel.tsx。
  • 生成与任务:web/src/services/api/generation-task.ts、web/src/services/api/task-center.ts、backend/internal/handler/routes.go、backend/internal/app/task_creation.go、backend/internal/model/models_task.go。
  • 管理端参考:web/src/pages/admin/storyboard-prompts/storyboard-prompts-page.tsx 及现有资源上传/访问服务。