3.6 KiB
3.6 KiB
Журнал сессии — 2026-10-07 (IoT: P0-доработки до production-ready)
Рабочая папка: /home/naeel/nubes/SQS_und_IoT/IoT Ветка: feature/replace-kafka-with-sqs
Основание:
doc/thinking/remediation-plan-2026-10-05.md(на ветке master) — план по двум анализам готовности. Работа только по явной команде; после каждой правки — коммит.
Сделано
P0-1/P0-2 — tenant-граница + обязательная подпись JWT (5e1cd28)
internal/service/api/middleware/auth.go:validateJWTтеперь возвращаетsub;- middleware сверяет
subс{namespace}из URL (mux.Vars) → 403 при несовпадении (закрыт горизонтальный доступ к чужим namespace); - вне
AUTH_TEST_MODEподпись HS256 ОБЯЗАТЕЛЬНА: безJWT_HMAC_SECRETmiddleware отказывает (fail-closed, 500), а не проверяет «структурно».
internal/service/config/config.go:JWT_HMAC_SECRETдобавлен в список обязательных (когдаAUTH_TEST_MODE=false) — отказ на старте.
P1-4 — убраны неаутентифицированные /internal/mqtt/* (cd47258)
internal/service/api/router.go: удалены маршруты/internal/mqtt/auth|acl. EMQX ходит в PostgreSQL напрямую (backend=postgresql), HTTP-fallback был не нужен и висел на публичном порту без auth (перебор паролей/ACL).- Примечание: те же эндпоинты остаются в ЛЕГАСИ
internal/api/(не исполняется).
P0-3 (часть 2) — пароль устройства не отдаётся повторно (f480be3)
internal/service/api/handler/devices.go:GetIoTDeviceбольше не возвращаетmqtt_password(передаём""вdeviceToResponse). Пароль — только при создании.- Часть 1 (хэш паролей в БД + перевод EMQX на
password_hash_algorithm) НЕ сделана: требует правкиemqx/emqx.confи миграции существующих строк.
P0-7 — подтверждение из SQS только после записи в БД (c84cbae)
- Проблема:
InsertTelemetryлишь буферизует и возвращает nil до фактической записи; consumer удалял сообщение сразу послеprocessTelemetry == nil→ краш/flush-ошибка в окне = безвозвратная потеря телеметрии. internal/storage/iotpg/iot_telemetry_store.go: добавленFlush(ctx).internal/service/consumer/consumer.go: копим receipt handles, вызываемstore.Flush(ctx), и только при успехе —DeleteMessage. При ошибке flush сообщения НЕ удаляются (вернутся после visibility timeout).
Осталось (не сделано)
- P0-3 часть 1 (хэш паролей + EMQX), P0-8 (идемпотентность), P1-9 (
/healthотражает состояние подсистем), P1-11/P1-12 (тесты/CI), P2-14 (вычистить легасиinternal/api/). - Платформенные проблемы (wss ~150с, MSS/MTU) — вне кода.
Проверки
go build ./...иgo vet ./internal/...— зелёные на каждом шаге.