first
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
📦 КОНТЕКСТ
|
||||
|
||||
Ты работаешь над распределённой системой на 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
|
||||
|
||||
так же ты можешь удалить не нуные папки которые только усложняют архитектуру
|
||||
Reference in New Issue
Block a user