feat: 初始化考培练系统项目

- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
111
2026-01-24 19:33:28 +08:00
commit 998211c483
1197 changed files with 228429 additions and 0 deletions

View File

@@ -0,0 +1,148 @@
"""
知识点分析提示词模板
功能:从课程资料中提取知识点
"""
# ==================== 元数据 ====================
PROMPT_META = {
"name": "knowledge_analysis",
"display_name": "知识点分析",
"description": "从课程资料中提取和分析知识点支持PDF/Word/文本等格式",
"module": "kaopeilian",
"variables": ["course_name", "content"],
"version": "2.0.0",
"author": "kaopeilian-team",
}
# ==================== 系统提示词 ====================
SYSTEM_PROMPT = """# 角色
你是一个文件拆解高手,擅长将用户提交的内容进行精准拆分,拆分后的内容做个简单的优化处理使其更具可读性,但要尽量使用原文的原词原句。
## 技能
### 技能 1: 内容拆分
1. 当用户提交内容后,拆分为多段。
2. 对拆分后的内容做简单优化,使其更具可读性,比如去掉奇怪符号(如换行符、乱码),若语句不通顺,或格式原因导致错位,则重新表达。用户可能会提交录音转文字的内容,因此可能是有错字的,注意修复这些小瑕疵。
3. 优化过程中,尽量使用原文的原词原句,特别是话术类,必须保持原有的句式、保持原词原句,而不是重构。
4. 注意是拆分而不是重写,不需要润色,尽量不做任何处理。
5. 输出到 content。
### 技能 2: 为每一个选段概括一个标题
1. 为每个拆分出来的选段概括一个标题,并输出到 title。
### 技能 3: 为每一个选段说明与主题的关联
1. 详细说明这一段与全文核心主题的关联,并输出到 topic_relation。
### 技能 4: 为每一个选段打上一个类型标签
1. 用户提交的内容很有可能是一个课程、一篇讲义、一个产品的说明书,通常是用户希望他公司的员工或高管学习的知识。
2. 用户通常是医疗美容机构或轻医美、生活美容连锁品牌。
3. 你要为每个选段打上一个知识类型的标签,最好是这几个类型中的一个:"理论知识", "诊断设计", "操作步骤", "沟通话术", "案例分析", "注意事项", "技巧方法", "客诉处理"。当然你也可以为这个选段匹配一个更适合的。
## 输出要求(严格按要求输出)
请直接输出一个纯净的 JSON 数组Array不要包含 Markdown 标记(如 ```json也不要包含任何解释性文字。格式如下
[
{
"title": "知识点标题",
"content": "知识点内容",
"topic_relation": "知识点与主题的关系",
"type": "知识点类型"
},
{
"title": "第二个知识点标题",
"content": "第二个知识点内容...",
"topic_relation": "...",
"type": "..."
}
]
## 限制
- 仅围绕用户提交的内容进行拆分和关联标注,不涉及其他无关内容。
- 拆分后的内容必须最大程度保持与原文一致。
- 关联说明需清晰合理。
- 不论如何,不要拆分超过 20 段!"""
# ==================== 用户提示词模板 ====================
USER_PROMPT = """课程主题:{course_name}
## 用户提交的内容:
{content}
## 注意
- 以json的格式输出
- 不论如何不要拆分超过20 段!"""
# ==================== JSON Schema ====================
KNOWLEDGE_POINT_SCHEMA = {
"type": "array",
"items": {
"type": "object",
"required": ["title", "content", "type"],
"properties": {
"title": {
"type": "string",
"description": "知识点标题",
"maxLength": 200
},
"content": {
"type": "string",
"description": "知识点内容"
},
"topic_relation": {
"type": "string",
"description": "与主题的关系描述"
},
"type": {
"type": "string",
"description": "知识点类型",
"enum": [
"理论知识",
"诊断设计",
"操作步骤",
"沟通话术",
"案例分析",
"注意事项",
"技巧方法",
"客诉处理",
"其他"
]
}
}
},
"minItems": 1,
"maxItems": 20
}
# ==================== 知识点类型常量 ====================
KNOWLEDGE_POINT_TYPES = [
"理论知识",
"诊断设计",
"操作步骤",
"沟通话术",
"案例分析",
"注意事项",
"技巧方法",
"客诉处理",
]
DEFAULT_KNOWLEDGE_TYPE = "理论知识"