Files
Claude CodeandClaude 5e5020a38a feat: 大幅优化题目UI设计和图片关联算法
主要改进:
🎨 UI优化
- 实现学而思风格的题目卡片设计
- 优化数学公式和坐标点显示格式
- 添加专业的选项和答案展示
- 改进响应式设计和交互体验

🔧 技术优化
- 修复图片关联算法,避免重复分配
- 智能图片与题目匹配算法
- 添加admin用户便捷登录功能
- 优化题目文本格式化

📊 功能增强
- 可折叠的答案解析区域
- 动态分值提取和显示
- 专业的数学符号高亮
- 子题清晰分隔显示

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
2025-10-17 14:30:52 +08:00

207 lines
7.7 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
This is **学习助手 Pro** (Learning Assistant Pro), an intelligent exam paper management and learning tracking system built with FastAPI (backend) and Vue 3 (frontend). The system specializes in PDF exam paper processing, automatic question extraction using AI/OCR, mistake management, and personalized learning with spaced repetition algorithms.
### Core Features
- **PDF Processing**: High-speed PDF text extraction (0.01s/page) with 95%+ accuracy using hybrid text layer + OCR approach
- **Question Extraction**: AI-powered automatic question identification and extraction from exam papers
- **Mistake Management**: Ebbinghaus forgetting curve-based review system for mistake tracking
- **Word Learning**: SM-2 spaced repetition algorithm for English vocabulary learning
- **Analytics**: Comprehensive learning statistics and progress visualization
## Development Commands
### Quick Start
```bash
# Start both backend and frontend with provided script
./start.sh
# Check system status
./status.sh
# Stop all services
./stop.sh
```
### Backend Development (Python/FastAPI)
```bash
cd backend
# Install dependencies
pip install -r requirements.txt
# Start development server (port 8888)
python main.py
# OR
uvicorn main:app --host 0.0.0.0 --port 8888 --reload
# View API documentation
# Open http://localhost:8888/docs in browser
```
### Frontend Development (Vue 3/Vite)
```bash
cd frontend
# Install dependencies
npm install
# Start development server (auto-selects port, typically 3000-3002)
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
```
### Database Operations
```bash
cd backend
# Initialize database with default data
python main.py # Database auto-creates on first run
# Migrate database (if schema changes)
python migrate_db.py
```
## Architecture Overview
### Backend Architecture (FastAPI)
- **Main Application**: `backend/main.py` - Single-file FastAPI application with all API endpoints
- **Database**: SQLite with SQLAlchemy ORM (easily upgradeable to PostgreSQL)
- **Authentication**: JWT-based with bcrypt password hashing
- **File Processing**: Specialized PDF processing modules in `backend/pdf_splitter_*.py`
- **Upload Storage**: Local file storage in `backend/uploads/` directory
### Key Backend Components
#### PDF Processing Pipeline
The system uses a hybrid approach for PDF processing:
- **Primary**: Text layer extraction for maximum speed (0.01s/page)
- **Fallback**: OCR processing for scanned PDFs using EasyOCR
- **Main Module**: `backend/pdf_splitter_hybrid.py` - Intelligent PDF processor
#### Database Models
All models are defined in `backend/main.py`:
- **User Management**: `User`, `UserWordProgress`
- **Word Learning**: `Word`, spaced repetition with SM-2 algorithm
- **Paper Management**: `Paper` with metadata and file references
- **Question Extraction**: `Question`, `QuestionCollection` with auto-extraction support
- **Mistake Tracking**: `Mistake`, `ReviewLog` with Leitner box system
#### API Structure
- **Authentication**: `/api/auth/*` - JWT-based login/register
- **Word Management**: `/api/words/*` - CRUD and spaced repetition learning
- **Paper Management**: `/api/papers/*` - PDF upload and management
- **Question Processing**: `/api/questions/*`, `/api/papers/{id}/split` - AI extraction
- **Mistake Review**: `/api/mistakes/*` - Leitner-based review system
- **Analytics**: `/api/dashboard`, `/api/stats` - Learning statistics
### Frontend Architecture (Vue 3)
- **Framework**: Vue 3 with Composition API
- **UI Library**: Element Plus for consistent design
- **State Management**: Pinia stores for auth and word data
- **Routing**: Vue Router with authentication guards
- **Build Tool**: Vite for fast development and building
#### Key Frontend Components
- **Authentication**: `frontend/src/stores/auth.js` - JWT token management
- **Word Learning**: `frontend/src/stores/word.js` - Spaced repetition logic
- **Views**: Major application pages in `frontend/src/views/`
- `MainDashboard.vue` - Main learning hub
- `PaperViewer.vue` - PDF viewing and interaction
- `Learning.vue` - Word learning interface
- `MistakeReview.vue` - Review session interface
#### Routing Structure
- `/` - Main dashboard (requires auth)
- `/subjects/:subject` - Subject-specific paper listing
- `/papers/:id` - Paper detail view
- `/papers/:id/view` - PDF viewer with annotation support
- `/words` - Vocabulary learning interface
- `/review` - Mistake review sessions
## Development Guidelines
### Backend Development
- **Database Changes**: Add new models to `backend/main.py`, run `python migrate_db.py` if needed
- **New API Endpoints**: Add to `backend/main.py`, follow existing patterns
- **PDF Processing**: Extend `backend/pdf_splitter_hybrid.py` for new extraction features
- **Authentication**: Use `get_current_user()` dependency for protected routes
### Frontend Development
- **New Views**: Add to `frontend/src/views/` and register in `frontend/src/router/index.js`
- **State Management**: Add new stores in `frontend/src/stores/` following existing patterns
- **API Calls**: Use the existing API service pattern in stores
- **Authentication**: Route guards implemented in router, check `authStore.isAuthenticated`
### File Upload and Storage
- **Backend**: Files stored in `backend/uploads/{user_id}/`
- **PDF Processing**: Temporary files cleaned up automatically
- **Frontend**: File upload through drag-and-drop or click-to-upload interfaces
### Testing and Development
- **Backend Testing**: Use FastAPI's automatic docs at `/docs` for API testing
- **Frontend Testing**: Development server supports hot reload
- **PDF Processing**: Test files can be added to `backend/test_*.py` modules
## Performance Considerations
### PDF Processing
- The system achieves 2900x performance improvement through hybrid text/OCR approach
- Text layer extraction: 0.01s per page
- OCR fallback: Used only when text layer extraction fails
- Image extraction: Automatic correlation with question content
### Database Optimization
- SQLite for development/small deployments
- Easy migration path to PostgreSQL for production
- Indexes on frequently queried fields (user_id, subject, etc.)
### Frontend Performance
- Lazy loading of route components
- Efficient state management with Pinia
- Responsive design with mobile-first approach
## Deployment
### Development Environment
- Use `./start.sh` for easy development setup
- Backend runs on port 8888, frontend auto-selects port (3000-3002)
- Hot reload enabled for both frontend and backend
### Production Considerations
- Change `SECRET_KEY` in backend production
- Configure CORS origins for specific domains
- Set up proper file storage with backup
- Consider PostgreSQL for production database
- Configure HTTPS/reverse proxy with nginx
## Key Files to Understand
### Backend Core Files
- `backend/main.py` - Complete FastAPI application (1659 lines)
- `backend/pdf_splitter_hybrid.py` - PDF processing engine
- `backend/requirements.txt` - Python dependencies
- `backend/initial_words.csv` - Default English vocabulary data
### Frontend Core Files
- `frontend/src/App.vue` - Main application component with global styles
- `frontend/src/main.js` - Application bootstrap
- `frontend/src/router/index.js` - Route definitions and auth guards
- `frontend/src/stores/auth.js` - Authentication state management
- `frontend/src/views/MainDashboard.vue` - Primary user interface
### Utility Scripts
- `start.sh` - Development server startup script
- `status.sh` - System status checking script
- `stop.sh` - Service shutdown script
This system is designed for rapid development and deployment while maintaining high performance for PDF processing and excellent user experience for learning management.