feat(stations): корректный health-check + эндпоинт offline-ids

health-check переписан: живой = пришли заголовки 200-399 (рвём соединение сразу,
не ждём бесконечное тело аудиопотока), параллельно, прогон при старте + ежечасно.
Раньше GET висел на живых потоках до таймаута → ложный offline. Новый GET /stations/offline-ids
отдаёт station_id оффлайн-станций — клиент их скрывает.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
nk
2026-06-03 17:56:59 +03:00
parent c2f638e1a1
commit 40a9f3968f
3 changed files with 101 additions and 54 deletions

View File

@@ -36,6 +36,12 @@ export class StationsController {
});
}
@Get('offline-ids')
@ApiOperation({ summary: 'station_id оффлайн-станций (для скрытия в клиенте)' })
async offlineIds() {
return this.stationsService.getOfflineStationIds();
}
@Get(':id')
@ApiOperation({ summary: 'Get station by ID' })
async findOne(@Param('id') id: string) {

View File

@@ -35,6 +35,15 @@ export class StationsService {
});
}
// station_id оффлайн-станций — для скрытия мёртвых плиток в клиенте
async getOfflineStationIds(): Promise<number[]> {
const rows = await this.prisma.station.findMany({
where: { isOnline: false },
select: { stationId: true },
});
return rows.map((r) => r.stationId);
}
async findOne(id: string) {
const station = await this.prisma.station.findUnique({
where: { id },