4.2 KiB
📦 КОНТЕКСТ
Ты работаешь над распределённой системой на Go.
Система состоит из двух частей:
- ДЕМОН (Orange Pi / Ubuntu Linux) Работает на Linux (ARM или x86) Подключён к видеоприёмнику через UART3 (/dev/ttyS3 или аналог) Общение с устройством идёт через ASCII-команды
UART протокол устройства:
av → ответ: HW=1.0 SW=1.005 af0188800 → установка частоты (пример: 1880 MHz) позже добавятся другие команды
Демон является мостом: gRPC → UART → устройство
- КЛИЕНТ (CLI / позже GUI) Запускается на компьютере в той же сети Подключается к демону по gRPC Использует один bidirectional streaming канал Отправляет команды и получает ответы 📡 КЛЮЧЕВАЯ АРХИТЕКТУРА Используется только один gRPC stream Никаких отдельных RPC методов Всё общение через stream сообщений 🔎 DISCOVERY (поиск демона в сети)
Клиент должен автоматически находить демон в локальной сети.
Можно использовать простой механизм:
UDP broadcast (предпочтительно) или multicast или простой локальный discovery сервис
НЕ использовать сложные системы (service mesh, etcd и т.д.)
🎮 КОМАНДЫ СИСТЕМЫ
Поддерживаются 3 команды:
- av проверка связи с устройством демон отправляет UART команду av получает HW=... SW=...
- af установка частоты вход: число (например 1880 MHz) UART команда: af0188800
- 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
так же ты можешь удалить не нуные папки которые только усложняют архитектуру