import { Controller, Post, Get } from '@nestjs/common';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { Public } from '../common/decorators/public.decorator';
import { DailyHealthReportService } from './daily-health-report.service';

/**
 * 手动触发/预览每日健康报告(便于上线前验一次企微效果)。
 * 用 env PAC_HEALTH_REPORT_DEMO=1 门控(默认关);日常靠 09:00 cron 自动推。
 */
@ApiTags('internal')
@Controller('internal/health-report')
export class DailyHealthReportController {
  constructor(private readonly svc: DailyHealthReportService) {}

  /** 预览报告文本(不推送),env 门控。 */
  @Public()
  @Get('preview')
  @ApiOperation({ summary: '预览每日健康报告文本(不推企微)' })
  async preview(): Promise<unknown> {
    if (process.env.PAC_HEALTH_REPORT_DEMO !== '1') {
      return { ok: false, msg: '未启用(设 PAC_HEALTH_REPORT_DEMO=1 后重启)' };
    }
    const r = await this.svc.build();
    return { ok: true, level: r.level, title: r.title, body: r.body };
  }

  /** 立即生成并推送到企微,env 门控。 */
  @Public()
  @Post('run')
  @ApiOperation({ summary: '立即生成并推送每日健康报告到企微' })
  async run(): Promise<unknown> {
    if (process.env.PAC_HEALTH_REPORT_DEMO !== '1') {
      return { ok: false, msg: '未启用(设 PAC_HEALTH_REPORT_DEMO=1 后重启)' };
    }
    await this.svc.run();
    return { ok: true, msg: '已推送(看企微群)' };
  }
}
