# ai-ti
**Repository Path**: blackfox/ai-ti
## Basic Information
- **Project Name**: ai-ti
- **Description**: 城建智能体大赛参赛项目
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-04-20
- **Last Updated**: 2026-04-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# AI TI - 高职高数解题辅导系统
一个前后端分离的高数辅导项目:前端提供学生解题、教师看板、错题本、学情预警 UI;后端对接腾讯智能体 API,提供普通与流式解题接口,以及错题与学情相关接口。
## 1. 项目架构
### 1.1 目录结构
```text
ai_ti/
├── frontend/ # Vue 3 + Vite 前端
│ ├── src/
│ │ ├── App.vue # 主页面(学生/教师/错题/预警)
│ │ ├── main.js # 前端入口
│ │ ├── style.css # Tailwind 入口样式
│ │ └── components/
│ │ └── MarkitdownRenderer.vue # Markdown 渲染组件
│ ├── vite.config.js # 本地开发端口与 /ai 代理配置
│ └── package.json
└── backend/
├── main.py # FastAPI 服务与业务接口
├── start.sh # 后端启动脚本(含健康检查)
├── .env.example # 环境变量示例
└── .env # 本地环境变量(请勿提交密钥)
```
### 1.2 运行架构
```mermaid
flowchart LR
A[Browser
http://127.0.0.1:3001] --> B[Vite Dev Server]
B -->|/ai proxy| C[FastAPI
http://127.0.0.1:8000]
C --> D[Tencent Agent API
BASE_URL + APP_KEY]
C --> E[In-memory data
study_record / error_questions]
```
### 1.3 核心交互链路(学生解题)
1. 前端调用 `POST /ai/solve/stream`(流式)。
2. 后端转发请求到腾讯智能体 API(SSE)。
3. 后端把增量文本转为标准 SSE 事件返回前端(`delta/done/error`)。
4. 前端逐段渲染答案,提升交互流畅度。
## 2. 技术栈
- 前端:`Vue 3`、`Vite`、`Tailwind CSS`、`markdown-it`
- 后端:`FastAPI`、`Uvicorn`、`requests`、`Pydantic`
- 接口协议:HTTP + SSE(流式返回)
## 3. 启动前准备
### 3.1 环境要求
- Node.js 18+(建议)
- pnpm(前端当前使用 `pnpm-lock.yaml`)
- Python 3.10+(建议)
### 3.2 配置后端环境变量
在 `backend` 目录创建 `.env`(可直接复制 `.env.example`):
```bash
cp backend/.env.example backend/.env
```
至少需要配置:
- `APP_KEY`:腾讯智能体应用密钥
- `BASE_URL`:腾讯智能体接口地址(默认示例已给出)
也支持别名变量(优先级更高):
- `TENCENT_BOT_APP_KEY`
- `TENCENT_BOT_BASE_URL`
## 4. 如何启动
建议开两个终端:一个跑后端,一个跑前端。
### 4.1 启动后端(端口 8000)
在项目根目录执行:
```bash
pip install fastapi uvicorn requests pydantic
bash backend/start.sh
```
启动后可访问:
- 健康检查:`http://127.0.0.1:8000/`
- Swagger:`http://127.0.0.1:8000/docs`
### 4.2 启动前端(端口 3001)
在项目根目录执行:
```bash
cd frontend
npm install
npm run dev
```
打开:
- `http://127.0.0.1:3001`
> 前端 `vite.config.js` 已配置代理:`/ai -> http://127.0.0.1:8000`,本地开发无需额外处理跨域。
## 5. 主要接口一览
- `POST /ai/solve`:非流式解题
- `POST /ai/solve/stream`:流式解题(推荐,前端当前使用)
- `POST /error/add`:新增错题
- `GET /error/list`:查询错题
- `POST /error/clear`:清空错题
- `GET /teacher/overall-data`:教师学情总览
- `GET /warning/analysis`:学情预警分析
- `GET /`:服务健康检查
## 6. 常见问题
### 6.1 前端提示请求失败 / 无流式内容
优先检查:
1. 后端是否启动成功(访问 `http://127.0.0.1:8000/`)。
2. `backend/.env` 是否配置了正确 `APP_KEY`。
3. `BASE_URL` 是否可用且与腾讯控制台配置一致。
### 6.2 端口冲突
- 前端默认端口:`3001`(见 `frontend/vite.config.js`)
- 后端默认端口:`8000`(见 `backend/start.sh`)
可通过修改对应配置或设置环境变量 `PORT`(后端)解决。
## 7. 开发建议
- 不要把真实密钥提交到仓库(`backend/.env` 应仅本地使用)。
- 当前错题与学情数据是内存存储,重启服务会丢失,生产化建议接数据库。
- 若要上线,建议把前后端启动改为 `docker-compose` 或统一进程管理(如 systemd / pm2)。