Зачем: прежний CI запускал миграции и тесты под POSTGRES_USER сервиса (суперпользователь), не проверял откат миграций, не запускал e2e на реальной БД, держал плавающие теги actions (F13) и выполнял docker build в контейнере без Docker daemon. - verify: bootstrap-админ сервиса только создаёт роли (provision-pg.mjs, пароли случайные); миграции up -> откат всех -> up -> up (no-op) ролью krona_migrator без SUPERUSER; `npm run check` с DATABASE_TEST_URL (app-роль) и DATABASE_TEST_MIGRATION_URL (очистка, см. N5); npm audit. - format: prettier вынесен в отдельную задачу — он красный по 25 файлам (F14) и не должен маскировать статус verify/e2e. - e2e: реальный сервер + PostgreSQL 17 через scripts/test/run-e2e.mjs. Выбран «храповик» known-defects.json, а не отдельная задача с continue-on-error: так CI зелёный, только если стенд работает и каждый красный сценарий — известный открытый дефект; новый красный сценарий (регрессия) или исправленный, но не вычеркнутый дефект делают задачу красной. continue-on-error скрыл бы и поломку самого стенда. - docker-build: отдельная задача на метке `docker-host` только для push, после verify; без такого раннера она ждёт в очереди, не блокируя остальные. - actions/checkout v4.4.0 и actions/setup-node v4.4.0 закреплены SHA (git ls-remote; одинаковы на github.com и code.forgejo.org). Проверено: actionlint 1.7.12 (метки docker/docker-host объявлены как self-hosted) — 0 замечаний; scripts/test/ci-local.sh повторяет шаги verify/format/e2e на локальной PostgreSQL 17.11 (Forgejo-раннер реально не запускался — не проверено). |
||
|---|---|---|
| .forgejo/workflows | ||
| api | ||
| apps | ||
| deploy/pilot | ||
| docker/postgres | ||
| docs | ||
| installer | ||
| migrations | ||
| schemas | ||
| scripts | ||
| src | ||
| tests | ||
| .dockerignore | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc.json | ||
| AGENTS.md | ||
| compose.yaml | ||
| Dockerfile | ||
| eslint.config.js | ||
| LICENSE | ||
| module.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| SECURITY.md | ||
| settings.schema.json | ||
| tsconfig.build.json | ||
| tsconfig.json | ||
| vitest.config.ts | ||
Krona Staff
Блок сотрудников для Krona Business Platform. Он включает терминал посещаемости и проверяемое ядро управленческого расчёта зарплаты по подтверждённым требованиям владельца. Официальный расчёт налогов и взносов, кадровые документы, отпуска и планирование графиков в текущий объём не входят.
Репозиторий сохраняет платформенные границы: два runtime-режима, порты Core, PostgreSQL/RLS, outbox/inbox/idempotency/audit, проверяемые OpenAPI и module manifest, контейнеризацию и CI. Расчёт остаётся чистой детерминированной функцией, а данные каждого tenant изолируются на уровне транзакции, внешних ключей и RLS.
Быстрый старт
cp .env.example .env
docker compose --profile tools run --rm migrate
docker compose up --build app postgres
Открыть: shell http://localhost:8080/, OpenAPI JSON /api/v1/staff/openapi.json, проверки /api/v1/staff/live, /api/v1/staff/ready, /api/v1/staff/version.
Без Docker: Node.js 22+ и PostgreSQL 17; затем npm ci, создайте отдельные роли мигратора и приложения, выполните npm run db:migrate и npm run dev.
Команды
npm run check— lint, typecheck, tests, миграции, контракты и build.npm run db:migrate— применить ещё не выполненные миграции. Откат удаляет только последнюю миграцию и требуетALLOW_MIGRATION_DOWN=true.npm run check:contracts— проверить manifest/settings/OpenAPI.
Архитектурные решения: docs/ARCHITECTURE.md, интеграция: docs/PLATFORM-INTEGRATION.md, будущий объём: docs/ROADMAP.md.
Расчётный контур
Ядро в src/domain/payroll поддерживает почасовую и посменную оплату, проценты, гарантии, премии, сдельные позиции, общий фонд с распределением по времени присутствия, прогрессивные шкалы, ночные, сверхурочные и праздничные часы. Правила и назначения версионируются, а каждая строка ведомости сохраняет объяснение расчёта.
Требования: REQ-001, каталог схем: PAYROLL-SCHEMES-CATALOGUE, платформенное решение: ADR-002.
Биометрический терминал
Windows-приложение для SLK20R находится в apps/KronaStaffTerminal. Оно добавляет сотрудников, регистрирует несколько отпечатков по трём сканам, учитывает приход/уход и отправляет уведомление в Telegram и/или MAX. Инструкция по запуску и настройке находится в README терминала.