# VMK 360 Data Collector

## Описание

Сервис приёма, нормализации и ИИ-обогащения данных об объектах недвижимости.

- Принимает полусырые данные от парсеров через REST API
- Валидирует: AI определяет, является ли payload объявлением о недвижимости
- Нормализует: приводит неструктурированные данные к единому формату
- Обогащает: анализ изображений (vision) + текстовый анализ (NER, summary, оценка цены)
- Сохраняет в PostgreSQL с полной историей изменений (snapshots)

## Быстрый старт

```bash
# 1. Запуск PostgreSQL и Ollama (опционально)
docker compose up -d

# 2. Установка зависимостей
pip install -e ".[dev]"

# 3. Копирование .env
cp .env.example .env

# 4. Применение миграций
alembic upgrade head

# 5. Запуск приложения
uvicorn vmk_data_collector.main:app --reload --port 8000
```

## API

- `POST /api/v1/properties/ingest` — приём сырых данных от парсеров

## Архитектура

Сервис построен по слоистой архитектуре:
- **API Layer** — FastAPI, Pydantic валидация
- **Service Layer** — PropertyPipeline, AI-нормализация, обогащение
- **Repository Layer** — абстракция доступа к PostgreSQL
- **Domain Layer** — чистые сущности недвижимости
- **Infrastructure Layer** — Ollama client, image downloader, логирование

## Документация

- [Техническое задание](docs/SPECIFICATION.md) — полное описание модели данных, API, AI-слоя
- [Архитектура](docs/ARCHITECTURE.md) — диаграммы, потоки данных, компоненты
