fix(wechat): isolate stale images and page links
Memind CI / Test, build, and release guards (pull_request) Successful in 2m36s

This commit is contained in:
john
2026-07-22 13:30:44 +08:00
parent aea3c1e83e
commit db225b784e
11 changed files with 416 additions and 37 deletions
+14 -2
View File
@@ -50,12 +50,22 @@ export function ensureUserZoneDirs(workspaceRoot) {
}
/** 上传完成后镜像到 MindSpace/<user>/<category>/文件名 */
export function mirrorAssetToZone({ workspaceRoot, categoryCode, filename, sourcePath }) {
export function mirrorAssetToZone({
workspaceRoot,
categoryCode,
filename,
sourcePath,
overwrite = true,
}) {
if (!UPLOAD_ZONE_CODES.includes(categoryCode)) return null;
if (!sourcePath || !fs.existsSync(sourcePath)) return null;
ensureUserZoneDirs(workspaceRoot);
const dest = resolveZoneFilePath(workspaceRoot, categoryCode, filename);
fs.mkdirSync(path.dirname(dest), { recursive: true });
// Layout bootstrap is a recovery/backfill path. Re-copying every canonical
// asset on every chat request changes workspace mtimes, can overwrite a
// newer Agent edit, and makes historical HTML look newly generated.
if (!overwrite && fs.existsSync(dest)) return dest;
fs.copyFileSync(sourcePath, dest);
return dest;
}
@@ -165,7 +175,8 @@ export async function syncUserZonesFromAssets(pool, storageRoot, userId, workspa
FROM h5_assets a
JOIN h5_space_categories c ON c.id = a.category_id AND c.user_id = a.user_id
JOIN h5_asset_versions v ON v.id = a.current_version_id
WHERE a.user_id = ? AND a.status <> 'deleted' AND c.category_code IN (${placeholders})`,
WHERE a.user_id = ? AND a.status <> 'deleted' AND c.category_code IN (${placeholders})
ORDER BY a.updated_at DESC`,
[userId, ...UPLOAD_ZONE_CODES],
);
for (const row of rows) {
@@ -175,6 +186,7 @@ export async function syncUserZonesFromAssets(pool, storageRoot, userId, workspa
categoryCode: row.category_code,
filename: row.original_filename,
sourcePath,
overwrite: false,
});
}
return { workspaceRoot, mirrored: rows.length };