import {
  Controller,
  Get,
  Post,
  Put,
  Body,
  Param,
  Query,
  UseGuards,
  Request,
  ParseUUIDPipe,
} from '@nestjs/common';
import { KnowledgeService } from './knowledge.service';
import {
  CreateKnowledgeFixDto,
  ReviewKnowledgeFixDto,
  QueryKnowledgeFixDto,
} 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/knowledge-fixes')
export class KnowledgeController {
  constructor(private readonly knowledgeService: KnowledgeService) {}

  /**
   * 提交知识纠正
   */
  @Post()
  @Auditable()
  @Sensitive()

  @RequirePermissions('ai:knowledge:create')
  async create(@Body() dto: CreateKnowledgeFixDto, @Request() req: any) {
    return this.knowledgeService.createKnowledgeFix(dto, req.user.userId);
  }

  /**
   * 获取知识纠正列表
   */
  @Get()

  @RequirePermissions('ai:knowledge:create')
  async findAll(@Query() query: QueryKnowledgeFixDto, @Request() req: any) {
    const isReviewer =
      req.user.permissions?.includes('ai:knowledge:review') || false;
    return this.knowledgeService.findKnowledgeFixes(
      query,
      req.user.userId,
      isReviewer,
    );
  }

  /**
   * 获取知识纠正详情
   */
  @Get(':id')

  @RequirePermissions('ai:knowledge:create')
  async findOne(@Param('id', ParseUUIDPipe) id: string) {
    return this.knowledgeService.findKnowledgeFix(id);
  }

  /**
   * 审核知识纠正
   */
  @Put(':id/review')
  @Auditable()
  @Sensitive()

  @RequirePermissions('ai:knowledge:review')
  async review(
    @Param('id', ParseUUIDPipe) id: string,
    @Body() dto: ReviewKnowledgeFixDto,
    @Request() req: any,
  ) {
    return this.knowledgeService.reviewKnowledgeFix(id, dto, req.user.userId);
  }
}
