docs(spec): drop skull emoji, clarify dry-run default on fresh install + upgrade
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -62,7 +62,7 @@ CF7 submit (status=spam)
|
|||||||
### Что видит пользователь
|
### Что видит пользователь
|
||||||
**Drop, dry-run OFF:** стандартный CF7 spam-message на сайте, заявка в Flamingo Spam, в TG ничего.
|
**Drop, dry-run OFF:** стандартный CF7 spam-message на сайте, заявка в Flamingo Spam, в TG ничего.
|
||||||
|
|
||||||
**Drop, dry-run ON:** то же на сайте + сообщение в TG с заголовком `☠️ [БЫЛО БЫ DROPPED]` и строкой `Сработавшее правило: hard-rule (нет позитивных + короткое латинское имя)` или `Сработавшее правило: score ≤ -5`.
|
**Drop, dry-run ON:** то же на сайте + сообщение в TG с заголовком `[БЫЛО БЫ DROPPED]` и строкой `Сработавшее правило: hard-rule (нет позитивных + короткое латинское имя)` или `Сработавшее правило: score ≤ -5`.
|
||||||
|
|
||||||
**Не drop:** всё работает как сейчас.
|
**Не drop:** всё работает как сейчас.
|
||||||
|
|
||||||
@@ -74,11 +74,11 @@ CF7 submit (status=spam)
|
|||||||
|---|---|
|
|---|---|
|
||||||
| `includes/class-classifier.php` | `DEFAULT_THRESHOLDS` += `'drop' => -5`. Новый метод `evaluate_hard_drop()` + private helpers `has_positive_signals()`, `has_short_latin_name()`, `count_placeholder_fields()`, `has_valid_email_anywhere()`. Логика возврата label расширена — `'drop'` имеет приоритет. Hard-rule конфигурируется через filter `cf7stg_hard_drop_rules`. |
|
| `includes/class-classifier.php` | `DEFAULT_THRESHOLDS` += `'drop' => -5`. Новый метод `evaluate_hard_drop()` + private helpers `has_positive_signals()`, `has_short_latin_name()`, `count_placeholder_fields()`, `has_valid_email_anywhere()`. Логика возврата label расширена — `'drop'` имеет приоритет. Hard-rule конфигурируется через filter `cf7stg_hard_drop_rules`. |
|
||||||
| `includes/sources/class-cf7-source.php` | В `enqueue_from_submission()` добавляется ветка обработки `label === 'drop'` (см. data flow выше). Добавляется применение filter `cf7stg_should_enqueue` для не-drop случаев. |
|
| `includes/sources/class-cf7-source.php` | В `enqueue_from_submission()` добавляется ветка обработки `label === 'drop'` (см. data flow выше). Добавляется применение filter `cf7stg_should_enqueue` для не-drop случаев. |
|
||||||
| `includes/class-message-formatter.php` | Если `payload['dry_run_drop'] === true` — заголовок становится `☠️ [БЫЛО БЫ DROPPED]` (вместо текущего «Спам заявки для проверки»), добавляется строка с триггером правила. |
|
| `includes/class-message-formatter.php` | Если `payload['dry_run_drop'] === true` — заголовок становится `[БЫЛО БЫ DROPPED]` (вместо текущего «Спам заявки для проверки»), добавляется строка с триггером правила. |
|
||||||
| `includes/class-settings.php` | Геттеры/сеттеры для новых опций. Метод `increment_drop_counter($mode)` с rolling сменой даты. Метод `reset_drop_counters()`. |
|
| `includes/class-settings.php` | Геттеры/сеттеры для новых опций. Метод `increment_drop_counter($mode)` с rolling сменой даты. Метод `reset_drop_counters()`. |
|
||||||
| `includes/class-activator.php` | Upgrade-handler: при апдейте до 1.1.0 — `add_option('cf7stg_dry_run_drop', true)` (safe default). |
|
| `includes/class-activator.php` | На активации (как fresh install, так и upgrade до 1.1.0): `add_option('cf7stg_dry_run_drop', true)`, `add_option('cf7stg_drop_score_threshold', -5)`, `add_option('cf7stg_hard_drop_enabled', true)`, `add_option('cf7stg_drop_counters', $defaults)`. `add_option` сохранит существующее значение, если опция уже есть — то есть пользователи, уже выключившие dry-run, его не получат обратно. |
|
||||||
| `admin/class-settings-page.php` + `admin/views/settings.php` | Новый блок «Silent drop»: чекбокс dry-run, score-порог, чекбокс hard-rule, статистика, кнопка «Сбросить счётчики». |
|
| `admin/class-settings-page.php` + `admin/views/settings.php` | Новый блок «Silent drop»: чекбокс dry-run, score-порог, чекбокс hard-rule, статистика, кнопка «Сбросить счётчики». |
|
||||||
| `admin/class-dashboard-widget.php` + `admin/views/dashboard-widget.php` | Строка со счётчиком дропов (формат зависит от dry-run on/off). |
|
| `admin/class-dashboard-widget.php` + `admin/views/dashboard-widget.php` | Строка со счётчиком дропов: при dry-run on — `Dry-run: за сегодня было бы дропнуто 3, всего 17`; при dry-run off — `Дропнуто сегодня: 3 (вчера 5, всего 124)`. Без эмодзи. |
|
||||||
| `cf7-spam-to-telegram.php` | `CF7STG_VERSION = '1.1.0'` в header и константе. |
|
| `cf7-spam-to-telegram.php` | `CF7STG_VERSION = '1.1.0'` в header и константе. |
|
||||||
| `readme.txt` | `Stable tag: 1.1.0` + запись в Changelog. |
|
| `readme.txt` | `Stable tag: 1.1.0` + запись в Changelog. |
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ PHPUnit, suite `unit` (как сейчас). Все новые тесты — TD
|
|||||||
- `test_filter_should_enqueue_can_block_non_drop` — фильтр для form_id=42 → false → не enqueue, счётчики не трогаются.
|
- `test_filter_should_enqueue_can_block_non_drop` — фильтр для form_id=42 → false → не enqueue, счётчики не трогаются.
|
||||||
|
|
||||||
### `tests/MessageFormatterDryRunTest.php`
|
### `tests/MessageFormatterDryRunTest.php`
|
||||||
- `test_dry_run_drop_prefix_in_title` — `payload['dry_run_drop']=true` → текст начинается с `☠️ [БЫЛО БЫ DROPPED]`.
|
- `test_dry_run_drop_prefix_in_title` — `payload['dry_run_drop']=true` → текст начинается с `[БЫЛО БЫ DROPPED]`.
|
||||||
- `test_dry_run_drop_includes_triggered_rule_line` — есть строка `Сработавшее правило: ...`.
|
- `test_dry_run_drop_includes_triggered_rule_line` — есть строка `Сработавшее правило: ...`.
|
||||||
- `test_non_drop_payload_unchanged` — без флага вывод как раньше.
|
- `test_non_drop_payload_unchanged` — без флага вывод как раньше.
|
||||||
|
|
||||||
@@ -147,12 +147,12 @@ PHPUnit, suite `unit` (как сейчас). Все новые тесты — TD
|
|||||||
|
|
||||||
## Rollout
|
## Rollout
|
||||||
|
|
||||||
1. Активировать плагин — Activator выставит `dry_run_drop=true` (safe default), `hard_drop_enabled=true`.
|
1. Установка/активация (fresh install **и** upgrade до 1.1.0) — Activator выставит `dry_run_drop=true`, `hard_drop_enabled=true`, `drop_score_threshold=-5`, пустые счётчики. Если опция уже была — её значение сохраняется (через `add_option`).
|
||||||
2. На каждом сайте, где плагин обновляется до 1.1.0:
|
2. С момента активации:
|
||||||
- Сразу включится dry-run mode.
|
- Все drop-заявки идут в TG с пометкой `[БЫЛО БЫ DROPPED]` (а не реально дропаются).
|
||||||
- Все drop-заявки начнут идти в TG с пометкой `☠️ [БЫЛО БЫ DROPPED]`.
|
- Счётчик `dry_today` инкрементируется на каждом drop.
|
||||||
3. Через 1–2 недели владелец сайта смотрит, нет ли среди дропов реальных клиентов.
|
3. Через 1–2 недели владелец сайта смотрит TG-канал и счётчик в Settings — нет ли среди дропов реальных клиентов.
|
||||||
4. Если всё ок — снимает чекбокс «Dry-run mode» в настройках. С этого момента — реальный silent drop.
|
4. Если всё ок — снимает чекбокс «Dry-run mode» в настройках. С этого момента drop-заявки в TG не уходят, инкрементируется только `real_today`.
|
||||||
|
|
||||||
## Версионирование
|
## Версионирование
|
||||||
|
|
||||||
@@ -162,9 +162,9 @@ PHPUnit, suite `unit` (как сейчас). Все новые тесты — TD
|
|||||||
= 1.1.0 =
|
= 1.1.0 =
|
||||||
* New: Silent drop — заявки, удовлетворяющие hard-rule (нет позитивных
|
* New: Silent drop — заявки, удовлетворяющие hard-rule (нет позитивных
|
||||||
сигналов + короткое латинское имя или ≥3 полей-плейсхолдеров) или
|
сигналов + короткое латинское имя или ≥3 полей-плейсхолдеров) или
|
||||||
score ≤ -5, не отправляются в TG. По умолчанию работает в dry-run
|
score ≤ -5, не отправляются в TG. По умолчанию при установке/апгрейде
|
||||||
режиме (помечает сообщение «☠️ [БЫЛО БЫ DROPPED]»), реальный дроп
|
включён dry-run режим (помечает сообщение «[БЫЛО БЫ DROPPED]»);
|
||||||
включается чекбоксом в настройках.
|
реальный дроп включается чекбоксом в настройках.
|
||||||
* New: Settings → блок «Silent drop» с переключателями dry-run, hard-rule,
|
* New: Settings → блок «Silent drop» с переключателями dry-run, hard-rule,
|
||||||
score-порогом и статистикой счётчиков.
|
score-порогом и статистикой счётчиков.
|
||||||
* New: Dashboard widget показывает количество дропов.
|
* New: Dashboard widget показывает количество дропов.
|
||||||
|
|||||||
Reference in New Issue
Block a user