Files
cms-SiteForge/app/static/workspace-launch.js
T
浅念 8884e100f9 upgrade: adopt V8.31.1 (theme 1.3/1.4 redesigns, editor deep-canvas, guided launch, component library)
Overlay 190 upstream items (V8.22→8.31) preserving trade-pro theme,
registry tests, and design docs. Re-applied full patch set on identical
anchors (discovery/env_for/blocks.css/type-mapping/locale-override/
theme_color/frontend entries/test_theme_pro_v3 mods) plus compose pins.

Verified: theme suites 35/35; dual-baseline full run 415 passed vs
pristine 386+29 ours, FAILED-set diff EMPTY (same 10 Windows env fails).
Live: container 8.31.1-dev.1 healthy, hesupipe 192 entries intact,
trade-pro build 203 pages 0 errors.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-26 09:43:17 +08:00

23 lines
1.9 KiB
JavaScript

/* V8.28: untrusted display state only; final authorization always on server. */
(function(root,factory){const api=factory();if(typeof module==='object'&&module.exports)module.exports=api;else root.SiteForgeLaunch=api;})(typeof window!=='undefined'?window:this,function(){
'use strict';
const finished=new Set(['complete','completed','done','success']);
function plan({site=null,build=null,requests=[],requestsKnown=false,delivery={},target='staging',previewChecked=false,preflight=null}={}){
const version=build&&finished.has(build.status)?build:null;
const bids=version?.id;
const rows=Array.isArray(requests)?requests.filter(x=>x.build_id===bids):[];
const approval=rows.some(x=>x.state==='approved')?'approved':rows.some(x=>x.state==='pending')?'pending':rows.some(x=>x.state==='rejected')?'rejected':requestsKnown&&Array.isArray(requests)?'none':'unknown';
const safeTarget=['staging','production'].includes(target)?target:'staging';
const preflightReady=Boolean(version&&preflight?.siteId===site?.id&&preflight?.buildId===version.id&&preflight?.target===safeTarget&&preflight?.ready===true);
const preflightMessage=preflightReady?'服务器已通过检查,部署时还会重新验证。':preflight?.siteId===site?.id&&preflight?.buildId===bids?preflight.message:'尚未完成此版本的发布前检查';
const configured=delivery?.configured?.[safeTarget]===true;
const canDeploy=Boolean(version&&previewChecked&&approval==='approved'&&preflightReady&&configured);
const history=Array.isArray(delivery?.history)?delivery.history:[];
const matches=history.filter(x=>x.target===safeTarget&&x.release_id&&x.build_id===bids);
return {approval,canDeploy,preflightReady,preflightMessage,hasRemoteRecord:matches.length>0,
remoteDescription:matches.length?'存在当前版本的部署记录,但尚需实际访问确认。':'尚无当前版本在该环境的部署记录。',configured,
target:safeTarget,hasBuild:!!version};
}
return {plan};
});