diff options
| author | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-10-29 16:29:36 +0900 |
|---|---|---|
| committer | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-10-29 16:29:36 +0900 |
| commit | 9fc7f169814a5c409627de2db91df556e8147029 (patch) | |
| tree | 126d52b14712ded207eb966bdf20c2a57629560a | |
| parent | ab20de498b0a5a66d7e7d0dd477b47dd4b3c68f9 (diff) | |
park-editor: 公園名の文字化けも自動修復
公園名の値が文字化けした場合も、ディスク側の名前と一致すれば元に戻し、重複レコードを作らないようにした。
| -rw-r--r-- | scripts/park-editor.mjs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/scripts/park-editor.mjs b/scripts/park-editor.mjs index 2ccd96d..feeb059 100644 --- a/scripts/park-editor.mjs +++ b/scripts/park-editor.mjs @@ -159,6 +159,19 @@ function mergeInto(target, source) { // ブラウザが古いデータを持っていても、後から足した項目やレコードを消さないようにする。 // 画面になくて編集できないキーは、ディスク側の値を残す。 function mergeMissing(postedList, currentList, canonicalKeys) { + // 公園名そのものが文字化けした場合は、ディスク側の名前に戻す + const currentNames = currentList.map(recordKey).filter(Boolean); + for (const rec of postedList) { + const src = rec.properties || rec; + for (const key of NAME_KEYS) { + const value = src[key]; + if (typeof value !== "string" || !value.includes(FFFD)) continue; + const hits = currentNames.filter((name) => repairValue(value, name) === name); + if (hits.length === 1) src[key] = hits[0]; + break; + } + } + for (const rec of postedList) normalizeRecordKeys(rec, canonicalKeys); // 同じレコードが重複していたら1つにまとめる |
