No description
Find a file
grok ac8ab3cc02 test(e2e): сценарии K6–K9, S9, A4 и N12-DATE из аудита владельца
Зачем: TASK-GROK-2 §3 — денежные дефекты K6–K9, S9, A4 и дата расчёта
были в AUDIT.md, но не покрыты стендом; без красных сценариев исправления
Codex нечем принимать.

Что (tests/e2e/50-money-and-errors.e2e.ts, всё красное и внесено в
known-defects.json):
- K6/D5: отклонение смены из подписанной ведомости → 409 или сторно.
  Сейчас падает на предусловии: подтверждение смены 500 (K3).
- K7/D2: две записи начисления за один день (две точки) и повторный
  импорт с другой суммой → итог = сумма по книге. Факт: 22200 вместо 33300.
- K8/D1: после подписи меняется ставка, затем проверочный пересчёт
  (предполагаемый контракт C4 GET /payroll/runs/:id/verify). Блокирован K3.
- K9/D3: официант по пресету waiter_upsell: params.shift_rate_minor не
  сохраняется (сам D3, до K3); далее начисление = оплата смены (после K3).
- S9: удаление точки с устройством мигратором → 23502 вместо удаления или
  23503 (публичного API удаления нет — так же, как в live-sync.mjs владельца).
- A4: тела 500 не должны содержать SQLSTATE и текст PostgreSQL.
- N12-DATE: month=2026-13 → 400 (факт 500, 22008); 2026-02-30 уже 400.
Прогон run-e2e: 45 red / 9 green, храповик OK.
2026-09-26 15:24:02 +07:00
.forgejo/workflows ci: задача windows, включаемая переменной, когда появится раннер 2026-09-26 15:20:47 +07:00
api feat(sync): add offline sync backend foundation 2026-09-26 13:10:27 +07:00
apps fix(push): isolate employee data and preserve platform outbox 2026-09-26 12:31:10 +07:00
deploy/pilot fix(push): isolate employee data and preserve platform outbox 2026-09-26 12:31:10 +07:00
docker/postgres fix: enforce tenant isolation and runtime contracts 2026-09-18 01:34:12 +07:00
docs docs(audit): add 2026-09-26 audit, acceptance and executor tasks 2026-09-26 15:13:56 +07:00
installer fix(push): isolate employee data and preserve platform outbox 2026-09-26 12:31:10 +07:00
migrations feat(sync): add offline sync backend foundation 2026-09-26 13:10:27 +07:00
schemas feat: add secure attendance portal and payroll foundation 2026-09-24 15:59:38 +07:00
scripts test(e2e): двойные ID «владелец/мой» в названиях сценариев и known-defects 2026-09-26 15:21:22 +07:00
src feat(portal): rebuild staff operational workspace 2026-09-26 14:13:21 +07:00
tests test(e2e): сценарии K6–K9, S9, A4 и N12-DATE из аудита владельца 2026-09-26 15:24:02 +07:00
.dockerignore ci: add portable deployment and verification pipeline 2026-09-10 23:29:29 +07:00
.editorconfig feat: establish tenant-safe Staff service foundation 2026-09-10 23:29:26 +07:00
.env.example fix: harden terminal recovery and deployment 2026-09-18 11:10:28 +07:00
.gitattributes feat: establish tenant-safe Staff service foundation 2026-09-10 23:29:26 +07:00
.gitignore test(e2e): evidence прогонов вне git, в CI — артефакт 2026-09-26 15:20:28 +07:00
.prettierignore fix: enforce tenant isolation and runtime contracts 2026-09-18 01:34:12 +07:00
.prettierrc.json feat: establish tenant-safe Staff service foundation 2026-09-10 23:29:26 +07:00
AGENTS.md docs: define platform boundaries and contracts 2026-09-10 23:29:28 +07:00
compose.yaml feat: add secure attendance portal and payroll foundation 2026-09-24 15:59:38 +07:00
Dockerfile fix: harden terminal recovery and deployment 2026-09-18 11:10:28 +07:00
eslint.config.js fix: enforce tenant isolation and runtime contracts 2026-09-18 01:34:12 +07:00
LICENSE docs: define platform boundaries and contracts 2026-09-10 23:29:28 +07:00
module.json feat(sync): add offline sync backend foundation 2026-09-26 13:10:27 +07:00
package-lock.json fix(push): isolate employee data and preserve platform outbox 2026-09-26 12:31:10 +07:00
package.json fix(push): isolate employee data and preserve platform outbox 2026-09-26 12:31:10 +07:00
README.md feat: add secure attendance portal and payroll foundation 2026-09-24 15:59:38 +07:00
SECURITY.md docs: define platform boundaries and contracts 2026-09-10 23:29:28 +07:00
settings.schema.json feat: reconcile and review attendance sessions 2026-09-24 17:00:08 +07:00
tsconfig.build.json feat: establish tenant-safe Staff service foundation 2026-09-10 23:29:26 +07:00
tsconfig.json fix: enforce tenant isolation and runtime contracts 2026-09-18 01:34:12 +07:00
vitest.config.ts fix: enforce tenant isolation and runtime contracts 2026-09-18 01:34:12 +07:00

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 терминала.