docs: copilot-instructions, архитектура, API, progress, decisions

This commit is contained in:
Naeel
2026-04-12 14:34:34 +03:00
parent 1a94241c62
commit e70c164203
5 changed files with 302 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
# Решение: Вынос IoT в отдельную репу
**Дата:** 2026-04-12
**Статус:** Принято и реализовано
## Контекст
IoT managed service был частью sless (основной serverless operator).
Код IoT жил в нескольких местах:
- `iot/` — CRD types, controller, cmd (bridge, consumer)
- `internal/storage/iotpg/` — Postgres store
- `internal/api/handler/iot_*.go` — REST handlers
- `internal/api/ui/iot-*.html` — UI
- `main.go`, `Dockerfile` — IoT интегрирован в основной бинарник
## Проблемы
1. IoT и sless — разные домены с разными циклами разработки
2. Сборка sless включала IoT — лишние зависимости (Kafka, MQTT)
3. Деплой любого IoT изменения требовал пересборки всего sless
## Решение
Вынести IoT в отдельную репу `gitea.services.ngcloud.ru/Nail/IoT`:
- Свой Go модуль, go.mod, Dockerfile
- 3 бинарника в одном образе (`naeel/iot-operator`)
- Свой controller-manager + REST API (cmd/iot-operator)
- Независимый CI/CD цикл
## Что перенесено
- CRD types, controller, mqtt-bridge, kafka-consumer — as-is
- Handler struct упрощён (убраны S3, PG от sless)
- Router — только IoT маршруты
- Middleware (auth, logging) — скопированы как есть
- K8s manifests, CRD YAML, документация, примеры
## Риски
- IoT код в sless нужно будет убрать (или оставить заглушки)
- K8s manifests могут требовать обновления (новое имя образа)