Requirements Analyst — Мобильное подтверждение ознакомления и согласия
Вердикт: GO MVP: 12 недель, 5 человек, ~192,000 EUR Стек: Swift (iOS) + Kotlin (Android) + Go (Backend) + Next.js (Web) + PostgreSQL + Redis
1. MoSCoW-приоритизация
Must-Have (MVP)
| ID | Требование | Обоснование |
|---|---|---|
| M1 | Регистрация пользователя по email с подтверждением | Без идентификации нет субъекта подписи |
| M2 | Локальное хранение изображения подписи на устройстве | Ключевое УТП: минимальный сбор данных |
| M3 | Создание подписи — пользователь рисует/загружает один раз | Базовая механика продукта |
| M4 | Face ID / Touch ID / PIN для подтверждения | Безопасность без серверной аутентификации |
| M5 | Загрузка PDF компанией и отметка места подписи | Функция бизнес-стороны |
| M6 | Отправка запроса на подпись пользователю | Ключевой поток «компания → пользователь» |
| M7 | Наложение подписи в указанное место PDF | Core-механика: генерация подписанного документа |
| M8 | Электронный след (timestamp, device ID, хеш документа) | Доказательная база для compliance |
| M9 | Возврат подписанного PDF компании | Завершение бизнес-цикла |
| M10 | End-to-end шифрование (покой + передача) | Datenschutz/GDPR |
Should-Have (MVP+1)
| ID | Требование |
|---|---|
| S1 | Dashboard для компании: статусы, история |
| S2 | Push-уведомления о новых запросах |
| S3 | Массовая отправка одного документа группе |
| S4 | Аудит-лог всех действий |
| S5 | Экспорт подписанных документов |
| S6 | Срок действия запроса на подпись |
Could-Have (MVP+2)
| ID | Требование |
|---|---|
| C1 | Шаблоны документов |
| C2 | Множественные подписи на одном документе |
| C3 | Интеграция с HR-системами (Personio, SAP) по API |
| C4 | Кастомные поля перед подписанием (имя, дата, должность) |
| C5 | Верификация подписи через публичный ключ (eIDAS Advanced) |
| C6 | White-label: брендирование под клиента |
Won't-Have (явно исключено)
| ID | Требование | Причина |
|---|---|---|
| W1 | QES (eIDAS Qualified) | Требует сертифицированного провайдера |
| W2 | Хранение подписей на сервере | Противоречит Datenschutz-УТП |
| W3 | Видеоидентификация | KYC/AML — отдельный рынок |
| W4 | Блокчейн-нотаризация | Переусложнение |
| W5 | Интеграция с DocuSign/Adobe Sign | Мы — замена, не дополнение |
2. User Stories (ключевые)
US-01: Регистрация пользователя - Ввод email → код подтверждения → создание подписи (рисование) → настройка Face ID / Touch ID / PIN - Подпись сохраняется локально в Keychain/Keystore
US-02: Загрузка документа и отметка места подписи (Company Admin) - Загрузка PDF до 10 МБ, drag-and-drop места подписи, навигация по страницам - Валидация: хотя бы одно место подписи размещено
US-03: Получение запроса на подпись - Push-уведомление + список ожидающих документов в приложении - Просмотр PDF внутри приложения, отображение названия, отправителя, срока
US-04: Подписание документа - Кнопка «Подписать» → системный диалог биометрии/PIN → наложение подписи - Генерация электронного следа (timestamp, device ID, хеш)
US-05: Получение подписанного документа (Company Admin) - Уведомление при подписании, скачивание PDF с визуальной подписью + страницей аудит-следа
US-06: Отказ от подписания - Кнопка «Отклонить» + опциональная причина → уведомление отправителю
US-07: Групповая рассылка - Загрузка PDF один раз → список получателей (ручной ввод / CSV) → массовая отправка
US-10: Удаление аккаунта (GDPR Art. 17) - Серверные данные удаляются в течение 30 дней - Локальные данные удаляются немедленно - Подписанные PDF, уже переданные компаниям, НЕ модифицируются
US-12: Офлайн-подписание - PDF кешируется на устройстве, подписание работает без интернета - При появлении сети — автосинхронизация
3. System Boundaries
Внутри системы:
- Mobile App (iOS/Android): нативное, локальное хранилище подписи, биометрия
- Web Portal (Company Admin): загрузка и разметка PDF, dashboard, экспорт
- Backend API: аутентификация, оркестрация, аудит-лог. НЕ хранит изображения подписей
- PDF Processing Service: наложение подписи, встраивание метаданных, хеширование
Снаружи системы:
APNs, FCM, Email-провайдер, App Store/Google Play, NTP-серверы, HR-системы (опционально), S3-хранилище
4. Edge Cases (критические)
| # | Edge Case | Severity | Mitigation |
|---|---|---|---|
| 1 | Биометрия скомпрометирована | Critical | Email-уведомление при каждом подписании; device ID в аудит-следе |
| 2 | Смена устройства пользователем | High | Пересоздание подписи; старые подписи верифицируемы по старому device ID |
| 5 | Jailbreak/root-устройство | High | Детекция при запуске; отметка device_integrity=compromised в аудит-следе |
| 6 | PDF с вредоносным кодом | Critical | Санитизация при загрузке: удаление JavaScript, embedded files |
| 11 | Потеря S3-хранилища | Critical | Репликация минимум 2 AZ; автоматический retry |
| 12 | APNs/FCM недоступны | High | Email как fallback-канал |
| 15 | Изменение законодательства (eIDAS 2.0) | Medium | Регулярный legal review; архитектура плагинов для методов подписи |
5. Key Assumptions
| # | Assumption | Impact if wrong |
|---|---|---|
| A1 | Визуальная подпись + биометрия + аудит-след убедительны для немецких судов | Critical |
| A2 | Пользователи готовы устанавливать отдельное приложение | High |
| A3 | Компании готовы платить (vs бесплатный DocuSign free tier) | Critical |
| A6 | GDPR compliance через локальное хранение + минимальный сбор | High (нужен DPIA) |
| A7 | Рынок DACH достаточен для окупаемости | Critical |
6. Рекомендуемый стек
| Компонент | Выбор | Обоснование |
|---|---|---|
| iOS | Swift + SwiftUI | Нативный доступ к Keychain, LocalAuthentication |
| Android | Kotlin + Jetpack Compose | Нативный доступ к Keystore, BiometricPrompt |
| Backend | Go (Echo/chi) | Производительность, PDF-библиотеки |
| База данных | PostgreSQL 16+ | Аудит-лог, JSONB, ACID |
| Кеш/очереди | Redis | Сессии, очередь PDF-обработки |
| Хранилище PDF | MinIO (self-hosted) или S3 | Временное хранение |
| Web Portal | Next.js 15+ (React) | SSR + CSR для dashboard |
| Хостинг | Hetzner Cloud | Немецкие дата-центры, Datenschutz |
| CI/CD | GitHub Actions | Интеграция, бесплатно |
| Мониторинг | Grafana + Prometheus + Loki | Логи, метрики, аудит |
7. Итоговая оценка готовности
| Критерий | Оценка |
|---|---|
| Ясность ценностного предложения | Высокая |
| Техническая реализуемость | Высокая |
| Юридические риски | Средние — нужен Rechtsgutachten |
| Рыночные риски | Средние — нужна валидация willingness-to-pay |
| MVP complexity | Средняя — 12 недель, 5 человек |
| Зависимости | Управляемые — все критические зависимости зрелые |
Рекомендуемый следующий шаг (до разработки):
- Legal review (2 нед.): консультация с Fachanwalt für IT-Recht
- Customer development (3 нед.): 20 интервью с HR-директорами Mittelstand
- DPIA — обязателен по GDPR Art. 35 для биометрических данных
- Proof-of-concept PDF pipeline (1 нед.): валидация PDF-библиотеки