opencode/backend/README.md

123 lines
4.2 KiB
Markdown
Raw Permalink Normal View History

# Blueprint QC Backend
FastAPI backend для сбора, хранения и разметки замечаний QC по чертежам.
## Архитектура
```
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ React UI │────▶│ FastAPI │────▶│ SQLite │
│ (viewer) │◀────│ Backend │◀────│ Database │
└─────────────┘ └──────────────┘ └─────────────┘
┌──────────────┐
│ OCR + QC │
│ Pipeline │
└──────────────┘
```
## Установка
```bash
cd backend
pip install -r requirements.txt
```
## Запуск
```bash
python -m uvicorn app.main:app --reload --port 8000
```
API будет доступен на http://localhost:8000
Документация (Swagger): http://localhost:8000/docs
## API Endpoints
### Проекты
| Method | Endpoint | Описание |
|--------|----------|----------|
| POST | `/api/projects/upload` | Загрузка PDF, запуск обработки |
| GET | `/api/projects` | Список проектов |
| GET | `/api/projects/{id}` | Детали проекта |
### Замечания (Issues)
| Method | Endpoint | Описание |
|--------|----------|----------|
| GET | `/api/projects/{id}/issues` | Замечания проекта |
| GET | `/api/issues/{id}` | Одно замечание |
### Feedback (разметка)
| Method | Endpoint | Описание |
|--------|----------|----------|
| POST | `/api/feedback` | Отметить TP/FP |
| GET | `/api/feedback/stats` | Статистика |
### Обучение
| Method | Endpoint | Описание |
|--------|----------|----------|
| GET | `/api/training/data` | Данные для обучения |
| POST | `/api/training/export` | Скачать JSON |
| GET | `/api/stats` | Общая статистика |
### Viewer
| Method | Endpoint | Описание |
|--------|----------|----------|
| GET | `/viewer/{project_id}/{page}` | HTML viewer |
| GET | `/viewer_tiles/{project_id}/{path}` | DZI тайлы |
## Workflow
1. **Загрузка**: `POST /api/projects/upload` с PDF
2. **Обработка**: Backend запускает OCR → QC → DZI (фоново)
3. **Просмотр**: `GET /viewer/{id}/{page}` — viewer с overlay
4. **Разметка**: Пользователь кликает замечания → `POST /api/feedback` (is_true_positive: true/false)
5. **Обучение**: `GET /api/training/data` — экспорт размеченных данных
## Feedback Schema
```json
{
"issue_id": 123,
"is_true_positive": true, // true = реальная проблема, false = ложное срабатывание
"comment": "Размер действительно плохо читается",
"action_taken": "fixed" // fixed / ignored / not_sure
}
```
## Training Data
Каждый размеченный пример содержит:
- `bbox`: координаты на PNG
- `issue_type`: тип проблемы
- `is_true_positive`: метка от пользователя
- `image_path`: путь к PNG страницы
- `dimension_text`: текст размера (если есть)
- `confidence`: OCR confidence
Накопив 100-200 размеченных примеров, можно:
1. Fine-tune VLM (few-shot prompting)
2. Обучить YOLO-детектор под ваши типы чертежей
3. Дообучить правила QC (эвристики)
## Модели БД
### Project
- id, name, pdf_filename, status, created_at, output_folder
### Page
- id, project_id, page_number, png_path, ocr_data, vlm_description
### Issue
- id, project_id, page_id, issue_type, severity, message, bbox, dimension_text, confidence
### Feedback
- id, issue_id, is_true_positive, comment, action_taken, created_at