import {
  Controller,
  Get,
  Post,
  Put,
  Body,
  Param,
  UseGuards,
  Request,
  ParseUUIDPipe,
} from '@nestjs/common';
import { FeedbackService } from './feedback.service';
import { CreateFeedbackDto, UpdateFeedbackDto } from '../dto';
import { PermissionsGuard } from '@modules/organization/auth/guards/permissions.guard';
import { RequirePermissions } from '@common/decorators/permissions.decorator';
import { Auditable, Sensitive } from '@core/observability/audit/decorators/auditable.decorator';

@Controller('ai-assistant/messages')
export class FeedbackController {
  constructor(private readonly feedbackService: FeedbackService) {}

  /**
   * 提交消息反馈
   */
  @Post(':id/feedback')
  @Auditable()

  @RequirePermissions('ai:conversation:create')
  async createFeedback(
    @Param('id', ParseUUIDPipe) id: string,
    @Body() dto: CreateFeedbackDto,
    @Request() req: any,
  ) {
    return this.feedbackService.createFeedback(id, dto, req.user.userId);
  }

  /**
   * 更新消息反馈
   */
  @Put(':id/feedback')
  @Auditable()

  @RequirePermissions('ai:conversation:create')
  async updateFeedback(
    @Param('id', ParseUUIDPipe) id: string,
    @Body() dto: UpdateFeedbackDto,
    @Request() req: any,
  ) {
    return this.feedbackService.updateFeedback(id, dto, req.user.userId);
  }

  /**
   * 获取消息反馈
   */
  @Get(':id/feedback')

  @RequirePermissions('ai:conversation:read')
  async getFeedback(
    @Param('id', ParseUUIDPipe) id: string,
    @Request() req: any,
  ) {
    return this.feedbackService.getFeedback(id, req.user.userId);
  }
}
