docs: update thinking log + progress for v0.1.6
This commit is contained in:
@@ -1942,3 +1942,36 @@ G15 перезапущен → **21/21 PASS ✅**
|
||||
- [ ] DB_DSN в function pod env
|
||||
- [ ] schema.sql при деплое функции
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 2026-04-09 (вечер) — shared-sqs v0.1.6: Queue CRUD + Message UI
|
||||
|
||||
### Реализовано
|
||||
|
||||
**Backend (shared-sqs/app/admin/admin.go):**
|
||||
- `POST /tenants/{id}/queues` — создание очереди (с проверкой лимита MaxQueues)
|
||||
- `DELETE /tenants/{id}/queues/{name}` — удаление очереди
|
||||
- `GET /tenants/{id}/queues/{name}/messages` — peek-просмотр сообщений (read-only, без ReceiptHandle)
|
||||
- `POST /tenants/{id}/queues/{name}/messages` — отправка сообщения через admin API
|
||||
- `DELETE /tenants/{id}/queues/{name}/messages` — purge (очистка без удаления очереди)
|
||||
|
||||
**Frontend (shared-sqs/app/ui/index.html):**
|
||||
- Expandable строки очередей: клик на имя → inline-таблица сообщений
|
||||
- Кнопки действий: 📨 Отправить / 🗑 Очистить / ✕ Удалить
|
||||
- Модалка отправки сообщения (`#modal-send`)
|
||||
- Модалка детали сообщения (`#modal-msg-detail`) — c копированием тела
|
||||
- Модалка создания очереди (`#modal-queue-create`)
|
||||
- JS: `msgCache` для безопасной передачи тела без onclick attrs
|
||||
|
||||
**Сборка:**
|
||||
- `naeel/shared-sqs:v0.1.6` собран и запушен на Docker Hub
|
||||
|
||||
**Git:** коммит `610c604`, ветка `shared-sqs`
|
||||
|
||||
### Осталось
|
||||
|
||||
- [ ] Задеплоить v0.1.6 в K8s (kubectl-токен истёк, нужно обновить)
|
||||
```
|
||||
kubectl -n shared-sqs set image deployment/shared-sqs shared-sqs=naeel/shared-sqs:v0.1.6
|
||||
```
|
||||
|
||||
@@ -287,3 +287,63 @@ go build → OK (все этапы 1-8)
|
||||
### Коммит
|
||||
- `12b3bb9` — feat(shared-sqs): add SQS Console UI (v0.1.4)
|
||||
- Pushed to `sqs-operator`
|
||||
|
||||
---
|
||||
# GitHub Copilot (Claude Sonnet 4.6) — продолжение сессии 2026-04-09 (вечер)
|
||||
|
||||
## Контекст
|
||||
|
||||
Продолжение с конца предыдущего сеанса. Была реализована база admins API.
|
||||
Нужно было:
|
||||
1. Исправить `models.NewUUID()` → найти правильную функцию генерации UUID
|
||||
2. Написать frontend для peek/send/purge/queue CRUD
|
||||
3. Собрать + задеплоить v0.1.6
|
||||
|
||||
## Анализ + ход мыслей
|
||||
|
||||
### UUID
|
||||
Сделал `grep` по Uuid в gosqs пакете → нашёл `uuid.NewString()` из `github.com/google/uuid`.
|
||||
Исправил admin.go: добавил import + заменил `models.NewUUID()` → `uuid.NewString()`.
|
||||
Сборка прошла чисто.
|
||||
|
||||
### Frontend (index.html)
|
||||
Прочитал весь текущий HTML/JS. Отметил:
|
||||
- CSS уже есть: `.card`, `.btn`, `.badge`, `.modal`, `.hidden`
|
||||
- JS helpers: `esc()`, `api()`, `fmtDate()`, `fmtBytes()`, `fmtDuration()`
|
||||
- Шаблонные literals со вложенностью (outer: `el.innerHTML = \`...\``, inner: `.map(q => \`...\`)`)
|
||||
|
||||
Решения:
|
||||
- **IDs для expandable rows**: `msgs-${q.name}`, `qicon-${q.name}` — SQS-имена только `[a-zA-Z0-9_-]`, безопасно
|
||||
- **msgCache**: хранить весь объект сообщения в Map по id — чтобы не передавать body через onclick attrs (безопаснее, нет проблем с кавычками)
|
||||
- **State для модалок**: `_sendState`, `_createQueueState` — сохраняем перед открытием модалки
|
||||
- **template literal nesting**: `${esc(tenant.id)}` в inner template работает т.к. tenant из closure
|
||||
|
||||
Добавлено в HTML:
|
||||
- 3 новые модалки: `#modal-send`, `#modal-msg-detail`, `#modal-queue-create`
|
||||
- CSS: `.msg-expand`, `.msg-expand-inner`, `.queue-name-link`
|
||||
- Toolbar очередей: + кнопка "+ Очередь"
|
||||
- Каждая строка очереди: клик на имя → toggle сообщений; кнопки 📨 🗑 ✕
|
||||
- Скрытая expandable строка с `#msgs-inner-{name}`
|
||||
- JS: `toggleMessages`, `loadMessages`, `renderQueueMessages`, `openMsgDetail`, `closeMsgDetail`, `openSendModal`, `closeSendModal`, `sendMessage`, `purgeQueueConfirm`, `openCreateQueueModal`, `closeQueueModal`, `createQueue`, `deleteQueueConfirm`, `copyTextarea`
|
||||
|
||||
Синтаксис проверен через `node -e "new Function(script)"` → OK.
|
||||
|
||||
### Деплой
|
||||
- Docker build v0.1.6 на VM → успешно
|
||||
- `docker push naeel/shared-sqs:v0.1.6` → успешно
|
||||
- `kubectl set image` → **ОШИБКА**: JWT токен в kubeconfig на VM истёк в 16:01 UTC, текущее время 16:07 UTC
|
||||
- Решение: обновил `deployment.yaml` с новым тегом → пользователь задеплоит после обновления токена
|
||||
|
||||
### Коммит
|
||||
- `610c604` feat(shared-sqs): queue CRUD + message peek/send/purge in UI (v0.1.6)
|
||||
- Pushed to branch `shared-sqs`
|
||||
|
||||
## Итог
|
||||
|
||||
Всё реализовано. Осталось только задеплоить — нужен свежий K8s токен (текущий истёк).
|
||||
Команда деплоя:
|
||||
```
|
||||
kubectl -n shared-sqs set image deployment/shared-sqs shared-sqs=naeel/shared-sqs:v0.1.6
|
||||
# или
|
||||
kubectl apply -f shared-sqs/deployments/k8s/deployment.yaml
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user