データ移行影響分析¶
概要¶
tracer-data-migration/backend/配下の移行スクリプト(kan.py、jin.py)が更新するテーブルと、それらを参照するPHPアプリケーション機能を特定し、メンテナンスページ表示が必要な画面を明確化します。
移行スクリプトが更新するテーブル¶
肝臓移行スクリプト(kan.py)¶
| テーブル名 | 用途 | 処理内容 |
|---|---|---|
| T_ISHOKU_KIHON_LIV | 生体移植基本情報 | INSERT/UPDATE |
| T_TRACER_IKO | TRACER移行管理 | INSERT |
| T_ISHOKU_KIHON_LIVER_LIV | 生体肝臓移植詳細 | INSERT/UPDATE |
| T_DONOR_LIV | ドナー基本情報 | INSERT/UPDATE |
| T_DONOR_LIVER_LIV | 肝臓ドナー詳細 | INSERT/UPDATE |
| T_NYURYOKUJOKYO_LIV | 入力状況管理 | INSERT/UPDATE |
腎臓移行スクリプト(jin.py)¶
| テーブル名 | 用途 | 処理内容 |
|---|---|---|
| T_ISHOKU_KIHON_LIV | 生体移植基本情報 | INSERT/UPDATE |
| T_TRACER_IKO | TRACER移行管理 | INSERT |
| T_ISHOKU_KIHON_KIDNEY_LIV | 生体腎臓移植詳細 | INSERT/UPDATE |
| T_DONOR_LIV | ドナー基本情報 | INSERT/UPDATE |
| T_DONOR_KIDNEY_LIV | 腎臓ドナー詳細 | INSERT/UPDATE |
| T_NYURYOKUJOKYO_LIV | 入力状況管理 | INSERT/UPDATE |
| T_GAPPEI_R_LIV | 受者合併症 | INSERT |
| T_IJI_MENEKI_YOKUSEI_R_LIV | 受者免疫抑制剤 | INSERT |
| T_KANSEN_R_LIV | 受者感染症 | INSERT |
| T_LIVING_D_LIV | ドナー生存情報 | INSERT |
| T_KENSA_R_LIV | 受者検査値 | INSERT |
| T_KENSA_D_LIV | ドナー検査値 | INSERT |
影響を受けるPHPアプリケーション機能¶
コントローラとテーブルの対応関係¶
LivingDonorTransplant.php(生体移植機能)¶
参照・更新するテーブル: - T_ISHOKU_KIHON_LIV - T_ISHOKU_KIHON_LIVER_LIV - T_ISHOKU_KIHON_KIDNEY_LIV - T_DONOR_LIV - T_DONOR_LIVER_LIV - T_DONOR_KIDNEY_LIV - T_NYURYOKUJOKYO_LIV - その他追跡・検査テーブル
影響を受けるURL:
| URL | 機能 | メソッド | 影響度 |
|---|---|---|---|
/livingDonorTransplant/ |
トップページ | index() | 高 |
/livingDonorTransplant/search |
検索画面 | search() | 高 |
/livingDonorTransplant/postSearch |
検索実行 | postSearch() | 高 |
/livingDonorTransplant/detail |
詳細表示 | detail() | 高 |
/livingDonorTransplant/entry |
新規登録画面 | entry() | 高 |
/livingDonorTransplant/confEntry |
登録確認画面 | confEntry() | 高 |
/livingDonorTransplant/recipient |
受者情報入力 | recipient() | 高 |
/livingDonorTransplant/confRecipient |
受者情報確認 | confRecipient() | 高 |
/livingDonorTransplant/donor |
ドナー情報入力 | donor() | 高 |
/livingDonorTransplant/confDonor |
ドナー情報確認 | confDonor() | 高 |
/livingDonorTransplant/csv |
CSVエクスポート | csv() | 中 |
/livingDonorTransplant/statusInfoTransplant |
入力状況参照 | statusInfoTransplant() | 中 |
ReportTransplant.php(レポート機能)¶
参照するテーブル: - T_ISHOKU_KIHON_LIV - T_ISHOKU_KIHON_LIVER_LIV - T_ISHOKU_KIHON_KIDNEY_LIV - T_DONOR_LIV(参照のみ)
影響を受けるURL:
| URL | 機能 | 影響度 |
|---|---|---|
/reportTransplant/search |
レポート検索 | 中 |
/reportTransplant/detail |
レポート詳細 | 中 |
/reportTransplant/csv |
CSVエクスポート | 中 |
/reportTransplant/pdf |
PDF出力 | 中 |
モデルとテーブルの対応関係¶
| モデルクラス | テーブル | 用途 |
|---|---|---|
| TIshokuKihonLiv | T_ISHOKU_KIHON_LIV | 生体移植基本情報CRUD |
| TIshokuKihonLiverLiv | T_ISHOKU_KIHON_LIVER_LIV | 肝臓移植詳細CRUD |
| TIshokuKihonKidneyLiv | T_ISHOKU_KIHON_KIDNEY_LIV | 腎臓移植詳細CRUD |
| TDonorLiv | T_DONOR_LIV | ドナー基本情報CRUD |
| TNyuryokujokyoLiv | T_NYURYOKUJOKYO_LIV | 入力状況CRUD |
メンテナンスページ表示が必要なURL¶
高優先度(必須停止)¶
データの整合性に直接影響するため、**必ず停止が必要**なURL:
具体的なURL:
- /livingDonorTransplant/ - トップ
- /livingDonorTransplant/search - 検索
- /livingDonorTransplant/postSearch - 検索実行
- /livingDonorTransplant/detail - 詳細
- /livingDonorTransplant/entry - 新規登録
- /livingDonorTransplant/confEntry - 登録確認
- /livingDonorTransplant/recipient - 受者入力
- /livingDonorTransplant/confRecipient - 受者確認
- /livingDonorTransplant/donor - ドナー入力
- /livingDonorTransplant/confDonor - ドナー確認
中優先度(推奨停止)¶
データ参照のみだが、移行中のデータが表示される可能性があるため、**停止を推奨**するURL:
影響なし(停止不要)¶
生体移植データを参照しないため、通常稼働可能:
メンテナンスモードの実装¶
既存のメンテナンス機能¶
application/helpers/maintenance_helper.phpに実装済みのguardTracerLiving()関数を使用します。
実装箇所:
- application/controllers/common/LivingDonorTransplant.php
- application/controllers/common/ReportTransplant.php
メンテナンスフラグファイル¶
フラグファイルパス:
フラグファイル形式:
- 1行目: メンテナンス予定時刻
- 2行目以降: メッセージ(ログイン画面にバナー表示)
メンテナンスページの表示内容¶
表示先: - 影響を受けるURL全てで表示 - ログイン画面にもバナー表示
表示内容:
システムメンテナンス中
現在、生体移植データの移行作業を実施しています。
メンテナンス時間:
2025-10-12 01:00-03:00 JST
大変ご不便をおかけしますが、メンテナンス終了後に再度アクセスしてください。
※死体移植機能は通常通りご利用いただけます。
データ移行フロー図¶
sequenceDiagram
participant Admin as 管理者
participant Flag as メンテナンスフラグ
participant Web as Webアプリ
participant KAN as kan.py
participant JIN as jin.py
participant DB as Database
Admin->>Flag: maintenance_tracer_living.flag作成
Admin->>Web: メンテナンス確認
Web-->>Admin: メンテナンスページ表示
Note over Admin,DB: 生体移植機能停止中
Admin->>KAN: python kan.py 実行
KAN->>DB: 肝臓データINSERT/UPDATE
Note over DB: T_ISHOKU_KIHON_LIVER_LIV<br/>T_DONOR_LIVER_LIV等
Admin->>JIN: python jin.py 実行
JIN->>DB: 腎臓データINSERT/UPDATE
Note over DB: T_ISHOKU_KIHON_KIDNEY_LIV<br/>T_DONOR_KIDNEY_LIV等
Admin->>DB: データ整合性確認
DB-->>Admin: OK
Admin->>Flag: maintenance_tracer_living.flag削除
Admin->>Web: 動作確認
Web-->>Admin: 正常表示
Note over Admin,DB: 生体移植機能再開
移行時の注意事項¶
データ整合性¶
- 外部キー制約: 移行順序を遵守
- 基本テーブル → 詳細テーブル → 関連テーブル
-
T_ISHOKU_KIHON_LIV→T_ISHOKU_KIHON_LIVER_LIV/T_ISHOKU_KIHON_KIDNEY_LIV -
一意性制約:
SEITAI_ISYOKU_IDの重複チェック-
TRACER_IDの一意性担保 -
NOT NULL制約:
- 必須フィールドのデータ存在確認
- デフォルト値の設定
ロールバック手順¶
移行失敗時のロールバック手順:
# バックアップからリストア
mysql -u root -p TRACERDB7 < backup_before_migration.sql
# メンテナンスフラグ削除
rm application/maintenance_tracer_living.flag
# 動作確認
# ブラウザで /livingDonorTransplant/search にアクセス
移行後の確認項目¶
- 検索機能の動作確認
- 詳細表示の確認
- 入力状況の確認
- CSVエクスポートの確認
- レポート出力の確認
- ドナー・受者データの整合性確認