|
feat: core pipeline + FastAPI API (Phases 0-6)
Implemented the full VMK Data Collector foundation and processing pipeline: - Config, logging, exception hierarchy - DB models (listings, raw data, images, snapshots, enrichments, custom fields) - Alembic async migrations - Repositories with upsert/snapshot support - Domain entities and Pydantic schemas - Ollama AI client with mock mode - AI normalizer, image analyzer, enricher - Image downloader with SHA-256 dedup - PropertyPipeline: raw -> AI validate -> upsert/snapshot -> images -> enrich - FastAPI app with /api/v1/ingest endpoint Co-Authored-By: Claude <noreply@anthropic.com> |
|---|
|
|
| .env.example 0 → 100644 |
|---|
| .gitignore 0 → 100644 |
|---|
| README.md |
|---|
| alembic.ini 0 → 100644 |
|---|
| alembic/README 0 → 100644 |
|---|
| alembic/env.py 0 → 100644 |
|---|
| alembic/script.py.mako 0 → 100644 |
|---|
| alembic/versions/33cad32b9bbd_initial.py 0 → 100644 |
|---|
| docker-compose.yml 0 → 100644 |
|---|
| docs/ARCHITECTURE.md 0 → 100644 |
|---|
| docs/IMPLEMENTATION_PLAN.md 0 → 100644 |
|---|
| docs/SPECIFICATION.md 0 → 100644 |
|---|
| pyproject.toml 0 → 100644 |
|---|
| src/vmk_data_collector/__init__.py 0 → 100644 |
|---|
| src/vmk_data_collector/api/__init__.py 0 → 100644 |
|---|
| src/vmk_data_collector/api/deps.py 0 → 100644 |
|---|
| src/vmk_data_collector/api/v1/__init__.py 0 → 100644 |
|---|
| src/vmk_data_collector/api/v1/router_properties.py 0 → 100644 |
|---|
| src/vmk_data_collector/core/__init__.py 0 → 100644 |
|---|
| src/vmk_data_collector/core/config.py 0 → 100644 |
|---|
| src/vmk_data_collector/core/exceptions.py 0 → 100644 |
|---|
| src/vmk_data_collector/core/logging.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/__init__.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/base.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/engine.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/repositories/__init__.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/repositories/ai_enrichment.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/repositories/base.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/repositories/custom_field.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/repositories/data_source.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/repositories/image.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/repositories/property.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/repositories/property_type.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/repositories/raw_data.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/repositories/snapshot.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/seed.py 0 → 100644 |
|---|
| src/vmk_data_collector/db/session.py 0 → 100644 |
|---|
| src/vmk_data_collector/domain/__init__.py 0 → 100644 |
|---|
| src/vmk_data_collector/domain/entities.py 0 → 100644 |
|---|
| src/vmk_data_collector/domain/enums.py 0 → 100644 |
|---|
| src/vmk_data_collector/main.py 0 → 100644 |
|---|
| src/vmk_data_collector/models/__init__.py 0 → 100644 |
|---|
| src/vmk_data_collector/models/ai_enrichment.py 0 → 100644 |
|---|
| src/vmk_data_collector/models/data_source.py 0 → 100644 |
|---|
| src/vmk_data_collector/models/property_custom_field.py 0 → 100644 |
|---|
| src/vmk_data_collector/models/property_image.py 0 → 100644 |
|---|
| src/vmk_data_collector/models/property_listing.py 0 → 100644 |
|---|
| src/vmk_data_collector/models/property_snapshot.py 0 → 100644 |
|---|
| src/vmk_data_collector/models/property_type.py 0 → 100644 |
|---|
| src/vmk_data_collector/models/raw_parsing_data.py 0 → 100644 |
|---|
| src/vmk_data_collector/schemas/__init__.py 0 → 100644 |
|---|
| src/vmk_data_collector/schemas/ai_response.py 0 → 100644 |
|---|
| src/vmk_data_collector/schemas/normalized.py 0 → 100644 |
|---|
| src/vmk_data_collector/schemas/raw_data.py 0 → 100644 |
|---|
| src/vmk_data_collector/services/__init__.py 0 → 100644 |
|---|
| src/vmk_data_collector/services/ai_enricher.py 0 → 100644 |
|---|
| src/vmk_data_collector/services/ai_image_analyzer.py 0 → 100644 |
|---|
| src/vmk_data_collector/services/ai_normalizer.py 0 → 100644 |
|---|
| src/vmk_data_collector/services/image_downloader.py 0 → 100644 |
|---|
| src/vmk_data_collector/services/ollama_client.py 0 → 100644 |
|---|
| src/vmk_data_collector/services/property_pipeline.py 0 → 100644 |
|---|