NODEDC_TASKMANAGER/README_RUN_RU.md

334 lines
17 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Plane Community Edition для локального стенда NodeDC
## Что развернуто
Локально поднят self-hosted стенд Plane Community Edition для macOS.
Состав:
- self-host runtime: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app`
- локальный форк исходников для кастомизации: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src`
- ветка форка: `nodedc-ru-local`
- локальные image tags для UI: `nodedc/plane-frontend:ru`, `nodedc/plane-admin:ru`, `nodedc/plane-space:ru`
- demo bootstrap-скрипт: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/scripts/bootstrap_nodedc_demo.py`
- demo asset для вложения: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/demo-assets/nodedc-document-request-template.txt`
- рабочий env-файл хранится в репозитории: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/plane.env`
- snapshot текущих volume-данных хранится в репозитории: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/backup/20260418-1904`
Используется именно open-source/community self-host путь через официальный `setup.sh`, без enterprise/commercial-фич.
## Окружение
- ОС: macOS
- Архитектура: `arm64` (Apple Silicon)
- Shell: `zsh`
- Bash: `/bin/bash`
- Docker: `Docker version 29.1.3`
- Docker Compose: `Docker Compose version v5.0.0-desktop.1`
## Локальный URL
- основной URL: `http://localhost:8090`
- без домена и без SSL, как локальный PoC-стенд
## Где что лежит
- корень стенда: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER`
- setup script: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/setup.sh`
- compose: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/docker-compose.yaml`
- env: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/plane.env`
- backup данных: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/backup/20260418-1904`
- форк репозитория: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src`
## Используемые env-файлы
Основной env-файл:
- `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/plane.env`
Текущий snapshot volume-данных:
- `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/backup/20260418-1904/pgdata.tar.gz`
- `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/backup/20260418-1904/uploads.tar.gz`
- `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/backup/20260418-1904/rabbitmq_data.tar.gz`
- `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/backup/20260418-1904/redisdata.tar.gz`
Ключевые параметры для локалки:
- `WEB_URL=http://localhost:8090`
- `LISTEN_HTTP_PORT=8090`
- `LISTEN_HTTPS_PORT=8443`
- `CORS_ALLOWED_ORIGINS=http://localhost:8090`
## Команды, которые реально применялись
### Получение и запуск self-host runtime
```bash
mkdir -p /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
curl -fsSL -o setup.sh https://github.com/makeplane/plane/releases/latest/download/setup.sh
chmod +x setup.sh
./setup.sh install
./setup.sh start
```
### Остановка и повторный запуск
```bash
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh stop
./setup.sh start
```
### Логи
```bash
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh logs api
./setup.sh logs worker
./setup.sh logs web
./setup.sh logs admin
./setup.sh logs space
./setup.sh logs proxy
```
### Клонирование исходников под форк
```bash
git clone --depth 1 --branch v1.3.0 https://github.com/makeplane/plane.git /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src
git checkout -b nodedc-ru-local
pnpm install --frozen-lockfile
```
### Проверка фронтовых пакетов после русификации
```bash
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src
pnpm turbo run check:types --filter=web --filter=admin --filter=space --filter='@plane/i18n' --filter='@plane/ui'
pnpm turbo run check:types --filter=web --filter='@plane/i18n' --filter='@plane/utils'
```
### Пересборка локального фронта после изменений русификации
```bash
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src
docker build -t nodedc/plane-frontend:ru -f apps/web/Dockerfile.web .
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh stop
./setup.sh start
```
### Пересборка всех UI-образов после ребрендинга NODE.DC
```bash
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src
docker build -t nodedc/plane-live:local -f apps/live/Dockerfile.live .
docker build -t nodedc/plane-frontend:ru -f apps/web/Dockerfile.web .
docker build -t nodedc/plane-admin:ru -f apps/admin/Dockerfile.admin .
docker build -t nodedc/plane-space:ru -f apps/space/Dockerfile.space .
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh stop
./setup.sh start
```
### Наполнение demo-данными
```bash
docker cp /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/demo-assets/nodedc-document-request-template.txt plane-app-api-1:/tmp/nodedc-document-request-template.txt
docker exec -i plane-app-api-1 python manage.py shell < /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/scripts/bootstrap_nodedc_demo.py
```
## Команды эксплуатации
### Старт
```bash
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh start
```
### Стоп
```bash
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh stop
```
### Рестарт
```bash
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh stop
./setup.sh start
```
### Проверка контейнеров
```bash
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh status
```
Если нужно смотреть контейнеры напрямую:
```bash
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app
docker compose --env-file plane.env ps
```
Важно:
- для локального стенда безопаснее пользоваться именно `./setup.sh`, а не голым `docker compose`
- причина: host env может переопределить значения из `plane.env`; на практике это уже ломало `DEBUG`
- если все-таки запускать compose напрямую, лучше делать это с `--env-file plane.env` и без конфликтующих env-переменных в shell
## Тестовые учетные записи
Пароль для всех demo-пользователей:
```text
NodeDC123!
```
Пользователи:
- `admin@nodedc.local`
- `accountant@nodedc.local`
- `manager@nodedc.local`
- `docs@nodedc.local`
## Что создано в demo-данных
Workspace:
- `NodeDC` (`nodedc`)
Проекты:
- `Бухгалтерия` (`BUH`)
- `Менеджеры` (`MGR`)
- `Запросы документов` (`DOC`)
Demo work items:
- адресная задача бухгалтеру
- задача в общий контур менеджеров
- задача на запрос документов
- задача с дедлайном на согласование лимитов
- задача с вложением в проекте запросов документов
Дополнительно:
- создан сохраненный view `Срочные документы`
- пользователям выставлен язык `ru`
## Что пришлось чинить вручную
### 1. Официальный `setup.sh` в актуальном состоянии неустойчиво определял latest release
Проблема:
- функция `checkLatestRelease()` ожидала формат JSON с пробелом после `tag_name`
- GitHub API отдавал минифицированный JSON
- в результате latest release мог не определяться корректно
Что сделано:
- локально поправлен парсинг `tag_name` в `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/setup.sh`
### 2. Хостовый env ломал запуск backend-контейнеров
Проблема:
- в shell был `DEBUG=release`
- compose-интерполяция подхватывала host env раньше, чем `plane.env`
- `api/worker/migrator` падали с ошибкой преобразования DEBUG в integer
Что сделано:
- в локальный `setup.sh` добавлена загрузка `plane.env` перед compose-командами
- обертка запускает compose в предсказуемом env-контексте
### 3. `/api/instances/` может показывать несвежие данные
Проблема:
- endpoint отдает состояние не всегда синхронно после bootstrap
Что делалось на практике:
- финальная проверка велась через БД и прикладные API workspace/project/issues
### 4. Баг на создании attachment в текущем релизе `v1.3.0`
Проблема:
- legacy flow вложений упирался в `S3Storage.file_overwrite`
- создание attachment через стандартный путь падало
Что сделано:
- для demo bootstrap файл был загружен напрямую в MinIO через storage API
- после этого вручную создан `FileAsset` для `ISSUE_ATTACHMENT`
### 5. Onboarding после signup не подходил под локальный контур NodeDC
Проблема:
- штатный flow после регистрации вел пользователя через `role`, `use case` и `create workspace`
- новые профили создавались backend-ом с `language = en`, поэтому первый onboarding-экран переключался на английский
Что сделано:
- onboarding в `apps/web` упрощен до одного шага: `Создайте профиль`
- после нажатия `Начать` автоматически создается персональное пустое workspace и пользователь сразу редиректится в него
- backend-дефолт языка для новых профилей изменен на `ru`
- добавлена migration `db.0122_alter_profile_language`
### 6. Product Tour на главной временно отключен
Проблема:
- после входа в workspace Plane показывал отдельный welcome/product tour поверх главной страницы
- для локального NodeDC PoC этот оверлей мешает первичному осмотру интерфейса
Что сделано:
- сам код tour сохранен
- показ временно отключен флагом в `apps/web/core/components/home/root.tsx`
- для возврата достаточно снова включить локальный флаг `IS_PRODUCT_TOUR_ENABLED`
- добавлена migration `db.0123_force_profile_language_ru`, которая переводит все существующие профили на `ru`
## Русификация
Русификация делается в локальном форке `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src`.
Базовый подход:
- использована существующая структура `@plane/i18n`
- `ru` сделан языком по умолчанию
- fallback оставлен `en`
- вынесены и переведены дополнительные строки, которые были захардкожены в web UI
- отдельно локализованы даты и relative-time в `packages/utils/src/datetime.ts`
- локализован дефолтный label группы `All work items`
- живой smoke-test пройден для login, home, project issues, views, project settings и profile settings
## Ребрендинг NODE.DC
Что дополнительно изменено поверх русификации:
- пользовательский брендинг `Plane` заменен на `NODE.DC` в основных web/admin/space UI
- логотипы `PlaneLockup` и `PlaneLogo` заменены на asset `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/demo-assets/logo.svg`
- с auth-экрана убраны `Условия использования`, `Политика конфиденциальности` и нижний маркетинговый блок
- из основного web UI убраны GitHub CTA, help/question menu в top bar и badge `Сообщество` внизу sidebar
- после регистрации оставлен только один onboarding-экран `Создайте профиль`; экраны `role`, `use case` и `create workspace` удалены из потока
- product tour на главной странице временно отключен без удаления кода
- для изменений были пересобраны локальные images `nodedc/plane-frontend:ru`, `nodedc/plane-admin:ru`, `nodedc/plane-space:ru`
Отдельный архитектурный обзор по точкам кастомизации:
- `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/ARCH_REVIEW_NODEDC_RU.md`
## Повторная инициализация demo-данных
Если нужно повторно прогнать bootstrap после чистого разворачивания:
```bash
docker cp /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/demo-assets/nodedc-document-request-template.txt plane-app-api-1:/tmp/nodedc-document-request-template.txt
docker exec -i plane-app-api-1 python manage.py shell < /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/scripts/bootstrap_nodedc_demo.py
```
Скрипт сделан как bootstrap для PoC-стенда, а не как production-migration.
## Практические замечания
- Это локальный технический стенд, не production.
- Основа подходит для форка фронта и бэка: monorepo прозрачен, модели и API читаемы.
- При следующем этапе кастомизации имеет смысл держать отдельно:
- self-host runtime
- форк `plane-src`
- свои скрипты bootstrap/migrations рядом
- На момент финальной проверки основная пользовательская зона UI уже русифицирована.
- Остаточные англоязычные хвосты, которые еще видны на живом стенде:
- `Moscow Time` в выборе часового пояса проекта
- отдельные loader/accessibility строки вне основных экранов
- часть admin/space интерфейсов не проходила такой же глубокий ручной аудит, как `apps/web`
- Attachment flow релиза `v1.3.0` нестабилен, поэтому demo-вложение создавалось обходным bootstrap-сценарием.