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