feat: 新增AI自动批改功能,完善任务评分体系

1.  添加AI评分配置节点到appsettings.json
2.  新增NeedAiProcess字段控制是否使用AI批改
3.  扩展答题记录实体,新增理解力、判断力、表达力、说服力评分字段
4.  实现期刊任务AI自动批改消费者逻辑,支持重试机制和图片处理
5.  优化实体类注释和代码结构
6.  新增Dockerfile用于容器化部署
This commit is contained in:
glz
2026-06-30 16:16:12 +08:00
parent 6985a4af42
commit 6ec47220c2
9 changed files with 880 additions and 54 deletions

View File

@ -2,9 +2,9 @@ using SqlSugar;
namespace QYZH.InteractiveMagazine.Models.Entity
{
///<summary>
///杂志任务用户作答记录;
///</summary>
/// <summary>
/// 杂志任务用户作答记录
/// </summary>
[SugarTable("JournalPageTaskUserAnswer")]
public class JournalPageTaskUserAnswer : SqlSugarBaseEntity
{
@ -12,204 +12,231 @@ namespace QYZH.InteractiveMagazine.Models.Entity
/// Desc:书id
/// Default:
/// Nullable:False
/// </summary>
/// </summary>
public long JournalId { get; set; }
/// <summary>
/// Desc:书页id
/// Default:
/// Nullable:False
/// </summary>
/// </summary>
public long JournalPageId { get; set; }
/// <summary>
/// Desc:任务id
/// Default:
/// Nullable:False
/// </summary>
/// </summary>
public long JournalPageTaskId { get; set; }
/// <summary>
/// Desc:任务分组id
/// Default:
/// Nullable:False
/// </summary>
/// </summary>
public long JournalPageTaskGroupId { get; set; }
/// <summary>
/// Desc:用户id
/// Default:
/// Nullable:False
/// </summary>
/// </summary>
public long UserId { get; set; }
/// <summary>
/// Desc:作答结果
/// Default:
/// Nullable:True
/// </summary>
/// </summary>
public string Result { get; set; }
/// <summary>
/// Desc:积分
/// Default:0
/// Nullable:False
/// </summary>
public float Points { get; set; }
/// </summary>
public int Points { get; set; }
/// <summary>
/// Desc:成长值
/// Default:0
/// Nullable:False
/// </summary>
/// </summary>
public float GrowthPoints { get; set; }
/// <summary>
/// Desc:题目得分
/// Default:0
/// Nullable:False
/// </summary>
/// </summary>
public float Score { get; set; }
/// <summary>
/// Desc:理解力评分
/// Default:0
/// Nullable:False
/// </summary>
public float Comprehension { get; set; }
/// <summary>
/// Desc:判断力评分
/// Default:0
/// Nullable:False
/// </summary>
public float Judgment { get; set; }
/// <summary>
/// Desc:表达力评分
/// Default:0
/// Nullable:False
/// </summary>
public float Expression { get; set; }
/// <summary>
/// Desc:说服力评分
/// Default:0
/// Nullable:False
/// </summary>
public float Persuasiveness { get; set; }
/// <summary>
/// Desc:题目作答图片地址
/// Default:
/// Nullable:True
/// </summary>
/// </summary>
public string QuestionAnswerUrl { get; set; }
/// <summary>
/// Desc:答案图片地址
/// Default:
/// Nullable:True
/// </summary>
/// </summary>
public string AnswerUrl { get; set; }
/// <summary>
/// Desc:页面作答图片地址
/// Default:
/// Nullable:True
/// </summary>
/// </summary>
public string PageAnswerUrl { get; set; }
/// <summary>
/// Desc:乐观锁
/// Default:
/// Nullable:False
/// </summary>
/// </summary>
public int Revision { get; set; }
/// <summary>
/// Desc:作答状态
/// Default:
/// Nullable:False
/// </summary>
/// </summary>
public int AnswerStatus { get; set; }
/// <summary>
/// Desc:作答开始时间
/// Default:
/// Nullable:True
/// </summary>
/// </summary>
public DateTime AnswerStartTime { get; set; }
/// <summary>
/// Desc:作答结束时间
/// Default:
/// Nullable:True
/// </summary>
/// </summary>
public DateTime AnswerEndTime { get; set; }
/// <summary>
/// Desc:作答耗时(秒)
/// Default:0
/// Nullable:False
/// </summary>
/// </summary>
public int AnswerSeconds { get; set; }
/// <summary>
/// Desc:图像识别结果
/// Default:
/// Nullable:False
/// </summary>
/// </summary>
public int ImageRecognition { get; set; }
/// <summary>
/// Desc:书页序号
/// Default:
/// Nullable:False
/// </summary>
/// </summary>
public int JournalPageNum { get; set; }
/// <summary>
/// Desc:修改次数
/// Default:
/// Nullable:False
/// </summary>
/// </summary>
public int Modify { get; set; }
/// <summary>
/// Desc:最后标签id
/// Default:
/// Nullable:False
/// </summary>
/// </summary>
public long LastTag { get; set; }
/// <summary>
/// Desc:点读书页序号
/// Default:
/// Nullable:False
/// </summary>
/// </summary>
public int DotPageNum { get; set; }
/// <summary>
/// Desc:页面结果图片地址
/// Default:
/// Nullable:True
/// </summary>
/// </summary>
public string PageResultUrl { get; set; }
/// <summary>
/// Desc:题型
/// Default:
/// Nullable:True
/// </summary>
/// </summary>
public string Type { get; set; }
/// <summary>
/// Desc:点读书页编号
/// Default:
/// Nullable:True
/// </summary>
/// </summary>
public string DotPageNo { get; set; }
/// <summary>
/// Desc:页面作答点读图片地址
/// Default:
/// Nullable:True
/// </summary>
/// </summary>
public string PageAnswerDotUrl { get; set; }
/// <summary>
/// Desc:中断次数
/// Default:0
/// Nullable:False
/// </summary>
/// </summary>
public int BreakCount { get; set; }
/// <summary>
/// Desc:中断时间记录
/// Default:
/// Nullable:True
/// </summary>
/// </summary>
public string BreakTimes { get; set; }
/// <summary>
/// Desc:作业状态
/// Default:
/// Nullable:True
/// </summary>
/// </summary>
public string AssignmentStatus { get; set; }
}
}