Files
TechHelper/TechHelper.Client/Exam/ExamService.cs
SpecialX e824c081bf change
2025-05-30 12:46:55 +08:00

172 lines
3.5 KiB
C#

using System.Xml.Serialization;
using TechHelper.Client.AI;
using TechHelper.Services;
using Entities.DTO;
namespace TechHelper.Client.Exam
{
public class ExamService : IExamService
{
private IAIService aIService;
public ExamService(IAIService aIService)
{
this.aIService = aIService;
}
public ApiResponse ConvertToXML<T>(string xmlContent)
{
string cleanedXml = xmlContent.Trim();
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (StringReader reader = new StringReader(cleanedXml))
{
try
{
T deserializedObject = (T)serializer.Deserialize(reader);
// 成功时返回 ApiResponse
return new ApiResponse
{
Status = true,
Result = deserializedObject,
Message = "XML 反序列化成功。"
};
}
catch (InvalidOperationException ex)
{
return new ApiResponse
{
Status = false,
Result = null,
Message = $"XML 反序列化操作错误: {ex.Message}. 内部异常: {ex.InnerException?.Message ?? ""}"
};
}
catch (Exception ex)
{
return new ApiResponse
{
Status = false,
Result = null,
Message = $"处理 XML 反序列化时发生未知错误: {ex.Message}"
};
}
}
}
public async Task<ApiResponse> DividExam(string examContent)
{
try
{
string respon = await aIService.CallGLM(examContent, AIConfiguration.BreakQuestions);
if (respon != null)
{
return new ApiResponse
{
Status = true,
Result = respon,
Message = "试题分割成功。"
};
}
else
{
return new ApiResponse
{
Status = false,
Result = null,
Message = "AI 服务未能返回有效内容,或返回内容为空。"
};
}
}
catch (Exception ex)
{
return new ApiResponse
{
Status = false,
Result = null,
Message = $"处理试题分割时发生内部错误: {ex.Message}"
};
}
}
public async Task<ApiResponse> FormatExam(string examContent)
{
try
{
string respon = await aIService.CallGLM(examContent, AIConfiguration.Format);
if (respon != null)
{
return new ApiResponse
{
Status = true,
Result = respon,
Message = "试题格式化成功。"
};
}
else
{
return new ApiResponse
{
Status = false,
Result = null,
Message = "AI 服务未能返回有效内容,或返回内容为空。"
};
}
}
catch (Exception ex)
{
return new ApiResponse
{
Status = false,
Result = null,
Message = $"处理试题格式化时发生内部错误: {ex.Message}"
};
}
}
public async Task<ApiResponse> ParseSingleQuestionGroup(string examContent)
{
try
{
string respon = await aIService.CallGLM(examContent, AIConfiguration.ParseSignelQuestion2);
if (respon != null)
{
return new ApiResponse
{
Status = true,
Result = respon,
Message = "试题解析成功。"
};
}
else
{
return new ApiResponse
{
Status = false,
Result = null,
Message = "AI 服务未能返回有效内容,或返回内容为空。"
};
}
}
catch (Exception ex)
{
return new ApiResponse
{
Status = false,
Result = null,
Message = $"处理试题解析时发生内部错误: {ex.Message}"
};
}
}
public Task<ApiResponse> SaveParsedExam(ExamDto examDto)
{
throw new NotImplementedException();
}
}
}