012 remove signoz
This commit is contained in:
+4
-3
@@ -1,7 +1,7 @@
|
||||
# Spec Tasks Index
|
||||
|
||||
> ⚠️ This file is generated. Do not edit manually.
|
||||
> Generated at (UTC): `2026-03-08T19:06:27+00:00`
|
||||
> Generated at (UTC): `2026-03-08T19:58:23+00:00`
|
||||
|
||||
## Tasks
|
||||
|
||||
@@ -19,9 +19,10 @@
|
||||
| 009 | DONE | 2026-03-07 | Add local infrastructure stack | `spec/tasks/009_add_local_infra_stack.md` |
|
||||
| 010 | DONE | 2026-03-08 | Migrate to YAML-only configuration loading | `spec/tasks/010_migrate_to_yaml_only_configuration.md` |
|
||||
| 011 | DONE | 2026-03-08 | Migrate Redis repository client to aioredis | `spec/tasks/011_migrate_redis_repository_to_aioredis.md` |
|
||||
| 012 | DONE | 2026-03-08 | Remove observability and SigNoz stack for phase 1 | `spec/tasks/012_remove_observability_and_signoz_for_phase1.md` |
|
||||
|
||||
## Summary
|
||||
|
||||
- Total: **12**
|
||||
- Total: **13**
|
||||
- TODO: **0**
|
||||
- DONE: **12**
|
||||
- DONE: **13**
|
||||
|
||||
+1
-26
@@ -20,8 +20,6 @@
|
||||
- Возвращать унифицированный список тарифов, отсортированных по цене
|
||||
- Если провайдер вернул ошибку или не ответил вовремя — исключить его из результата, не падая целиком
|
||||
- Кешировать ответы провайдеров для исключения повторных внешних запросов. Время кэширования вынести в конфиг
|
||||
- Обеспечивать структурированную наблюдаемость: трейсы, метрики, логи — связанные по request ID
|
||||
- Отправлять алерты в Telegram при аномалиях (ошибки, всплески задержки, недоступность провайдера). token вынести в конфиг
|
||||
|
||||
---
|
||||
|
||||
@@ -113,27 +111,6 @@ delivery_days_max: int
|
||||
| Кеш | Redis |
|
||||
| Конфигурация | pydantic-settings |
|
||||
| Сервер | Uvicorn |
|
||||
| Инструментация | OpenTelemetry SDK |
|
||||
| Бэкенд наблюдаемости | SigNoz (self-hosted) |
|
||||
| Структурные логи | structlog |
|
||||
| Алерты | SigNoz Alert Rules → Webhook → Telegram Bot API |
|
||||
|
||||
---
|
||||
|
||||
## Наблюдаемость
|
||||
|
||||
- Каждому запросу присваивается `request_id` (UUID) через middleware
|
||||
- `request_id` привязывается ко всем логам через `structlog.contextvars`
|
||||
- Трейсы отправляются через OpenTelemetry; FastAPI и httpx инструментируются автоматически
|
||||
- Ручные спаны оборачивают: `AggregatorService.get_all_prices`, `get_price` каждого провайдера, обращения к кешу
|
||||
- Атрибуты спанов: `provider`, `from_city`, `to_city`, `weight_kg`, `cache_hit`, `tariffs_found`
|
||||
- Отслеживаемые метрики: количество запросов, количество ошибок, время ответа (p50/p99), доступность каждого провайдера
|
||||
- Все три сигнала (трейсы, метрики, логи) связаны через `trace_id`
|
||||
|
||||
### Условия алертов (Telegram)
|
||||
- Провайдер вернул 5xx — порог: 5 ошибок за 5 минут
|
||||
- p99 времени ответа провайдера > 5000ms в течение 10 минут
|
||||
- Провайдер недоступен более 5 минут
|
||||
|
||||
---
|
||||
|
||||
@@ -143,7 +120,6 @@ delivery_days_max: int
|
||||
app/
|
||||
├── controllers/
|
||||
│ ├── http_client.py
|
||||
│ ├── middleware.py
|
||||
│ └── v1/
|
||||
│ └── delivery.py # Controller
|
||||
├── services/
|
||||
@@ -174,5 +150,4 @@ app/
|
||||
# docker-compose сервисы
|
||||
app # FastAPI-приложение
|
||||
redis # Кеш тарифов
|
||||
signoz # Бэкенд наблюдаемости (трейсы + метрики + логи + алерты)
|
||||
```
|
||||
```
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
id: 012
|
||||
title: Remove observability and SigNoz stack for phase 1
|
||||
status: DONE
|
||||
created: 2026-03-08
|
||||
---
|
||||
|
||||
## Context
|
||||
На первом этапе принято решение отказаться от логирования, мониторинга, алертинга и инфраструктуры SigNoz. Текущая кодовая база и тесты содержат эти зависимости и сценарии.
|
||||
|
||||
## Goal
|
||||
Удалить из проекта все runtime- и test-артефакты, связанные с логами, мониторингом, алертами, Telegram alerting и SigNoz, сохранив рабочий API расчета доставки и кеширование.
|
||||
|
||||
## Constraints
|
||||
- Соблюдать layered architecture из `AGENTS.md`; не переносить бизнес-правила между слоями.
|
||||
- Scope задачи ограничен удалением observability/alerting/SigNoz и зависимых конфигураций, инфраструктурных и тестовых артефактов.
|
||||
- Не изменять бизнес-логику расчета тарифов, provider integration и API-контракт `POST /api/v1/delivery/price`.
|
||||
- Не добавлять новую систему мониторинга или алертинга в рамках этой задачи.
|
||||
- Не изменять файлы в `spec/`.
|
||||
|
||||
## Acceptance criteria
|
||||
- Из runtime-приложения удалены middleware, instrumentation и иные механизмы, реализующие request/log correlation, tracing, metrics и alerting.
|
||||
- В коде и конфигурации приложения отсутствуют секции и параметры `observability` и `alerts`, связанные с OpenTelemetry, structlog, SigNoz и Telegram.
|
||||
- Из инфраструктурных файлов удалены сервис/настройки SigNoz и маршрутизация алертов.
|
||||
- Удалены или обновлены тесты observability/alerts; тестовый набор для контроллера, сервиса, репозитория и конфигурации остается зеленым.
|
||||
- По файлам приложения и инфраструктуры нет упоминаний `signoz`, `opentelemetry`, `structlog`, `telegram`.
|
||||
|
||||
## Definition of Done
|
||||
- [ ] Удалены runtime-компоненты observability/alerting.
|
||||
- [ ] Обновлены YAML-конфиги и config schemas без секций observability/alerts.
|
||||
- [ ] Обновлены инфраструктурные файлы без SigNoz.
|
||||
- [ ] Удалены/обновлены тесты observability и alerts.
|
||||
- [ ] Пройдены все команды из раздела Commands.
|
||||
|
||||
## Tests
|
||||
- Обновить `tests/config/test_config_sections.py` под конфигурацию без observability/alerts.
|
||||
- Удалить или заменить `tests/config/test_alerts_config.py` и `tests/observability/*` в соответствии с новым scope.
|
||||
- Обновить `tests/smoke/test_local_infra_stack.py` под инфраструктуру без SigNoz.
|
||||
- Подтвердить, что `tests/controllers/v1/test_delivery.py`, `tests/services/test_aggregator.py`, `tests/repositories/cache/test_redis_cache.py` проходят без observability-зависимостей.
|
||||
|
||||
## Commands
|
||||
- `poetry run pytest tests/controllers/v1/test_delivery.py -q`
|
||||
- `poetry run pytest tests/services/test_aggregator.py -q`
|
||||
- `poetry run pytest tests/repositories/cache/test_redis_cache.py -q`
|
||||
- `poetry run pytest tests/config/test_config_sections.py -q`
|
||||
- `poetry run pytest tests/smoke/test_local_infra_stack.py -q`
|
||||
- `! rg -n "(signoz|opentelemetry|structlog|telegram)" app tests docker-compose.yml pyproject.toml config.yaml config.example.yaml config.test.yaml infra`
|
||||
Reference in New Issue
Block a user