Project

General

Profile

Actions

Feature #74

closed
RA

Feature #140: [TAK-135] 外部システムからEPAAアプリ定義を取り込む基盤を実装する

Feature #143: [TAK-132] Excel/CSVから業務アプリ定義(resource.yaml)を生成する

Feature #83: [TAK-192] Excel参照関係から参照マスタ候補を自動生成する

[TAK-201] TAK-192-C 初期データZIP取込APIを実装する

Feature #74: [TAK-201] TAK-192-C 初期データZIP取込APIを実装する

Added by Redmine Admin about 3 hours ago. Updated about 2 hours ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Start date:
09/30/2026
Due date:
% Done:

0%

Estimated time:

Description

Linear migration metadata


Original description

目的

Excel取込ZIPに同梱された initial-data-manifest.json に従い、生成アプリ側で管理者が初期データを一括投入できる固定APIを実装する。

対応内容

  • 初期データZIPをアップロードして manifest を検証する preview API を追加する。
  • 管理者限定で commit API を追加する。
  • manifest の適用順に従ってCSVを処理する。
  • 対象resource/tableは manifest で明示されたものだけに限定する。
  • 初期データ取込のため、対象テーブルは取込前に全削除する。
  • TRUNCATE CASCADE の安易な使用は避け、依存順・対象明示・transaction rollback を前提に安全に初期化する。
  • system系、auth系、tenant/settings系など対象外テーブルを保護する。
  • 失敗時は全体rollbackし、途中反映を残さない。
  • relation解決は manifest とCSV import既存ロジックに沿って行う。

受入条件

  • 管理者以外は初期データ取込APIを実行できない。
  • preview で対象テーブル、削除件数見込み、取込順、警告を返せる。
  • commit は transaction 内で初期化と取込を実行し、失敗時 rollback できる。
  • manifest不正、順序不正、対象外テーブル指定、参照解決失敗はエラーになる。
  • DB schema/release SQL が必要な場合は別途release手順に従う。

Linear attachments

Linear comments

{"id" => "9aded6b7-dac6-4cf8-920a-d263232a992d", "name" => "Takayuki Komoda"} (2026-07-14T12:32:23.902Z)

PRを作成しました。

実装範囲:

  • 初期データZIP取込API preview/commit
  • destructive確認、tenant単位DELETE+再投入、temporary keyによるrelation解決、sequence補正
  • users / user_positions / auth/permission/fixed管理系の保護
  • fixed API permission policyとv0.4.0 release SQL
  • docs/report更新

検証:

  • 固定backendビルド、TAK-201追加テスト9件、固定backend全体73件
  • generator/generator-gui関連テスト
  • docs生成
  • 5002 settings report / matrix / browser smoke / API smoke
  • 5001 matrix / browser smoke / API smoke / DB policy確認

未対応はTAK-202(UI)とTAK-204(users/auth扱い)に分離済みです。

{"id" => "9aded6b7-dac6-4cf8-920a-d263232a992d", "name" => "Takayuki Komoda"} (2026-07-14T00:28:51.753Z)

追加決定メモ:

ユーザー確認により、TAK-201の対象を以下で固定する。

  • 初期データZIP取込は、既存CSV importとは別物として実装する
  • 用途は初回インポート/初期データのやり直し専用
  • 外部キーは、初期データ一式がmanifest順に閉じている前提で扱う
  • users および auth / permission / fixed management 系の扱いは後続検討に分離する
  • 後続検討Issue: TAK-204 初期データZIP取込におけるusers扱いを整理する

TAK-201では上記系統のテーブル/リソースを保護対象として拒否する。

{"id" => "9aded6b7-dac6-4cf8-920a-d263232a992d", "name" => "Takayuki Komoda"} (2026-07-14T00:26:38.687Z)

設計反映メモ:

ユーザー確認により、初期データZIP取込は既存CSV importとは別物として扱う。

  • 初回インポート/初期データのやり直し専用
  • 既存CSV importのupsert/full_syncとは混ぜない
  • 外部キーは初期データ一式としてmanifest順に閉じている前提
  • 削除はテナント単位の DELETE WHERE tenant_id = @tenantId を基本にする
  • commitでCSVをINSERTした後、対象テーブルごとに MAX(id) を見てsequence/identityを補正する
  • users の初期データ取込対応はTAK-201では保留し、別issueで検討する

{"id" => "9aded6b7-dac6-4cf8-920a-d263232a992d", "name" => "Takayuki Komoda"} (2026-07-13T22:45:26.942Z)

要件追加メモ:

TAK-202の画面確認に使えるよう、preview API は以下を返す。

  • 対象アプリ名 / resource名 / CSVファイル名
  • 削除予定件数
  • 取込予定件数
  • 取込順
  • destructive警告
  • commit確認文言に使える summary / warning

画面ではZIP選択後にpreviewを実行し、対象アプリ名を表示してから「以下のアプリのデータを初期化してインポートします。実行すると元に戻せません。よろしいですか?」という趣旨の確認を出して commit する想定。TAK-201側はその表示に必要な情報を契約として返す。

Actions

Also available in: PDF Atom