更新审核提示流程与工作台版本

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
LongtailandCopilot committed 2026-10-31 18:13:25 +08:00
1 parent d2f58ba687
commit 24a73b19c0
12 files changed
+296 -268

No files matched your search

+32 -15
View File
@@ -7,7 +7,7 @@
const owner=sessionStorage.getItem('auto-news-owner') || crypto.randomUUID();
sessionStorage.setItem('auto-news-owner',owner);
let run=null, working=false, halted=true, aborter=null, active=null, tickBusy=false;
let skipBusy=false, preparation=null, stopRevision=0, resultSeenAt=0;
let skipBusy=false, preparation=null, stopRevision=0 /*, resultSeenAt=0 */;
const pending=new Map();
function rpc(route,body={}) {
return new Promise((resolve,reject)=>{
@@ -104,7 +104,7 @@
const snapshot=editorSnapshot();
const local={id:active.id,snapshot,clickedAt:Date.now(),observed:false};saveLocal(local);
rpc('event',{id:active.id,state:'user_submitting',epoch:run?.epoch,snapshot})
.then(()=>{const latest=loadLocal();if(latest?.clickedAt===local.clickedAt)saveLocal({...local,observed:true});})
.then(()=>{const latest=loadLocal();if(latest?.clickedAt===local.clickedAt)saveLocal({...latest,observed:true});})
.catch(error=>status('提交记录待恢复:'+error.message));
active.state='user_submitting';status('已观察到人工点击,等待结果页核对。');
}catch(error){status('提交快照记录失败:'+error.message);}
@@ -146,22 +146,24 @@
}
if(!['user_submitting','submit_unknown'].includes(job.state))return;
const snapshot=job.snapshot||local?.snapshot||{};
const result=window.DWW11Results?.inspect(document,location.href,snapshot);
const result=(local?.id===job.id&&local.promptResult)||window.DWW11Results?.inspect(document,location.href,snapshot);
if(result?.kind==='rejected'&&job.state==='user_submitting') {
await rpc('event',{id:job.id,state:'rejected',error:result.error});
status('网站明确拒绝本次提交,已暂停;核对并处理稿件后仍需亲手发表');return;
}
if(result?.kind==='accepted') {
if(result.author_uid!==job.account.uid||result.fid!==job.fid||result.title!==window.DWW11Results.clean(snapshot.title)) {
if(job.state==='user_submitting')await rpc('event',{id:job.id,state:'submit_unknown',error:'结果页标题、首帖作者或版块与提交任务不符'});
await rpc('stop');status('结果不匹配,已暂停,请人工核对');return;
}
resultSeenAt ||= Date.now();
if(result.evidence.integrity_issues.some(x=>x.includes('尚未加载'))&&Date.now()-resultSeenAt<15000) {
status('已看到审核中详情,等待正文图片加载后核对');return;
}
// 暂停详情页标题、作者、版块和图文核对;保留原代码。
// if(result?.kind==='accepted') {
// if(result.author_uid!==job.account.uid||result.fid!==job.fid||result.title!==window.DWW11Results.clean(snapshot.title)) {
// if(job.state==='user_submitting')await rpc('event',{id:job.id,state:'submit_unknown',error:'结果页标题、首帖作者或版块与提交任务不符'});
// await rpc('stop');status('结果不匹配,已暂停,请人工核对');return;
// }
// resultSeenAt ||= Date.now();
// if(result.evidence.integrity_issues.some(x=>x.includes('尚未加载'))&&Date.now()-resultSeenAt<15000) {
// status('已看到审核中详情,等待正文图片加载后核对');return;
// }
if(result?.kind==='accepted_prompt') {
const revision=stopRevision,epoch=run.epoch;
await rpc('accept',{id:job.id,...result});
await rpc('accept',{id:job.id,attempt:job.attempt,...result});
sessionStorage.removeItem(SLOT);active=null;
// Re-read persistent control after accounting; Stop must suppress navigation and subsequent jobs.
run=await rpc('heartbeat',{account:account(),url:location.href,extension:extension()});
@@ -174,9 +176,9 @@
if(clickedAt&&Date.now()-clickedAt<45000) {
status(result?.prompt||result?.error||'等待网站提交结果,不会重复发表');return;
}
if(job.state==='user_submitting')await rpc('event',{id:job.id,state:'submit_unknown',error:result?.error||'提交结果证据不足,请打开对应帖子详情后核对'});
if(job.state==='user_submitting')await rpc('event',{id:job.id,state:'submit_unknown',error:result?.error||'未观察到网站新主题审核提示,请人工核对是否已受理'});
if(run.running)await rpc('stop');
status('发布结果待核对;打开对应详情页可继续核对,不会重发');
status('未观察到网站审核提示,已暂停;请人工核对,不会重发');
}
async function switchAccount() {
if(working||halted)return;
@@ -240,5 +242,20 @@
takeover.style.cssText='position:fixed;left:16px;top:16px;z-index:2147483646;padding:8px;background:#fff;border:1px solid #aab;border-radius:6px';
takeover.onclick=async()=>{try{await rpc('takeover');status('已接管;核对当前页面后在工作台继续');}catch(error){status(error.message);}};
document.body.append(takeover);
// 提示可能短暂出现后跳转;及时保存到本次任务,避免两秒轮询漏掉。
function capturePrompt() {
const local=loadLocal();
if(!local?.id||!local.snapshot||!local.clickedAt||local.promptResult)return false;
if(active&&(active.id!==local.id||!['user_submitting','submit_unknown'].includes(active.state)))return false;
const result=window.DWW11Results?.inspect(document,location.href,local.snapshot);
if(result?.kind!=='accepted_prompt')return false;
saveLocal({...local,promptResult:result});
return true;
}
if(typeof MutationObserver!=='undefined')new MutationObserver(()=>{
if(capturePrompt())void tick();
}).observe(document.body,{childList:true,subtree:true,characterData:true});
// 跳转后的提示页可能已经渲染完成,首次轮询前也捕获一次。
capturePrompt();
setInterval(tick,2000);tick();
})();