在 Makelore 构建并预检静态发布产物
This commit is contained in:
@@ -57,7 +57,7 @@ function failureFromVersion(version: BuildVersion): WorksPublishFailure {
|
||||
}
|
||||
|
||||
function buttonLabel(phase: PublishPhase): string {
|
||||
if (phase === 'submitting') return '正在检查并提交…';
|
||||
if (phase === 'submitting') return '正在生成本次构建结果…';
|
||||
if (phase === 'polling') return '正在等待云端检查…';
|
||||
if (phase === 'succeeded') return '已提交,等待运营审核';
|
||||
if (phase === 'uncertain') return '已提交,请稍后查看';
|
||||
@@ -181,9 +181,9 @@ export function ProjectPublishAction({ project, projectType }: ProjectPublishAct
|
||||
className="max-w-md text-xs font-medium text-muted-foreground"
|
||||
>
|
||||
{phase === 'submitting'
|
||||
? 'Makelore 正在自动检查、打包并提交项目,不需要准备 ZIP。'
|
||||
? 'Makelore 正在本地安装依赖、生成本次构建结果并提交,不需要准备 ZIP。'
|
||||
: phase === 'polling'
|
||||
? '本地预览检查已完成,项目已上传,正在等待云端受控构建与平台校验。'
|
||||
? '本次构建结果已通过本地预览检查并上传,正在等待平台校验。'
|
||||
: '已提交,等待运营审核。审核通过后会直接发布。'}
|
||||
</p>
|
||||
) : null}
|
||||
|
||||
@@ -6,11 +6,49 @@ export type WorksPublishFailure = {
|
||||
nextStep: string;
|
||||
};
|
||||
|
||||
const LEGACY_BUILD_FAILURE: WorksPublishFailure = {
|
||||
title: '旧版提交无法继续处理',
|
||||
reason: '这是旧版客户端创建的云端构建任务,不能在新的本地构建链路中重试。',
|
||||
nextStep: '升级 Makelore 并重新提交。',
|
||||
};
|
||||
|
||||
const CLIENT_ARTIFACT_REJECTED: WorksPublishFailure = {
|
||||
title: '本次构建结果未通过平台校验',
|
||||
reason: '平台重新校验本次构建产物时发现摘要、文件或输出限制不匹配。',
|
||||
nextStep: '升级 Makelore,并检查本次构建结果后重新提交。',
|
||||
};
|
||||
|
||||
const PLATFORM_FINALIZATION_RETRYABLE: WorksPublishFailure = {
|
||||
title: '平台校验任务暂未完成',
|
||||
reason: '本次构建结果已上传,但平台校验或发布文件固化过程暂时中断。',
|
||||
nextStep: '无需修改项目,请联系运营人员在“构建异常”中重新处理。',
|
||||
};
|
||||
|
||||
const PUBLISH_FAILURES: Record<string, WorksPublishFailure> = {
|
||||
PREVIEW_REQUIRED: {
|
||||
title: '请先打开项目预览',
|
||||
reason: '提交前检查需要当前项目正在 Makelore 内置浏览器中运行。',
|
||||
nextStep: '先在内置浏览器中打开当前项目的本地预览,确认页面可用后再提交。',
|
||||
LOCAL_BUILD_RUNTIME_UNAVAILABLE: {
|
||||
title: '本地构建环境暂不可用',
|
||||
reason: 'Makelore 安装包中的固定 Node/npm 构建组件无法启动。',
|
||||
nextStep: '重新启动或升级 Makelore 后再提交。',
|
||||
},
|
||||
LOCAL_BUILD_FAILED: {
|
||||
title: '本次构建结果未生成',
|
||||
reason: '项目依赖安装或 Vite 构建没有成功完成。',
|
||||
nextStep: '请让开发助手修复依赖或构建错误后重新提交。',
|
||||
},
|
||||
LOCAL_BUILD_TIMEOUT: {
|
||||
title: '本次构建结果生成超时',
|
||||
reason: '依赖安装或 Vite 构建超过了 Makelore 的时间限制。',
|
||||
nextStep: '请精简依赖或构建步骤后重新提交。',
|
||||
},
|
||||
LOCAL_BUILD_OUTPUT_MISSING: {
|
||||
title: '本次构建结果不完整',
|
||||
reason: 'Vite 没有生成可发布的 index.html,或输出不符合静态作品限制。',
|
||||
nextStep: '请检查 Vite 输出、资源大小和文件类型后重新提交。',
|
||||
},
|
||||
CLIENT_BUILD_PROTOCOL_REQUIRED: {
|
||||
title: '需要升级 Makelore',
|
||||
reason: '平台只接受新版 Makelore 生成的本地构建结果。',
|
||||
nextStep: '升级 Makelore 并重新提交。',
|
||||
},
|
||||
PUBLISH_PREFLIGHT_LOAD_FAILED: {
|
||||
title: '作品主页无法打开',
|
||||
@@ -133,9 +171,9 @@ const PUBLISH_FAILURES: Record<string, WorksPublishFailure> = {
|
||||
nextStep: '请联系运营人员处理作品归属。',
|
||||
},
|
||||
SOURCE_PACKAGE_REJECTED: {
|
||||
title: '项目没有通过平台检查',
|
||||
reason: '云端发现项目包不符合安全构建要求。',
|
||||
nextStep: '请让开发助手检查依赖、入口文件和敏感文件后重试。',
|
||||
title: '本次构建结果没有通过平台检查',
|
||||
reason: '平台对上传字节和归档结构的独立校验没有通过。',
|
||||
nextStep: '请检查源码与本次构建结果的文件结构后重新提交。',
|
||||
},
|
||||
PUBLISH_FORBIDDEN: {
|
||||
title: '当前账号不能发布这个作品',
|
||||
@@ -157,101 +195,34 @@ const PUBLISH_FAILURES: Record<string, WorksPublishFailure> = {
|
||||
reason: '作品仍可能在云端处理中。',
|
||||
nextStep: '稍后重新打开项目查看,不需要重复提交。',
|
||||
},
|
||||
DEPENDENCY_PREFETCH_FAILED: {
|
||||
title: '暂时无法下载项目依赖',
|
||||
reason: '云端没有成功准备 package-lock.json 中的依赖。',
|
||||
nextStep: '请检查 package-lock.json 是否已提交,并确认依赖名称和版本有效后重试。',
|
||||
},
|
||||
DEPENDENCY_PREFETCH_TIMEOUT: {
|
||||
title: '下载项目依赖超时',
|
||||
reason: '云端准备依赖的时间超过限制。',
|
||||
nextStep: '稍后重试;如果持续失败,请让开发助手精简依赖。',
|
||||
},
|
||||
BUILD_COMMAND_FAILED: {
|
||||
title: '项目没有构建成功',
|
||||
reason: '云端执行项目构建时发现代码或配置错误。',
|
||||
nextStep: '请让开发助手运行 npm run build,修复错误后提交新版本。',
|
||||
},
|
||||
BUILD_TIMEOUT: {
|
||||
title: '项目构建超时',
|
||||
reason: '云端构建时间超过平台限制。',
|
||||
nextStep: '请让开发助手减少构建步骤或过大的依赖后重试。',
|
||||
},
|
||||
BUILD_SANDBOX_UNAVAILABLE: {
|
||||
title: '云端构建环境暂时不可用',
|
||||
reason: '平台暂时无法启动安全构建环境。',
|
||||
nextStep: '稍后重新提交,无需修改项目。',
|
||||
},
|
||||
BUILD_PIPELINE_MISMATCH: {
|
||||
title: '项目发布方式不匹配',
|
||||
reason: '当前提交不是平台支持的 Makelore 静态项目格式。',
|
||||
nextStep: '请从当前项目重新点击一键提交,不要手工修改发布包。',
|
||||
},
|
||||
BUILD_PIPELINE_UNSUPPORTED: {
|
||||
title: '这个项目暂不支持自动发布',
|
||||
reason: '平台没有找到适合当前项目类型的安全构建方式。',
|
||||
nextStep: '请联系运营人员确认项目类型。',
|
||||
},
|
||||
DEPENDENCY_PREFETCH_FAILED: LEGACY_BUILD_FAILURE,
|
||||
DEPENDENCY_PREFETCH_TIMEOUT: LEGACY_BUILD_FAILURE,
|
||||
BUILD_COMMAND_FAILED: LEGACY_BUILD_FAILURE,
|
||||
BUILD_TIMEOUT: LEGACY_BUILD_FAILURE,
|
||||
BUILD_SANDBOX_UNAVAILABLE: LEGACY_BUILD_FAILURE,
|
||||
BUILD_PIPELINE_MISMATCH: LEGACY_BUILD_FAILURE,
|
||||
BUILD_PIPELINE_UNSUPPORTED: LEGACY_BUILD_FAILURE,
|
||||
SOURCE_DIGEST_MISMATCH: CLIENT_ARTIFACT_REJECTED,
|
||||
OUTPUT_MISSING: CLIENT_ARTIFACT_REJECTED,
|
||||
OUTPUT_INVALID: CLIENT_ARTIFACT_REJECTED,
|
||||
OUTPUT_LIMIT_EXCEEDED: CLIENT_ARTIFACT_REJECTED,
|
||||
CLIENT_ARTIFACT_INVALID: CLIENT_ARTIFACT_REJECTED,
|
||||
CLIENT_ARTIFACT_DIGEST_MISMATCH: CLIENT_ARTIFACT_REJECTED,
|
||||
VERSION_NOT_FOUND: {
|
||||
title: '平台没有找到本次提交',
|
||||
reason: '构建服务无法读取刚刚上传的版本。',
|
||||
nextStep: '请重新提交;如果持续失败,请联系运营人员。',
|
||||
},
|
||||
SOURCE_DIGEST_MISMATCH: {
|
||||
title: '上传内容校验失败',
|
||||
reason: '平台收到的项目内容与提交时不一致。',
|
||||
nextStep: '重新提交一次;如果持续失败,请联系运营人员。',
|
||||
},
|
||||
OUTPUT_MISSING: {
|
||||
title: '没有生成可运行页面',
|
||||
reason: '构建完成后没有找到发布所需的页面文件。',
|
||||
nextStep: '请让开发助手检查 Vite 输出目录和 index.html。',
|
||||
},
|
||||
OUTPUT_INVALID: {
|
||||
title: '生成的页面无法发布',
|
||||
reason: '构建输出缺少必要文件或包含不安全内容。',
|
||||
nextStep: '请让开发助手检查 Vite 构建输出后重试。',
|
||||
},
|
||||
OUTPUT_LIMIT_EXCEEDED: {
|
||||
title: '生成的页面文件太大',
|
||||
reason: '构建结果超过平台允许范围。',
|
||||
nextStep: '请让开发助手压缩素材、拆分资源或删除无用输出。',
|
||||
},
|
||||
RELEASE_STORE_FAILED: {
|
||||
title: '平台暂时无法保存发布文件',
|
||||
reason: '作品已经构建,但发布存储当前不可用。',
|
||||
nextStep: '稍后重新提交,无需修改项目。',
|
||||
},
|
||||
BUILD_STALE: {
|
||||
title: '构建任务已中断',
|
||||
reason: '云端构建任务长时间没有继续运行。',
|
||||
nextStep: '重新提交一次;如果持续发生,请联系运营人员。',
|
||||
},
|
||||
BROWSER_SMOKE_FAILED: {
|
||||
title: '自动打开作品时发现问题',
|
||||
reason: '云端浏览器检测到了白屏、运行错误或资源加载失败。',
|
||||
nextStep: '请让开发助手运行 npm run build,并在浏览器中检查构建结果后重试。',
|
||||
},
|
||||
BROWSER_SMOKE_TIMEOUT: {
|
||||
title: '自动打开作品超时',
|
||||
reason: '作品在规定时间内没有完成加载。',
|
||||
nextStep: '请让开发助手检查首屏资源大小和启动逻辑,优化后重新提交。',
|
||||
},
|
||||
BROWSER_SMOKE_UNAVAILABLE: {
|
||||
title: '自动验收环境暂时不可用',
|
||||
reason: '平台暂时无法启动用于检查作品的安全浏览器。',
|
||||
nextStep: '稍后重新提交,无需修改项目。',
|
||||
},
|
||||
BUILD_CANCELLED: {
|
||||
title: '构建已取消',
|
||||
reason: '平台没有继续处理这个版本。',
|
||||
nextStep: '确认没有其他版本正在处理后重新提交。',
|
||||
},
|
||||
BUILD_FAILED: {
|
||||
title: '项目没有构建成功',
|
||||
reason: '云端未能生成可审核的作品。',
|
||||
nextStep: '请让开发助手先确认 npm run build 成功,再提交新版本。',
|
||||
...PLATFORM_FINALIZATION_RETRYABLE,
|
||||
},
|
||||
ARTIFACT_STORAGE_UNAVAILABLE: PLATFORM_FINALIZATION_RETRYABLE,
|
||||
BUILD_STALE: PLATFORM_FINALIZATION_RETRYABLE,
|
||||
BROWSER_SMOKE_FAILED: LEGACY_BUILD_FAILURE,
|
||||
BROWSER_SMOKE_TIMEOUT: LEGACY_BUILD_FAILURE,
|
||||
BROWSER_SMOKE_UNAVAILABLE: LEGACY_BUILD_FAILURE,
|
||||
BUILD_CANCELLED: LEGACY_BUILD_FAILURE,
|
||||
BUILD_FAILED: LEGACY_BUILD_FAILURE,
|
||||
};
|
||||
|
||||
export function describeWorksPublishFailure(
|
||||
|
||||
Reference in New Issue
Block a user