diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml new file mode 100644 index 0000000..bc018ad --- /dev/null +++ b/.gitea/workflows/ci.yaml @@ -0,0 +1,14 @@ +name: Tech + +on: [push] # 当有新的push事件发生时触发此工作流程 + +jobs: + explore-gitea-actions: + runs-on: Tech + steps: + - uses: actions/checkout@v4 # 使用actions/checkout来克隆您的仓库代码 + - run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner." + - run: echo "🖥️ The workflow is now ready to test your code on the runner." + - name: List files in the repository + run: | + ls ${{ gitea.workspace }} \ No newline at end of file diff --git a/TechHelper.Client/AI/AIConfiguration.cs b/TechHelper.Client/AI/AIConfiguration.cs index 760f312..7714e86 100644 --- a/TechHelper.Client/AI/AIConfiguration.cs +++ b/TechHelper.Client/AI/AIConfiguration.cs @@ -92,7 +92,7 @@ "含在 内部,包含一个或多个 (选项,必需) 包含在 内部,具有 V (必需) 属性。"; - public static string BreakQuestions = "请识别以下文本中的每一道大题。将其转换为XML格式,你只需要给出转换后的结果,不需要其他任何无关的输出,其中 是XML的根元素。用 标记来包裹每一道大题。请确保标记后的文本保持原始格式和内容。"; + public static string BreakQuestions = "请识别下面给出的试卷内容,分离并返回每一道大题,并将其转换为XML格式,你只需要给出转换后的结果,不需要其他任何无关的输出,其中 是XML的根元素。用 标记来包裹每一道大题。请确保标记后的文本保持原始格式和内容。"; public static string ParseSignelQuestion = "请将以下提供的一道大题内容,转换为符合以下 C# 类结构的 XML 格式,你只需要给出转换后的结果,不需要其他任何无关的输出:" + @@ -104,5 +104,70 @@ " 内部的 元素列表中的 元素。如果子题目有选项,则将它们包裹在 元素中。对于每个 元素,填充 V 属性:V:对应 Option.Value" + "(从选项内容中提取)。嵌套题组:如果大题内部包含其他大题,则作为 内部的 元素列表中的 元素(即嵌套 )。" + "请确保生成的 XML 严格遵循上述结构和命名约定,以方便 C# XmlSerializer 进行反序列化。"; + + + public static string ParseSignelQuestion2 = +@"请将给定的文本按下面的xml格式要求转换,在返回结果时,只返回XML转换内容,不要输出其他内容,如果给你的文本不能提取有效文本,请直接返回,下面是格式: + + XML生成规则 + + + 1. 根元素与题目组嵌套 + + 。""/> + 嵌套。""/> + 包裹单个题目,不应再嵌套。""/> + + + + + 2. 原文引用规范 + + 标签中。此标签仅在题目组(QG)级别使用。""/> + + 标题 + 引用正文 + + 题目 + 答案 + + +""/> + + + + + 3. 题目封装与答案存储 + + ......B""/> + ......""/> + ...答案1 答案2""/> + 中。""/> + + + + + + 4. 选项与答案值 + + 仅用于存储题目中出现的选项,其顺序严格按题目原有的顺序排列。""/> + 表示空选项值(如有需要,通常不会出现于实际选项中)。""/> + 标签用于存储题目的正确答案。单选题的应存储正确选项的字母(如'B')。""/> + + + + + 当不包含子题目时 + + 包裹每个题目,不再嵌套。""/> + + + +"; + + + + } } diff --git a/TechHelper.Client/Exam/Exam.cs b/TechHelper.Client/Exam/Exam.cs index 6e15a0d..015c4b1 100644 --- a/TechHelper.Client/Exam/Exam.cs +++ b/TechHelper.Client/Exam/Exam.cs @@ -35,17 +35,13 @@ namespace TechHelper.Client.Exam public string Id { get; set; } [JsonProperty("标题")] - [XmlAttribute("T")] // T for Title + [XmlElement("T")] // T for Title public string Title { get; set; } [JsonProperty("分值")] [XmlAttribute("S")] // S for Score public int Score { get; set; } - [JsonProperty("分值问题标记")] - [XmlAttribute("SPM")] // SPM for ScoreProblemMarker - public string ScoreProblemMarker { get; set; } = ""; // 初始化为空字符串,避免 null - [JsonProperty("题目引用")] [XmlElement("QR")] // QR for QuestionReference,作为 元素 public string QuestionReference { get; set; } = ""; // 初始化为空字符串 @@ -69,26 +65,20 @@ namespace TechHelper.Client.Exam public string SubId { get; set; } [JsonProperty("题干")] - [XmlAttribute("T")] // T for Text (Stem) + [XmlElement("T")] // T for Text (Stem) public string Stem { get; set; } [JsonProperty("分值")] [XmlAttribute("S")] // S for Score public int Score { get; set; } // 分值通常为整数 - [JsonProperty("分值问题标记")] - [XmlAttribute("SPM")] // SPM for ScoreProblemMarker - public string ScoreProblemMarker { get; set; } = ""; - - // 注意:这里的 Options 需要适配 XML 结构 - // 因此它不再是 List,而是 List