Фаза 1 — Готовность к production (P0)
1.1 — Генерация PDF invoice
Файлы:api/lib/pdf-invoice.ts (новый), api/routes/instance-admin.tsUI: кнопка
Download PDF в диалоге деталей InvoiceSection
1.2 — Отметка invoice как оплаченного
api/routes/instance-admin.ts, действие mark_invoice_paidUI: кнопка
Mark as Paid в InvoiceSection, только для owner/admin
1.3 — Заполнение billing_period задним числом
Фаза 2 — Credit notes и dunning (P1)
2.1 — Credit notes
2.2 — Cron для overdue + email
Файлы:api/queue/billing-cron.ts, ночная задачаФайлы:
api/routes/instance-admin.ts, отправка email при finalize_invoice
Фаза 3 — Distribution model (P0 для distribution-сценариев)
3.1 — Поля distribution для merchant
3.2 — Уровни distribution
3.3 — Таблицы settlement и rebate
Миграция044: merchant_settlements и merchant_rebates, полный DDL см. в §6
3.4 — Settlement API actions
Новые действия вinstance-admin.ts:
generate_settlement— создать settlement statement для merchant и периода\finalize_settlement— выпустить документ для merchant\mark_settlement_paid— зафиксировать оплату и запустить расчет rebate\list_settlements— постраничный список по инстансу\get_settlement— детали и line items\list_rebates— rebate notices по инстансу\mark_rebate_paid— зафиксировать выплату rebate иtx_hash\
3.5 — Settlement UI
Новые подвкладки вRevenueTab:
Settlements— statements по мерчантам, генерация, выпуск и отметка оплаты\Rebates— rebate notices, статусы и фиксация выплат\
Фаза 4 — Автоматизация сбора комиссий (P1)
4.1 — Очередь повторных попыток сбора
Повторная задача используетnext_retry_at и collection_attempts. Применяется exponential backoff по формуле 1h × 2^attempts. Максимум 5 попыток, после чего статус становится abandoned.
4.2 — Enforcement для billing_mode
В collectCreationFee(): если instance.settings.billing_mode === 'invoice', то нужно установить collection_status = 'invoiced' и пропустить on-chain перевод.
Фаза 5 — Аналитика и сверка (P2)
5.1 — Ночная задача сверки
Сравнивает суммы вfee_ledger с ожидаемыми значениями на основе количества чеков.
5.2 — Автообновление volume tier
Ежемесячная проверка относительноvolume_threshold_monthly.
5.3 — Графики выручки
Скользящий 12-месячный тренд вAdminB2BDashboardTab.
Фаза 6 — Документирование курса USDC (P1)
Фаза 7 — Брендированный PDF через Gotenberg (P2)
Добавить контейнерgotenberg/gotenberg:8 в docker-compose.yml. Создать api/templates/ с HTML-шаблонами invoice и settlement, поддерживающими брендинг инстанса: логотип, цвета и QR-код USDC-кошелька.