Motivation / 目的
UNESCO's own dataset already flags whether a site is transboundary (spans multiple countries via a serial nomination), but this project currently fetches that value and then silently discards it during import.
UNESCOのデータセット自体が「越境遺産かどうか」を示す真偽値を既に持っていますが、現状はその値を取得しておきながら、インポート処理の途中で捨ててしまっています。
現状の問題 / Current problem
DumpUnescoWorldHeritageJson.php::normalizeRow()はUNESCOのAPIレスポンスからtransboundaryという真偽値を取得し、ダンプJSONまでは保持している(DumpUnescoWorldHeritageJson.php:480)。
- しかし次工程の
SplitWorldHeritageJson.php::normalizeSiteRowImportReady()にはtransboundaryキーへの参照が一切無く、ここで値が失われる。
- 結果、
world_heritage_sitesテーブルにも対応するカラムが存在せず、ImportWorldHeritageSiteFromSplitFile.phpにも参照が無く、この情報はDB・API双方から完全に欠落している。
解決策 / Solution
SplitWorldHeritageJson.php::normalizeSiteRowImportReady()にis_transboundaryの変換を追加する。既存のis_endangered($this->boolFromDanger($row['danger'] ?? null))と全く同じパターンで実装できる。
- 複数国に分割処理される際のマージ処理
mergeSiteRowPreferExisting()にも同様の考慮を追加する。
world_heritage_sitesテーブルにis_transboundary(boolean, default false)カラムを追加するマイグレーションを作成する。
ImportWorldHeritageSiteFromSplitFile.phpで新カラムを永続化する。
WorldHeritageモデルの$fillableに追加する。
Scope / スコープ
- 今回はDB層(データの復元・永続化)までとする。API/DTO/Algoliaへの露出は対象外(越境遺産フィルタ等、実際に使う機能ができた時点で別Issueとして対応する)。
Motivation / 目的
UNESCO's own dataset already flags whether a site is transboundary (spans multiple countries via a serial nomination), but this project currently fetches that value and then silently discards it during import.
UNESCOのデータセット自体が「越境遺産かどうか」を示す真偽値を既に持っていますが、現状はその値を取得しておきながら、インポート処理の途中で捨ててしまっています。
現状の問題 / Current problem
DumpUnescoWorldHeritageJson.php::normalizeRow()はUNESCOのAPIレスポンスからtransboundaryという真偽値を取得し、ダンプJSONまでは保持している(DumpUnescoWorldHeritageJson.php:480)。SplitWorldHeritageJson.php::normalizeSiteRowImportReady()にはtransboundaryキーへの参照が一切無く、ここで値が失われる。world_heritage_sitesテーブルにも対応するカラムが存在せず、ImportWorldHeritageSiteFromSplitFile.phpにも参照が無く、この情報はDB・API双方から完全に欠落している。解決策 / Solution
SplitWorldHeritageJson.php::normalizeSiteRowImportReady()にis_transboundaryの変換を追加する。既存のis_endangered($this->boolFromDanger($row['danger'] ?? null))と全く同じパターンで実装できる。mergeSiteRowPreferExisting()にも同様の考慮を追加する。world_heritage_sitesテーブルにis_transboundary(boolean, default false)カラムを追加するマイグレーションを作成する。ImportWorldHeritageSiteFromSplitFile.phpで新カラムを永続化する。WorldHeritageモデルの$fillableに追加する。Scope / スコープ