Skip to content

backup: 差分バックアップ方式の仕様確定と実装 #48

Description

@strnh

Issue #6 から分離した follow-up(差分バックアップ)。

#6フル SQL dump の作成・一覧・DL・安全な restore(PR #47 まで完了したため、残る差分バックアップをここで扱う。フルバックアップの MVP 定義外(post-MVP)。

背景(現状)

  • フルバックアップ: app/Services/SqliteFullBackup.php(sqlite3 .dump + .meta.json
  • フルリストア: app/Services/SqliteFullRestore.php(一時DB→検証→原子的スワップ、認証情報 維持/上書き)
  • 監査ログ: auth_audit_logs / user_audit_logs / backup_audit_logs
  • 業務テーブルに updated_at あり(差分検出の候補)

スコープ

1. 方式の確定(先に決める)

  • 差分検出方式: updated_at ベース / change-log テーブル追加 / SQLite trigger のいずれか
  • DELETE の差分表現: soft delete 導入 or tombstone レコード
  • 出力形式: SQL 文 / NDJSON などの構造化形式
  • 適用モデル: 差分単体で適用可 / フル + 差分列で適用
  • 対象範囲: 業務データのみか、認証系を含めるか(restore の 維持/上書き と整合させる)

2. 実装

  • 差分バックアップ作成(前回バックアップ以降の変更を出力)
  • 差分の指定順適用
  • ファイル名に日時・種別・schema version(例: backup-diff-YYYYMMDD-HHMMSS.ndjson
  • admin 認可+監査(既存 backup.admin middleware / BackupAudit を踏襲)
  • Feature test(作成・適用・per-file error・既存データ破壊なし)

完了条件

Refs #6

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions