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を実装する
Status:
Closed
Priority:
Normal
Assignee:
-
Start date:
09/30/2026
Due date:
% Done:
0%
Estimated time:
Description
Linear migration metadata¶
- Linear issue: TAK-201
- Linear URL: https://linear.app/takayuki-komoda/issue/TAK-201/tak-192-c-初期データzip取込apiを実装する
- Linear status: Done
- Linear team: Takayuki Komoda
- Linear project: EPAA App
- Linear assignee: Takayuki Komoda
- Linear labels:
- Linear created: 2026-07-12T23:30:29.328Z
- Linear updated: 2026-07-14T12:57:42.824Z
- Linear archived:
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を作成しました。
- PR: https://github.com/takataka328-max/EPAA/pull/108
- branch:
codex/tak-201-initial-data-import-api - target:
develop
実装範囲:
- 初期データ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