feat: [roadmap] 중장기 계획 테이블 마이그레이션 추가
- admin_roadmap_plans: 계획 테이블 (제목, 카테고리, 상태, Phase, 진행률 등) - admin_roadmap_milestones: 마일스톤 테이블 (plan_id FK, 상태, 예정일 등)
This commit is contained in:
@@ -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');
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user