feat: API Flow Tester 테이블 마이그레이션 추가
- admin_api_flows: 플로우 정의 저장 테이블 - admin_api_flow_runs: 실행 이력 및 로그 테이블
This commit is contained in:
@@ -0,0 +1,70 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* API Flow Tester 기능을 위한 테이블 생성 (MNG 전용)
|
||||||
|
* - admin_api_flows: 플로우 정의 저장
|
||||||
|
* - admin_api_flow_runs: 실행 이력 및 로그
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
// admin_api_flows: 플로우 정의 테이블
|
||||||
|
Schema::create('admin_api_flows', function (Blueprint $table) {
|
||||||
|
$table->id()->comment('ID');
|
||||||
|
$table->string('name', 100)->comment('플로우 이름');
|
||||||
|
$table->text('description')->nullable()->comment('설명');
|
||||||
|
$table->string('category', 50)->nullable()->comment('카테고리');
|
||||||
|
$table->json('flow_definition')->comment('플로우 정의 (JSON)');
|
||||||
|
$table->boolean('is_active')->default(true)->comment('활성화 여부');
|
||||||
|
$table->foreignId('created_by')->nullable()->comment('생성자 ID');
|
||||||
|
$table->foreignId('updated_by')->nullable()->comment('수정자 ID');
|
||||||
|
$table->timestamps();
|
||||||
|
|
||||||
|
// 인덱스
|
||||||
|
$table->index('category', 'idx_admin_api_flows_category');
|
||||||
|
$table->index('is_active', 'idx_admin_api_flows_is_active');
|
||||||
|
$table->index('name', 'idx_admin_api_flows_name');
|
||||||
|
});
|
||||||
|
|
||||||
|
// admin_api_flow_runs: 실행 이력 테이블
|
||||||
|
Schema::create('admin_api_flow_runs', function (Blueprint $table) {
|
||||||
|
$table->id()->comment('ID');
|
||||||
|
$table->foreignId('flow_id')->comment('플로우 ID')
|
||||||
|
->constrained('admin_api_flows')
|
||||||
|
->onDelete('cascade');
|
||||||
|
$table->string('status', 20)->default('PENDING')->comment('상태: PENDING, RUNNING, SUCCESS, FAILED, PARTIAL');
|
||||||
|
$table->timestamp('started_at')->nullable()->comment('시작 시간');
|
||||||
|
$table->timestamp('completed_at')->nullable()->comment('완료 시간');
|
||||||
|
$table->unsignedInteger('duration_ms')->nullable()->comment('실행 시간 (ms)');
|
||||||
|
$table->unsignedSmallInteger('total_steps')->nullable()->comment('총 단계 수');
|
||||||
|
$table->unsignedSmallInteger('completed_steps')->default(0)->comment('완료된 단계 수');
|
||||||
|
$table->unsignedSmallInteger('failed_step')->nullable()->comment('실패한 단계');
|
||||||
|
$table->json('execution_log')->nullable()->comment('실행 로그 (단계별 결과)');
|
||||||
|
$table->json('input_variables')->nullable()->comment('입력 변수');
|
||||||
|
$table->text('error_message')->nullable()->comment('에러 메시지');
|
||||||
|
$table->foreignId('executed_by')->nullable()->comment('실행자 ID');
|
||||||
|
$table->timestamp('created_at')->useCurrent()->comment('생성 시간');
|
||||||
|
|
||||||
|
// 인덱스
|
||||||
|
$table->index('flow_id', 'idx_admin_api_flow_runs_flow_id');
|
||||||
|
$table->index('status', 'idx_admin_api_flow_runs_status');
|
||||||
|
$table->index('created_at', 'idx_admin_api_flow_runs_created_at');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('admin_api_flow_runs');
|
||||||
|
Schema::dropIfExists('admin_api_flows');
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user