<?php

/**
 * 文件功能：开发日志表迁移
 * 记录功能开发、Bug修复、优化迭代等版本变更历史
 *
 * @author   ChatRoom Laravel
 *
 * @version  1.0.0
 */

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('dev_changelogs', function (Blueprint $table): void {
            $table->id();
            // 版本号，按日期格式如 2026-02-28，可自由输入
            $table->string('version', 30)->comment('版本号，格式: 2026-02-28');
            // 日志标题，简洁描述本次更新重点
            $table->string('title', 200)->comment('日志标题');
            // 类型：新功能/修复/优化/其他
            $table->enum('type', ['feature', 'fix', 'improve', 'other'])
                ->default('feature')
                ->comment('类型: feature=新功能 fix=修复 improve=优化 other=其他');
            // Markdown 格式的详细内容
            $table->longText('content')->comment('详细内容（Markdown 格式）');
            // 是否已发布（0=草稿，不在前台显示）
            $table->boolean('is_published')->default(false)->comment('是否已发布，0=草稿');
            // 发布时是否向 Room ID=1 的大厅广播通知
            $table->boolean('notify_chat')->default(true)->comment('发布时是否通知 Room 1 大厅');
            // 首次发布时间，编辑时不更新
            $table->timestamp('published_at')->nullable()->comment('首次发布时间，编辑操作不更新此字段');
            $table->timestamps();

            // 复合索引：前台查询已发布日志并按时间排序
            $table->index(['is_published', 'published_at'], 'idx_published');
        });
    }

    /**
     * 回滚：删除开发日志表
     */
    public function down(): void
    {
        Schema::dropIfExists('dev_changelogs');
    }
};
