Commit Graph

20 Commits

Author SHA1 Message Date
berkio_admin_gitea
13404848c7 ACME webroot-маршрут /.well-known/acme-challenge (сертификат mail.pdf2scan.online)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 15:02:37 +00:00
berkio_admin_gitea
39b45d3a64 Воронка пейвола, «Ожидают оплаты», публичная оферта, внешние алерты
- WEB_FUNNEL: paywall_shown/pay_click (фронт, /api/track) + pay_success (серверно);
  в админке раздел «Воронка пейвола» с конверсией шагов (30 дн / всего)
- Раздел «Ожидают оплаты» — придержанные файлы (awaiting_payment) как лиды
- /offer|/oferta: публичная оферта (подписка, автопродление, возвраты); ссылки в футере
  (7 языков) и в пейволе («Оплачивая, вы принимаете условия…»)
- POST /api/alert (ALERT_TOKEN, антифлуд 60с) → Telegram владельцу; используется скриптом
  лечения туннеля на vds178

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 14:25:15 +00:00
berkio_admin_gitea
ee5ef3f08b Админка: источники трафика (referrer + UTM)
- Маячок /api/hit шлёт {ref: document.referrer, url} → сервер определяет источник
- _source_from: приоритет utm_source, иначе домен referrer (Google/Yandex/Telegram/VK/…),
  переходы внутри сайта и пустой referrer → «Прямые заходы»
- Таблица WEB_SOURCES(day,source,count); в админке раздел «Источники трафика» (источник/заходов/доля)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 13:39:15 +00:00
berkio_admin_gitea
4507c4bad3 Админка: время обработки по каждому файлу и среднее с/страницу по дням
- «По дням»: колонка «Ср/стр» (сумма elapsed по дню / страницы дня) — динамика скорости
- «Обработанные документы»: колонка «Время» (elapsed_time файла) + в CSV
- Общий парсер _elapsed_to_sec (H:MM:SS.ffffff → сек), переиспользован в итогах/дне/файле

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 13:23:31 +00:00
berkio_admin_gitea
8e76bc1fe4 Админка: карточку итогового времени назвал «Общее время обработки»
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 13:13:28 +00:00
berkio_admin_gitea
b2a8a8962a Админка: среднее время на страницу — отдельной карточкой
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 13:11:48 +00:00
berkio_admin_gitea
3ebf2815a5 Админка: разбивка по дням, время обработки, уведомления о платежах в Telegram
- Статистика по дням (14 дн): заходы/уникальные + файлы/страницы/исходный+конечный размер
- Числа заходов подписаны над столбцами графика
- Карточка «Время обработки»: суммарное время (из elapsed_time) + среднее с/страницу
- Уведомление владельцу в Telegram при успешной оплате (_tg_send через api.telegram.org,
  дедуп через WEB_PAYMENTS.notified, отправка в отдельном потоке)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 13:05:43 +00:00
berkio_admin_gitea
cde1e54d00 Админка: колонка «Сшивка» в таблице документов (+ в CSV)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 12:55:37 +00:00
berkio_admin_gitea
ae462e3afa Админка: обрезка длинных имён файлов в таблице документов (не растягивать)
Длинные имена с white-space:nowrap растягивали таблицу шире экрана и левые
колонки уезжали за край. Колонка «Файл» теперь max-width 300px + ellipsis,
полное имя — в title (подсказка) и в CSV-экспорте.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 12:50:59 +00:00
berkio_admin_gitea
68b4648a06 Пейвол больших файлов из бота: /pay deep-link + освобождение по подписке
- /pay?tg&job&exp&sig: HMAC-проверка → сессия tg:<id> → /?pay_job=<id> → пейволл по заданию
- /api/held/release: освобождение придержанного файла владельцу с активной подпиской
- Фронт: ?pay_job открывает оплату файла (99₽/подписка); при активной подписке — освобождает бесплатно

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 08:16:18 +00:00
berkio_admin_gitea
e44312305c Мобильная шапка + оплата подписки через Telegram (deep-link)
- Мобильная шапка: скрыт подзаголовок, короткая метка «Войти», бейдж ★ — не вылезает за край
- /subscribe?token=…: проверка HMAC-подписи из бота → сессия tg:<id> → авто-открытие оплаты
- Фронт: ?subscribe=1 открывает окно подписки после загрузки сессии

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 18:38:23 +00:00
berkio_admin_gitea
655fce9198 Админка + индикатор подписки + автопродление + де-брендинг входа
- /admin: дашборд (активные подписки, платежи, заходы, документы), доступ по ADMIN_TOKEN
- Уникальные посетители (cookie p2s_vid) + экспорт документов в CSV
- Индикатор активной подписки: бейдж в шапке + карточка на главной (/api/subscription)
- Автопродление ЮKassa: save_payment_method + рекуррентные списания + фоновый цикл
- Кнопка входа де-брендирована (нейтральная иконка, «Войти / Регистрация»)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 17:10:50 +00:00
root
e25e7c888a Пейволл раньше (предпроверка без загрузки) + пакетная обработка по подписке
- /api/paywall/check: решение сервера до загрузки файла → пейволл показывается
  сразу для больших файлов (не грузим тяжёлый файл впустую)
- Загрузка файла — только при клике оплатить (upload-on-pay)
- Пакетная обработка (2+ файла, папка, ZIP) — только по активной подписке

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 14:47:30 +00:00
root
b0d2580c37 Вход по почте (magic-code через SMTP)
- /api/auth/email/{start,verify}: 6-значный код на email (TTL 10мин, лимит
  1/мин, до 5 попыток), аккаунт email:<addr> + cookie-сессия
- _send_email (smtplib SSL/STARTTLS), таблица WEB_EMAIL_CODES
- Фронт: пункт «Через почту» в меню + модалка (email → код → вход), i18n

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 09:08:08 +00:00
root
836784e56f Пейволл больших файлов: 99₽/файл или подписка 299₽/мес (Фаза 1)
- _finalize_submit держит большой файл (awaiting_payment) без активной подписки;
  account из cookie-сессии (Yandex/VK) или tg user_id
- Оплата purpose=file (снимает задание с холда) / sub (+30 дней, снимает холд)
- Фронт: карточка пейволла (99₽/подписка), обработка возврата, single+batch
- Старый auth-баннер больших файлов заменён пейволлом
- Включается флагом PAYWALL_ENABLED (в .env)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 08:45:27 +00:00
root
e5c4d3c949 Вход через VK ID (OAuth 2.1 + PKCE)
- /api/auth/vk/{start,callback}: PKCE (code_verifier в cookie), обмен на
  id.vk.com/oauth2/auth + user_info, аккаунт vk:<id> + cookie-сессия
- Кнопка VK в меню входа, i18n

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 08:26:48 +00:00
root
414a8fd0f4 Вход через Яндекс (OAuth) + сессии + бэкенд пейволла (выключен флагом)
- OAuth Yandex ID: /api/auth/yandex/{start,callback}, cookie-сессии, /api/me, logout
- Меню входа Telegram/Яндекс в шапке, определение сессии
- Бэкенд пейволла (WEB_ACCOUNTS/подписка, purpose file/sub) — под флагом
  PAYWALL_ENABLED (по умолчанию 0: прежний порог авторизации, ничего не ломается)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 08:01:01 +00:00
root
7c91ec7cb1 Приём платежей ЮKassa: поддержка картой + тариф API Business
- Бэкенд: /api/pay/create, /api/yookassa/webhook (перепроверка через API),
  /api/pay/status (активный фоллбэк без вебхука), таблица WEB_PAYMENTS,
  колонка WEB_API_KEYS.paid_until, активация plan=business на 30 дней
- Сайт: оплата картой в блоке поддержки (сумма + email для чека 54-ФЗ)
- /developers: оплата тарифа Business, i18n оплаты (7 языков)
- Ключи только из env (YOOKASSA_SHOP_ID/SECRET)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 07:26:39 +00:00
root
f0dd8788b3 SEO языковые страницы, бизнес-API, OCR/кабинет/ZIP, ускорение
- SEO: серверные локализованные страницы /en/ /de/ /fr/ /it/ /es/ /pt/
  (title/description/OG/JSON-LD + self-hreflang), sitemap все языки + /developers,
  OG 1200x630 (static/og.png)
- Бизнес-API /api/v1/* (ключи WEB_API_KEYS, rate-limit), страница /developers
  с самовыдачей ключа через Telegram
- OCR-тумблер, загрузка папкой (webkitdirectory) и ZIP (/api/submit-zip-chunked)
- Личный кабинет: WEB_API_KEYS/web_owner_id, /api/history
- ocr прокинут в submit/submit-chunked/api/v1

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 10:32:38 +00:00
Ubuntu
b7f3c8fbcd Initial import of pdf2scan web 2026-03-27 10:12:32 +00:00