diff --git a/Dockerfile b/Dockerfile index 4b5473a..f4dce18 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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. diff --git a/HISTORY/2026-08-16-session-log.md b/HISTORY/2026-08-16-session-log.md index 85ac160..e975550 100644 --- a/HISTORY/2026-08-16-session-log.md +++ b/HISTORY/2026-08-16-session-log.md @@ -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. diff --git a/LEGACY.md b/LEGACY.md index 042074e..90c4240 100644 --- a/LEGACY.md +++ b/LEGACY.md @@ -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`