Участие в разработке
Процесс локальной разработки для участников, работающих с кодовой базой AACWorkflow.
Модель разработки
Локальная разработка использует один общий контейнер PostgreSQL и одну базу данных на каждый клон репозитория.
- Основной клон обычно использует
.envиPOSTGRES_DB=aacworkflow - Каждое рабочее дерево Git использует свой собственный
.env.worktree - Каждый клон подключается к одному и тому же хосту PostgreSQL:
localhost:5432 - Изоляция происходит на уровне базы данных, а не запуском отдельного проекта Docker Compose
- Порты бэкенда и фронтенда всё ещё уникальны для каждого рабочего дерева
Предварительные требования
- Node.js
v20+ pnpmv10.28+- Go
v1.26+ - Docker
Первоначальная настройка
Основной клон
cp .env.example .env
make setup-mainЧто делает make setup-main:
- Устанавливает JavaScript-зависимости через
pnpm install - Обеспечивает работу общего контейнера PostgreSQL
- Создаёт базу данных приложения, если она не существует
- Запускает все миграции для этой базы данных
Запуск приложения:
make start-mainРабочее дерево
Из директории рабочего дерева:
make worktree-env
make setup-worktreeЗапуск приложения рабочего дерева:
make start-worktreeЕжедневный процесс
Основной клон
make start-main
make stop-main
make check-mainФункциональное рабочее дерево
git worktree add ../aacworkflow-feature -b feat/my-change main
cd ../aacworkflow-feature
make worktree-env
make setup-worktree
make start-worktreeПовседневная работа:
make start-worktree
make stop-worktree
make check-worktreeОдновременный запуск основного клона и рабочего дерева
Это полноценный процесс. Оба клона используют один и тот же контейнер PostgreSQL, но разные базы данных и порты:
| Основной | Рабочее дерево | |
|---|---|---|
| База данных | aacworkflow | aacworkflow_my_feature_702 |
| Порт бэкенда | 8080 | генерируется (напр. 18782) |
| Порт фронтенда | 3000 | генерируется (напр. 13702) |
Команды
# Фронтенд (все команды проходят через Turborepo)
pnpm install
pnpm dev:web # Dev-сервер Next.js (порт 3000)
pnpm dev:desktop # Electron dev (electron-vite, HMR)
pnpm build # Сборка всех фронтенд-приложений
pnpm typecheck # Проверка TypeScript
pnpm lint # ESLint
pnpm test # TS-тесты (Vitest)
# Бэкенд (Go)
make dev # Запуск Go-сервера (порт 8080)
make daemon # Запуск локального демона
make build # Сборка сервера + CLI-бинарников
make test # Go-тесты
make sqlc # Перегенерация кода sqlc
make migrate-up # Запуск миграций базы данных
make migrate-down # Откат миграцийТестирование
Запуск всех локальных проверок:
make checkЭто запускает:
- Проверку типов TypeScript
- Модульные тесты TypeScript
- Go-тесты
- E2E-тесты Playwright
Устранение неполадок
Отсутствует файл окружения
Создайте ожидаемый файл окружения:
# Основной клон
cp .env.example .env
# Рабочее дерево
make worktree-envПроверка, какую базу данных использует клон
cat .env # или .env.worktreeИщите POSTGRES_DB, DATABASE_URL, PORT, FRONTEND_PORT.
Список всех локальных баз данных
docker compose exec -T postgres psql -U aacworkflow -d postgres \
-At -c "select datname from pg_database order by datname;"Деструктивный сброс
Остановите PostgreSQL, сохранив локальные базы данных:
make db-downСброс только текущей базы данных клона (удаляет POSTGRES_DB, создаёт заново, повторно запускает все миграции). Базы данных других рабочих деревьев не затрагиваются.
make stop
make db-reset
make start
make db-resetотказывается запускаться, еслиDATABASE_URLуказывает на удалённый хост.
Полная очистка всех локальных данных PostgreSQL:
docker compose down -vПредупреждение: Это удаляет общий Docker-том и все базы данных. После этого вам нужно снова запустить
make setup-mainилиmake setup-worktree.