载入中…
ACF Studio

制片工作台

同一帐号,三个工作室:普通版/关怀版/专版。登入后可在顶栏切换。
{{loginErr}}
没有帐号?用上面的帐号密码直接注册(新帐号预设制片角色,余额为工作室共用)
ACF 制片工作台 {{tenantLabel}}
余额 ¥{{wallet.balance_yuan}} · 预扣中 ¥{{wallet.frozen_yuan}}
{{me.user.username}} · {{myRoleLabel}}
{{tenantLabel}}

通告板

{{dash.projects}}
专案
{{dash.seg_videos_ok}}
已成段视频
{{dash.full_videos}}
已合成成片
{{dash.sends}}
真送提示词(条)
{{dash.gate_fails}}
门禁拦下(次)
{{dash.gate_failopen}}
门禁 fail-open(次)
{{dash.unusable_assets}}
判定不可用的资产
¥{{wallet?wallet.balance_yuan:'–'}}
工作室余额
{{statusLabel(s)}} {{n}}

最近动过的专案

编号专案型别状态分镜引擎更新
{{p.pid}}{{p.name}}{{p.type}}{{statusLabel(p.status)}} {{p.shots_n}}{{p.engine_version||'—'}}{{ts(p.updated)}}
{{tenantLabel}}

专案

编号专案型别画幅状态分镜成段门禁拦下引擎更新
{{p.pid}}{{p.name}}{{p.type}}{{p.aspect}} {{statusLabel(p.status)}} {{p.shots_n}}{{p.seg_videos}}{{p.gate_fails}} {{p.engine_version||'—'}}{{ts(p.updated)}}
{{projects.total}}
专案 / {{proj.pid}} · {{proj.type}} · {{proj.aspect}} · 引擎 {{proj.engine_version||'—'}}

{{proj.name}}

{{statusLabel(proj.status)}} 引擎运行中 · {{progress.stage||''}} 作业 #{{projJob.id}} {{jobLabel(projJob.kind)}} · {{projJob.status}} 自动模式(拆分镜后自动接力到出片) 更新 {{ts(proj.updated)}} · 同步 {{proj.synced_at?proj.synced_at.slice(11,19):'—'}}
旧端状态 {{lp.status}}

通告单

剧本
{{proj.script_chars}} 字 · 看剧本
规划
{{proj.meta.episodes||1}} 集 · 每集 {{proj.meta.seconds_per_ep||'—'}} 秒 · {{proj.meta.shots_per_ep||'AI 定'}} 镜 · {{proj.meta.segments_per_ep||'—'}} 段
视频模型
{{proj.meta.video_model||'—'}} · 衔接 {{proj.meta.continuity_mode||'—'}} · 提示词 {{proj.meta.prompt_mode||'—'}}
叙事/摄影
{{proj.meta.narrative_type||'—'}} · {{proj.meta.cinematography||'—'}}
画风
{{proj.style||'—'}}
发起人 uid
{{proj.meta.auto_actor_uid||'—'}}
work 目录
{{proj.has_work_dir?'有(帐本已入库)':'无'}}

盘点

{{proj.shots}}
分镜
{{proj.assets}}
资产
{{proj.asset_checks}}
资产判定
{{proj.sends}}
真送提示词
{{proj.gate_runs}}
门禁记录
{{proj.productions}}
产物
旧工作台 outputs(最近一轮的段视频)

出片前体检 {{preflightLast.ok?'通过':'拦截'}} {{preflightLast.t}}

{{(preflightLast.raw&&preflightLast.raw.lines||[]).join('\n')||preflightLast.detail}}

进度

{{progress.pct||0}}% · {{progress.stage||progress.status||''}} · 段 {{progress.seg_done}}/{{progress.seg_total}}

剧本

{{script}}
此专案还没有剧本

四资产(人物/场景/道具/技能)

流程:先「② 分镜表」拆分镜(或直接从剧本抽),再在这里审核四资产并建定妆图;定妆齐了才到「④ 出片」。每行一个资产:编号 | 名称 | kind(character/scene/prop/skill/costume) | 定妆提示词 | 参考图URL(可选)。拆四资产会填进来,可直接改;改完再建定妆图。
定妆/四视卡都是引擎作业(会产生图片费用),送出后到「场记板」看进度。

已有定妆 {{Object.keys(lpAnchors).length}} 张 · 四视卡 {{Object.keys(lpCards).length}} 组

还没有定妆图
{{k}} · {{KIND_[lpKinds[k]]||lpKinds[k]||''}}四视卡
{{lpNames[k]||k}}

出片参数

制作模式
存进 gen_json.meta.video_params,出片时引擎读取

出片

分镜
{{proj.shots}} 镜 · 剧本 {{proj.script_chars}}
定妆
{{Object.keys(lpAnchors).length}}
模式
{{videoParams.production_mode==='auto'?'自动':'每步确认'}} · {{cont.mode==='framechain'?'首尾帧链式':'故事板'}} · {{cont.seg}}
费用
预扣=分镜×15秒×秒价+(分镜+10)×图价,结算按实际段秒数与已产图多退少补
首镜验证:先看「④ 出片」前用「出片前体检」跑零花费自检;出完第一段到「真送面板」核提示词与门禁,再决定是否续跑。
{{progress.pct||0}}% · {{progress.stage||progress.status||''}}

分镜表 每镜一行:时长 · 场景 · 人物 · 道具 · 台词 · 视频提示词 · 运镜 · 动作拍点

还没拆分镜
场景人物/道具台词视频提示词(prompt_video)运镜 · 拍点
{{s.ep}} · {{s.id}}{{s.dur||'—'}}{{s.scene}}
{{c}}{{c}}
{{s.text}}
{{(s.prompt_video||s.prompt||'').slice(0,60)}}…
{{s.prompt_video||s.prompt}}
图层:{{s.prompt_image}}
{{c}}
· {{b}}
V300 IR · {{(s.v300_ir.camera||{}).move||'static'}} · {{(s.v300_ir.beats||[]).length}} 拍
在场 {{(s.v300_ir.chars||[]).join('、')||'—'}} | 场景 {{s.v300_ir.scene||'—'}} | 前景 {{(s.v300_ir.foreground||{}).element||'—'}}
{{b.t0}}–{{b.t1}}s {{b.actor}}:{{b.action}}→{{b.direction}} 落点 {{b.target}} 「{{b.line}}」
拆分镜是引擎作业,到「场记板」看进度

资产库

可用 {{assets.summary.usable}}不可用 {{assets.summary.unusable}}未判 {{assets.summary.assets-assets.summary.checked}}
可用性=引擎在生成时(asset_gen/asset_check)与出片后(asset_audit)用视觉模型判过的结果;未判=还没被任何门禁看过。

{{grp.label}} {{grp.items.length}}

{{a.key}} · {{roleLabel(a.role)}} {{a.usable===true?'可用':a.usable===false?'不可用':'未判'}}
{{a.name}}
{{c.source}}{{c.seg?' · '+c.seg:''}}{{c.issues&&c.issues.length?':'+c.issues.join(';'):':通过'}}
还没有资产

场记板 每个作业一行:排队 → 运行 → 完成/失败/取消;引擎 stdout 逐行落库

还没有作业记录
#作业状态来源实扣(厘)上游(厘)引擎细节
{{j.source==='worker'?j.id:'—'}}{{jobLabel(j.kind)}}{{j.seg||'—'}}{{jobStatus(j.status)}} {{j.source==='worker'?'作业队列':'回填'}}{{fmt(j.cost_milli)}}{{fmt(j.upstream_milli)}}{{j.engine_version||'—'}}{{detail(j.detail)}}

作业 #{{jobView.id}} · {{jobLabel(jobView.kind)}} {{jobStatus(jobView.status)}}

{{jobLogText||'(尚无日志)'}}

引擎日志(旧后端即时)

{{logText||'(尚无日志;引擎跑起来后这里每 3 秒拉一次)'}}

真送面板 每段真正送给视频模型的完整提示词 · 九槽参考图 · 该段门禁判定

还没有真送记录(events.jsonl 为空或尚未同步)

{{e.seg}} · {{e.mode}} · {{e.chars}} 字 · {{e.t?tsAny(e.t):''}}

{{e.prompt}}
{{g.t}}{{gateLabel(g.kind)}}{{g.attempt?' #'+g.attempt:''}}fail-open{{g.detail||'通过'}}

门禁帐本

{{s.ok}}/{{s.runs}}
{{gateLabel(k)}} 通过/次数 · fail-open {{s.failopen}}
此专案没有门禁记录(V250.4b 之前的引擎不写 gate_runs.jsonl)
时间判定为什么
{{g.t}}{{gateLabel(g.kind)}} #{{g.attempt}}{{g.seg||'—'}} {{g.ok===true?'过':g.ok===false?'拒':'—'}}fail-open {{g.detail||'—'}}看图

交片单

还没有产物
载入专案中…
{{tenantLabel}}

资产库

{{lib.summary.names}} 个名字{{lib.summary.assets}} 张可用 {{lib.summary.usable}}不可用 {{lib.summary.unusable}}
跨专案同名资产都在这里;要在新专案复用,先在旧工作台「参考图上传」贴上这里的图片地址(复用写回旧库的按钮在下一阶段)。
没有符合的资产

{{grp.label}} {{grp.items.length}}

{{a.key}} · {{roleLabel(a.role)}}{{a.usable===true?'可用':a.usable===false?'不可用':'未判'}}
{{a.name}}
{{tenantLabel}} · 模组

{{moduleTitle}}

{{tenantLabel}}

成片画廊

还没有完成的成片
{{g.pid}}成片无成片
{{g.name}}
{{g.type}} · {{ts(g.updated)}}
播放/下载
{{tenantLabel}} · 换脸

换脸

{{fs.stats}}

换脸模组口令

沿用旧端 /api/faceswap/gate 口令闸
{{tenantLabel}}

作业中心

还没有作业。从专案页点「拆分镜/补四视卡/全线出片」即入队,工作器按序执行。
#专案作业状态排队开始结束实扣(厘)上游(厘)引擎细节
{{j.id}}{{j.project.pid}} {{j.project.name}}(工作室){{jobLabel(j.kind)}} {{jobStatus(j.status)}} {{ts(j.queued_at)}}{{ts(j.started)}}{{ts(j.finished)}}{{fmt(j.cost_milli)}}{{fmt(j.upstream_milli)}}{{j.engine_version||'—'}}{{detail(j.detail)}}
{{tenantLabel}}

帐房

¥{{wallet.balance_yuan}}
可用余额
¥{{wallet.frozen_yuan}}
预扣中(出片未结)
{{ledger.length}}
最近流水(条)
{{usage.length}}
最近用量(条)

流水

时间种类金额(厘)结余(厘)凭据备注
{{ts(l.ts)}}{{kindLabel(l.kind)}}{{fmt(l.amount_milli)}}{{fmt(l.balance_after)}}{{l.ref||'—'}}{{detail(l.meta)}}

用量

时间专案类型模型秒/张售价(厘)上游(厘)
{{ts(u.ts)}}{{u.project||'—'}}{{u.call_type}}{{u.model}}{{u.qty||u.seconds||u.units||'—'}}{{fmt(u.sell_milli)}}{{fmt(u.upstream_milli)}}

充值单

单号金额(厘)状态通道时间
{{o.out_trade_no}}{{fmt(o.amount_milli)}}{{o.status}}{{o.pay_type||o.type||'—'}}{{ts(o.created)}}
{{tenantLabel}} · 后台

管理后台

总览

{{admin.stats.users}}
成员
¥{{admin.stats.recharge_yuan}}
累计充值
{{fmt(admin.stats.charged_milli)}}
累计实扣(厘)
{{fmt(admin.stats.upstream_milli)}}
累计上游成本(厘)
{{fmt(admin.stats.gross_margin_milli)}}
毛利(厘)
{{admin.stats.holds.held}}/{{admin.stats.holds.settled}}/{{admin.stats.holds.refunded}}
预扣 悬/结/退

近 14 天收入

实扣(厘)上游(厘)毛利(厘)
{{d.day}}{{fmt(d.charged_milli)}}{{fmt(d.upstream_milli)}}{{fmt(d.charged_milli-d.upstream_milli)}}

成员

ID帐号角色状态备注最后登入操作
{{u.id}}{{u.username}}{{u.role}}{{u.status}}{{u.note||'—'}}{{ts(u.last_login)}}

充值单(待确认的可手工反查入账)

单号帐号金额(厘)状态时间操作
{{o.out_trade_no}}{{o.username||o.user_id}}{{fmt(o.amount_milli)}}{{o.status}}{{ts(o.created)}}

预扣

ID专案帐号金额(厘)状态建立关闭
{{h.id}}{{h.project}}{{h.username||h.user_id}}{{fmt(h.amount_milli)}}{{h.status}}{{ts(h.created)}}{{ts(h.closed)}}

定价

类别模型规格单位上游(厘)售价(厘)范围
{{p.category}}{{p.model}}{{p.resolution}}{{p.unit}}{{fmt(p.upstream_milli)}}{{fmt(p.sell_milli)}}{{p.tenant_id?'本工作室':'全局'}}

用量

时间帐号专案类型模型售价(厘)上游(厘)
{{ts(u.ts)}}{{u.username||u.user_id}}{{u.project||'—'}}{{u.call_type}}{{u.model}}{{fmt(u.sell_milli)}}{{fmt(u.upstream_milli)}}

引擎档位 {{engineProf.unit}} · 生效值=各 drop-in 依档名顺序覆盖;本工作室的覆盖写进 zzz-saas-profile.conf

等待引擎空闲后重启(作业 #{{engineProf.pending_restart.id}} · {{engineProf.pending_restart.status}})
改动进审计(前后值),worker 只在没有引擎子进程时重启旧后端;密钥类旗标只显示遮罩。
旗标生效值来源档
{{f.key}}{{f.value}}{{f.source}}本工作室覆盖

通道与密钥(明文密钥档 · 旧端 /api/keys)

沿用旧端口令闸;读出的是产片时 source 的 .env 明文,改完保存立刻生效于下一次出片。密钥只在你眼前,不进 SaaS 资料库。
{{keysPath}}

同步与审计

每 10 分钟自动从旧专案库与 work 目录同步一次;手动同步会把最新的 events/gate_runs/asset_check/products 逐行补进来(幂等)。
{{syncLog||'(尚未手动同步)'}}
{{toast.msg}}