feat: [roadmap] 중장기 계획 테이블 마이그레이션 추가

- admin_roadmap_plans: 계획 테이블 (제목, 카테고리, 상태, Phase, 진행률 등)
- admin_roadmap_milestones: 마일스톤 테이블 (plan_id FK, 상태, 예정일 등)
This commit is contained in:
김보곤
2026-03-02 15:50:05 +09:00
parent 2bb3a2872a
commit d7dd6cdbc5

View File

@@ -0,0 +1,68 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('admin_roadmap_plans', function (Blueprint $table) {
$table->id();
$table->string('title', 200);
$table->text('description')->nullable();
$table->longText('content')->nullable();
$table->string('category', 30)->default('general');
$table->string('status', 20)->default('planned');
$table->string('priority', 10)->default('medium');
$table->string('phase', 30)->default('phase_1');
$table->date('start_date')->nullable();
$table->date('end_date')->nullable();
$table->tinyInteger('progress')->unsigned()->default(0);
$table->string('color', 7)->default('#3B82F6');
$table->integer('sort_order')->default(0);
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
$table->timestamps();
$table->softDeletes();
$table->index('category');
$table->index('status');
$table->index('phase');
$table->index('priority');
});
Schema::create('admin_roadmap_milestones', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('plan_id');
$table->string('title', 255);
$table->text('description')->nullable();
$table->string('status', 20)->default('pending');
$table->date('due_date')->nullable();
$table->timestamp('completed_at')->nullable();
$table->unsignedBigInteger('assignee_id')->nullable();
$table->integer('sort_order')->default(0);
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
$table->timestamps();
$table->softDeletes();
$table->foreign('plan_id')
->references('id')
->on('admin_roadmap_plans')
->cascadeOnDelete();
$table->index('status');
$table->index('due_date');
});
}
public function down(): void
{
Schema::dropIfExists('admin_roadmap_milestones');
Schema::dropIfExists('admin_roadmap_plans');
}
};