fix(wcd): verify imported stickers and remap production assets
Build, Push and Deploy / build (push) Failing after 45m28s
Build, Push and Deploy / deploy (push) Skipped

This commit is contained in:
2026-09-11 18:21:01 +08:00
parent ca5df31d54
commit 469145edd6
2 changed files with 179 additions and 10 deletions
+10 -10
View File
@@ -438,7 +438,7 @@ async def _create_wcd_job(wcd_file: UploadFile, user_params: dict) -> JobCreateR
meta = _register_import_asset(str(item.get("name") or pkg_id), asset_bytes, mime)
real_id = str(meta["asset_id"])
remap[pkg_id] = real_id
file_map[pkg_id] = {
file_map[real_id] = {
"path": str(_asset_dir(real_id) / f"asset{_asset_extension_for_mime(mime)}"),
"mime": mime,
}
@@ -1323,15 +1323,15 @@ def _asset_meta_items() -> list[dict]:
def _find_asset_by_sha256(digest: str) -> dict | None:
for meta in _asset_meta_items():
if meta.get("sha256") == digest:
return meta
for meta in _asset_meta_items():
try:
ext = _asset_extension_for_mime(str(meta.get("mime_type") or ""))
path = _asset_dir(str(meta["asset_id"])) / f"asset{ext}"
if path.exists() and hashlib.sha256(path.read_bytes()).hexdigest() == digest:
meta["sha256"] = digest
if not path.exists():
continue
actual_digest = hashlib.sha256(path.read_bytes()).hexdigest()
if actual_digest == digest:
meta["sha256"] = actual_digest
_write_asset_meta(_asset_dir(str(meta["asset_id"])), meta)
return meta
except Exception:
@@ -1528,7 +1528,7 @@ async def update_design_template(
return DesignTemplate(**data)
@app.delete("/api/design-templates/{template_id}", status_code=204)
@app.delete("/api/design-templates/{template_id}", status_code=204, response_model=None)
def delete_design_template(template_id: str) -> None:
template_dir = _design_template_dir(template_id)
if not (template_dir / "template.json").exists():
@@ -1790,7 +1790,7 @@ def analyze_asset_line_spacing(
return LineSpacingAnalysisSummary(**result.as_dict())
@app.delete("/api/assets/{asset_id}", status_code=204)
@app.delete("/api/assets/{asset_id}", status_code=204, response_model=None)
def delete_asset(asset_id: str) -> None:
d = _asset_dir(asset_id)
meta = _read_asset_meta(d)
@@ -1916,7 +1916,7 @@ async def update_project(
return Project(**data)
@app.delete("/api/projects/{project_id}", status_code=204)
@app.delete("/api/projects/{project_id}", status_code=204, response_model=None)
def delete_project(project_id: str) -> None:
pdir = _project_dir(project_id)
path = pdir / "project.json"
@@ -2011,7 +2011,7 @@ async def upload_font(
return Font(**meta)
@app.delete("/api/fonts/{font_id}", status_code=204)
@app.delete("/api/fonts/{font_id}", status_code=204, response_model=None)
def delete_font(font_id: str) -> None:
"""删除已上传字体(内置默认字体不可删除)。"""
if font_id == "__default__":