Files
memind/scripts/repair-reading-survey-wechat.mjs
T
john 16fd99e8ba fix(page-data): trust live API smoke and WeChat survey submit compat
Stop blocking WeChat delivery when Page Data insert works but publish
quota blocks h5_publish_records; fix smoke URL missing /api; patch survey
radios for WeChat X5 and detect dataset constants in admin pages.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-12 22:42:47 +08:00

56 lines
1.6 KiB
JavaScript

#!/usr/bin/env node
/**
* Patch reading-survey HTML on disk for WeChat WebView radio/submit compatibility.
*
* Usage:
* node scripts/repair-reading-survey-wechat.mjs
* node scripts/repair-reading-survey-wechat.mjs --user a70ff537-8908-486e-9b6c-042e07cc25db
*/
import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import { applyWechatSurveyCompat } from '../mindspace-page-data-wechat-survey-compat.mjs';
import { PUBLISH_ROOT_DIR } from '../user-publish.mjs';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const root = path.resolve(__dirname, '..');
function parseArgs(argv) {
const userIdx = argv.indexOf('--user');
return {
userId:
userIdx >= 0
? String(argv[userIdx + 1] ?? '').trim()
: 'a70ff537-8908-486e-9b6c-042e07cc25db',
};
}
function patchFile(absolutePath) {
const before = fs.readFileSync(absolutePath, 'utf8');
const { html, patched } = applyWechatSurveyCompat(before);
if (!patched) {
console.log(`SKIP ${absolutePath} (no compat patch needed)`);
return false;
}
fs.writeFileSync(absolutePath, html, 'utf8');
console.log(`OK ${absolutePath}`);
return true;
}
const { userId } = parseArgs(process.argv.slice(2));
const base = path.join(root, PUBLISH_ROOT_DIR, userId, 'public');
const targets = ['reading-survey.html'];
let changed = 0;
for (const name of targets) {
const filePath = path.join(base, name);
if (!fs.existsSync(filePath)) {
console.log(`MISS ${filePath}`);
continue;
}
if (patchFile(filePath)) changed += 1;
}
console.log(`patched ${changed} file(s)`);
process.exit(changed > 0 ? 0 : 1);