| 2026-10-04 |

Синхронизация с gnexus-handbook: healthz, /mcp-protocol/, блокировка, i18n
...
Часть A — точечные несоответствия:
- GET /healthz (alias к /api/healthz) — требование хендбука 10-platform/health.
Часть C — MCP второго маршрута и блокировка:
- /mcp-protocol/ вторым маршрутом (конвенция 10-platform/mcp.md, слэш значим
для реверс-прокси); FastMCP-саб-аппу скармливается канонический /mcp.
/mcp остаётся историческим alias'ом (docs/07).
- Вебхуки gnexus-auth user.blocked/deleted/archived и user.unblocked/restored
ставят/снимают флаг в новой таблице user_prefs (миграция 0009); resolve_
personal_token гонит заблокированных и отвечает тем же 401, что и при
неверном токене. Статический MCP_TOKEN не затрагивается. SSO-логаут
токены не трогает (решение владельца).
Часть B — i18n по конвенции 10-platform/i18n.md (ru база + en + uk):
- frontend/src/i18n/ — модуль по паттерну gnexus-creds (t() c интерполяцией
и славскими плюрализациями, fallback en) + словари-сообщения (386 slug'ов);
все 15 вьюх и App.vue переведены на t(), module-консты с текстами — в
computed (грабли i18n.md); ui.js fmtTime — на Intl.DateTimeFormat;
push.js/local строки — в словарь.
- Язык: override в user_prefs.locale, эффективный = override → locale аккаунта
(profile.locale, нормализация до 2-буквенного префикса) → en; GET /me
возвращает locale/locale_effective, PATCH /me принимает en|uk|ru|auto.
Выбор языка — в Настройках (всем ролям), опции родными именами.
- Серверная локализация: Accept-Language от SPA; app/i18n_server.py —
каталог точных строк + regex-паттерны для параметризованных detail
(exception-handler StarletteHTTPException в main.py); labels/help реестра
настроек локализуются на лету.
- apiFetch: шлёт Accept-Language; 422 detail (список) собирается в строку.
Хендбук (отдельный репо): notifications.md — конвенция интеграции сервисов
(источник/ключ/конверт v1/client-libs/webhook-цель), mcp.md и auth.md —
референс-варианты Synapse, чеклист нового сервиса ссылается на notifications.md.
Eugene Sukhodolskiy
committed
5 hours ago
|
fix: ссылки на gnexus-mark в LoginView и docs/06 (дополнение к e00539e)
...
Правки были сделаны в рабочем дереве, но не попали в коммит e00539e
(он снял только удаление файла). Замена на synapse-mark.svg и текст
docs/06 про иконки PWA — в этом коммите.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
12 hours ago
|
| 2026-10-02 |
Страница входа — navi-style sign-in gate как на creds.gnexus.space
...
Центрированная карточка article.card (380px), логотип GNexus 56px,
«Добро пожаловать в Synapse» + подзаголовок и одна кнопка «Войти через
GNEXUS»; OAuth стартует только по клику. Пиксельная сетка creds переведена
на токены --gn-space-*.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
2 days ago
|
SSO через gnexus-auth-client-py: OAuth-поток на сервере, без ввода токенов в UI
...
- /auth/login: state+PKCE в Redis (переживает рестарты), redirect на authorize
- /auth/callback: обмен кода, проверка system_role до выдачи токена,
не-админу access-токен сразу revoke; токены в URL-фрагменте
- /auth/refresh и /auth/revoke; SPA: кнопка входа, /oauth/callback,
тихий refresh по 401, логаут
- креды только из env (GAUTH_*), GAUTH_VERIFY_TLS для self-signed в LAN
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
2 days ago
|
Каркас #33: FastAPI + Celery + Postgres в докере, Vue 3 SPA на gnexus-ui-kit
...
- FastAPI: healthz/readyz, Swagger на /api/docs, раздача SPA-статики из того же контейнера
- Гейт админки по ролям gnexus-auth (opaque-токены, userinfo, admin/superadmin, 401/403)
- Celery-воркер (redis broker) с каркасной задачей synapse.ping
- Alembic настроен на DATABASE_URL из .env, миграций пока нет (#34)
- docker-compose: api, worker, postgres, redis — одна команда, миграции при старте
- frontend: Vue 3 + Vite + gnexus-ui-kit (git-зависимость), вход-заглушка dev, дашборд, denied-экран
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
2 days ago
|