OTACKРозробка цифрових продуктів
№ ТЗ-081
На підставі СЗ-081 (затверджена)
Проєкт документа
Технічне завдання

Система контролю інтерв'юерів
польового збору даних

Основний документ · функціональні та нефункціональні вимоги
Додатки: А — модель даних (усі таблиці й поля) · Б — візуальні вимоги та екрани

1 Загальні положення

1.1. Система призначена для польового збору даних методом очних опитувань із автоматичним контролем доброчесності інтерв'юерів: запис аудіо інтерв'ю, фіксація геолокації, автоматична перевірка голосів (діаризація), вибірковий людський аудит та розрахунок індексу доброчесності.

1.2. Система будується за обласною моделлю (СЗ-081, розд. 2) і складається з двох вебзастосунків:

1.3. Технологічний стек, топологія, навантаження і процеси зафіксовані службовою запискою СЗ-081 та в цьому документі не повторюються, окрім місць, де вимога впливає на функціональність.

1.4. Терміни: інтерв'ю — одне опитування одного респондента; зміна — робочий сеанс інтерв'юера від відкриття до закриття; маніфест — пакет метаданих закритої зміни, що передається на хаб; маркер — автоматична позначка підозри; вердикт — рішення аудитора щодо інтерв'ю; індекс доброчесності — розрахунковий показник інтерв'юера (розд. 7); скринінг — запис і перевірка аудіо інтерв'ю; еталон голосу — зразок голосу інтерв'юера, з яким діаризація порівнює голоси в записах.

2 Ролі та розмежування доступу

РольЗастосунокПрава
Інтерв'юерPWA вузлаСвої завдання, зміни, інтерв'ю; власна історія, індекс, кількісний облік «до оплати»; подання апеляцій. Не бачить чужих даних
Координатор містаПанель вузлаІнтерв'юери свого міста, завдання і райони, анкети, зміни, статуси інтерв'ю, керування скринінгом (Д-12), облік «до оплати», журнали міста. Не бачить інших міст
АудиторПанель хабаЧерга аудиту по області, картка інтерв'ю, прослуховування (з журналюванням), вердикти, апеляції. Без адміністрування
Оператор замовникаПанель хабаДашборди й аналітика області, індекси, звіти нагляду за координаторами, налаштування ваг і порогів, експорти
Адміністратор хабаПанель хабаПовний доступ: користувачі всіх ролей, реєстр вузлів, конфігурація, журнали доступу

2.1. Автентифікація всіх ролей: логін + пароль + TOTP. Сесія 30 днів із прив'язкою до пристрою. Для інтерв'юера — одна активна сесія: вхід із нового пристрою блокує попередню сесію, подія фіксується і живить сигнал «передача акаунта» (розд. 7). Зміна пристрою — лише через координатора.

2.2. Кожне прослуховування чи завантаження аудіо будь-якою роллю пишеться в журнал доступу (Додаток А, таблиці access_log).

2.3. Координаторів міських вузлів призначає хаб і керує ними централізовано: створення облікового запису, запрошення (стан «запрошення надіслано»), заміна координатора, скидання пароля і сесії, деактивація. Облікові дані передаються на вузол захищеним каналом обміну; всі дії над обліковими записами координаторів журналюються. На хабі ведеться окремий реєстр координаторів вузлів зі станом облікового запису (Додаток А, розд. 3.1).

3 Кабінет інтерв'юера (PWA міського вузла)

Клієнт — веб-PWA (Vue 3), без мобільного застосунку (рішення Д-13). Верстка адаптивна для трьох класів пристроїв: телефон (первинний), планшет, десктоп — інтерв'юер чи штаб можуть працювати з будь-якого. Екрани — Додаток Б, розд. 2.

3.1 Вхід і пристрій

3.2 Зміна і завдання

3.3 Проведення інтерв'ю

3.4 Офлайн-робота і синхронізація

3.5 Історія, індекс, облік

4 Панель координатора міста (міський вузол)

Адмінка на Filament + Vue-сторінки (карта завдань, конструктор анкет). Екрани — Додаток Б, розд. 3.

4.1 Інтерв'юери

4.2 Завдання і райони

4.3 Анкети (конструктор)

4.4 Керування скринінгом (Д-12)

4.5 Інтерв'ю і статуси

4.6 Облік «до оплати»

5 Панель замовника (обласний хаб)

Адмінка на Filament + Vue-сторінки (картка аудиту, дашборд області, звіт нагляду). Екрани — Додаток Б, розд. 4.

5.1 Дашборд області та міста

5.2 Реєстр вузлів (міст)

5.3 Черга аудиту і картка інтерв'ю

5.4 Індекси і налаштування

5.5 Нагляд за координаторами (Д-12, Д-10)

5.6 Аналітика й експорти

6 Обласний обмін (протокол вузол ↔ хаб)

Життєвий цикл інтерв'ю в обміні
01
Маніфест
закриття зміни → POST на хаб: перелік інтерв'ю, метадані, сигнали вузла
02
Забирання
хаб тягне аудіо по одному за підписаним URL (WireGuard)
03
Діаризація
префікс 30–90 с; аудіо не зберігається на хабі
04
Підтвердження
ack «діаризовано» → вузол стартує 3-денний відлік
05
Результати
пуш маркерів, вердиктів, індексів у вузол

7 Індекс доброчесності

7.1. Склад сигналів — за СЗ-081 розд. 4.4: геолокація (старт/фініш у радіусі, час, швидкість між інтерв'ю, кластеризація), темп роботи (верхній поріг — підозра фабрикації; нижній — показник неефективності), діаризація (кількість голосів, збіг другого голосу з інтерв'юером, повторюваність «респондента» за 30 днів у розрізах інтерв'юер/місто/область), дешеві аудіо-сигнали (тиша, VAD, гучність, кліпінг, фінгерпринт-дублі), акаунт і сесії (паралельні входи, зміни пристроїв, паралельні інтерв'ю з різних точок), стабільність запису (частота переривань), вердикти аудиту.

7.2. Розрахунок: кожен сигнал → нормоване значення 0…1 → зважена сума за групами → бал інтерв'ю (0–100); індекс інтерв'юера — агрегат балів інтерв'ю за ковзний період з урахуванням вердиктів. Ваги, пороги і період — налаштовувані (5.4), з історією.

7.3. Пояснюваність: для кожного балу зберігається розбір (сигнал → значення → внесок). Розбір бачать аудитор і координатор повністю, інтерв'юер — у спрощеному вигляді без порогів.

7.4. Автоматичні дії за порогами (налаштовуються): підняття пріоритету в черзі аудиту; примусове увімкнення скринінгу; тимчасове призупинення інтерв'юера — лише вручну координатором.

8 Нефункціональні вимоги

ВимогаЗначення
Продуктивність вузлаДо 5 000 інтерв'ю/день, 25 rps пік API; прийом аудіо ~12,5 ГБ/день без деградації інтерфейсів
Продуктивність хабаДо 20 000 інтерв'ю/день на одну GPU; черга діаризації розбирається за добу з запасом
Retention аудіо3 доби після діаризації; флаговані — до вердикта; видалення журналюється
Retention відбитків90 днів (Д-11), автоочищення
ДоступністьВузли автономні при недоступності хаба; PWA працює офлайн у межах робочого дня
БезпекаTOTP для всіх ролей; одна сесія інтерв'юера; WireGuard для службового трафіку; Cloudflare + Zero Trust на адмінки; журнал доступу до записів
Персональні даніЗакон України «Про захист персональних даних»: згода-позначка, мінімізація (3 доби аудіо), необоротні відбитки, журнал доступу
БекапиБД: WAL щогодини + повний дамп щоночі → Storage VPS (офсайт); перевірка відновлення за регламентом. Аудіо не бекапиться
МоніторингЧерги, диски, канал, GPU, глибина черги аудиту, статуси вузлів; сповіщення в месенджер
Мови інтерфейсівУкраїнська (єдина)
Сумісність PWAТелефон, планшет, десктоп. Chrome/Safari/Edge поточної та попередньої мажорної версії; робота при нестабільному 3G/4G; без горизонтального скролу на всіх ширинах

9 Етапи реалізації та приймання

ЕтапЗмістКритерій приймання
1. ФундаментМонорепозиторій, dev-оточення, каркаси node/hub, автентифікація з TOTP і сесіями, протокол обміну v1Зміна закривається на вузлі — маніфест видимий на хабі
2. КапчурPWA: зміни, інтерв'ю, запис аудіо, гео старт/фініш, офлайн-черга, переривання; прийом і сигнали рівня 0 на вузліІнтерв'ю з вулиці з реальним аудіо і гео доходить до вузла при нестабільному звʼязку
3. ДіаризаціяGPU-воркер, забирання аудіо, відбитки, звірка, маркери, індекс; налаштування вагПілотний пакет реальних записів UK/RU розмічається з узгодженою точністю; пороги зафіксовані
4. Аудит і панеліЧерга аудиту, картка інтерв'ю, вердикти, апеляції; панелі координатора і замовника; нагляд за координаторами; облік «до оплати»Наскрізний цикл: інтерв'ю → маркер → вердикт → статус у кабінеті інтерв'юера → період «до оплати»
5. ПілотДва VPS HostPro + Storage VPS, реальне місто 20–50 інтерв'юерів, калібрування, навчання ролей2 тижні бойової роботи пілота; метрики точності та стабільності в межах узгоджених
6. Бойовий контурФізичний хаб із GPU, розгортання міст, міграція пілотних даних, runbook, передачаНове місто розгортається за процедурою ≤ 1 години; приймальні навчання (світло/канал/відновлення)

Строки та вартість етапів — предмет комерційної пропозиції; у ТЗ не фіксуються.

10 Склад документації

ДокументЗміст
СЗ-081Архітектура та оточення (затверджена) — fieldcontrol-arch (index.html / architecture.pdf)
ТЗ-081Цей документ — fieldcontrol-docs (tz.html / .pdf)
Додаток АМодель даних: усі таблиці та поля БД вузла і хаба — tz-dodatok-a.html / .pdf
Додаток БВізуальні вимоги: перелік екранів кожної панелі, склад елементів, посилання на макети — tz-dodatok-b.html / .pdf
МакетиHTML-макети панелей на fieldcontrol-demo (demo/pwa · demo/node · demo/hub; виконуються після затвердження ТЗ)
OTACK · розробка цифрових продуктів
Додатки А і Б — невід'ємна частина ТЗ.
Наступний крок:
затвердження ТЗ → макети панелей