import { BaseQuery, BaseRequest, BaseResponse } from '@/types/base';

/**
 * 模块类型枚举
 */
export enum ModuleType {
    BACKEND = 'BACKEND',
    FRONTEND = 'FRONTEND',
    ALL = 'ALL',
}

/**
 * 模块类型标签映射
 */
export const ModuleTypeLabels: Record<ModuleType, { label: string; color: string }> = {
    [ModuleType.BACKEND]: { label: '后端', color: 'blue' },
    [ModuleType.FRONTEND]: { label: '前端', color: 'green' },
    [ModuleType.ALL]: { label: '全栈', color: 'purple' },
};

/**
 * 系统版本查询参数
 */
export interface SystemReleaseQuery extends BaseQuery {
    releaseVersion?: number;        // 版本号（后端BigDecimal）
    module?: ModuleType;            // 模块类型
    notified?: boolean;             // 是否已通知
    releaseDateStart?: string;      // 发布时间开始
    releaseDateEnd?: string;        // 发布时间结束
}

/**
 * 系统版本请求参数
 */
export interface SystemReleaseRequest extends BaseRequest {
    releaseVersion: number;         // 版本号（后端BigDecimal，必填）
    module: ModuleType;             // 模块类型（必填）
    releaseDate: string;            // 发布时间，格式：yyyy-MM-dd HH:mm:ss（必填）
    changes: string;                // 变更内容（必填，支持换行）
    notified: boolean;              // 是否已发送通知（必填）
    delayMinutes: number;           // 延迟执行分钟数（必填，0表示立即执行）
    estimatedDuration: number;      // 预计维护时长（必填，单位：分钟）
    enableAutoShutdown: boolean;    // 是否自动停止服务（必填）
}

/**
 * 系统版本响应数据
 */
export interface SystemReleaseResponse extends BaseResponse {
    releaseVersion: number;         // 版本号
    module: ModuleType;             // 模块类型
    releaseDate: string;            // 发布时间
    changes: string;                // 变更内容
    notified: boolean;              // 是否已通知
    delayMinutes: number;           // 延迟执行分钟数
    estimatedDuration: number;      // 预计维护时长（分钟）
    enableAutoShutdown: boolean;    // 是否自动停止服务
}
