Зачем: каждый открытый дефект аудита должен иметь исполняемый сценарий на реальной БД, который проверяет ПРАВИЛЬНОЕ поведение. Тогда красный тест = открытый дефект, а исправление видно по смене цвета, без ручной перепроверки. - N1 POST /employees -> 201; N2 подтверждение смены, расчёт, утверждение и сумма начисления 8 ч x синтетическая ставка; N4 пересекающиеся периоды не начисляют смену дважды (сейчас блокирован N2 — это видно в сообщении assert как «предусловие, см. N2»); - N3 SSRF: подписка на https://127.0.0.1:<порт> должна отклоняться, и локальный слушатель не должен получить соединение; - N9, N12, N10, N11, F2 (процесс без токенов), F3, F4 (отдельный процесс), F7, F10. Сотрудники для сценариев, не относящихся к N1, создаются импортом, чтобы один дефект не маскировал остальные. Все данные синтетические (E2E-*), ставка 123,45 ₽/ч заведомо не реальная. |
||
|---|---|---|
| .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 терминала.