♻ update

This commit is contained in:
gsr
2026-10-14 16:39:39 +03:00
parent 6186b0446b
commit d42640d0e9
3 changed files with 57 additions and 5 deletions
+53 -1
View File
@@ -1,6 +1,58 @@
# Changelog
## [0.6.9-beta] - 2026-10-04
## [0.6.11-beta] - 2026-10-12
### Добавлено
- **Cleanup job** — автоматическая очистка записей `conversion_logs` старше 90 дней через `CleanupOldLogs()`.
- **Permanent Delete** — полное удаление пользователей через 14 дней после soft delete через `PermanentDeleteAccount()` с индексом `idx_users_deleted_at (is_active, deleted_at)`.
- **Лимит истории конвертаций** — максимум 500 записей на пользователя (`MaxHistoryPerUser`), автоматический trim при каждой вставке через транзакцию UPSERT + DELETE старых.
- **Изоляция rate limit** — глобальный IP rate limit исключён для auth endpoints (`/api/auth/*`), так как они имеют собственные специфичные лимиты (`LoginRateLimits`, `RegisterRateLimits`).
### Изменено
- **Graceful shutdown порядок** — `scheduler.Stop()` теперь вызывается **перед** `httpServer.Shutdown()` и `db.Close()`, гарантируя завершение активных cron jobs до закрытия соединений с БД.
- **Транзакция `ConversionLogRepository.Save`** — UPSERT + trim старых записей выполняются в одной транзакции для атомарности.
- **Константы базовых тарифов** — `baseMicroPriceRubles`, `baseMicroCredits`, `baseMonthlyPriceRub` вынесены как единственные источники истины для формул.
### Исправлено
- **Баг с двойным `case` на один канал `ticker.C`** в старом scheduler — заменял случайный выбор одного из двух case на последовательный запуск задач.
- **Защита от отрицательной экономии** — явный `if savings < 0 { savings = 0 }` вместо разорванного `max()` с комментарием.
- **Fail-open стратегия в scheduler** — ошибка в одной cleanup-задаче не блокирует выполнение других.
### Безопасность
- **Fail-open в rate limit middleware** — при недоступности Redis auth endpoints fallback-ят в БД, не блокируя легитимных пользователей.
---
## [0.6.10-beta] - 2026-10-10
### Добавлено
- **🎨 Редизайн главной страницы** — шесть новых информационных блоков на landing page для улучшения onboarding и конверсии.
- **`<RecentConversions />`** — блок последних конвертаций с CLS-free (Cumulative Layout Shift) плавным смещением при появлении/скрытии Preview. Позволяет быстро повторить предыдущий запрос.
- **`<HowItWorks />`** — пошаговое объяснение процесса конвертации для новых пользователей.
- **`<FreeQuotaInfo />`** — визуальное сравнение лимитов и возможностей между Free-планом, пакетами кредитов и подписками.
- **`<UseCases />`** — блок сценариев использования (LLM-датасеты, документация, контент-агрегация).
- **`<FeaturesOverview />`** — блок «Engineered for Speed & Reliability» с описанием технических преимуществ (кэширование, Readability, параллельная обработка).
- **`<ApiDocBanner />`** — CTA-баннер для привлечения внимания к API-документации и использованию API-ключей.
- **Поддержка подписок в UI** — отображение статуса подписки (`is_subscriber`, `days_remaining`) в `QuotaBadge` и `UserDropdown`.
- **Три типа монетизации в Pricing** — вкладки «Free / Credit Packs / Subscriptions» с переключением между типами планов.
### Изменено
- **Структура главной страницы** — блоки расположены в логической последовательности: форма → опции → preview → recent → обучающие блоки → CTA.
- **Анимации появления блоков** — плавное смещение контента без layout shifts при изменении состояния Preview.
- **Адаптивный дизайн** — все новые блоки оптимизированы под мобильные устройства (grid → single column).
### Производительность
- **CLS-free анимации** — использование `transform` и `opacity` вместо изменения layout-свойств для плавных переходов без смещений.
- **Lazy rendering** — компоненты монтируются только когда они видимы во viewport.
### UX
- **Быстрый доступ к истории** — `RecentConversions` позволяет одним кликом повторить предыдущую конвертацию.
- **Образовательный контент** — `HowItWorks` + `UseCases` снижают барьер входа для новых пользователей.
- **Прозрачность тарифов** — `FreeQuotaInfo` помогает пользователю выбрать подходящий план без необходимости читать документацию.
---
## [0.6.9-beta] - 2026-10-05
### Добавлено
- **Три типа монетизации** — единый ответ `GET /api/billing/packages` теперь возвращает `{ free, credits, subscriptions }` вместо плоского списка пакетов.
+2 -2
View File
@@ -1,4 +1,4 @@
# 📖 MarkClean API — API Key Usage Documentation
# 📖 MarkClean API documentation
> **API Version:** `v1`
> **Base URL:** `https://markclean.online/api`
@@ -1006,7 +1006,7 @@ No official SDK yet, but the API is simple enough to use via standard HTTP clien
## 📞 Support
- 📧 **Email:** support@markclean.online
- 📧 **Email:** [support@markclean.online]()
- 📧 **Email:** gnutenko.s.r@gmail.com
- 💬 **Telegram:** [@Slayder12](https://t.me/Slayder12)
- 📝 **Changelog:** [markclean-doc/changelog.md](https://gitea.gsrhost.ru/gsr/markclean-doc/src/branch/main/changelog.md)
+2 -2
View File
@@ -1,4 +1,4 @@
# 📖 MarkClean API — Документация по использованию API-ключа
# 📖 Документация MarkClean API
> **Версия API:** `v1`
> **Базовый URL:** `https://markclean.online/api`
@@ -1006,7 +1006,7 @@ X-API-Key: {{apiKey}}
## 📞 Поддержка
- 📧 **Email:** support@markclean.online
- 📧 **Email:** [support@markclean.online]()
- 📧 **Email:** gnutenko.s.r@gmail.com
- 💬 **Telegram:** [@Slayder12](https://t.me/Slayder12)
- 📝 **Changelog:** [markclean-doc/changelog.md](https://gitea.gsrhost.ru/gsr/markclean-doc/src/branch/main/changelog.md)