CODE_STRUCTURE.md 6.7 KB

KnowMathBot(知数伴学)代码目录与功能对照

本文档说明项目主要目录、文件及其承担的职责,便于答辩、维护与二次开发。

一、项目顶层结构

路径 类型 功能说明
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