/**
 * 应用状态响应 DTO
 *
 * 功能描述：
 * - 定义应用状态接口的响应格式
 * - 提供 Swagger 文档生成支持
 * - 标准化应用健康检查响应结构
 *
 * 职责分离：
 * - 数据传输对象：定义API响应的数据结构
 * - 文档生成：提供Swagger API文档支持
 *
 * 最近修改：
 * - 2026-01-08: 文件夹扁平化 - 从dto/子文件夹移动到上级目录 (修改者: moyin)
 * - 2026-01-07: 代码规范优化 - 更新注释规范、修正属性命名(storage_mode->storageMode)和作者信息
 *
 * @author moyin
 * @version 1.0.2
 * @since 2025-12-17
 * @lastModified 2026-01-08
 */

import { ApiProperty } from '@nestjs/swagger';

/**
 * 应用状态响应 DTO
 *
 * 职责：
 * - 定义应用状态查询接口的响应数据结构
 * - 提供完整的应用运行时信息
 *
 * 主要属性：
 * - service - 服务名称标识
 * - version - 当前服务版本
 * - status - 运行状态枚举
 * - timestamp - 响应时间戳
 * - uptime - 服务运行时长
 * - environment - 运行环境标识
 * - storageMode - 数据存储模式
 *
 * 使用场景：
 * - 健康检查接口响应
 * - 系统监控数据收集
 * - 运维状态查询
 */
export class AppStatusResponseDto {
  @ApiProperty({
    description: '服务名称',
    example: 'Pixel Game Server',
    type: String
  })
  service: string;

  @ApiProperty({
    description: '服务版本',
    example: '1.0.0',
    type: String
  })
  version: string;

  @ApiProperty({
    description: '运行状态',
    example: 'running',
    enum: ['running', 'starting', 'stopping', 'error'],
    type: String
  })
  status: string;

  @ApiProperty({
    description: '当前时间戳',
    example: '2025-12-17T15:00:00.000Z',
    type: String,
    format: 'date-time'
  })
  timestamp: string;

  @ApiProperty({
    description: '运行时间（秒）',
    example: 3600,
    type: Number,
    minimum: 0
  })
  uptime: number;

  @ApiProperty({
    description: '运行环境',
    example: 'development',
    enum: ['development', 'production', 'test'],
    type: String
  })
  environment: string;

  @ApiProperty({
    description: '存储模式',
    example: 'memory',
    enum: ['database', 'memory'],
    type: String
  })
  storageMode: 'database' | 'memory';
}