Commit Graph
137 Commits
Author SHA1 Message Date
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 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 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 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 256eeb3234 fix(images): 私有图片支持 Bearer 鉴权,画布节点改为带鉴权 blob 加载 2026-10-12 13:54:34 +08:00
chiyiandDevin 27d58cfb5d feat(canvas): 画布 Memphis 化并补全编辑功能
- 后端新增 POST /admin/api/my-images 上传接口:图片存入用户
  owner 目录并生成缩略图,复用 /images 服务与 my-images picker
- 本地图片三种入画布路径:上传按钮 / 拖入舞台(落点即拖放
  位置) / Ctrl+V 粘贴
- 节点选中后显示悬浮工具条(预览/复制/置顶/删除)与右下角
  缩放手柄;图片等比缩放,便签自由缩放;Ctrl+D 复制选中(含
  相互连线);双击空白建笔记;按 1 / ⤢ 按钮适应全部内容
- 整套画布 UI 换 Memphis:纸张底+墨点网格、黑边硬影节点、
  黄色贴纸便签、橙色连线/选中态、虚线框选、顶栏/生成面板/
  预览灯箱/图片选择器全部换墨边 chunky 样式,随站点明暗主题

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

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-08 17:45:41 +08:00
dokploy-bot 571ee2c801 feat: 无限画布 — infinite canvas with generation integration
Backend:
- canvases table + owner-scoped CRUD under /admin/api/canvas
  (list/create/get/save/delete, 50 docs/user, 4MiB cap, JSON validation)

Frontend:
- /canvas full-screen workspace: DOM+CSS-transform infinite pan/zoom
  (GPU-composited world layer, viewport culling, rAF-batched pointer moves)
- nodes: image (thumb display, natural-size correction), note
  (uncontrolled contenteditable), generation placeholder with edges
- generate on canvas: prompt from panel or selected notes, selected image
  nodes as references, results auto-placed + bezier edges to sources
- multi-canvas management, debounced autosave + keepalive flush,
  snapshot undo/redo (60 steps), marquee/keyboard interactions
2026-09-19 22:38:41 +08:00
dokploy-bot 42208c0753 security: fix rate-limit bypass, payment amount check, stats leak, owner-dir collision, video panic guard
- clientIP: stop trusting client-supplied X-Forwarded-For; use gin ClientIP
  with trusted proxies limited to private docker networks
- payment: verify notify money matches order amount; remove hardcoded
  gateway default, fail loudly when api_base is unset
- stats: public endpoint now serves aggregates only; recent files (owner
  names) moved to admin-only /stats/recent
- auth: reject signups whose username/email-local collides with another
  user's media directory namespace
- v1: recover panics in background video jobs, refund + mark failed
2026-09-19 22:13:08 +08:00
chiyi 4fb7fc9204 feat: sync all features to image2api 2026-08-15 23:00:30 +08:00
chiyi 5403acc4c9 leonardo: get-session 按 cookie 串行,避免并发刷新令牌被判重用 2026-08-10 20:18:32 +08:00
chiyi 15602b8033 leonardo: 把 cross-origin-cookie 401 判为会话被吊销 2026-08-10 19:38:58 +08:00
GlossSeaDress f94a7ace5f feat(api): GET /v1/user/balance 查询用户余额
users 表新增 credits_used(累计消耗积分):扣费累加、失败退款回减(refundIfNeeded / 维护清扫改走 RefundCredits),充值/CDK/签到发放不计入。接口返回 {object,balance,used,total},Bearer API Key 鉴权,与其他 v1 接口同一 CORS 与错误格式。站内接口文档与 README 补充端点说明。
2026-08-10 14:59:48 +08:00
GlossSeaDress 2c47344ed9 fix(leonardo): cookie 写回改 CAS,并补上额度对账后的轮换写回
Leonardo 只认加密的 session_data 缓存,轮换值一旦没存住账号就会被判死。写回原先是无条件 update:长任务(生成、慢额度查询)手里的旧 cookie 完成时会盖掉期间 keepalive 存好的新值。改为 SwapValue(WHERE value = 旧值 才写),旧值无法覆盖新值;reconcileLeonardoCredits 原先完全没写回 FetchCreditsBalance 带回的轮换值,补上。
2026-08-10 12:13:11 +08:00
chiyi b488142495 fix(leonardo): 参考图走 uploadInitImage 永久桶;音频参考需搭配图/视频参考 2026-08-10 11:14:15 +08:00
chiyi 52f9ec967c fix(leonardo): get-session 返回 null 时重试 3 次再判 cookie 失效
预热成功后的 200 null 之前第一次就 break 并直接 ErrAuth;同样的响应也可能是某个出口 IP 被挑战页静默降级,改成最多 3 次(第 2、3 次走代理换 IP)都拿不到 accessToken 才算死号。
2026-08-10 09:15:07 +08:00
chiyi 265ff1dd5d feat(leonardo): session keepalive 独立成 1 分钟循环,并记录续期/失败计数
maintenance 的一次 tick 可能跑几十分钟(光 adobe cookie profile 就 219 个),挂在里面会把 5 分钟的保活拉长成 tick 的实际耗时。
2026-08-10 09:15:07 +08:00
chiyi a9daad2fda feat(leonardo): 每5分钟按库内时间戳续一次 session 并写回轮换 cookie 2026-08-09 21:27:41 +08:00
chiyi 4c5b932e81 fix(adobe): 媒体分类接口抓不到参考图的 400 归为临时错误,自动换号重试 2026-08-09 13:40:08 +08:00
chiyi eee8698f46 fix(leonardo): get-session 改直连并先做 cross-origin-cookie 预热,429 才退回代理 2026-08-09 13:40:07 +08:00
chiyi 8f3cb25c25 fix(leonardo): get-session 走代理并重试 10 次,绕过 Vercel 人机校验的偶发放行 2026-08-09 03:06:24 +08:00
chiyi 6190f814d9 fix(leonardo): 连续 3 次鉴权失败才判死,get-session 补齐浏览器头并保护 session_data 2026-08-09 02:17:01 +08:00
chiyi 6ae88725df fix(events): 视频 pending 用 30 分钟单独期限,避免出片前被判死退款 2026-08-09 02:16:56 +08:00
chiyi 4c0706fa91 feat(models): minimax-h3 改按秒计价,按秒计价改为目录驱动 2026-08-08 22:20:40 +08:00
chiyi 6d17caaf80 feat(leonardo): 接入视频通道并新增 seedance-2.0/minimax-h3 模型 2026-08-08 21:55:33 +08:00
chiyi 6ba80f5109 tweak(video): 视频渲染预算拉到 30 分钟 2026-08-08 11:16:56 +08:00
chiyi ebcf3c5779 feat(grok): 视频改走 Grok Console 并新增图片模型
- grok 视频/图片统一走 console.x.ai:sso 换 DPoP 短期 token,绕开 grok.com 的 statsig 反爬

- 新增 grok-image:不带参考图走 /v1/images/generations,带图自动走 quality 上游 + /v1/images/edits

- grok 额度改本地写死 图5/视频2,成功各扣一次,两份归零直接判死,无恢复时间

- 视频渲染预算统一 20 分钟(adobe/runway/grok/custom)

- 删除参考图人脸打码(facemask + onnxruntime 依赖 + 前台开关)
2026-08-08 11:15:42 +08:00
chiyi 554dea6252 feat(facemask): 黑丝网眼加粗并给 Seedance 提示词追加忽略网格说明 2026-08-07 14:30:43 +08:00
chiyi d275a97946 tweak(facemask): 黑丝网眼间距放宽 2026-08-07 13:41:07 +08:00
chiyi 3d6fd4bd4a feat(facemask): 参考图人脸统一改为黑丝网眼打码 2026-08-07 13:16:52 +08:00
chiyi 2e3a4e9d3f feat: seedance参考图人脸打码(YuNet+切块旋转/白点阵) + VIP零额度降级 + veo3.1 1080p + CGO Dockerfile 2026-08-07 10:08:24 +08:00
chiyi f76ecd5769 feat: 二次元前端改版 + 后端账号plan探测/调度修复 2026-08-06 10:11:05 +08:00
chiyi 7f4701d362 feat: veo3.1 拆分 fast/standard, seedance双模型, per_second定价, 子号过滤, 随机种子, UI优化 2026-08-03 20:27:20 +08:00
chiyi e90aeecea3 fix(adobe): nano-banana modelVersion 修正 + 移除 runway 死代码 2026-08-02 23:35:50 +08:00
chiyi 4987717d23 feat: Adobe积分号不锁定额度 + Nano Banana双通道 + 前端显示额度
- Adobe不再区分视频/图片额度,移除ImageLimited/VideoLimited限制
- Adobe积分号quota耗尽不锁定(status不改为quota),只记录失败用于轮转
- Nano Banana 2/Pro 保留Runway通道,新增nano-banana-2/nano-banana-pro走Adobe
- Adobe模型重命名: runway-nano-banana-2, runway-nano-banana-pro
- 前端管理后台Adobe账号显示积分余额(之前固定显示—)
- README更新模型列表
2026-08-02 20:09:03 +08:00
chiyi cd0b7090f2 refactor(adobe): switch to express.adobe.com origin, remove ErrAuthPermanent, simplify ARP session/PID 2026-08-02 00:07:17 +08:00
chiyi 0a1811b254 优化408 2026-08-01 14:44:05 +08:00
chiyi e2540dc2a3 优化408 2026-08-01 12:58:13 +08:00
chiyi 110edc9b81 更新adobe 优化408 2026-08-01 01:49:05 +08:00
chiyi a1514b5f82 更新408 2026-07-31 23:47:17 +08:00
chiyi 613ab04802 修复chatgpt 2026-07-29 21:39:22 +08:00
chiyi c30155b001 adobe openai更新 2026-07-29 21:15:37 +08:00
chiyi 9a032c6107 更新易支付 2026-07-28 18:31:52 +08:00
chiyi b0cd4a8b33 参考图适配 2026-07-19 11:34:14 +08:00
chiyi 50060f9180 去掉oss保存 2026-07-19 11:23:48 +08:00
chiyi c3f82168b6 grok更新 2026-07-18 15:24:16 +08:00
chiyi b6e8445d95 修复grok 2026-07-17 21:45:31 +08:00
Linda a65f52b7f4 admin lists: server-side pagination + filters for accounts/users/cdks/showcase/banned-words (limit/offset/total; stats over full set; /showcase/admin flat paginated view; dead=1 accounts filter for bulk dead-delete) 2026-07-16 10:48:35 +08:00
chiyi 86559eb7fc grok fix: statsig signer chunk locate regex include ~ (0~4v1h2zpw7n0.js); fixes locateSignerChunk not found -> conversations/new 403 anti-bot 2026-07-16 09:37:27 +08:00