- FastAPI backend with JWT auth - PostgreSQL database schema - Trees and Sessions CRUD APIs - Export functionality (Markdown, Text, HTML) - Docker setup for local development - Alembic migrations
126 lines
2.8 KiB
Markdown
126 lines
2.8 KiB
Markdown
# Troubleshooting Decision Tree - Backend API
|
|
|
|
FastAPI backend for the Troubleshooting Decision Tree application.
|
|
|
|
## Quick Start
|
|
|
|
### 1. Set up Python environment
|
|
|
|
```bash
|
|
cd backend
|
|
python -m venv venv
|
|
|
|
# Windows
|
|
venv\Scripts\activate
|
|
|
|
# macOS/Linux
|
|
source venv/bin/activate
|
|
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### 2. Start PostgreSQL database
|
|
|
|
Using Docker:
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
Or install PostgreSQL locally and create a database:
|
|
```sql
|
|
CREATE DATABASE decision_tree;
|
|
```
|
|
|
|
### 3. Configure environment
|
|
|
|
Copy the example env file and update as needed:
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
### 4. Run database migrations
|
|
|
|
```bash
|
|
alembic upgrade head
|
|
```
|
|
|
|
### 5. Start the server
|
|
|
|
```bash
|
|
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
|
|
```
|
|
|
|
The API will be available at:
|
|
- API: http://localhost:8000
|
|
- Docs: http://localhost:8000/api/docs
|
|
- ReDoc: http://localhost:8000/api/redoc
|
|
|
|
## API Endpoints
|
|
|
|
### Authentication
|
|
- `POST /api/v1/auth/register` - Register new user
|
|
- `POST /api/v1/auth/login` - Login (form data)
|
|
- `POST /api/v1/auth/login/json` - Login (JSON body)
|
|
- `POST /api/v1/auth/refresh` - Refresh token
|
|
- `GET /api/v1/auth/me` - Get current user
|
|
- `POST /api/v1/auth/logout` - Logout
|
|
|
|
### Trees
|
|
- `GET /api/v1/trees` - List all trees
|
|
- `GET /api/v1/trees/categories` - List categories
|
|
- `GET /api/v1/trees/search?q=query` - Search trees
|
|
- `GET /api/v1/trees/{id}` - Get specific tree
|
|
- `POST /api/v1/trees` - Create tree (engineer/admin)
|
|
- `PUT /api/v1/trees/{id}` - Update tree (engineer/admin)
|
|
- `DELETE /api/v1/trees/{id}` - Delete tree (admin)
|
|
|
|
### Sessions
|
|
- `GET /api/v1/sessions` - List user's sessions
|
|
- `GET /api/v1/sessions/{id}` - Get specific session
|
|
- `POST /api/v1/sessions` - Start new session
|
|
- `PUT /api/v1/sessions/{id}` - Update session
|
|
- `POST /api/v1/sessions/{id}/complete` - Complete session
|
|
- `POST /api/v1/sessions/{id}/export` - Export session
|
|
|
|
## Development
|
|
|
|
### Create new migration
|
|
```bash
|
|
alembic revision --autogenerate -m "description"
|
|
```
|
|
|
|
### Run migrations
|
|
```bash
|
|
alembic upgrade head
|
|
```
|
|
|
|
### Rollback migration
|
|
```bash
|
|
alembic downgrade -1
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
backend/
|
|
├── alembic/ # Database migrations
|
|
│ └── versions/
|
|
├── app/
|
|
│ ├── api/
|
|
│ │ ├── endpoints/ # API route handlers
|
|
│ │ ├── deps.py # Dependencies (auth, etc.)
|
|
│ │ └── router.py # Main router
|
|
│ ├── core/
|
|
│ │ ├── config.py # Settings
|
|
│ │ ├── database.py # DB connection
|
|
│ │ └── security.py # JWT, password hashing
|
|
│ ├── models/ # SQLAlchemy models
|
|
│ ├── schemas/ # Pydantic schemas
|
|
│ └── main.py # FastAPI app
|
|
├── tests/
|
|
├── alembic.ini
|
|
├── docker-compose.yml
|
|
├── requirements.txt
|
|
└── README.md
|
|
```
|