本文档说明项目主要目录、文件及其承担的职责,便于答辩、维护与二次开发。
| 路径 | 类型 | 功能说明 |
|---|---|---|
backend/ |
后端工程 | Python + FastAPI 服务、数据库访问、业务 API |
frontend/ |
前端工程 | React + TypeScript 单页应用 |
docs/ |
文档 | 代码结构说明、论文插图等辅助材料 |
backend/)| 路径 | 功能说明 |
|---|---|
requirements.txt |
Python 依赖清单(FastAPI、SQLModel、Neo4j 驱动等) |
.env |
运行配置(数据库 URL、JWT、Neo4j、大模型 API 等,勿提交密钥) |
app/main.py |
应用入口:创建 FastAPI 实例、启动时初始化数据库、挂载各业务路由、健康检查 |
app/db.py |
数据库连接:SQLModel 引擎、建表、轻量迁移、会话 get_session |
app/deps.py |
依赖注入:解析 JWT、获取当前用户、角色权限校验 |
app/models.py |
ORM 实体:用户、习题、作答、错题、会话、推荐、模块登记等表结构 |
app/schemas.py |
API 模型:请求/响应的 Pydantic 结构(与前端 TypeScript 类型对应) |
app/core/ 核心配置与安全| 路径 | 功能说明 |
|---|---|
core/config.py |
从 .env 加载应用名、API 前缀、JWT、MySQL、Neo4j、TTS、DeepSeek 等配置 |
core/security.py |
密码哈希/校验、JWT 签发与解析 |
app/routers/ 业务接口(均挂载在 /api/v1)| 路径 | 功能说明 | 主要接口示例 |
|---|---|---|
routers/auth.py |
认证:用户注册、登录颁发 Token | POST /auth/register, POST /auth/token |
routers/users.py |
用户:当前登录用户信息 | GET /users/me |
routers/knowledge_graph.py |
知识图谱:目录/知识点查询与维护、习题批量导入、前置关系 | GET /catalog, GET/POST /knowledge/{code}, POST /exercises/import |
routers/assessment.py |
题库与测评:习题 CRUD、作答提交、规则+模型判题、权重与错题 | GET/POST /exercises, POST /exercises/{id}/attempts |
routers/recommendation.py |
个性化推荐:按知识点或错题优先组卷 | POST /recommendation/recommend |
routers/digital_human.py |
数字人:多轮问答、语音资源、大模型与 TTS | POST /digital-human/ask, 语音资源 CRUD |
routers/learning_analytics.py |
学情分析:个人/全班统计、知识点维度 breakdown、错题本 | GET /learning-analytics/me, /me/knowledge-breakdown |
routers/modules.py |
模块登记:子服务地址与启用状态(扩展集成) | GET/POST /modules |
app/integrations/ 外部集成| 路径 | 功能说明 |
|---|---|
integrations/neo4j.py |
Neo4j 客户端封装:约束、知识点 MERGE、目录查询、前置边维护 |
app/data/ 静态数据| 路径 | 功能说明 |
|---|---|
data/knowledge_catalog.py |
默认初中数学知识点目录(与 frontend/src/data/knowledgeCatalog.ts 一致) |
app/utils/ 公共工具| 路径 | 功能说明 |
|---|---|
utils/knowledge_codes.py |
知识点编码解析(多值分隔、族前缀) |
utils/exercise_knowledge.py |
习题与知识点匹配、组卷范围过滤 |
utils/exercise_constants.py |
习题常量(如解析占位「暂无」) |
utils/neo4j_exercise.py |
从 Neo4j 回填习题年级/类别/知识点名 |
storage/(运行时,可选)| 路径 | 功能说明 |
|---|---|
storage/voice_assets/ |
数字人语音资源文件 |
storage/tts/ |
本地 TTS 模型文件(可选) |
frontend/)| 路径 | 功能说明 |
|---|---|
package.json |
前端依赖与脚本(dev/build) |
vite.config.ts |
Vite 配置:开发端口 5173、/api 代理到后端 8010 |
index.html |
SPA 入口 HTML |
src/ 源码| 路径 | 功能说明 |
|---|---|
main.tsx |
React 挂载根节点,启用路由 |
styles.css |
全局样式(布局、按钮、卡片、表格等) |
lib/api.ts |
后端 API 封装:类型定义、fetch、各模块请求函数 |
lib/storage.ts |
本地存储 JWT Token |
data/knowledgeCatalog.ts |
前端默认知识点目录(Neo4j 不可用时的兜底) |
types/cytoscape-cose-bilkent.d.ts |
Cytoscape 布局插件的 TypeScript 声明 |
src/routes/ 页面路由| 路径 | 功能说明 |
|---|---|
routes/App.tsx |
路由表、登录鉴权包裹 RequireAuth |
routes/Layout.tsx |
主导航布局(顶栏、模块入口) |
routes/LoginPage.tsx |
登录 / 注册 |
routes/KnowledgePage.tsx |
知识图谱:目录、维护、Cytoscape 预览 |
routes/AssessmentPage.tsx |
习题测评:组卷、作答、教师建题与导入 |
routes/DigitalHumanPage.tsx |
数字人:对话、Live2D、语音 |
routes/AnalyticsPage.tsx |
学情入口,按角色跳转学生/教师页 |
routes/StudentAnalyticsPage.tsx |
学生学情:总览、多维度图表、错题本 |
routes/TeacherAnalyticsPage.tsx |
教师学情:全班统计、错题汇总 |
routes/ModulesPage.tsx |
模块服务登记管理 |
src/components/ 可复用组件| 路径 | 功能说明 |
|---|---|
components/BreakdownCharts.tsx |
学情 breakdown 的条形图/折线图/饼图(SVG) |
dist/(构建产物)| 路径 | 功能说明 |
|---|---|
dist/ |
npm run build 生成的静态文件,可部署到 Nginx 等 |
| 业务模块 | 后端路由文件 | 前端页面 |
|---|---|---|
| 认证与用户 | auth.py, users.py |
LoginPage.tsx |
| 知识图谱 | knowledge_graph.py + neo4j.py |
KnowledgePage.tsx |
| 题库与测评 | assessment.py |
AssessmentPage.tsx |
| 个性化推荐 | recommendation.py |
AssessmentPage.tsx(组卷按钮) |
| 数字人答疑 | digital_human.py |
DigitalHumanPage.tsx |
| 学情分析 | learning_analytics.py |
StudentAnalyticsPage.tsx, TeacherAnalyticsPage.tsx |
| 模块登记 | modules.py |
ModulesPage.tsx |
| 数据 | 存储位置 | 主要代码 |
|---|---|---|
| 用户、习题、作答、错题、会话等 | MySQL(或配置的 SQL 库) | models.py, db.py, 各 routers/*.py |
| 知识点与关系 | Neo4j | integrations/neo4j.py, knowledge_graph.py |
| 登录态 Token | 浏览器 localStorage | storage.ts, deps.py |