107 lines
4.2 KiB
Markdown
107 lines
4.2 KiB
Markdown
📦 КОНТЕКСТ
|
|
|
|
Ты работаешь над распределённой системой на Go.
|
|
|
|
Система состоит из двух частей:
|
|
|
|
1. ДЕМОН (Orange Pi / Ubuntu Linux)
|
|
Работает на Linux (ARM или x86)
|
|
Подключён к видеоприёмнику через UART3 (/dev/ttyS3 или аналог)
|
|
Общение с устройством идёт через ASCII-команды
|
|
|
|
UART протокол устройства:
|
|
|
|
av → ответ: HW=1.0 SW=1.005
|
|
af0188800 → установка частоты (пример: 1880 MHz)
|
|
позже добавятся другие команды
|
|
|
|
Демон является мостом:
|
|
gRPC → UART → устройство
|
|
|
|
2. КЛИЕНТ (CLI / позже GUI)
|
|
Запускается на компьютере в той же сети
|
|
Подключается к демону по gRPC
|
|
Использует один bidirectional streaming канал
|
|
Отправляет команды и получает ответы
|
|
📡 КЛЮЧЕВАЯ АРХИТЕКТУРА
|
|
Используется только один gRPC stream
|
|
Никаких отдельных RPC методов
|
|
Всё общение через stream сообщений
|
|
🔎 DISCOVERY (поиск демона в сети)
|
|
|
|
Клиент должен автоматически находить демон в локальной сети.
|
|
|
|
Можно использовать простой механизм:
|
|
|
|
UDP broadcast (предпочтительно)
|
|
или multicast
|
|
или простой локальный discovery сервис
|
|
|
|
НЕ использовать сложные системы (service mesh, etcd и т.д.)
|
|
|
|
🎮 КОМАНДЫ СИСТЕМЫ
|
|
|
|
Поддерживаются 3 команды:
|
|
|
|
1. av
|
|
проверка связи с устройством
|
|
демон отправляет UART команду av
|
|
получает HW=... SW=...
|
|
2. af
|
|
установка частоты
|
|
вход: число (например 1880 MHz)
|
|
UART команда: af0188800
|
|
3. get
|
|
получить текущую частоту
|
|
⚙️ РОЛЬ ДЕМОНА
|
|
|
|
Демон должен:
|
|
|
|
открывать UART3
|
|
отправлять ASCII команды устройству
|
|
читать ответы
|
|
парсить ответы
|
|
возвращать результат через gRPC stream
|
|
🧠 ВАЖНЫЕ ОГРАНИЧЕНИЯ
|
|
НЕ усложнять архитектуру
|
|
НЕ использовать микросервисы
|
|
НЕ добавлять Kafka, Redis, REST и т.д.
|
|
НЕ строить enterprise архитектуру
|
|
|
|
Только простой рабочий прототип.
|
|
|
|
🔮 БУДУЩЕЕ РАЗВИТИЕ
|
|
Позже демон может быть заменён STM32 прошивкой
|
|
Поэтому UART слой должен быть отделён от логики
|
|
Протокол должен остаться одинаковым
|
|
🖥 GUI
|
|
Сейчас только CLI
|
|
Позже будет GUI на Wails
|
|
Протокол менять нельзя
|
|
🎯 ЦЕЛЬ
|
|
|
|
Сделать рабочий прототип:
|
|
|
|
CLI автоматически находит демон
|
|
CLI отправляет команды: av / af / get
|
|
Демон переводит их в UART команды
|
|
Устройство отвечает
|
|
Ответ возвращается обратно клиенту
|
|
📌 ЧТО НУЖНО СГЕНЕРИРОВАТЬ
|
|
Go демон (gRPC server + UART bridge)
|
|
Go CLI клиент
|
|
protobuf контракт
|
|
простой discovery механизм
|
|
⚠️ ПРАВИЛА РЕАЛИЗАЦИИ
|
|
Go только
|
|
код простой и читаемый
|
|
можно один файл на компонент на старте
|
|
главное — работоспособность, не идеальная архитектура
|
|
💬 если коротко
|
|
|
|
Этот промт заставляет Copilot:
|
|
|
|
👉 не строить “enterprise систему”
|
|
👉 а сделать рабочий прототип мост UART ↔ gRPC
|
|
|
|
так же ты можешь удалить не нуные папки которые только усложняют архитектуру |