## 07_04_export_import.md # バックアップ・リストア機能 設計書 版:v2.0 実装の状況は `work_order_db_migration.md`(作業書)を見る ## 1. 概要 ### 1.1 目的 - 会計データの安全な保存(サーバー障害対策) - 修正申告時に過去データを復元する手段の提供 - データ移行(別PC・別環境)を可能にする ### 1.2 基本方針 - データはDBに保存する(10年分)。DB全体のバックアップは、サーバーの自動バックアップと `.sql` の書き出しで行う(`00_07_database.md` 6節)。本機能は、会計データを、画面からファイル(ZIP)に書き出す・読み込む機能である - ローカル/USBは最終保存先(バックアップ) - 修正申告時はバックアップから復元して再計算 ## 2. エクスポート機能 ### 2.1 エクスポート画面 ``` ┌─────────────────────────────────────┐ │ 【バックアップ】 │ │ │ │ 対象選択: │ │ ○ 全データ │ │ ○ 期間指定: [2024-01-01]〜[2024-12-31]│ │ ○ 会社指定: [SPS ■] [SCSPS ■] │ │ │ │ オプション: │ │ □ マスタデータを含める │ │ □ 申告済みデータも含める │ │ │ │ [バックアップ実行] │ └─────────────────────────────────────┘ ``` ### 2.2 出力形式 - ファイル形式:ZIP圧縮 - ファイル名:`SPS_backup_YYYYMMDD_HHMMSS.zip` - 内部構造(private/ / corporate/ の形式。DBの内容から生成する) ``` SPS_backup_20260312_143022.zip ├── private/ # 個人事業データ │ ├── 2024/ │ │ ├── journals.json │ │ ├── 決算書.pdf │ │ └── locked.json │ └── 2023/ │ ├── journals.json │ └── locked.json │ ├── corporate/ # 法人データ │ ├── 第4期/ │ │ ├── journals.json │ │ ├── 決算書.pdf │ │ └── locked.json │ └── 第3期/ │ ├── journals.json │ └── locked.json │ ├── master/ # マスタデータ │ ├── accounts.json │ ├── employees.json │ └── ... │ └── backup_info.json # バックアップ情報(日付・バージョン等) ``` ### 2.3 バックアップ情報(ZIP内の `backup_info.json`) ```json { "backup_date": "2026-03-12 14:30:22", "version": "1.0", "included_private_years": [2024, 2023, 2022], "included_corporate_periods": ["第4期", "第3期", "第2期"], "includes_master": true, "includes_locked": true, "created_by": "SPS01-00001" } ``` ### 2.4 エクスポート手順 1. バックアップ画面を開く 2. 対象を選択(全データ/期間指定/会社指定) 3. オプションを選択(マスタ含む/申告済含む) 4. バックアップ実行ボタンをクリック 5. ブラウザからZIPファイルをダウンロード 6. ローカル/USBに保存 ## 3. インポート機能 ### 3.1 インポート画面 ``` ┌─────────────────────────────────────┐ │ 【リストア】 │ │ │ │ バックアップファイル: │ │ [ファイルを選択] SPS_backup_xxx.zip │ │ │ │ インポート方法: │ │ ○ 上書き(既存データを削除) │ │ ○ マージ(不足データのみ追加) │ │ │ │ 対象選択: │ │ □ 会計データすべて │ │ □ マスタデータ │ │ │ │ [リストア実行] │ └─────────────────────────────────────┘ ``` ### 3.2 インポート方法 インポートは、DBへの書き込みをトランザクションで行う。失敗したら、書き込み前の状態に戻す。 | 方法 | 動作 | 使用場面 | |------|------|----------| | **上書き** | 対象の既存データを置き換える(トランザクション内で全削除→復元) | 障害復旧、クリーンな状態に戻す | | **マージ** | 不足データのみ追加(同一IDはスキップ) | 修正申告、部分的な復元 | ### 3.3 インポート手順 1. リストア画面を開く 2. バックアップZIPファイルを選択 3. インポート方法を選択(上書き/マージ) 4. 対象を選択(会計データ/マスタ) 5. プレビュー表示(影響範囲を確認) 6. リストア実行 7. 結果表示(成功/エラー件数) ### 3.4 エラーハンドリング - ZIPファイルが壊れている → エラー表示 - バージョン不一致 → 警告表示(続行可) - 一部データのみ失敗 → 成功分は反映、失敗行をログ表示 ## 4. 修正申告対応 ### 4.1 修正申告の流れ ``` 1. バックアップから過去データをインポート(マージ) 2. 修正したい仕訳を編集 3. 修正後のデータで申告書を再作成 4. 「修正前」「修正後」を別名で保存(オプション) ``` ### 4.2 修正履歴の管理 - 修正申告時は、修正前データを別名保存できる - 例: - `private/2024/修正前/journals.json` - `private/2024/修正後/journals.json` - `corporate/第4期/修正前/journals.json` - `corporate/第4期/修正後/journals.json` - 税務調査時に「修正しました」と説明できるようにする ## 5. 保存先の役割分担 ### 5.1 サーバー - DB:常時アクセス可能。10年分のデータを保存(いつでも見れる) - 自動バックアップ(毎日・14日分)あり(`00_07` 6節) ### 5.2 ローカル/USB - 最終保存先:バックアップデータを保管 - サーバー障害時の復元用 - 修正申告時のデータソース - 推奨:月1回以上バックアップ ## 6. 運用推奨 ### 6.1 バックアップ頻度 | タイミング | 推奨 | 理由 | |-----------|------|------| | 毎日 | 任意 | 日次取引入力が多い場合 | | 週1回 | ✅ 推奨 | 週次バックアップ | | 月末 | ✅ 必須 | 月次締め後 | | 確定申告前 | ✅ 必須 | 申告前に最終バックアップ | | 確定申告後 | ✅ 必須 | 申告済データを保存 | ### 6.2 保管ルール - バックアップファイル名に日時を必ず含める - 最低3世代以上保存(最新+前月+前年) - 重要なバックアップは別メディアにも保存 ## 7. 今後の拡張 ### 7.1 クラウド連携 - クラウドストレージ連携(Google Drive等) ### 7.2 差分バックアップ - 前回からの変更分のみ保存 - バックアップ時間の短縮 ### 7.3 バージョン管理 - 修正履歴を自動保存 - 任意の時点に戻せる ## 8. 改訂履歴 | 日付 | 版 | 内容 | |------|----|------| | 2026-03-12 | 1.0 | 初版作成 | | 2026-03-15 | 1.1 | バックアップ内部構造を private/ / corporate/ に修正 | | 2026-10-08 | 1.2 | ファイル名規則を「フォルダ番号+ファイル番号」形式に変更したことに伴い、参照名と保存先表記を機械的に置換(内容の変更なし) | ``` --- | 2026-10-29 | 2.0 | DB前提に書き直し。DB全体のバックアップはサーバー側(`00_07` 6節)、本機能は会計データのZIP書き出し・読み込みと位置づけ。インポートをトランザクションで行う旨を追記。5.1節、7.1節を整理 |