Commit Graph
226 Commits
Author SHA1 Message Date
chiyiandDevin b76e6ab717 feat(model): 同步 vivid 最新变更 — 去模型开关,配价即上架
对齐 vivid a338edb / 7fb5c57 / 4f454b6:
- model_configs.enabled 列删除:上架唯一门槛 = 绑定了启用渠道 + 全部档位
  有价(视频另需时长有价)。/v1/models、/api/models、video-presets、
  managed-models 全部改按 sellable 透出
- 保存渠道即全量同步上游模型(消失解绑/孤儿删除/失败告警不删库)
- v1 job 持久化 upstream jobId,重启后维护循环按 jobId 续等不丢单

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-16 22:01:00 +08:00
chiyiandDevin abd7b5c23b feat(channels): 拉模型改为勾选即绑定,启动清扫遗留模型
- fetch-models 返回 bound 标记,渠道页勾选=立即导入绑定,
  取消=解绑(无其他渠道接入时本地模型行一并删除)
- 新增 POST /channels/unbind-model
- 启动时 PurgeOrphanModels 清掉 provider 时代的无绑定模型行
- 模型管理页移除「渠道导入模型」按钮

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-16 21:35:30 +08:00
chiyiandDevin b4efe6b192 feat!: 账号池改渠道网关,对外协议换成 vivid /v1
- 新增 channels/channel_models:上游 URL + AES-GCM 加密 key +
  并发/权重/本地统计,模型经渠道 /v1/models 导入绑定
- internal/upstream:vivid 协议客户端(NDJSON 流 + jobId 断流重连 +
  uploads 预签名 + models + balance + 错误分类)
- service/v1 重写:权重分组调度、Redis 并发槽 conc:c:、故障转移,
  站内/测试/对外统一走渠道执行器
- 对外端点换成 vivid 四件套:POST /v1/generate(NDJSON+jobId 重连)、
  POST /v1/uploads(SigV4 预签名 PUT)、GET /v1/models、GET /v1/balance,
  错误包 {"error":{"code","message"}}
- API key 新发改 vk_+48hex;删除全部内置 provider 与 token 池
- 管理端:渠道 CRUD/拉模型/导入/余额端点,前端账号页换渠道页,
  概览/文档/测试弹窗适配

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-16 21:14:18 +08:00
chiyiandDevin ecdbc0b281 feat(models): 视频分辨率档位增加 768p,编辑弹窗支持增删档位
- CustomModelModal:VID_RES/ALL_RES 加入 768p
- ModelFormModal:provider=custom 的模型编辑时渲染 候选档位 ∪ 已存档位
  完整价格网格,填价即开通、留空即下线;PATCH 的 resolutions/durations
  改发"有价键集合"(与新建语义一致),非 custom 模型行为不变
- 摘要面板仍只显示已开通档位,提示文案区分 catalog / custom

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-14 18:24:32 +08:00
chiyiandDevin b17cc3e9c8 fix(upstream): vivid 上传会话宽容解析 + 错误回显原始响应
vivid 协议各实现的 /v1/uploads 响应形状不一(顶层 / data 包裹、
url|upload_url|presigned_url、key|file_key|object_key)。之前只认顶层
url+key,遇到包装或别名就报 "upload session missing url/key" 且看不
到上游实际返回。现在逐层(含嵌套 data/result/upload/session)搜寻两
个字段,仍缺失时把原始 JSON 截断进错误信息便于定位。

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-14 18:15:47 +08:00
chiyiandDevin effe76d83f style(admin): 管理台全局样式升级——卡片高光、表格统一润色
- .card 圆角 xl→2xl,顶部加内高光(亮色 sheen/暗色 rim-light)
- 卡片内表格:thead 统一紫罗兰渐变底色,tbody 行 hover 统一紫光
  洗色 + 首列内描边,不再依赖各页散落的 hover:bg-white 工具类
- AdminLayout:顶栏 Admin 标签改紫→青渐变胶囊,侧栏 logo 副标
  改渐变文字

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-14 17:24:47 +08:00
chiyiandDevin e7a4613bac fix(upstream): vivid 协议的 quality 原样透传分辨率档位
vivid 的 quality 就是模型自己的档位字符串——图像 1K/2K/4K、视频
720p/1080p。之前映射成 OpenAI 的 low/medium/high 导致视频上游收到
"1K" 报 4001 "该模型支持 720p"。现在原样透传,空值才默认 1K。

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-14 16:59:13 +08:00
chiyiandDevin 1fee3e5461 feat(canvas): 生成输入框支持视频/音频参考文件
- 参考上限改为模型三类字段合计(图+视+音),不再被 min(8)
  截断;custom 模型的 9图+3视频+0音频 显示为 0/12
- 文件选择器按模型能力放开 accept;按类分别计数和限数
  (超图片/视频/音频各自上限时给出对应提示)
- 非图片参考在缩略位显示 🎬/🔊;单文件上限放宽到 20MB
  与后端一致

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-14 15:22:42 +08:00
chiyiandDevin 0732dfddef fix(playground): 图片参考上限回落用模型字段而非总数
maxImages 在没有 preset 时回落到 maxRefs(图+视+音合计),custom
模型显示成了总数。改成 preset → model.max_reference_images → maxRefs。

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-14 15:16:43 +08:00
chiyiandDevin ab8ddc8354 fix(playground): custom 上游的 seedance* 模型不再吃 seedance 默认上限
isSeedanceModel 的正则把 custom provider 的自定义命名也算成了 leonardo
seedance,导致音频上限兜底成 3、总张数被重复相加。provider=custom
也排除出 seedance 判定(videoCaps 同步)。

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-14 15:14:58 +08:00
chiyiandDevin e69455fbfc fix(playground): 参考文件徽标读取 custom 模型的分类上限
- max_reference_videos/audios 回落链改成 preset → 模型字段 → null;
  null 兜底只对 seedance 系默认 3/3,custom 模型未声明=0
- custom 模型的总参考上限 = 图+视+音相加(它的
  max_reference_images 只是图片类),不再错算成单类
- 徽标只显示上限 >0 的类别

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-14 15:12:10 +08:00
chiyiandDevin 1be1b00511 feat(upstream): custom 模型按媒体分类配置参考文件上限
- ModelConfig 新增 max_reference_videos / max_reference_audios
  (配合既有 max_reference_images);admin 读写接口透传
- custom 模型表单去掉「参考模式」下拉,改为参考图/参考视频/
  参考音频三个数量输入;合计张数走 totalRefLimit 校验
- vivid 上游 /v1/uploads 按文件魔数自动选 kind(image/video/
  audio)与 mime;openai 协议上游遇视频/音频参考自动跳过换号
- videoCaps 让 custom 模型的分类上限在画图台/文档徽标生效
- reference_mode 请求级 override 放行 "media"

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-14 14:58:34 +08:00
chiyiandDevin babfc71f13 feat(upstream): 自定义上游支持 Vivid 协议(/v1/generate NDJSON)
- custom 上游新增 protocol 选项(openai|vivid);vivid 走
  POST /v1/generate NDJSON 流:跳过心跳空行,取末行终态,
  断流携 jobId 重连不重复扣费;参考图先 POST /v1/uploads
  拿预签名再 PUT 直传;错误码 4011/4002/4293/5001/4001 分类
- 添加上游弹窗加协议二选一;账号 meta 存 protocol 并可回显
- 附 vivid 链路单测(成功流/URL 透传/失败帧/错误码/两步上传)

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-14 12:18:26 +08:00
chiyiandDevin ae49b95e0f fix(adobe): 优先使用 cookie 里的 sherlockToken 作 arp,补齐会话一致性
- ExchangeCookie 提取 cookie 中 sherlockToken/forter/arkose/bfp/sid 重组
  arp 并按 token 缓存;无 ims_sid 的游客 token 直接拒绝,不再入池
- getARPSessionID 复用缓存 arp 并刷新 ftr 时间戳;sid/devHex/bfp 按
  token 保持稳定,不再每次重随机
- 新增 ARPFromCookie/refreshARPTimestamp 及形状单测

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-14 12:18:05 +08:00
chiyi 33b39006c0 chore(gitignore): 忽略本地调试/探针敏感文件(_tmp_*,_arp_*,live probe) 2026-10-14 12:17:50 +08:00
chiyi 62365568e9 fix(canvas): 适应内容时避开底部输入框区域居中 2026-10-12 15:13:53 +08:00
chiyi 1f329bfbe1 style(canvas): 常规连线改蓝色虚线,选中才显示紫色实线 2026-10-12 15:07:03 +08:00
chiyi c96f7ac3ea style(canvas): 笔记改黑字32px 2026-10-12 15:04:40 +08:00
chiyi 39dcfc96c8 style(canvas): 工具栏按钮去青色改紫色主题,统一高度和悬浮细节 2026-10-12 15:02:46 +08:00
chiyi d8a3003b69 fix(canvas): 提示词字号调大至32px 2026-10-12 15:01:21 +08:00
chiyi a880fc3161 fix(canvas): 提示词常显并放大字号 2026-10-12 14:59:07 +08:00
chiyi efe2153446 feat(canvas): 提示词改悬浮底部黑色渐变遮罩,生成中占位美化 2026-10-12 14:57:30 +08:00
chiyi daf4605475 feat(canvas): 节点工具按钮改为悬浮显示 2026-10-12 14:52:55 +08:00
chiyi 6fa8352455 fix(canvas): 修复弹窗关闭判定的模板语法 2026-10-12 14:51:32 +08:00
chiyi 7ff87aa5d9 fix(canvas): 上传中禁止关闭图片库弹窗 2026-10-12 14:50:43 +08:00
chiyi e5f5b82dc6 feat(canvas): 消息改3.5s自动消失toast,api加120s超时,去掉舞台提示条 2026-10-12 14:47:24 +08:00
chiyi e49fc1fc89 feat(canvas): 节点工具条精简为+参考图/删除,预览与图库改blob加载,参考图自动连线 2026-10-12 14:45:20 +08:00
chiyi 3d8c809393 feat(canvas): 上传并入图片库,首格为上传入口;隐藏保存中提示 2026-10-12 14:39:42 +08:00
chiyi 6b4c90f876 feat(canvas): 新节点自动往右找空位,一行10个才换行 2026-10-12 14:36:08 +08:00
chiyi fe78a55fe4 fix(canvas): 去掉待保存闪烁,仅显示保存中/保存失败 2026-10-12 14:33:58 +08:00
chiyi db5c77851d fix(canvas): 点击空白清除节点/连线选中 2026-10-12 14:32:02 +08:00
chiyi 00109f83a2 fix(canvas): 已保存状态不再展示,仅保留待保存/保存中/失败提示 2026-10-12 14:30:26 +08:00
chiyi bb715e2288 fix(canvas): 顶栏 z-index 提升,修复画布下拉被舞台遮挡 2026-10-12 14:29:34 +08:00
chiyi 5c5249cb70 fix(canvas): 适应内容缩放对齐到10%档位 2026-10-12 14:28:25 +08:00
chiyi cc9929c716 fix(canvas): 缩放百分比恢复只读显示,去掉下拉 2026-10-12 14:26:32 +08:00
chiyi d4adc0b6aa feat(canvas): 100% 显示时实际渲染 0.6 倍,整体视图缩小一档 2026-10-12 14:24:10 +08:00
chiyi 5dc334062e feat(canvas): 默认缩放改为 60%,新增 zoomTo 缩放接口 2026-10-12 14:22:29 +08:00
chiyi 655531eaca feat(canvas): 缩放百分比改为下拉选择,支持直接跳到60%等档位 2026-10-12 14:20:25 +08:00
chiyi d934dbe419 feat(canvas): 下拉统一换成 SelectMenu 组件并支持向上展开 2026-10-12 14:18:50 +08:00
chiyi af5bf84582 feat(canvas): 参数全部改下拉,支持生视频模式与视频节点 2026-10-12 14:15:54 +08:00
chiyi 90a34276ef fix(canvas): 单画质档位时误显示'没有可用模型'警告 2026-10-12 14:13:06 +08:00
chiyi cbdde40172 feat(canvas): 输入框支持画质/张数选择,多张并发生成 2026-10-12 14:09:42 +08:00
chiyi 2137f9565b feat(canvas): 生成面板改为底部居中大输入框,参考图改为上传式 2026-10-12 14:06:04 +08:00
chiyi 23bef52290 fix(canvas): 弯折点仅选中线时显示 2026-10-12 14:01:50 +08:00
chiyi ec5dd9adf7 fix(canvas): 节点间连线去重并放大弯折点 2026-10-12 13:59:11 +08:00
chiyi 256eeb3234 fix(images): 私有图片支持 Bearer 鉴权,画布节点改为带鉴权 blob 加载 2026-10-12 13:54:34 +08:00
chiyi c559e712b6 fix(canvas): 连接点外置、拖线平滑跟手、图片失败显示状态码 2026-10-12 13:42:26 +08:00
chiyi c429209e50 feat(canvas): 连线自动绕开节点并支持拖拽弯折 2026-10-12 13:35:40 +08:00
chiyi 5a0cbeb429 fix(canvas): 连线改用主题色并修复图片回退 2026-10-12 13:30:12 +08:00
chiyi 2e5a1e2e72 fix(canvas): 放宽待连线取消方式 2026-10-12 13:22:52 +08:00