# 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 ```