实现项目真机预览与待审版本扫码验收
需求:接管客户端未提交 WIP,保留真机预览,移除旧登录原型并维持 2.0.0。 实现:由 Main 核对项目与精确 Release,签发短时 Owner preview;补充一键提交映射能力及 Windows ZIP 预检兼容。
This commit is contained in:
@@ -47,6 +47,14 @@ type DeploymentPatch = {
|
||||
error?: string | null;
|
||||
};
|
||||
|
||||
type SubmittedDeploymentInput = {
|
||||
appId: string;
|
||||
versionId: string;
|
||||
versionName: string;
|
||||
reviewStatus: string;
|
||||
zipSha256?: string;
|
||||
};
|
||||
|
||||
function normalizeApiBaseUrl(value: string): string {
|
||||
const baseUrl = value.trim().replace(/\/+$/, '');
|
||||
if (!/^https?:\/\//i.test(baseUrl)) {
|
||||
@@ -253,6 +261,30 @@ export function createWorksCloudDeployment(
|
||||
return record;
|
||||
}
|
||||
|
||||
async function recordSubmitted(
|
||||
projectId: string,
|
||||
input: SubmittedDeploymentInput,
|
||||
): Promise<WorksCloudDeploymentRecord> {
|
||||
const project = (await projectStore.listProjects()).find((item) => item.id === projectId);
|
||||
if (!project) throw new Error('Project not found');
|
||||
|
||||
const state = getOrCreateState(project, await readDeploymentRecord(project.path));
|
||||
closeState(state);
|
||||
const now = new Date().toISOString();
|
||||
return await persist(state, {
|
||||
schema_version: WORKS_CLOUD_DEPLOYMENT_SCHEMA_VERSION,
|
||||
project_id: project.id,
|
||||
status: 'submitted',
|
||||
requested_at: now,
|
||||
updated_at: now,
|
||||
app_id: input.appId,
|
||||
version_id: input.versionId,
|
||||
version_name: input.versionName,
|
||||
review_status: input.reviewStatus,
|
||||
...(input.zipSha256 ? { zip_sha256: input.zipSha256 } : {}),
|
||||
});
|
||||
}
|
||||
|
||||
async function ensureRemoteProject(accessToken: string, publish: WorksPublishData): Promise<void> {
|
||||
const headers = {
|
||||
Authorization: `Bearer ${accessToken}`,
|
||||
@@ -440,6 +472,7 @@ export function createWorksCloudDeployment(
|
||||
|
||||
return {
|
||||
arm,
|
||||
recordSubmitted,
|
||||
get,
|
||||
start,
|
||||
stop,
|
||||
|
||||
Reference in New Issue
Block a user