Add MkDocs documentation
Covers: overview, setup, API reference, configuration, testing, deployment, and known quirks.
This commit is contained in:
114
docs/testing.md
Normal file
114
docs/testing.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# Testing Locally
|
||||
|
||||
## Running the Server
|
||||
|
||||
```bash
|
||||
cd email-classifier
|
||||
uv sync
|
||||
uv run uvicorn app.main:app --host 0.0.0.0 --port 7999 --reload
|
||||
```
|
||||
|
||||
The server starts on port **7999** by default. Access the API docs at:
|
||||
- Swagger UI: `http://localhost:7999/docs`
|
||||
- ReDoc: `http://localhost:7999/redoc`
|
||||
|
||||
## Sending Test Requests
|
||||
|
||||
### With `curl`
|
||||
|
||||
**Simplified request:**
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:7999/classify \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"email_data": {
|
||||
"subject": "Printer issue in MB building",
|
||||
"body": "Hi, the printer on floor 2 is not working. Can someone take a look?"
|
||||
},
|
||||
"id": "test-001",
|
||||
"conversationId": "test-conv-001"
|
||||
}'
|
||||
```
|
||||
|
||||
**Full Outlook-shaped request:**
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:7999/classify \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"id": "AAMkAD...",
|
||||
"conversationId": "AAQkAD...",
|
||||
"subject": "VPN is down",
|
||||
"body": {
|
||||
"contentType": "html",
|
||||
"content": "<html><body>Users are reporting VPN connectivity issues.</body></html>"
|
||||
},
|
||||
"sender": {
|
||||
"emailAddress": {
|
||||
"name": "Jane Smith",
|
||||
"address": "jane.smith@grandportage.com"
|
||||
}
|
||||
},
|
||||
"from": {
|
||||
"emailAddress": {
|
||||
"name": "Jane Smith",
|
||||
"address": "jane.smith@grandportage.com"
|
||||
}
|
||||
},
|
||||
"toRecipients": [
|
||||
{
|
||||
"emailAddress": {
|
||||
"name": "IT Helpdesk",
|
||||
"address": "helpdesk@grandportage.com"
|
||||
}
|
||||
}
|
||||
],
|
||||
"ccRecipients": [],
|
||||
"receivedDateTime": "2026-04-09T10:00:00Z",
|
||||
"sentDateTime": "2026-04-09T09:55:00Z",
|
||||
"importance": "high"
|
||||
}'
|
||||
```
|
||||
|
||||
### With the Swagger UI
|
||||
|
||||
Open `http://localhost:7999/docs`, click **POST /classify**, click **Try it out**, paste your JSON payload, and click **Execute**.
|
||||
|
||||
## Running Tests
|
||||
|
||||
This project does not currently include a test suite. To add tests, use `pytest`:
|
||||
|
||||
```bash
|
||||
uv add --dev pytest pytest-asyncio httpx
|
||||
uv run pytest
|
||||
```
|
||||
|
||||
## Verifying Deduplication
|
||||
|
||||
The dedupe store is a SQLite database at `.data/email_classifier.db`. You can inspect it directly:
|
||||
|
||||
```bash
|
||||
sqlite3 .data/email_classifier.db ".schema classification_dedupe"
|
||||
sqlite3 .data/email_classifier.db "SELECT * FROM classification_dedupe LIMIT 10;"
|
||||
```
|
||||
|
||||
To reset deduplication state between tests:
|
||||
|
||||
```bash
|
||||
rm .data/email_classifier.db
|
||||
```
|
||||
|
||||
## Testing with Different LLM Providers
|
||||
|
||||
Start the server with a specific provider:
|
||||
|
||||
```bash
|
||||
LLM_PROVIDER=anthropic \
|
||||
LLM_BASE_URL=https://api.minimax.io/anthropic \
|
||||
LLM_API_KEY=your_key \
|
||||
LLM_MODEL=MiniMax-M2.7 \
|
||||
uv run uvicorn app.main:app --reload
|
||||
```
|
||||
|
||||
Or override per-request by including `provider`, `base_url`, `model`, and `api_key` in the request body.
|
||||
Reference in New Issue
Block a user