docs: подробная документация (UX + код), фикс дублей, /help без подписки, v0.1.0+19
This commit is contained in:
1 parent
f5d6fa95bd
commit
a2927052f4
5 files changed
+243
-123
No files matched your search
@@ -23,17 +23,28 @@ Telegram-бот, который по запросу пользователя г
|
||||
- APInex Voice STT расшифровывает голосовые; Gemini 3.8 Flash через APInex классифицирует намерения, пишет/правит посты и извлекает ToV из скриншотов.
|
||||
- Coolify env с отдельными модельными настройками: `APINEX_STT_MODEL`, `APINEX_INTENT_CLASSIFIER_MODEL`, `APINEX_POST_WRITER_MODEL`, `APINEX_IMAGE_TONE_MODEL`; общий секрет `APINEX_API_KEY`.
|
||||
- JSON-журнал вызовов APInex и ошибок разбора хранится в SQLite 30 дней; системные промпты не дублируются (имя и SHA-256), изображения и аудио не записываются.
|
||||
- `/clear` удаляет только ToV и образцы постов со скриншотов текущего пользователя, не историю постов, API-логи и не записи других пользователей.
|
||||
- Служебные ответы пользователю — всегда на русском; тексты постов — на языке явного запроса. Техническая ошибка может оставаться дословно.
|
||||
- Настройки пользователей и распознанные тексты публикаций для накопления Tone of Voice хранятся отдельно по Telegram user id; история диалогов и исходные изображения не сохраняются.
|
||||
- На явную просьбу поста и на реплай-правку бот возвращает 3 отдельных варианта.
|
||||
|
||||
## Подписка и монетизация
|
||||
- Модель: триал 3 дня, затем подписка 30 дней за 100 звёзд (Telegram Stars).
|
||||
- Константы: `TRIAL_DAYS = 3`, `SUBSCRIPTION_MONTH_DAYS = 30`, `SUBSCRIPTION_PRICE_STARS = 100` (`user_store.py`).
|
||||
- Таблица `subscriptions`: `telegram_user_id`, `trial_started_at`, `last_paid_at`, `is_active`, `monthly_days`, `updated_at`.
|
||||
- `/start` создаёт запись триала (`ensure_subscription`), если её нет.
|
||||
- `/subscribe` активирует подписку: пишет оплату 100 звёзд, продлевает на 30 дней (`activate_subscription`), `is_active = 1`.
|
||||
- `/balance` показывает статус: триал активен (сколько дней осталось) / подписка активна (сколько дней, когда списание) / период истёк.
|
||||
- Генерация поста и идеи блокируется, если подписка не активна (`_check_subscription`). `/help`, `/start`, `/balance`, `/subscribe` доступны всегда.
|
||||
- `/clear` обнуляет подписку (`deactivate_subscription`) и данные пользователя.
|
||||
- Оплата звёздами — имитация: бот не принимает реальные платежи, только симулирует активацию.
|
||||
|
||||
## Деплой и конфигурация
|
||||
- Gitea: `admin/social-post-writer-bot`, ветка `dev`.
|
||||
- Coolify проект: `Social Post Writer Bot`, окружение `development`.
|
||||
- Coolify приложение: `social-post-writer-bot-development` (`d32u5zcq2g4odmdpq9hw91yn`) на `spb-easy-dale`.
|
||||
- SQLite: `/app/data/social_writer.sqlite3`; persistent volume `d32u5zcq2g4odmdpq9hw91yn-social-post-writer-dev-data` монтируется в `/app/data`.
|
||||
- Секреты хранятся в переменных окружения приложения Coolify; не сохраняются в репозитории.
|
||||
- `DEPLOY_ENV=development`, `DEV_CHAT_ID` — для уведомления о новой версии; версия в файле `VERSION` (сейчас `0.1.0+18`).
|
||||
|
||||
## Статус
|
||||
- [x] Идея проекта зафиксирована
|
||||
@@ -54,7 +65,8 @@ Telegram-бот, который по запросу пользователя г
|
||||
- [x] `/clear` полностью очищает данные текущего пользователя: ToV, скриншоты, историю постов, историю идей и настройки; API-логи сохраняются
|
||||
- [x] `/idea` возвращает одну идею одним сообщением и сохраняет её для исключения повторов
|
||||
- [x] Все отправленные варианты постов сохраняются по пользователю, включая исправленные; история используется для новых идей
|
||||
- [x] `/clear` очищает историю пользовательских данных и оставляет API-логи
|
||||
- [x] Служебные ответы по-русски, язык текстов постов определяется запросом пользователя
|
||||
- [x] Help command uses new Rich Message, with a plain-text fallback.
|
||||
- [x] Development deployment/version notice and user-visible error details.
|
||||
- [x] Онбординг после `/start`: три сообщения (что делаю → примеры → стиль и идеи), golden path, остальное в `/help`
|
||||
- [x] Подписка: триал 3 дня, `/subscribe` за 100 звёзд (30 дней), `/balance`, блокировка генерации без активной подписки
|
||||
Reference in new issue
Block a user