import {
  Controller,
  Get,
  Post,
  Body,
  Query,
  HttpCode,
} from '@nestjs/common';
import { CalibrationService } from '../services/calibration.service';
import {
  QueryCalibrationOverviewDto,
  SaveCalibrationAdjustmentDto,
} from '../dto/calibration.dto';
import { CurrentUser } from '@common/decorators/current-user.decorator';
import { RequirePermissions } from '@common/decorators/permissions.decorator';
import { PERFORMANCE_PERMISSIONS } from '../constants/permissions';

/**
 * 绩效校准控制器
 * 路由前缀: /api/v1/performance/calibration
 */
@Controller('performance/calibration')
export class CalibrationController {
  constructor(private readonly calibrationService: CalibrationService) {}

  // ==================== 周期级校准看板 ====================

  @Get('overview')
  @RequirePermissions(PERFORMANCE_PERMISSIONS.CAL_VIEW)
  async getCalibrationOverview(@Query() query: QueryCalibrationOverviewDto) {
    return this.calibrationService.getCalibrationOverview(query.cycleId);
  }

  @Post('adjust')
  @RequirePermissions(PERFORMANCE_PERMISSIONS.CALIBRATION_ADJUST)
  @HttpCode(200)
  async saveCalibrationAdjustment(
    @Body() dto: SaveCalibrationAdjustmentDto,
    @CurrentUser('userId') adjustedBy: string,
  ) {
    return this.calibrationService.saveCalibrationAdjustment(dto, adjustedBy);
  }
}
