docs: аудит вмешательства старого IoT — k8s-зависимости только в 3 хендлерах; Dockerfile помечен ЛЕГАСИ; правило монолита зафиксировано

This commit is contained in:
“Naeel”
2026-08-16 09:44:45 +04:00
parent eb7d312d89
commit bf32394def
3 changed files with 61 additions and 0 deletions
+3
View File
@@ -1,3 +1,6 @@
# ⛔⛔⛔ ЛЕГАСИ (2026-08-16) — СТАРЫЙ IoT (3 бинарника, образ naeel/iot-operator). НЕ ИСПОЛЬЗОВАТЬ.
# Новый монолит получит собственный Dockerfile. Актуальное: HISTORY/2026-08-16-session-log.md
# Создано: 2026-04-12
# Изменено: 2026-04-12 (kafka-consumer → sqs-consumer)
# Dockerfile для IoT managed service.
+41
View File
@@ -440,3 +440,44 @@ deployment-v0.2.3; 9 вопросов; формат «Ответ/Рекомен
**Актуальные файлы (НЕ легаси):** `HISTORY/`, `doc/sqs-integration.md`,
`ws-probe/`, Go-код `cmd/mqtt-bridge/`, `cmd/sqs-consumer/`, `internal/`
(переиспользуется в монолите).
---
## 13. Аудит вмешательства старого IoT + план Фазы 1 (16.08)
**Команда пользователя:** «НЕ ДОПУСКАТЬ, чтобы старые данные и файлы от прежнего
IoT вмешивались в проект. ПРОВЕРЬ.»
**Результаты аудита (факты):**
1. **Код:** k8s-зависимости есть ТОЛЬКО в `internal/api/handler/`:
- `handler.go` — controller-runtime client, runtime;
- `iot_device_handler.go` — corev1, apimachinery, metav1, CRD-типы
`iotv1alpha1` (CRUD устройств через K8s + MQTT-auth через Secrets);
- `iot_admin_stats_handler.go` — corev1, controller-runtime.
Всё остальное ЧИСТО: `router.go`, `middleware/`, UI-embeds, `iotpg/`,
`cmd/mqtt-bridge/`, `cmd/sqs-consumer/`.
2. **go.mod:** тяжёлые k8s-депы (k8s.io/api, apimachinery, client-go v0.26.0,
controller-runtime v0.14.1 + ~40 indirect) — держатся только из-за этих
трёх файлов. После переписывания хендлеров — `go mod tidy` их уберёт.
3. **Dockerfile (корень)** — собирал 3 старых бинарника; НЕ был помечен.
→ помечен ЛЕГАСИ (новый монолит получит собственный Dockerfile).
4. **CI:** в `.github/` только правила (copilot-instructions, pravila) —
старых пайплайнов нет. `bin/` в git не отслеживается.
5. **Данные:** старый shared-sqs (qu.kube5s.ru) удалён полностью — старых
очередей в новом shared-sqs нет. В managed PG остались старые тестовые
tenant-DB (изолированы; очистка — только по отдельной команде). Старые
k8s Secrets новым кодом не читаются.
**Правило для монолита (зафиксировано):**
- Новый код НЕ импортирует `controllers/`, `api/v1alpha1/`, k8s-клиент.
- Хендлеры устройств переписываются на PG (`iot_devices`), MQTT-auth — SQL.
- `LEGACY.md` дополнен разделом аудита.
**План Фазы 1 (согласован в обсуждении, ждёт «делай»):**
1. Новый `cmd/iot-service/main.go` + структура по пакетам (config, api, bridge,
consumer, storage/iotpg) — много мелких файлов, без god-файлов.
2. Хендлеры устройств/админки — на PG вместо K8s; authTestMode=false.
3. Bridge+consumer — переиспользуются как есть (MQTT-подписка, SQS long-poll).
4. Новый Dockerfile (один бинарник), образ `naeel/iot-service` (имя — на
подтверждении пользователя), env-дефолты вшиты, секреты — в deck.
5. Сборка → пуш latest → пользователь создаёт контейнер в deck-UI.
+17
View File
@@ -15,11 +15,28 @@
- `config/crd/` — CRD IoTDevice
- `cmd/iot-operator/`, `controllers/`, `api/v1alpha1/` — оператор (CRD-контроллер);
в новой архитектуре не используется (замена — таблица `iot_devices` в PG)
- `Dockerfile` (корень) — собирает 3 старых бинарника, образ naeel/iot-operator
- `doc/` — все документы, кроме `doc/sqs-integration.md`
- `examples/` — старые примеры (RabbitMQ/serverless)
- `2026-08-13-migration-to-managed.md` — СТАРЫЙ план миграции (Node.js) — ОТМЕНЁН
- `Makefile` — старые цели (k8s deploy/install-crd) не использовать
## Аудит вмешательства старого IoT (2026-08-16, проверено)
- **Код:** k8s-зависимости есть ТОЛЬКО в `internal/api/handler/` (handler.go,
iot_device_handler.go, iot_admin_stats_handler.go — controller-runtime,
corev1, CRD-типы). Всё остальное чисто: router, middleware, UI-embeds,
`internal/storage/iotpg/`, `cmd/mqtt-bridge/`, `cmd/sqs-consumer/`.
- **Правило для монолита:** новый код НЕ импортирует `controllers/`,
`api/v1alpha1/`, k8s-клиент. Хендлеры устройств переписываются на
PG-хранилище (`iot_devices`); после этого k8s-депы удаляются из go.mod.
- **Данные:** старый shared-sqs (qu.kube5s.ru) удалён полностью — старых
очередей нет. В managed PG остались старые тестовые tenant-DB (изолированы,
на новый код не влияют; очистка — только по отдельной команде).
Старые k8s Secrets не читаются (новый код без k8s-клиента).
- **Артефакты:** `bin/` в git не отслеживается; CI (.github/) содержит только
правила — старых пайплайнов нет.
## НЕ легаси (актуально)
- `HISTORY/2026-08-16-session-log.md`