107 lines
5.2 KiB
Markdown
107 lines
5.2 KiB
Markdown
# Discovery Report: NODE.DC Platform
|
||
|
||
Дата: 2026-05-04
|
||
|
||
## Источники
|
||
|
||
- Базовое ТЗ: `/Users/dcconstructions/Downloads/mnt/NODEDC/DOC/BASE/tz_codex_platform_authentik_launcher_plane.md`
|
||
- Краткое ТЗ: `/Users/dcconstructions/Downloads/mnt/NODEDC/DOC/BASE/nodedc_auth.md`
|
||
- Launcher repo: `/Users/dcconstructions/Downloads/mnt/data/nodedc_launcher`
|
||
- Task Manager repo: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER`
|
||
|
||
## Workspace
|
||
|
||
`/Users/dcconstructions/Downloads/mnt/NODEDC` используется как внешний workspace-корень для платформенной работы.
|
||
|
||
Текущая папка `NODEDC` до нулевого этапа содержала только базовые документы в `DOC/BASE`. Отдельного git-репозитория в этой папке нет.
|
||
|
||
## Launcher
|
||
|
||
Путь: `/Users/dcconstructions/Downloads/mnt/data/nodedc_launcher`
|
||
|
||
Факты discovery:
|
||
|
||
- отдельный git-репозиторий;
|
||
- Vite/React приложение;
|
||
- основной entrypoint: `src/main.tsx`;
|
||
- команды из `package.json`: `npm run dev`, `npm run build`, `npm run preview`, `npm run test`;
|
||
- backend слоя в текущем Launcher не найдено;
|
||
- значит OIDC/session handling, Authentik service token, app registry и audit log нельзя хранить только во frontend.
|
||
|
||
Минимальный вывод: для production-like auth нужен Launcher backend или BFF слой.
|
||
|
||
## Task Manager / Plane
|
||
|
||
Путь: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER`
|
||
|
||
Факты discovery:
|
||
|
||
- отдельный git-репозиторий;
|
||
- self-host runtime лежит в `plane-app`;
|
||
- локальный fork исходников лежит в `plane-src`;
|
||
- Plane CE self-host запущен через Docker;
|
||
- локальный URL стенда: `http://localhost:8090`;
|
||
- текущий compose/env: `plane-app/docker-compose.yaml` и `plane-app/plane.env`;
|
||
- текущий fork Plane: `plane-src`, версия `1.3.0`;
|
||
- основной runtime-контейнер API: `plane-app-api-1`;
|
||
- активные контейнеры Plane: web, proxy, api, worker, beat-worker, db, redis, minio, mq, admin, space, live.
|
||
|
||
Текущий workspace в Plane:
|
||
|
||
- slug: `nodedc`;
|
||
- name: `NODE DC`;
|
||
- owner: `dcctouch@gmail.com`;
|
||
- codex user: `codex@nodedc.local`.
|
||
|
||
Существующие проекты в workspace `nodedc` на момент discovery:
|
||
|
||
- `NODEDCLAUN` / `NODEDC LAUNCHER`
|
||
- `CODEX` / `DCTM-WT-CODEX`
|
||
- `NODEDCTASK` / `NODEDC TASKMANAGER`
|
||
- `MGR` / `Менеджмент`
|
||
- `BUH` / `Бухгалтерия`
|
||
|
||
## NDC details в карточках
|
||
|
||
Канон карточек описан в `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/AGENTS.md`.
|
||
|
||
Структурированные блоки карточки хранятся в `Issue.detail_layout` под ключом:
|
||
|
||
```text
|
||
nodedc_structured_blocks
|
||
```
|
||
|
||
Типы блоков:
|
||
|
||
- `text`: текстовый блок с `title` и `body`;
|
||
- `checker`: чекер с `title` и пунктами `items`.
|
||
|
||
Frontend отображает эти блоки через компоненты:
|
||
|
||
- `plane-src/apps/web/core/components/issues/issue-detail-widgets/structured-content.helpers.ts`
|
||
- `plane-src/apps/web/core/components/issues/issue-detail-widgets/structured-content-blocks.tsx`
|
||
|
||
## Решение по переносам
|
||
|
||
Физически переносить Launcher и Task Manager внутрь `NODEDC` на нулевом этапе не нужно.
|
||
|
||
Причины:
|
||
|
||
- оба приложения уже являются отдельными git-репозиториями;
|
||
- Plane runtime завязан на текущие `plane-app`, `plane.env`, volumes и backup;
|
||
- перенос может сломать локальный self-host стенд;
|
||
- платформенный слой должен управлять интеграцией, а не становиться монорепозиторием всех исходников.
|
||
|
||
Допустимый вариант позже: добавить symlink или workspace manifest из `NODEDC` на внешние репозитории, если это потребуется для удобства навигации.
|
||
|
||
## Риски
|
||
|
||
- Нельзя пересоздавать существующего Plane admin/user, иначе потеряются связи workspace, задач, комментариев и assignee.
|
||
- Нельзя делать Authentik admin token доступным frontend-коду Launcher.
|
||
- Нельзя полагаться только на reverse proxy как единственный долгосрочный auth layer для приложений, которые мы контролируем кодом.
|
||
- Нельзя публиковать наружу Postgres, Redis, MinIO и внутренние API в staging/production.
|
||
|
||
## Следующий технический шаг
|
||
|
||
Создать локальный `platform/infra` слой с Authentik и reverse proxy, но сначала согласовать конкретную схему доменов, ports и secrets.
|