Usługi

Weryfikacja, Sprint 1: pierwsza działająca część

Tygodnie 3-4: polska lub unijna firma po numerze VAT otrzymuje poziom L1 automatycznie, w mniej niż 60 sekund, z dowodami w magazynie i odznaką w strumieniu - na źródłach, które już działają bez klucza i bez umowy.

To plan sprintu z listą kryteriów gotowości, a nie raport z wykonanej pracy: konektory VIES/Biała lista/KRS, maszyna stanów sprawy, magazyn dowodów WORM i rola operatora weryfikacji nie są wdrożone w tym demo. Data dokumentu: 10 września 2026.

Warunki wejścia: co już jest

Sprint zaczyna się od implementacji według gotowego, maszynowo zweryfikowanego kontraktu, a nie od projektowania. Otwartą kwestią pozostaje hosting backendu - decyzja dnia 1.

Artefakt Stan
Спринт 0: БД, міграція 001, довідники, імпорт 10 773 заявокВиконано, 25 із 25 приймальних тестів на живій БД
002_verification.sql — 12 таблиць, 2 тригери, подання досьєНаписано, застосовано і перевірено, 42 із 42 тестів
verification.schema.json, openapi-verification.yamlНаписано, 36 із 36 контрактних перевірок
verification_sources.json (13), verification_checks.json (14)Написано, звірено з DDL і OpenAPI
probe_sources.pyПрогнано на живих джерелах

Zakres sprintu

Pozycja Czas trwania Co obejmuje Gotowe, gdy
V1 Каталоги і конфігурація2 дЗавантажувач каталогів джерел і перевірок при старті з seed/, ідемпотентний upsert; ключі джерел — у секретах середовища, а не в коді; джерело needs_key без ключа стартує як unavailable, не падає; ендпойнт GET /verification/sources віддає фактичний стан.Сервіс піднімається на чистій БД, каталоги збігаються з файлами байт у байт, GET /verification/sources показує 13 джерел із реальним станом.
V2 Три коннектори живих джерел4 дVIES (identity.vat_active, без ключа, лише асинхронно), Biała lista (monitor.vat_status + знімок рахунків), KRS (identity.registry_match_pl, 204 = не знайдено, stanZDnia → source_as_of); спільний контракт, кеш за TTL, експоненційна пауза, 3 спроби, потім unavailable.Офлайн-фікстури для кожного джерела зелені, прапорець --live робить один реальний запит, недоступність джерела дає unavailable з кодом причини, а не виняток.
V3 Машина справи5 дСтворення справи, черга перевірок, паралельний запуск, збірка результатів; правила рішення з ТЗ §5 (рішучі перевірки, blocking_unavailable, override_blocking з подвійним скороченням строку і окремою подією в журналі); автоматичне схвалення без оператора, коли всі обов'язкові перевірки пройдено; перехід у manual_review з переліком причин.Компанія з чинним NIP проходить від POST /verification/cases до рівня L1 без участі людини, а компанія з недоступним блокуючим джерелом гарантовано в цю точку не потрапляє.
V4 Докази і зберігання2 дОб'єктне сховище з увімкненим WORM, запис сирого відгуку, SHA-256, розмір, тип; source_as_of окремо від fetched_at; retention_until = дата перевірки + 5 років, завдання прибирання за розкладом; тимчасові підписані посилання в GET /verification/checks/{id}/evidence.Доказ, записаний тиждень тому, віддається за хешем, а спроба видалити його роллю застосунку відхиляється базою.
V5 API і ролі3 д10 шляхів із openapi-verification.yaml, валідація запитів і відповідей проти схеми в рантаймі; роль оператора верифікації окремо від адміністратора, журнал розкриття контактів подією contact_reveal; ліміт частоти на подання справ.Відповідь, що не відповідає схемі, не виходить із сервісу — вона дає 500 і запис у журнал, а не мовчазне порушення контракту.
V6 Досьє і бейдж у SPA (фронтенд)3 дБейдж у стрічці — чотири стани, без відтінків і зірочок; сторінка досьє з переліком перевірок, джерелом, датою перевірки і датою стану джерела, позначкою застарілого; екран стану власної справи для заявника.Досьє показує рівно те, що є в базі, а недоступне джерело виглядає як недоступне — тим самим способом, яким це вже роблять вкладки погоди й кордонів.
V7 CI-гейти1.5 дДва обов'язкові статуси в правилі захисту гілки: «Контракт модуля верифікації» і «Інваріанти верифікації»; живий зонд джерел — у щоденний запуск за розкладом, не в перевірку pull request; п'ять негативних PR (unavailable зі знахідками; схвалення з непорожнім blocking_unavailable; критична зміна без призупинення; pass без строку дії; блокуюче джерело, позначене як лише ручне).Усі п'ять негативних PR червоні, а звичайний PR зелений.
V8 Юридичний трек (паралельно, день 1)паралельноЗвернення до ДП НАІС за договором на API ЄДР (18 000 грн з ПДВ на календарний місяць); запит ключа до Державного реєстру санкцій РНБО; резервний тариф агрегатора на випадок затримки договору (від 399 грн на місяць за 400 перевірок); оцінка легітимного інтересу (LIA) і шаблон DPA з провайдером даних.Усі три звернення надіслані й мають вхідний номер. Результат до кінця спринту не очікується — очікується запущений процес.

Kalendarz

Dzień Praca
1Рішення про хостинг. Розгортання бекенду і сховища. Юридичний трек V8 — усі три звернення
2V1 каталоги і конфігурація
3–4V2 VIES і Biała lista
5V2 KRS, кеш і TTL
6–7V3 машина справи, правила рішення
8V3 override_blocking, V4 докази і WORM
9V5 API і ролі; фронтенд V6 паралельно з дня 7
10V7 гейти, негативні PR, наскрізний прогін, демонстрація

Zasoby: 1 backend w pełnym wymiarze, 0,5 integracje, 0,5 frontend od dnia 7, 0,5 QA i CI. Ścieżkę prawną prowadzi właściciel produktu.

Co NIE wchodzi w Sprint 1

  • Українські джерела: ЄДР, санкції РНБО, ЄДРСР — Спринт 2, після ключів і договору
  • Рівень L2, документи, право підпису, контрольний платіж — Спринт 2
  • Планувальник дельта-моніторингу і сповіщення — Спринт 3; знімки реквізитів уже пишуться в Спринті 1, тож планувальнику буде що порівнювати
  • Кабінет оператора зі складним ручним розглядом — у Спринті 1 достатньо мінімального переліку справ і кнопки рішення
  • Напрям B (ingest-агент) стартує з тижня 4 окремою людиною і не конкурує за бекенд-ресурс

Kryteria akceptacji sprintu

  1. Компанія з чинним польським NIP отримує L1 автоматично за менш ніж 60 секунд від подання, без дотику оператора
  2. Компанія з statusVat не Czynny отримує fail за рішучою перевіркою і не отримує жодного рівня
  3. При недоступному блокуючому джерелі справа переходить у manual_review, а не схвалюється
  4. Схвалення з override_blocking дає рівень із удвічі коротшим строком і окремою подією в журналі
  5. Доказ кожної перевірки віддається за хешем; видалити його роллю застосунку неможливо
  6. Знімок офіційних банківських рахунків із Biała lista збережено — навіть без планувальника, бо це база для Спринту 3
  7. Бейдж у стрічці й досьє показують джерело і дві дати; жодного агрегованого балу в інтерфейсі немає
  8. «Контракт модуля верифікації» (36) і «Інваріанти верифікації» (42) — обов'язкові статуси в правилі захисту гілки, обидва зелені на main
  9. П'ять негативних PR блокуються CI
  10. Усі наявні перевірки Спринту 0 і контрактні перевірки репозиторію лишаються зеленими

Ryzyka sprintu i działania

Ryzyko Wczesny sygnał Działanie
Рішення про хостинг затягуєтьсяДень 1 закінчився без середовищаТимчасово розгорнути на VPS із бекапами; це оборотне, на відміну від простою всього спринту
VIES відповідає повільно або з перебоямиЗатримка перевищує 2 с у прогонахПеревірка вже асинхронна за задумом; результат unavailable з повтором, онбординг не блокується
KRS повертає 204 як помилку в коннекторіХибні fail у фікстурахЯвний тест на «компанію не знайдено» в наборі фікстур із дня 1
Обсяг V3 недооціненоДо дня 7 машина справи не проходить наскрізьПожертвувати V6 (бейдж у SPA) на користь V3; демонструвати через API
Договір із НАІС не рухаєтьсяНемає вхідного номера до дня 3Одразу вмикати резервний тариф агрегатора, щоб Спринт 2 не зсунувся

Koszt sprintu według źródeł

Źródło Koszt w Sprincie 1
VIES, Biała lista, KRS0 — публічні, без ключа
ДП НАІС0 у спринті; з моменту договору — 18 000 грн з ПДВ на місяць
Агрегатор (резерв)від 399 грн на місяць за 400 перевірок
OpenSanctions0 у спринті; далі 0,10 EUR за запит або власне розгортання
Об'єктне сховище доказівМізерна за обсягами спринту

Przekazanie ze sprintu do Sprintu 2

Спринт 2 (тижні 5–7) починається з того місця, де Спринт 1 зупинився, і додає: український напрям через отримані ключі, рівень L2 з документами і правом підпису, судовий і санкційний скринінг із ручним розглядом. Дельта-моніторинг і сповіщення — Спринт 3, тижні 7–8, паралельно з початком напряму C.

Pliki modelu