f0e7b0b63a
Co-authored-by: Alex Ant <dacom-dark-sun@users.noreply.github.com>
4.2 KiB
4.2 KiB
AGENTS.md
Cursor Cloud specific instructions
Обзор
Монорепозиторий «Цифровой Кооператив» (monocoop) — платформа управления кооперативами на блокчейне EOSIO. pnpm v9 + Lerna. Node.js v20.
Сервисы
| Компонент | Контейнер | Порт | Описание |
|---|---|---|---|
| controller | coopback | 2998 | NestJS GraphQL API |
| desktop | desktop | 2999 | Vue 3 + Quasar SPA |
| parser | cooparser | 4000 | Индексация блокчейна через SHiP |
| blockchain | node | 8888, 8070 | EOSIO node + State History Plugin |
| MongoDB | mongo | 27017 | Основная БД (replica set) |
| Redis | monoredis | 6379 | Кэш и стримы |
| PG | (см. compose) | 5532→5432 | Реляционная БД |
Полный перезапуск (одна команда)
pnpm run reboot
Делает: останавливает контейнеры → чистит blockchain data и volumes → поднимает инфру → ждёт готовности → pnpm run boot → запускает parser и controller.
Первоначальная настройка Cloud-окружения
-
/etc/hosts— обязательно для boot (запускается на хосте, обращается к MongoDB по docker hostname):echo "127.0.0.1 mongo" | sudo tee -a /etc/hosts echo "127.0.0.1 monoredis" | sudo tee -a /etc/hosts -
WeasyPrint — системная зависимость для генерации PDF:
sudo apt-get install -y python3 python3-venv libpango-1.0-0 libcairo2 libffi-dev libjpeg-dev libopenjp2-7-dev libharfbuzz-dev sudo python3 -m venv /opt/weasyprint-venv && sudo /opt/weasyprint-venv/bin/pip install WeasyPrint==67 sudo ln -sf /opt/weasyprint-venv/bin/weasyprint /usr/local/bin/weasyprint -
Контракты (test-режим — позволяет boot с 1 членом совета):
cd components/contracts && sudo rm -rf build && bash build-all.sh test -
Shared-библиотеки (порядок важен):
pnpm --filter cooptypes run build pnpm --filter @coopenomics/factory run build pnpm --filter @coopenomics/sdk run build pnpm --filter @coopenomics/notifications run build -
.envфайлы — скопировать из.env-example, адаптировать hostnames:- Controller/Parser (в Docker): хосты по именам контейнеров из docker-compose (порт БД 5432)
- Boot (на хосте):
127.0.0.1, PG порт5532, mongo через/etc/hosts - Desktop:
127.0.0.1 - CHAIN_ID: берётся из
curl http://localhost:8888/v1/chain/get_infoпосле старта ноды - Controller требует
VAPID_PUBLIC_KEYиVAPID_PRIVATE_KEY
-
Запуск:
pnpm run reboot, затемdocker compose up -d --force-recreate coopback cooparser(если .env менялись)
Критические gotchas
- SHiP порт 8070 —
state-history-endpoint = 0.0.0.0:8070в config.ini. Парсер:SHIP=ws://node:8070. - Парсер START_BLOCK: при
START_BLOCK=1на чистой БД стартует с HEAD и делает частичную инициализацию. Для полного replay: временноSTART_BLOCK=2, после первого запуска вернуть1. - SSR desktop в dev — расширения не рендерятся из-за Pinia SSR-сериализации компонентов. Dev — SPA (
quasar dev), production build SSR работает. - Тестовые учётные данные: email
ivanov@example.com, ключ — дефолтный EOSIO dev key (см.components/boot/.env-example), пользовательant(председатель). - Docker hostnames: без
network_mode: host— контейнеры обращаются друг к другу по именам контейнеров из docker-compose. - Установка пакетов: только через фильтр —
pnpm add <pkg> --filter <component>.