Перейти до вмісту
SoloWay Tech

Верифікація оцінки · 15.10.2026

ОНІКС-ІВА · ризик-модуль · години розробника

Розробник оцінив свою роботу реалістично, а з AI зробить її приблизно за половину годин

Ми незалежно перерахували кожен рядок колонки Development під той самий профіль, який заявив автор: middle, знає код, без AI, code review і тести входять у години. Потім перевірили на історії git, скільки часу він реально витрачав на схожі задачі.

Він заклав → ми кажемо (без AI)

826 → 785

годин розробки, усі три аркуші, варіант 2 переліків

Різниця

+5 %

у межах похибки — оцінка реалістична

Прогноз, якщо працює з AI

425–635 год

як він працює зараз: AI у 93 % його комітів

Таблиця 1 · по аркушах

Основний аркуш він порахував майже точно, менші трохи завищив

«Ми кажемо» — найімовірніша незалежна оцінка; поруч діапазон від оптимістичної до песимістичної. Сюди ж додано роботи, які потрібні за вимогами, але яких немає в його рядках.

Колонка Development, години. «Офшори+Території» — три альтернативні варіанти, клієнт обирає один.
Аркуш Він заклав Ми кажемо Наш діапазон Він − ми Вердикт
Ризиковість576,5566398–806+10,5реалістично
Логіка співставлення11410167–150+13трохи завищено, +13 %
Офшори+Території, варіант 1170,5142,5101–205+28завищено, +20 %
Офшори+Території, варіант 2135,511882–171+17,5трохи завищено, +15 %
Офшори+Території, варіант 3102,510169–148+1,5реалістично
  • з переліками, варіант 1: він 861, ми 809,5 (+6 %), з AI 450–670 год
  • з переліками, варіант 2: він 826, ми 785 (+5 %), з AI 425–635 год
  • з переліками, варіант 3: він 793, ми 768 (+3 %), з AI 405–600 год
У самому документі. Формула загальної суми аркуша «Ризиковість» (C74) не включає блок «Інфраструктура» (8 год): правильна сума 576,5, а не 568,5. Коментар до суми каже «автотести в опціях, тестування не входить», але автотестів серед опцій немає, а QA рахується окремою колонкою — коментар застарів.

Таблиця 2 · він заклав / ми кажемо

Зайве і пропущене в рядках майже врівноважується

Рядки, де ми розходимося на 3 години і більше, від «заклав забагато» до «забув». Мінус — у нього зайве, плюс — бракує.

Головні розбіжності: «Ризиковість», «Логіка співставлення» і варіант 2 переліків.
Аркуш · рядок Задача Він заклав Ми кажемо Різниця Чому
Ризиковість · 13Виправлення запитів YouScore за розд. 6 Змін2819−9Двокрокові запити до YouScore вже працюють для 8 джерел; нових запитів лише 5.
Логіка · 3Пошук у РНБО і ДФМ: точний збіг за РНОКПП / паспортом, нечіткий пошук ПІБ (Вагнер–Фішер, trigram, Soundex / Metaphone),…2820−8Soundex і Metaphone створені для англійської і для кирилиці не працюють; достатньо trigram + Вагнер–Фішер. Ще ≈ 2 год дублюють нормалізацію з аркуша переліків.
Офшори, в.2 · 31Парсер ТОТ2013−7У переліку ТОТ (графа 5) уже є код населеного пункту за КАТОТТГ — ієрархію з назв відновлювати не треба.
Ризиковість · 50Filament: колонка й фільтри строку перегляду, картка «прострочено / ≤ 30 днів», блок у картці клієнта106−4Картка «≤ 30 днів» понад вимоги: у змінах прямо сказано, що нагадувань наперед не роблять.
Ризиковість · 66Рефакторинг: KepSigner (detached / attached) з CompanySignatureService, читання сертифіката95−4Метод підпису довільним ключем уже є в сервісі підпису компанії — рефакторинг зводиться до виділення класу.
Логіка · 13Латиниця для кириличних записів, передача збігів у розрахунок, збереження попередніх звірок і рішень, «раніше спростова…84−4Транслітерацію вже оцінено в аркуші переліків, «раніше спростовано» — у «Ризиковості», рядок 28.
Офшори, в.2 · 30Нормалізатори1410−4Назви населених пунктів нормалізувати не треба: у переліку ТОТ є код КАТОТТГ. Лишаються транслітерація і РНОКПП / паспорт.
Офшори, в.2 · 43Імпорт КАТОТТГ106−4У кожному рядку кодифікатора КАТОТТГ уже є коди всіх рівнів — денормалізувати майже нічого.
Ризиковість · 22Вкладка «Оцінка ризику»: картки, таблиця факторів (попередній і остаточний бал), модалки, журнал, історія прогонів, сир…3229−3Каркас сторінки береться з наявної вкладки YouScore; нові лише таблиця факторів, два підсумки і журнал.
Ризиковість · 24Журнал змін факторів, записи незмінні96−3Показ журналу вже рахується у вкладці (рядок 22); тут лишається таблиця із забороною змін.
Ризиковість · 25Статус «Ручна перевірка» + блокування «Підписати анкету» і «Верифікувати» + банер із причиною129−3Статус перевірки клієнта вже закладено в рядках 10 і 16; тут лишаються блокування і банер.
Ризиковість · 33Модель Висновку, номер А-33/1, версії, статуси, PG sequence129−3Модель, статуси, нумерація і тести — 8–10 год; 12 год — верхня межа.
Ризиковість · 41Фільтр «Висновки до підтвердження» і масова дія «Підтвердити»74−3Масове «Підтвердити» вимоги прямо виключають («нового вигляду черги не робимо»); потрібен лише фільтр.
Ризиковість · 46«Звернення за послугою» → «потрібна актуалізація» + сповіщення107−3Замовлень на купівлю чи продаж у кабінеті немає, тож це «звернення» система не бачить — лише ручна позначка.
Ризиковість · 67PersonalSignatureService і журнал спроб підпису107−3Журнал спроб частково вже рахується в рядку 38 (засвідчення Висновку).
Логіка · 8Звірка з усіма переліками в прогоні перевірки, перетворення збігів на 7.4 / 7.5 / 8.2 і підказку 8.8, поле «обставина»1411−3Підключення переліків до перевірки вже є в «Ризиковості» (рядок 17), поле «обставина» — у рядку 34.
Офшори, в.2 · 29Міграції й моделі129−36–7 однотипних таблиць і два розширення PostgreSQL — 1–1,5 дня.
Офшори, в.2 · 45Інтеграція ТОТ у клієнта7,54,5−3Пошук населеного пункту в переліку і перерахунок для клієнтів дублюють рядок 6 «Логіки співставлення».
Ризиковість · немаєКЕП: налаштування бібліотеки підпису під АЦСК особистих ключів підписантів03+3Пропущено в оцінці
Офшори, в.2 · немаєВідкат до попередньої версії переліку (без нього помилковий файл виправляється лише поштучно)03+3Пропущено в оцінці
Ризиковість · 15Решта детекторів (2.x, 3.x, 4.x, 5.x, 6.x, 7.x, 10.x), парсер РНБО, PEP за expireDate і деклараціями45,550+4,531 автоматичний детектор — 45,5 год впритул; найризиковіші судові справи (роль клієнта) і чинний / історичний PEP.
Логіка · немаєЗведення санкцій РНБО і терористів з YouScore та власних переліків в один фактор; обробка збігу з зоною бойових дій05+5Пропущено в оцінці
Ризиковість · 48Імпорт з Depend: перевірка всіх імпортованих ФО з throttle, попередження про кількість запитів, прогрес, дата імпорту я…1218+6Імпорт зараз синхронний, у файлі депозитарію немає паспорта й дати народження; ≈ 3 000 клієнтів × ≈ 19 платних запитів YouScore з обмеженням швидкості.
Ризиковість · немаєДодаток 1: тестові відповіді YouScore для перевірки системи, розпізнавання неоднозначних збігів, автоматичні «нульові» фактори012+12Пропущено в оцінці
Ризиковість · немаєРучний перегляд: працівник сам встановлює фінальний рівень, дія «Завершити перегляд», прибрати наявний довільний бал 0–100, скорочення строку перегляду, дата останнього звернення014,5+14,5Пропущено в оцінці

Усі рядки по кожному аркушу

Розгорніть аркуш, щоб побачити кожен рядок оцінки з нашою цифрою і поясненням.

Ризиковість: 576,5 → 566 год
Аркуш · рядокЗадачаВін заклавМи кажемоРізницяЧому
Ризиковість · 4Черга risk, окремий воркер у docker-compose (dev і prod)22,5+0,5Новий сервіс у двох compose-файлах, onQueue('risk'), окремий retry_after для ризик-черги, правка compose на prod-сервері, queue:restart у CI
Ризиковість · 5Scheduler: сервіс schedule:work у docker-compose21,5−0,5Той самий шаблон, що й у рядку 4.
Ризиковість · 6Сповіщення адмінам у БД: таблиця notifications, databaseNotifications(), клас RiskNotification440Міграція, ->databaseNotifications() з polling у панелі, базовий клас, вибір отримувачів (без ролей: усі адміни, див.
Ризиковість · 10Enum-и і міграції: прогони, індикатори 0/1, знімок Дії, оцінки й фактори, compliance_status, анулювання старих результа…161605–6 таблиць з моделями й фабриками (≈ 9 год), 6–8 enum-ів (≈ 3 год), анулювання старих даних (≈ 2 год), конфіг і тести (≈ 2 год)
Ризиковість · 11Довідник 106 факторів (enum RiskFactor) і тест відповідності Д187−1Переважно введення даних: 106 довгих назв дослівно.
Ризиковість · 12Прогони: StartRiskCheck, FetchYouScoreSourceJob (batch, ретраї), RunDetectorsJob, реєстр детекторів, стан «перевірку не…22220Batch-оркестрація (≈ 6 год), job на одне джерело з неблокуючим polling через release() (≈ 5 год), реєстр детекторів із залежностями (1.6 і 11.3 залежать від PEP-детектора) (≈ 4 год), «не виконано» і повтор невдалих (≈ 3…
Ризиковість · 13Виправлення запитів YouScore за розд. 6 Змін2819−9Двокрокові запити до YouScore вже працюють для 8 джерел; нових запитів лише 5.
Ризиковість · 14Знімок Дії і детектори 1.6, 11.2, 11.3, 1.8, 1.9, 11.11416+2Знімок і hook (≈ 3 год).
Ризиковість · 15Решта детекторів (2.x, 3.x, 4.x, 5.x, 6.x, 7.x, 10.x), парсер РНБО, PEP за expireDate і деклараціями45,550+4,531 автоматичний детектор — 45,5 год впритул; найризиковіші судові справи (роль клієнта) і чинний / історичний PEP.
Ризиковість · 16RiskCalculator (тригери, PEP-max, 3 фактори по 8–10, попередній і остаточний бал), AssessmentBuilder, ComplianceStatusS…2324+1Калькулятор і правила (≈ 8 год), причини перегляду й зупинки відкриття (≈ 3 год), Builder (≈ 4 год), статус клієнта (≈ 3 год), табличні тести на прикладах (≈ 6 год).
Ризиковість · 17Автозапуск після підпису анкети, класи DB-сповіщень, legacy-поля clients, точки розширення для блоків 1–2, навігаційна…76,5−0,5Hook (≈ 1.5 год), 2–3 класи сповіщень (≈ 2 год), синхронізація legacy-полів і прибирання старого PDF RiskAssessmentReportService з прогону (≈ 1.5 год), решта (≈ 1.5 год).
Ризиковість · 18Позначка «дані джерела не оновлюються» (4.2, 7.3)110Розумна інженерна річ: впливає на «надійне джерело» для автопідтвердження (Шкала 4.2).
Ризиковість · 22Вкладка «Оцінка ризику»: картки, таблиця факторів (попередній і остаточний бал), модалки, журнал, історія прогонів, сир…3229−3Каркас сторінки береться з наявної вкладки YouScore; нові лише таблиця факторів, два підсумки і журнал.
Ризиковість · 23Дії над фактором: підтвердити, спростувати, перекваліфікувати, скасувати, додати з довідника + перерахунок2120−1доменний сервіс на 5 дій із переходами станів 6 год, модалки Filament з підставою й джерелами 5 год, інтеграція з перерахунком і позначкою «змінено» для розд.
Ризиковість · 24Журнал змін факторів, записи незмінні96−3Показ журналу вже рахується у вкладці (рядок 22); тут лишається таблиця із забороною змін.
Ризиковість · 25Статус «Ручна перевірка» + блокування «Підписати анкету» і «Верифікувати» + банер із причиною129−3Статус перевірки клієнта вже закладено в рядках 10 і 16; тут лишаються блокування і банер.
Ризиковість · 26Колонка й фільтр «Статус перевірки» у списку53,5−1,5badge-колонка, SelectFilter і тест за готовим патерном
Ризиковість · 27Фактор 1.8: дії «отримано / перевірено / повернути», сповіщення про завантаження770потік запиту документа готовий, нові тут лише стан 1.8 і його вплив на блокування, три дії й подія завантаження.
Ризиковість · 28Повторна перевірка поверх старих рішень: попередження, автоскасування, автоперекваліфікація18180Деталі в п.
Ризиковість · 29Нейтральне повідомлення клієнту в кабінеті (API + фронт)53−2нейтральний стан у кабінеті вже є.
Ризиковість · 33Модель Висновку, номер А-33/1, версії, статуси, PG sequence129−3Модель, статуси, нумерація і тести — 8–10 год; 12 год — верхня межа.
Ризиковість · 34ConclusionBuilder: автозаповнення розділів 1–82122+1Найбільше логіки тут: три автоматичні підстави перегляду, зокрема «інше: високий рівень за сумою балів»; поле «безумовний правовий наслідок» із трьома станами (мапінг факторів 7.2/7.4/7.5/5.x/3.5/8.x плюс неоднозначні з…
Ризиковість · 35Розділи 7–8: рекомендація, заходи, «потрібен Директор», вибір 1 з 5 шаблонів1412−2Матриця умов для шаблонів 1–5, зокрема одне речення в шаблоні 3; «встановити» чи «продовжити» залежно від підстави оцінки; правило історичного PEP.
Ризиковість · 36Сторінка Висновку з формами (редагування розд. 2, 3, 5, 7, 8) і вкладка «Висновки»3032+2Рядок не згадує розділи 1 і 6, хоча Д2:145 прямо каже, що в розділі 6 «ручні зміни вносяться у погоджений спосіб»: це «інше» в підставі фінального рівня і рівень, який ставить працівник.
Ризиковість · 37PDF Д2 за формою від 06.10 (чекбокси, таблиця розд. 4, динамічні рядки)16160Розклад: view-model або presenter ~3 год, Blade-шаблон 9 розділів ~6-7 год, розриви сторінок у DomPDF для високих рядків розділу 4 ~2-3 год, звірка з формою клієнта і правки ~2 год, тести рендеру ~1-2 год.
Ризиковість · 38Засвідчення: «Підтвердити» або КЕП, вибір підписанта, журнал, знімок і hash, незмінність1412−2Запис «підтверджено» з ID, номером, версією і ID запису журналу; заморожений знімок, PDF і sha256; guard незмінності; переходи після засвідчення (у Д3, у плановий перегляд).
Ризиковість · 39Нова версія після повернення (копія → v2, повторна перевірка), returned / superseded, історія1210−2Копіювання стану, повторний прогін (сам прогін уже є в C12), прив'язка рішення про повернення до версії v1, перегляд засвідченої версії з історії
Ризиковість · 40Постмодерація: вплив Висновку на статус перевірки76−1Статус або прапорець і переходи.
Ризиковість · 41Фільтр «Висновки до підтвердження» і масова дія «Підтвердити»74−3Масове «Підтвердити» вимоги прямо виключають («нового вигляду черги не робимо»); потрібен лише фільтр.
Ризиковість · 45Поля строку перегляду, ReviewScheduleService: 5, 3 або 1 рік від дати засвідчення Висновку86−22–3 поля, сервіс, «не застосовується» для неприйнятно високого, виклик після засвідчення (рядок 38) і після імпорту (рядок 48), тести на межі дат за прикладом 19
Ризиковість · 46«Звернення за послугою» → «потрібна актуалізація» + сповіщення107−3Замовлень на купівлю чи продаж у кабінеті немає, тож це «звернення» система не бачить — лише ручна позначка.
Ризиковість · 47Меню запуску перевірки з причинами + причина в розд. 1 Висновку54−1форма з причиною, передача в прогін (рядок 12) і у Висновок (рядок 34)
Ризиковість · 48Імпорт з Depend: перевірка всіх імпортованих ФО з throttle, попередження про кількість запитів, прогрес, дата імпорту я…1218+6Імпорт зараз синхронний, у файлі депозитарію немає паспорта й дати народження; ≈ 3 000 клієнтів × ≈ 19 платних запитів YouScore з обмеженням швидкості.
Ризиковість · 49Щоденні задачі scheduler: «прострочено плановий перегляд», «минув рік від expireDate PEP» + DB-сповіщення3,53,502 команди, розклад, сповіщення, тести з travelTo.
Ризиковість · 50Filament: колонка й фільтри строку перегляду, картка «прострочено / ≤ 30 днів», блок у картці клієнта106−4Картка «≤ 30 днів» понад вимоги: у змінах прямо сказано, що нагадувань наперед не роблять.
Ризиковість · 54Модель рішення, «Рішення № N за Висновком А-…/v», незмінність підписаного770Номер присвоюють лише підписаному рішенню (Д3:78), а PDF для підпису вже має містити номер.
Ризиковість · 55Створення після засвідчення Висновку з усіма підставами; анулювання чернетки при новій версії76−1Подія «Висновок засвідчено», перенесення підстав (кілька одразу), заборона створювати рішення без підстав, новий Д3 після повторної перевірки
Ризиковість · 568 шаблонів обґрунтувань (№7 у редакції 06.10) з підстановками109−18 текстів; правило факторів ОР §10 (включати підтверджені, додані й остаточний код перекваліфікованих, не включати спростовані й скасовані); плейсхолдери, які заповнює людина (4–6: підстава; 7: що отримати і строк; 8: у…
Ризиковість · 57Сторінка рішення: одне рішення, умовні поля, заборона дозволу при НВ, журнал, вкладка17170Синхронної дати рядок прямо не згадує (+1 год, усередині M).
Ризиковість · 58PDF Д376−1Форма проста: 6 підстав, 8 рішень, абзац меж, таблиця з 4 рядків
Ризиковість · 59Підпис КЕП Директора (без печатки), наслідки рішення, сповіщення1011+1Сам підпис дублює C66-C69, тут лише виклик.
Ризиковість · 60Автопідпис анкети компанією після дозволу Директора6,56−0,5Треба винести companySignDocument із трейту в сервіс (зараз він знає про UI, :620-625, :785-797) і викликати з job.
Ризиковість · 61Автопідпис для клієнтів без Директора і черга «Очікує рахунку»550Залежить від ctx п.10, як і C60.
Ризиковість · 65Профілі підписантів: міграції, сидер, enum2,53+0,5Таблиця з ПІБ, посадою, роллю підписанта, РНОКПП для звірки з сертифікатом і user_id.
Ризиковість · 66Рефакторинг: KepSigner (detached / attached) з CompanySignatureService, читання сертифіката95−4Метод підпису довільним ключем уже є в сервісі підпису компанії — рефакторинг зводиться до виділення класу.
Ризиковість · 67PersonalSignatureService і журнал спроб підпису107−3Журнал спроб частково вже рахується в рядку 38 (засвідчення Висновку).
Ризиковість · 68Прийом ключа під час підпису: тимчасові файли, перевірка сертифіката, тексти помилок IIT109−1Тимчасовий файл із видаленням у finally; формати Key-6.dat / .jks / .pfx (ctx п.18); для Key-6.dat потрібен окремий сертифікат або CMP; переклад кодів помилок IIT.
Ризиковість · 69Filament: спільна модалка підпису (Д2 і Д3), вибір підписанта, статус, історія спроб108−2Перетинається з C38 («вибір підписанта»)
Ризиковість · 70Ручна перевірка на тестовому ключі АЦСК ІІТ і на ключах підписантів2,55+2,5Перевірка на реальних ключах підписантів потребує окремої сесії з ними; налаштування позначки часу вже давало дефекти.
Ризиковість · немаєДодаток 1: тестові відповіді YouScore для перевірки системи, розпізнавання неоднозначних збігів, автоматичні «нульові» фактори012+12Пропущено в оцінці
Ризиковість · немаєРучний перегляд: працівник сам встановлює фінальний рівень, дія «Завершити перегляд», прибрати наявний довільний бал 0–100, скорочення строку перегляду, дата останнього звернення014,5+14,5Пропущено в оцінці
Ризиковість · немаєКЕП: налаштування бібліотеки підпису під АЦСК особистих ключів підписантів03+3Пропущено в оцінці
Разом576,5566−10,5
Логіка співставлення: 114 → 101 год
Аркуш · рядокЗадачаВін заклавМи кажемоРізницяЧому
Логіка · 2Таблиці звірок і збігів з версією переліку, алгоритму й порогів, налаштування порогів, довідники вердиктів45+1Міграції, моделі й enum займуть 2–3 год.
Логіка · 3Пошук у РНБО і ДФМ: точний збіг за РНОКПП / паспортом, нечіткий пошук ПІБ (Вагнер–Фішер, trigram, Soundex / Metaphone),…2820−8Soundex і Metaphone створені для англійської і для кирилиці не працюють; достатньо trigram + Вагнер–Фішер. Ще ≈ 2 год дублюють нормалізацію з аркуша переліків.
Логіка · 4Підбір порогів на ~60 парах + таблиця хибних спрацювань і пропусків65−1Рядок 4 говорить про «~60 пар», а рядок 5 про «19 контрольних пар».
Логіка · 5Unit-тести алгоритму: Вагнер–Фішер, пошук осіб (19 пар), пошук країн86−2Development і так включає тести, тому окремий рядок допустимий.
Логіка · 6Звірка адреси з ТОТ і зонами бойових дій: НП за КАТОТТГ через Укрпошту, пошук НП і громади в переліку, «перевірку не ви…119−2Нинішня позначка дає хибні спрацювання для всіх, хто живе в м.
Логіка · 7Звірка країн клієнта (податкове резидентство, країна проживання) з переліком офшорів: розбір вільного тексту, синоніми,…45+1Потрібен довідник країн з українськими, англійськими й російськими назвами та синонімами, а також мапінг 143-2011-р на ISO.
Логіка · 8Звірка з усіма переліками в прогоні перевірки, перетворення збігів на 7.4 / 7.5 / 8.2 і підказку 8.8, поле «обставина»1411−3Підключення переліків до перевірки вже є в «Ризиковості» (рядок 17), поле «обставина» — у рядку 34.
Логіка · 9Автоповтор звірки всіх чинних клієнтів після оновлення переліку, без YouScore, лише новий або змінений збіг на перегляд…1514−1Тут слухач події, пакетна обробка ~3 000 клієнтів, ідемпотентність, відсіювання вже відомих збігів, підсумок і сповіщення.
Логіка · 10Блок «Перевірки за переліками» в картці, історія, ручне уточнення НП, повтор1210−2Секція Filament, таблиця історії, модалка вибору НП з КАТОТТГ і дія «повторити».
Логіка · 11Запуск на проді: первинна звірка всіх клієнтів за 4 переліками, поетапне ввімкнення, перевірка логіки ТОТ23+1Під час першого прогону на 3 тис.
Логіка · 12Технічний опис методики для комплаєнс-документа + демонстрація на реальних звірках24+2Опис методу для регулятора — пряма вимога; 2 год замало навіть для статичного документа.
Логіка · 13Латиниця для кириличних записів, передача збігів у розрахунок, збереження попередніх звірок і рішень, «раніше спростова…84−4Транслітерацію вже оцінено в аркуші переліків, «раніше спростовано» — у «Ризиковості», рядок 28.
Логіка · немаєЗведення санкцій РНБО і терористів з YouScore та власних переліків в один фактор; обробка збігу з зоною бойових дій05+5Пропущено в оцінці
Разом114101−13
Офшори+Території, варіант 1: 170,5 → 142,5 год
Аркуш · рядокЗадачаВін заклавМи кажемоРізницяЧому
Офшори, в.1 · 4Спайк джерел660Потрібен: джерела розходяться (розділ 4), а zakon.rada, drs.nsdc і fiu.gov.ua не віддають сторінки автоматичним запитам (у мене 403 або обрив TLS).
Офшори, в.1 · 5Міграції, моделі, enum, pg_trgm, GIN, aliases_normalized129−36–7 однотипних таблиць і два розширення PostgreSQL — 1–1,5 дня.
Офшори, в.1 · 6NameNormalizer + IdentifierNormalizer, транслітерація КМУ-20101410−4Назви населених пунктів нормалізувати не треба: у переліку ТОТ є код КАТОТТГ. Лишаються транслітерація і РНОКПП / паспорт.
Офшори, в.1 · 7Парсер наказу ТОТ (htm z0380-25)2214−8У переліку ТОТ (графа 5) уже є код населеного пункту за КАТОТТГ — ієрархію з назв відновлювати не треба.
Офшори, в.1 · 8Імпорт РНБО (фізособи, чинні й скасовані) + превʼю з правкою1211−1+4 год проти ОТ!32 за превʼю з правкою виправдано.
Офшори, в.1 · 9Масовий імпорт ДФМ CSV/XLSX87−1Ризик формату: Держфінмоніторинг історично публікує перелік як PDF і, ймовірно, XML, а не CSV чи XLSX (розділ 4.3)
Офшори, в.1 · 10Diff-перегляд і версіонування ДФМ64−2Якщо зробити порівняння версій з рядка 15 спільним, для переліку терористів лишається лише адаптер.
Офшори, в.1 · 11Filament CRUD для ДФМ54−1Стандартний ресурс Filament 4
Офшори, в.1 · 12Ресурс «Санкції РНБО»: список, пошук, завантаження440реалістично
Офшори, в.1 · 13РНБО: ручне додавання і редагування, кожна зміна стає версією440реалістично
Офшори, в.1 · 14Застосування версії + подія WatchlistVersionApplied, статистика, повторний файл, конфлікт, поріг вилучення87−1Ключова точка для повторної звірки: слухач сидить у ЛС!9, тому дублювання немає.
Офшори, в.1 · 15Превʼю й diff ТОТ (вкладки «Додано / Вилучено / Змінено»), правка, виключення рядків, історія версій, ресурс «Імпорти п…2218−4Шаблон попереднього перегляду вже є в імпорті клієнтів.
Офшори, в.1 · 16Ресурс «Окуповані території / БД»: список, пошук, перегляд, завантаження86−2Стандартний ресурс адмінки; сторінка завантаження повторює рядок 15.
Офшори, в.1 · 17Точкове ручне виправлення ТОТ (вибір НП з КАТОТТГ)440Пошуковий Select по ~30 тис.
Офшори, в.1 · 18Ресурс «Офшорні зони»: CRUD + сидер 143-2011-р45+1Немає версії й події для повторної перевірки клієнтів після оновлення офшорів, хоча приклад 17 у вимогах її вимагає.
Офшори, в.1 · 19Великі файли: php.ini / Livewire / nginx до 50 МБ, retry_after, стан «Розбір не завершився»13+2Ліміти зараз 20 МБ у PHP, 12 МБ у Livewire, 128 МБ пам'яті воркера — підняти й читати КАТОТТГ частинами.
Офшори, в.1 · 20Імпорт КАТОТТГ (katottg:import, upsert, денормалізація кодів)106−4У кожному рядку кодифікатора КАТОТТГ уже є коди всіх рівнів — денормалізувати майже нічого.
Офшори, в.1 · 21Завантаження КАТОТТГ в адмінці330Перевикористовує ОТ!20
Офшори, в.1 · 22Інтеграція ТОТ у клієнта: Крим і Севастополь з Дії, OccupiedTerritoryLookup, fallback під прапором, команда перерахунку7,54,5−3Пошук населеного пункту в переліку і перерахунок для клієнтів дублюють рядок 6 «Логіки співставлення».
Офшори, в.1 · 23Права доступу000Ролі — питання до клієнта; автор свідомо поставив 0, ми теж не рахуємо.
Офшори, в.1 · 24Unit-тести10100Фікстури реального htm, превʼю і diff, імпорти, нормалізатори
Офшори, в.1 · немаєПошук населеного пункту в переліку ТОТ: дубль з «Логікою співставлення» зняли в обох аркушах, повертаємо в один03+3Пропущено в оцінці
Разом170,5142,5−28
Офшори+Території, варіант 2: 135,5 → 118 год
Аркуш · рядокЗадачаВін заклавМи кажемоРізницяЧому
Офшори, в.2 · 28Спайк джерел660реалістично
Офшори, в.2 · 29Міграції й моделі129−36–7 однотипних таблиць і два розширення PostgreSQL — 1–1,5 дня.
Офшори, в.2 · 30Нормалізатори1410−4Назви населених пунктів нормалізувати не треба: у переліку ТОТ є код КАТОТТГ. Лишаються транслітерація і РНОКПП / паспорт.
Офшори, в.2 · 31Парсер ТОТ2013−7У переліку ТОТ (графа 5) уже є код населеного пункту за КАТОТТГ — ієрархію з назв відновлювати не треба.
Офшори, в.2 · 32Імпорт РНБО без превʼю87−1Ризик двох файлів, як у ОТ!8
Офшори, в.2 · 33Імпорт ДФМ87−1Ризик формату XML
Офшори, в.2 · 34Версіонування ДФМ через entry_hash11,5+0,5реалістично
Офшори, в.2 · 35CRUD ДФМ54−1реалістично
Офшори, в.2 · 36Ресурс РНБО440реалістично
Офшори, в.2 · 37Ручна правка РНБО440реалістично
Офшори, в.2 · 38Застосування версії + подія87−1Без превʼю це єдиний захист від поганого файлу.
Офшори, в.2 · 39Ресурс ТОТ: список, пошук, завантаження86−2Стандартний ресурс адмінки; сторінка завантаження повторює рядок 15.
Офшори, в.2 · 40Ручне виправлення ТОТ440У варіанті 2 це єдиний спосіб виправити помилку парсера, причому по одному рядку
Офшори, в.2 · 41Офшори CRUD + сидер45+1Немає версії й події для повторної перевірки клієнтів після оновлення офшорів, хоча приклад 17 у вимогах її вимагає.
Офшори, в.2 · 42Інфраструктура великих файлів13+2Ліміти зараз 20 МБ у PHP, 12 МБ у Livewire, 128 МБ пам'яті воркера — підняти й читати КАТОТТГ частинами.
Офшори, в.2 · 43Імпорт КАТОТТГ106−4У кожному рядку кодифікатора КАТОТТГ уже є коди всіх рівнів — денормалізувати майже нічого.
Офшори, в.2 · 44Завантаження КАТОТТГ в адмінці330реалістично
Офшори, в.2 · 45Інтеграція ТОТ у клієнта7,54,5−3Пошук населеного пункту в переліку і перерахунок для клієнтів дублюють рядок 6 «Логіки співставлення».
Офшори, в.2 · 47Unit-тести880реалістично
Офшори, в.2 · немаєПошук населеного пункту в переліку ТОТ: дубль з «Логікою співставлення» зняли в обох аркушах, повертаємо в один03+3Пропущено в оцінці
Офшори, в.2 · немаєВідкат до попередньої версії переліку (без нього помилковий файл виправляється лише поштучно)03+3Пропущено в оцінці
Разом135,5118−17,5
Офшори+Території, варіант 3: 102,5 → 101 год
Аркуш · рядокЗадачаВін заклавМи кажемоРізницяЧому
Офшори, в.3 · 51Спайк РНБО, ДФМ, КАТОТТГ (без наказу ТОТ)440реалістично
Офшори, в.3 · 52Міграції й моделі108−26–7 однотипних таблиць і два розширення PostgreSQL — 1–1,5 дня.
Офшори, в.3 · 53Нормалізатори108−2Назви населених пунктів нормалізувати не треба: у переліку ТОТ є код КАТОТТГ. Лишаються транслітерація і РНОКПП / паспорт.
Офшори, в.3 · 54Ресурс ТОТ: ручна форма (НП з КАТОТТГ, категорія, дати), список, пошук1010010 год вистачає лише тоді, коли форма дозволяє обрати громаду або район цілком (масове додавання всіх НП).
Офшори, в.3 · 55Імпорт РНБО87−1реалістично
Офшори, в.3 · 56Імпорт ДФМ87−1реалістично
Офшори, в.3 · 57entry_hash ДФМ11,5+0,5реалістично
Офшори, в.3 · 58CRUD ДФМ54−1реалістично
Офшори, в.3 · 59Ресурс РНБО440реалістично
Офшори, в.3 · 60Ручна правка РНБО440реалістично
Офшори, в.3 · 61Застосування версії + подія86−2Для ТОТ у цьому варіанті файлу немає; конфлікт версій і поріг вилучення потрібні лише для РНБО і ДФМ.
Офшори, в.3 · 62Офшори CRUD + сидер45+1Немає версії й події для повторної перевірки клієнтів після оновлення офшорів, хоча приклад 17 у вимогах її вимагає.
Офшори, в.3 · 63Інфраструктура великих файлів12+1Ліміти зараз 20 МБ у PHP, 12 МБ у Livewire, 128 МБ пам'яті воркера — підняти й читати КАТОТТГ частинами.
Офшори, в.3 · 64Імпорт КАТОТТГ106−4У кожному рядку кодифікатора КАТОТТГ уже є коди всіх рівнів — денормалізувати майже нічого.
Офшори, в.3 · 65Завантаження КАТОТТГ в адмінці330реалістично
Офшори, в.3 · 66Інтеграція ТОТ у клієнта7,54,5−3Пошук населеного пункту в переліку і перерахунок для клієнтів дублюють рядок 6 «Логіки співставлення».
Офшори, в.3 · 68Unit-тести56+1трохи занижено ~1
Офшори, в.3 · немаєПошук населеного пункту в переліку ТОТ: дубль з «Логікою співставлення» зняли в обох аркушах, повертаємо в один03+3Пропущено в оцінці
Офшори, в.3 · немаєСтартове наповнення переліку ТОТ: масовий вибір громади або разовий конвертер (інакше тисячі рядків вручну)08+8Пропущено в оцінці
Разом102,5101−1,5

Таблиця 3 · прогноз з AI

З AI великий аркуш займе 45–67 % закладених годин, дрібні — майже стільки ж

Автор пише код разом із Claude: трейлер Co-Authored-By: Claude є в 534 з 575 його комітів, від другого коміту в листопаді 2025. Ми взяли 8 вже зроблених на цьому проєкті задач, схожих на нові, і порівняли, скільки він реально на них витратив, з тим, скільки оцінка закладає на таку саму роботу. У середньому оцінка вдвічі більша за факт: K ≈ 1,9–2,2.

Прогноз = години автора / K. Запас нерівномірний, тому K різний для аркушів.
Аркуш Він заклав (без AI) Ми кажемо (без AI) Прогноз з AI Від його оцінки Чому такий K
Ризиковість576,5566260–38545–67 %K 1,5–2,2: великі блоки логіки й екранів; на аналогах запас 2,3–3,1×, але нові вимоги складніші, тому K взято нижче
Логіка співставлення11410175–11566–101 %K 1,0–1,5: дрібні інтеграційні рядки; на аналогах запас 0,8–1,75×
Офшори+Території, варіант 1170,5142,5115–17067–100 %K 1,0–1,5: імпорти й довідники; на аналогах запас 0,8–1,75×
Офшори+Території, варіант 2135,511890–13566–100 %K 1,0–1,5: те саме
Офшори+Території, варіант 3102,510170–10068–98 %K 1,0–1,5: те саме

Як читати прогноз

Це не облік часу: години на минулі задачі відновлено з часу комітів, похибка велика, довіра низька–середня. Але напрям однозначний: у великих блоках «Ризиковості» запас відносно його реального темпу 2–3×, а в рядках переліків і звірки його майже немає.

Чому не різати оцінку вдвічі

Запас фактично покриває переробки: 37 % його годин в історії — виправлення, а за п'ять тижнів вимоги змінились так, що оцінка виросла з 443 до 568,5 год. Якщо планувати за темпом з AI, запас на зміни (+20–30 %) треба закласти явно.

Таблиця 4 · оптимізація «Ризиковості» з AI

«Ризиковість»: 576,5 → 400,5 год, менше на 176 год (31 %)

Пройдіть з Віталієм кожен рядок: у правому стовпці — питання, яке варто йому поставити. Якщо він обґрунтує свою цифру — лишайте її.

Кожен рядок аркуша «Ризиковість». Назва роботи — з коментаря Віталія в оцінці; «немає» — робота, потрібна за вимогами, якої в оцінці немає.
Рядок Що це за робота Віталій заклав З AI Різниця Що спитати у Віталія
Інфраструктура
4Окремий обробник для перевірок клієнтів23+1Чи врахував запуск обробника і на тестовому, і на робочому сервері?
5Автоматичний щоденний запуск задач (позначки про прострочений плановий перегляд і PEP)220Це те саме налаштування, що й у рядку 4. 2 год вистачить?
6Сповіщення працівникам в адмінці42−2Сповіщення в адмінці — готова функція. Чому 4 год, а не 2?
Інфраструктура, разом87−1
Додаток 1 — автоматичний розрахунок
10Структура даних для перевірок169−7Це однотипні таблиці. З AI 9 год вистачить?
11Усі 106 факторів з Додатка 1 із системними кодами, балами й статусами тригерів84−4Це перенесення 106 факторів з Додатка 1. Чому 8 год?
12Запуск перевірки клієнта по всіх джерелах2215,5−6,5Обсяг ок. З AI 15–16 год реально?
13Переналаштування запитів до YouScore під нові вимоги до даних (розділ 6 змін від 06.10)2817−118 з 13 запитів до YouScore вже працюють. Чому 28 год на решту 5?
14Автоматична звірка анкети з даними Дії та YouScore (ПІБ, документ, адреса)1411−3Чи врахував, що дані з Дії зараз ніде окремо не зберігаються?
15Автоматичне визначення решти факторів за відповідями YouScore45,545−0,531 фактор з YouScore, відповіді не такі, як у документації. 45 год точно вистачить?
16Розрахунок балів і рівня ризику за Шкалою оцінки2317−6Правила розрахунку чітко описані в документах. З AI 17 год реально?
17Перевірка стартує сама після підпису анкети клієнтом74,5−2,5Це дрібна обв'язка. Чому 7 год?
18Для факторів 4.2 і 7.3 дані в YouScore більше не оновлюються10,5−0,5Ок.
немаєДодаток 1: тестові відповіді YouScore для перевірки системи, розпізнавання неоднозначних збігів, автоматичні «нульові»…08,5+8,5Як тестувальник перевірить знайдені ризики без тестових відповідей YouScore? Додаємо?
Додаток 1 — автоматичний розрахунок, разом164,5132−32,5
Ручний перегляд
22Головний екран працівника по клієнту3216−16Основа екрана вже є (вкладка YouScore). Чому 32 год?
23Працівник підтверджує, спростовує, змінює або додає фактор зі списку з підставою; бал і рівень ризику перераховуються а…2114−7Це однотипні кнопки дій. З AI 14 год реально?
24Хто, коли і що змінив у факторах, з підставою93,5−5,5Показ журналу вже в рядку 22. Що тут ще на 9 год?
25Поки клієнт на ручній перевірці, анкету не можна підписати, а клієнта — верифікувати; працівник бачить причину126,5−5,5Статус «Ручна перевірка» вже в рядках 10 і 16. Що тут ще на 12 год?
26Щоб швидко знайти всіх клієнтів, які чекають ручної перевірки52−3Одна колонка й фільтр. Чому 5 год?
27Якщо в Дії немає адреси, рахунок не відкривається, поки працівник не отримає й не перевірить документи про місце прожив…75−2Запит документів у клієнта вже є. Що тут нове на 7 год?
28При повторній перевірці працівник бачить свої попередні рішення (наприклад, «раніше спростовано»), а фактори, яких біль…1812,5−5,5Як система зрозуміє, що фактор той самий, що й минулого разу? Годин вистачить?
29Клієнт бачить у кабінеті, що триває додаткова перевірка, без її причин51,5−3,5Кабінет уже показує «очікуйте». Чому 5 год на текст?
немаєРучний перегляд: працівник сам встановлює фінальний рівень, дія «Завершити перегляд», прибрати наявний довільний бал 0–…010+10Шкала вимагає ручний фінальний рівень і кнопку «Завершити перегляд». Де це в оцінці?
Ручний перегляд, разом10971−38
Додаток 2 — Висновок
33Висновок має номер (А-33/1) і версії (А-33/2 після доопрацювання), статуси й наскрізну нумерацію125−7Номер і версії Висновку. Чому 12 год, а не 8–9?
34Висновок формується одразу після перевірки, розділи 1–8 заповнюються з результатів автоматично2115,5−5,5Обсяг ок. З AI 15 год реально?
35Система сама пропонує рекомендацію, заходи й необхідність рішення Директора та обирає один із 5 шаблонів148,5−5,5Тексти шаблонів — готова таблиця з документа клієнта. Чому 14 год?
36Працівник переглядає Висновок і редагує дозволені розділи прямо в адмінці3017,5−12,5Чи врахував редагування розділів 1 і 6? І з AI 17–18 год реально?
37Висновок у PDF за формою Додатка 2 від 06.10 — для засвідчення, зберігання і надання перевіряючому169−7PDF система вже генерує (анкета, звіт ризику). З AI 9 год реально?
38Працівник засвідчує Висновок кнопкою або КЕП; засвідчену версію змінити вже не можна148,5−5,5Вибір підписанта й журнал є ще в рядках 67 і 69. Чи не пораховано двічі?
39Коли Директор повертає Висновок на доопрацювання, створюється нова версія з повторною перевіркою; засвідчена версія лиш…127−5Повторна перевірка вже в рядку 12. Що тут на 12 год?
40При середньому ризику лише за сумою балів рахунок відкривається одразу, а працівник підтверджує Висновок пізніше74−3Один статус. Чому 7 год?
41Список усіх Висновків, що чекають підтвердження, і підтвердження тих, що без змін, однією дією72−5Кнопку «підтвердити всі» клієнт не просив. Прибираємо, лишаємо лише фільтр?
Додаток 2 — Висновок, разом13377−56
Плановий перегляд
45Строк наступного планового перегляду клієнта84−4Дата перегляду — просте обчислення. Чому 8 год?
46Якщо клієнт понад рік не звертався, при наступному зверненні (анкета, довідка / виписка, купівля / продаж ЦП) система п…105−5Купівлю й продаж клієнт у кабінеті не замовляє. Що тоді тут робимо на 10 год?
47Працівник запускає повторну перевірку з вибором причини, і причина потрапляє у Висновок52−3Вікно вибору причини. Чому 5 год?
48Перевірка клієнтів, імпортованих з Депенду1216+4Чи врахував: у файлі немає паспортів і дат народження, а це ~57 тис. платних запитів до YouScore?
49Щодня система позначає клієнтів з простроченим плановим переглядом і тих, у кого минув рік після завершення статусу PEP…3,52,5−1Ок.
50Працівник бачить, у кого прострочено або наближається плановий перегляд, і може відфільтрувати таких клієнтів103,5−6,5Картку «≤ 30 днів» клієнт не просив. Прибираємо?
Плановий перегляд, разом48,533−15,5
Додаток 3 — рішення Директора
54Рішення Директора має номер, прив'язаний до Висновку; підписане рішення змінити не можна74−3Обсяг ок. З AI 4 год?
55Рішення створюється автоматично, щойно засвідчено Висновок, з усіма підставами з нього74−3Чому 7 год на автоматичне створення рішення?
568 типових текстів з документа «Обґрунтування рішень Директора»; обґрунтування формується з них автоматично з даними клі…105−58 готових текстів з документа клієнта. Чому 10 год?
57Директор обирає одне рішення; дозвіл заборонено при неприйнятно високому ризику179,5−7,5Екран за зразком. З AI 9–10 год реально?
58Рішення Директора в PDF за формою Додатка 373,5−3,5Після PDF Висновку це майже копія. Чому 7 год?
59Директор підписує рішення своїм КЕП; після підпису система сама виконує наслідки рішення і сповіщає працівників10100Чи врахував перевірку наслідків, коли рішення блокує рахунок?
60Після дозволу Директора анкета підписується від компанії автоматично, і відкриття рахунку продовжується без ручного кро…6,55,5−1Підпис від компанії вже є. Ок.
61Якщо рішення Директора не потрібне (низький або середній ризик лише за сумою), анкета підписується автоматично — клієнт…53,5−1,5Ок, але залежить від того, як клієнт вирішить відкривати рахунок.
Додаток 3 — рішення Директора, разом69,545−24,5
КЕП-підпис
65Висновок і рішення підписує конкретна особа своїм КЕП (відповідальна працівниця Д.Б2,51,5−1Ок.
66Наявний підпис документів КЕП компанії переробляється так, щоб ним можна було підписувати й особистими ключами94,5−4,5Підпис будь-яким ключем уже є. Чому 9 год на переробку?
67Підпис документа особистим КЕП і журнал усіх спроб підпису, зокрема невдалих106,5−3,5Журнал спроб частково вже в рядку 38. Чому 10 год?
68Ключ завантажується лише на момент підпису й одразу видаляється108−2Ок, з ключами AI мало допоможе.
69Одне вікно підпису для Висновку й рішення Директора104,5−5,5Вибір підписанта вже в рядку 38. Чому 10 год?
70Перевірка підпису на тестовому ключі та на реальних ключах підписантів перед запуском2,56,5+42,5 год на перевірку з обома підписантами на їхніх ключах — вистачить?
немаєКЕП: налаштування бібліотеки підпису під АЦСК особистих ключів підписантів04+4Ключі підписантів від якого АЦСК? Якщо не від того, під який налаштована система, — додаємо налаштування?
КЕП-підпис, разом4435,5−8,5
Ризиковість, разом576,5400,5−176
Умови. Цифра тримається, якщо Віталій працює з AI так само, як зараз, а зміни вимог клієнт оплачує окремо: запасу на зміни тут немає. Якщо зміни йтимуть у рамках оцінки, додайте ≈ 20 %.
Як порахована частина «AI»

Для кожного рядка беремо обсяг без AI, ділимо на прискорення для типу роботи і множимо на 1,26 — час поза Claude (розібратися в задачі, перевірити результат, дзвінки). Прискорення взято з уже зроблених на цьому проєкті схожих задач, коефіцієнт 1,26 — з логів Віталія за вересень.

Прискорення за типом роботи, години.
Тип роботи Віталій заклав Обсяг без AI Прискорення З AI Підстава
екрани, PDF, типовий код213,5190,5×2,3105,5картка клієнта K 2,3; PDF-шаблони K 3,1
бізнес-логіка і процеси225,5238,5×1,8167погодження змін даних K 2,5; YouScore і розрахунок ризику K 3,1, знижено через складність нових правил
зовнішні інтеграції131125×1,4112,5КЕП компанії K 2,0; імпорт, ТОТ, Укрпошта K 0,8–1,75
інфраструктура і ручні перевірки6,512×115,5AI не прискорює налаштування оточення і перевірку на реальних ключах

Як рахували

Кожна цифра має джерело

Незалежна оцінка

Кожен рядок колонки Development перевірено проти вимог клієнта від 06.10.2026 і коду платформи: що вже зроблено і перевикористовується, що нове, що дублюється з іншим рядком. Для кожного рядка — оптимістична, найімовірніша і песимістична оцінка під профіль «middle без AI». Підсумки пораховано скриптом із рядків, без ручних округлень.

Прогноз з AI

Аналоги з історії git: інтеграція YouScore і старий розрахунок ризику, картка клієнта в адмінці, PDF-шаблони, КЕП-підпис компанії, погодження змін даних, імпорт клієнтів, позначка окупованих територій, визначення індексу через Укрпошту. Сумарно оцінка закладає на такий обсяг 244 год, а фактично пішло ≈ 108.

Що сюди не входить

Лише робота розробника. QA, керування проєктом, приймання клієнтом і відкриті питання до клієнта в цій версії звіту не розглядаються.