using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using FutureMailAPI.Services; using FutureMailAPI.DTOs; using System.Security.Claims; namespace FutureMailAPI.Controllers { [ApiController] [Route("api/v1/ai")] public class AIController : BaseController { private readonly IAIAssistantService _aiAssistantService; private readonly ILogger _logger; public AIController(IAIAssistantService aiAssistantService, ILogger logger) { _aiAssistantService = aiAssistantService; _logger = logger; } /// /// AI写作辅助 /// /// 写作辅助请求 /// AI生成的内容和建议 [HttpPost("writing-assistant")] public async Task WritingAssistant([FromBody] WritingAssistantRequestDto request) { if (!ModelState.IsValid) { return BadRequest(ApiResponse.ErrorResult("输入数据无效")); } try { var result = await _aiAssistantService.GetWritingAssistanceAsync(request); if (!result.Success) { return BadRequest(result); } return Ok(result); } catch (Exception ex) { _logger.LogError(ex, "获取写作辅助时发生错误"); return StatusCode(500, ApiResponse.ErrorResult("服务器内部错误")); } } /// /// 情感分析 /// /// 情感分析请求 /// 情感分析结果 [HttpPost("sentiment-analysis")] public async Task SentimentAnalysis([FromBody] SentimentAnalysisRequestDto request) { if (!ModelState.IsValid) { return BadRequest(ApiResponse.ErrorResult("输入数据无效")); } try { var result = await _aiAssistantService.AnalyzeSentimentAsync(request); if (!result.Success) { return BadRequest(result); } return Ok(result); } catch (Exception ex) { _logger.LogError(ex, "进行情感分析时发生错误"); return StatusCode(500, ApiResponse.ErrorResult("服务器内部错误")); } } /// /// 未来预测 /// /// 未来预测请求 /// 未来预测结果 [HttpPost("future-prediction")] public async Task FuturePrediction([FromBody] FuturePredictionRequestDto request) { if (!ModelState.IsValid) { return BadRequest(ApiResponse.ErrorResult("输入数据无效")); } try { var result = await _aiAssistantService.PredictFutureAsync(request); if (!result.Success) { return BadRequest(result); } return Ok(result); } catch (Exception ex) { _logger.LogError(ex, "进行未来预测时发生错误"); return StatusCode(500, ApiResponse.ErrorResult("服务器内部错误")); } } } }