本目錄只放 PostgreSQL 的「本機開發展示資料」。資料表結構以 ../latest_schema.sql 為唯一真相;測試案例應自行建立並清除測試資料,不依賴本目錄。
| 欄位 | 內容 |
|---|---|
| 目前定位 | PostgreSQL 本機開發展示資料的結構、載入與維護規格 |
| 更新日期 | 2026-07-21 |
| 前端 Mock 規格 | ../../plans/data-integration-spec.md |
簡單說:本文件回答「資料怎麼灌進 PostgreSQL」;
data-integration-spec.md回答「前端 Mock JSON 怎麼維持一致」。兩者可以共用固定 ID 與業務語意,但不是同一份資料來源,也不會自動同步。
| 要處理的事情 | 先讀哪裡 |
|---|---|
| 修改資料表、ENUM、FK、CHECK | ../latest_schema.sql |
| 確認 API Request/Response 欄位 | ../api/README.md 與對應 API Contract |
| 修改前端 Mock JSON 或衍生資料 | data-integration-spec.md |
| 修改 PostgreSQL 開發展示資料或載入順序 | 本文件 |
| 建立整合測試專用資料 | backend/src/test/** 的對應測試 |
建議閱讀順序:
latest_schema.sql,確認實際欄位、ENUM 與外鍵順序。docs/seed/dev/*.sql 與唯一入口。data-integration-spec.md 個別更新 frontend/data/**。docs/seed/
├── README.md
├── 002-dev-seed.sql # 唯一執行入口與交易邊界
└── dev/
├── 010-reference.sql # 商品分類、品牌、營區、營位、Booking policy、日曆
├── 020-identity.sql # Booking closure 使用的開發管理員與公休範例
├── 030-catalog.sql # 商品與租借 SKU/variant
└── 040-inventory.sql # 商城/租借庫位、listing 與庫存
002-dev-seed.sql 依外鍵順序載入片段,並以單一交易包住整批資料。任何一個片段失敗時,PostgreSQL 會停止並回滾,不應直接把片段當作正式入口。
目前保留的編號為:050-coupons.sql、060-orders.sql、070-bookings.sql。只有真正需要該領域的固定展示資料時才建立檔案,建立後也要加入入口檔;不要預先建立空檔。E-1 只需要主檔、政策與庫存,因此沒有建立 070-bookings.sql。
全新 Docker volume 在第一次 docker compose up -d 時會依序執行 schema 與開發 seed。若 volume 已存在,PostgreSQL 不會再次執行初始化腳本;更新 compose 掛載後,可手動執行:
docker compose up -d
docker exec yuruicamp-db psql -U postgres -d yuruicamp -f /docker-entrypoint-initdb.d/002-dev-seed.sql
也可從 repository 根目錄使用本機 psql:
psql -U postgres -d yuruicamp -f docs/seed/002-dev-seed.sql
入口已設定 ON_ERROR_STOP。若自訂了 POSTGRES_USER 或 POSTGRES_DB,請同步替換指令參數。
注意:重跑 seed 會把
DEV-STORE-MAIN的V001現有庫存更新為10,並把DEV-RENTAL-C002的RSV-DEV-001租借庫存更新為6。不要在需要保留手動測試庫存狀態時重跑。docker compose down -v會刪除整個本機資料卷,只能在確定資料可捨棄時使用。
latest_schema.sql 只放 DDL;展示資料只放在本目錄。BEGIN、COMMIT 或 \set ON_ERROR_STOP,交易與錯誤處理由入口統一管理。002-dev-seed.sql。ON CONFLICT。frontend/data/** 是前端 Mock 契約資料,不是 PostgreSQL seed 的真相來源。backend/src/test/**,由測試自行建立與清理,避免測試互相污染。../data/product-catalog-seed-manifest.md。修改本目錄前必須先閱讀本檔、../latest_schema.sql 與受影響領域的 API 契約。若需求來自前端 Mock,還必須閱讀 data-integration-spec.md,先區分要同步的是業務案例還是 API 欄位。請遵守以下限制:
latest_schema.sql 為準。002-dev-seed.sql 作為唯一入口、唯一交易邊界;片段內不得自行開關交易。docker-compose.yml、本 README 及相關 manifest/後端文件。ddl-auto 改成 update。AI 完成 seed 修改時,回報內容至少要包含:異動片段、載入順序、是否會覆寫既有開發資料、實際執行的驗證,以及未執行驗證的原因。