# Приёмка liderra.ru — ПУНКТ №21: Напоминания убраны (нет в меню/URL/эндпоинте/таблице)

> **Для исполнителя:** формат PR1 (одобрен 20.06). Каждый шаг = `🔧 Код-факт (file:line)` · `🎬 Действие` · `📋 ОТЧЁТ (было→ожидали→стало + 📸/📝)` · `❌ Если не так`. Техника «под капотом»; владельцу — человеческие карточки.

**Цель:** показать, что фича «Напоминания» **полностью снята** с продукта — её нет ни в меню, ни по прямой ссылке, ни в базе. Клиент не видит «обрубков» убранной функции.

**Что снимаем глазами:** **меню** кабинета (нет пункта «Напоминания»), переход по старой ссылке → «не найдено». Живые 📸.

**Источник сценария:** свод проверок №21 (REM-GONE); R3b «онбординг/UI».

> ⚠️ **Найдено при чтении кода (хвосты для уборки):** база/эндпоинт/меню убраны, но **во фронте остались два следа** — см. раздел «Остаточные хвосты». Их стоит дочистить, чтобы не торчали.

---

## 🔧 Код-факты (подтверждено чтением 20.06)

- **Таблица `reminders` УДАЛЕНА** — G3 (19.06.2026), миграция `2026_06_19_130000_drop_reminders_table`: снесены таблица, 4 индекса, RLS-политика; ключ `reminder` убран из дефолта `users.notification_preferences`; счётчики таблиц 73→72 — [db/schema.sql:7](../../../db/schema.sql#L7).
- **Поля `deals.reminder_text/reminder_at` и индекс — удалены** ранее — [db/schema.sql:172](../../../db/schema.sql#L172).
- **Нет живого UI напоминаний** — поиск по `resources/js/components|pages|router` не нашёл компонентов/маршрутов напоминаний.

### Остаточные хвосты (фронт — под уборку)
- `'reminder'` всё ещё в перечне типов уведомлений `NotificationEventKey` — [resources/js/api/auth.ts:12](../../../app/resources/js/api/auth.ts#L12). Риск: если настройки уведомлений рендерят все типы — может показаться **мёртвый переключатель** «Напоминания».
- Устаревший **комментарий-докблок** «…напоминания…» в карточке сделки — [resources/js/components/deals/DealDetailBody.vue:3](../../../app/resources/js/components/deals/DealDetailBody.vue#L3) (живого UI нет, только текст комментария).
- (Не путать) `billing:frozen-reminder` и `POLLING_REMINDERS_INTERVAL_MS` — это **другое** (письмо о заморозке баланса / интервал опроса баланса), к снятой фиче не относятся.

---

## Шаг 21-1 — Нет в меню и по прямой ссылке

**🔧 Код:** нет маршрутов/компонентов напоминаний (поиск пуст).
**🎬 Действие (лок):** пройти по меню кабинета; попробовать старый URL раздела «Напоминания».

**📋 ОТЧЁТ:**
| Что | Было | Ожидалось | Стало (факт) | Чем подтверждаем |
|---|---|---|---|---|
| Пункт меню «Напоминания» | был | **отсутствует** | _(слот прогона)_ | 📸 меню кабинета (нет пункта) |
| Старая ссылка раздела | — | «не найдено» / редирект | _(слот)_ | 📸 переход по URL |

**💡 Что внутри:** раньше в портале был раздел «Напоминания» — его решили убрать из продукта. Теперь его нет ни в меню, ни по старому адресу: клиент не натыкается на функцию, которую больше не поддерживают.

**❌ Если не так:** пункт меню/страница ещё открывается → фича снята не полностью.

---

## Шаг 21-2 — Нет в базе и эндпоинтах

**🔧 Код:** [db/schema.sql:7](../../../db/schema.sql#L7) (таблица удалена), [:172](../../../db/schema.sql#L172) (поля сделки удалены).
**🎬 Действие:** проверить отсутствие таблицы/полей и эндпоинта напоминаний.

**📋 ОТЧЁТ:**
| Что | Было | Ожидалось | Стало (факт) | Чем подтверждаем |
|---|---|---|---|---|
| Таблица `reminders` | была | **нет** | _(слот)_ | 📝 нет таблицы (schema, миграция drop) |
| Поля `deals.reminder_*` | были | **нет** | _(слот)_ | 📝 нет полей |
| Эндпоинт напоминаний | — | **нет** (404) | _(слот)_ | 📝 нет маршрута |

**❌ Если не так:** таблица/поля/эндпоинт остались → недоудаление (мусор в базе).

---

## Шаг 21-3 — Остаточные хвосты во фронте (под уборку)

**🔧 Код:** [auth.ts:12](../../../app/resources/js/api/auth.ts#L12), [DealDetailBody.vue:3](../../../app/resources/js/components/deals/DealDetailBody.vue#L3).
**🎬 Действие (лок):** открыть Настройки → Уведомления; проверить, нет ли мёртвого переключателя «Напоминания».

**📋 ОТЧЁТ:**
| Что | Было | Ожидалось | Стало (факт) | Чем подтверждаем |
|---|---|---|---|---|
| Переключатель «Напоминания» в уведомлениях | — | **не должен показываться** | _(слот)_ | 📸 Настройки → Уведомления |
| Комментарий в карточке сделки | — | устаревший текст-докблок убрать | _(слот)_ | 📝 правка комментария (не виден клиенту) |

**💡 Что внутри:** функцию убрали, но в коде остались мелкие «хвостики» — упоминание напоминаний в списке типов уведомлений и старый комментарий. Сам по себе это не ломает работу, но если в настройках виден переключатель, который ничего не делает — это путает клиента. Такие хвосты надо подчистить.

**❌ Если показан мёртвый переключатель:** зафиксировать как **находку-хвост** и дочистить (убрать `'reminder'` из типов уведомлений + устаревший комментарий).

---

## Verification №21 (выход из пункта)
- [ ] 📸 Нет пункта меню «Напоминания»; старый URL → «не найдено».
- [ ] 📝 Нет таблицы `reminders`, нет полей `deals.reminder_*`, нет эндпоинта.
- [ ] 📸 В Настройках → Уведомления нет мёртвого переключателя «Напоминания».
- [ ] 🧹 Хвосты (`auth.ts 'reminder'`, комментарий DealDetailBody) — зафиксированы под уборку.

## 📸 vs 📝 в этом пункте
- **📸 Скриншот:** меню (без пункта), старый URL («не найдено»), Настройки→Уведомления (без переключателя).
- **📝 Текст:** отсутствие таблицы/полей/эндпоинта, правки хвостов.

## Грабли
- Не путать снятую фичу с `billing:frozen-reminder` (письмо о заморозке) и `POLLING_REMINDERS_INTERVAL_MS` (опрос баланса) — это другое, не трогать.
- Фронт-хвосты (`'reminder'` в типах, комментарий) — реальная мелкая недоделка уборки G3; дочистить, чтобы не торчало (правило «не оставляй хвостов»).
