Ingestion (#31): приём событий по контракту docs/05
- POST /api/v1/events: Bearer-ключ -> source, анти-спуфинг (401/403/422),
  дедуп по dedup_key в окне (DEDUP_WINDOW_SECONDS, дефолт 24ч), 202 мгновенно
- POST /api/v1/events/batch: честная частичная валидация по индексам,
  202 при хоть одном принятом, dispatch строго после коммита
- GET /api/v1/events/{id}: статус + доставки, только своему источнику
- synapse.ingest: Routing Engine MVP — первое подошедшее правило по weight,
  internal_log исполняется сразу (Jinja-рендер), каналы — #29/#28
- app/cli.py: create-source/create-key/add-type/add-target/add-rule для dev

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent 9f8c4a7 commit 4709107c09b7ee2b26b85891231d10fa7cb7a0ff
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 23 hours ago
Showing 9 changed files
View
README.md
View
app/api/events_routes.py 0 → 100644
View
app/api/schemas.py 0 → 100644
View
app/auth/apikeys.py 0 → 100644
View
app/cli.py 0 → 100644
View
app/config.py
View
app/main.py
View
app/worker/tasks.py
View
requirements.txt