Files
ReelShortWeb/docs/plans/2026-10-22-transcode-profile-settings.md
T

1.7 KiB
Raw Blame History

后台转码设置页面

目标

  1. 在内容管理下新增「转码设置」页面,权限沿用 episode:upload。
  2. 页面字段与 FruitServer MediaTranscodeProfile 完全一致。
  3. 对接 GET/PUT /admin/media/transcode-profile,保存后回填服务端响应。
  4. 前端校验规则与后端一致,并在失败时定位到首个错误字段。

方案

  • API:在 src/api/admin/media.ts 增加读取、保存函数,类型定义放 src/api/admin/types.ts;响应继续遵循现有 Result {code,message,data}。
  • 路由:静态路由表增加 /content/media-transcode;默认服务端动态路由模式下, 根据 episode:upload 权限把同一条本地路由补充进服务端 /content 菜单, 已存在同名菜单时不重复添加,仅统一 i18n 标题。
  • 页面:views/systemManagement/TranscodeSettingsView.vue,使用 Element Plus 表单、 表格、数字输入和开关;保存按钮受 episode:upload 控制。
  • 校验:
    • quality 非空且忽略首尾空格后唯一;
    • width/height 为正偶数;
    • videoBitrateKbps/audioBitrateKbps 为正整数;
    • segmentSeconds 2–10;
    • sprite.intervalSeconds 1–10、columns 5–20、thumbWidth 120–240;
    • ladder 至少一档 enabled。
  • 校验失败由 Element Plus 定位到首个错误 prop,动态列表错误会定位到对应行。
  • 所有可见文案、提示和校验信息进入 zh-CN.ts / en.ts。

非目标

  • 不修改 FruitServer、ReelShort 或接口契约。
  • 不新增权限码、不新增依赖、不启动服务。

测试与门禁

  • 当前工程没有单元/组件测试框架,不引入新依赖;使用 TS 类型检查和构建门禁。
  • pnpm lint:eslint
  • pnpm ts:check
  • pnpm build:dev