Files
sound-analyze/services/api/README.md

41 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# services/api
## Назначение
FastAPIсервис поверх TimescaleDB, который предоставляет RESTдоступ к аудио‑метрикам и агрегированным статистикам.
## Основные endpointы
- `GET /api/v1/audio/latest?limit=100`
- Возвращает последние N точек `audio_data`.
- `GET /api/v1/audio/range?from=<ts>&to=<ts>`
- Данные за заданный интервал, проверка `from < to`.
- `GET /api/v1/stats/summary?period=1h`
- Агрегированная статистика (avg/max/min по dB, доминантная частота, процент тишины) по окну (`10s|1m|1h|6h|24h|7d|30d`).
- `GET /api/v1/events/loud?threshold=-35&from=<ts>&to=<ts>`
- “Громкие” события, где `rms_db` выше порога, опционально с интервалом времени.
- `GET /api/v1/export/csv?from=<ts>&to=<ts>`
- Экспорт диапазона в CSV: `time,rms_db,frequency_hz,is_silence`.
- `GET /api/v1/health/live` / `ready`
- Примитивный healthcheck и проверка доступности БД.
## Модель данных
Таблица `audio_data` в TimescaleDB:
```sql
CREATE TABLE audio_data (
time TIMESTAMPTZ NOT NULL,
rms_db REAL CHECK (rms_db >= -50.0 AND rms_db <= 0.0),
frequency_hz INTEGER CHECK (frequency_hz >= 100 AND frequency_hz <= 8000),
is_silence BOOLEAN NOT NULL DEFAULT FALSE
);
```
Плюс continuous aggregate `audio_data_1min` и политики retention/refresh.