Commit Graph

2402 Commits

Author SHA1 Message Date
Дмитрий 7c19b5aa9a docs(ПИЛОТ): снимок 19.06 — G1-G7 выкачены на боевой liderra.ru, метод/грабли/бэкапы 2026-06-19 19:29:33 +03:00
Дмитрий a119aba822 fix(G7-B): stray не-lpimp Bearer на sanctum-роуте → чистый 401 вместо 500 (нет таблицы PAT) 2026-06-19 17:35:53 +03:00
Дмитрий 602eaacd4a chore(G7-B): baseline Pest TestCall-ложноположительных для impersonation-тестов (0 продуктовых подавлений) 2026-06-19 17:25:28 +03:00
Дмитрий 21f8c1ff8d feat(G7-B): клиентская плашка impersonation + редирект/ключ в диалоге + leave 2026-06-19 17:09:59 +03:00
Дмитрий 61267dae92 feat(G7-B): leave из кабинета + impersonation-контекст в /api/auth/me + end-письмо 2026-06-19 17:04:48 +03:00
Дмитрий 8f1ded9b0d feat(G7-B): изоляция админ-зоны при impersonation + авто-истечение сессии 1 ч 2026-06-19 16:51:21 +03:00
Дмитрий aaeb396b1f feat(G7-B): guard impersonation + envelope машинного ключа на рабочих группах кабинета
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 16:44:42 +03:00
Дмитрий 0375c2a35a feat(G7-B): verify — session-takeover целевого юзера + выдача машинного ключа 2026-06-19 16:35:03 +03:00
Дмитрий 8118f852d5 feat(G7-B): письма impersonation код-согласие + завершение, wire в init 2026-06-19 16:25:49 +03:00
Дмитрий c3fd9e05b7 feat(G7-B): колонка session_token_hash под машинный ключ impersonation, schema v8.49 2026-06-19 16:21:32 +03:00
Дмитрий 4a077db3a5 docs(G7-B): план реализации двери impersonation + машинный ключ 2026-06-19 16:17:56 +03:00
Дмитрий f3892cfa93 docs(G7-B): спека двери impersonation + машинный ключ под ИИ + карта каналов 2026-06-19 16:09:07 +03:00
Дмитрий 1c0b432d8a docs(G7-B): хэндофф достройки impersonation — состояние брейншторма + промпт след. сессии
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 15:20:24 +03:00
Дмитрий eddad70d63 chore(G7-A): baseline Pest-ложноположительных в SupportRequestControllerTest
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 15:08:30 +03:00
Дмитрий 7ebe25385b feat(G7-A): экран «Помощь» (форма-заявка) + пункт меню + роут
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 15:04:17 +03:00
Дмитрий dd365b0a0e feat(G7-A): meta support-email + условный JivoSite в shell-blade
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 15:02:14 +03:00
Дмитрий b02ab1cadf feat(G7-A): POST /api/support-requests + тест (store+mail+валидация)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 15:00:12 +03:00
Дмитрий 0469994948 feat(G7-A): SupportRequestMail + шаблон письма
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 14:55:21 +03:00
Дмитрий 448633e59c feat(G7-A): модель SupportRequest
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 14:54:25 +03:00
Дмитрий 0826cb24dd feat(G7-A): таблица support_requests (schema + миграция, RLS)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 14:53:57 +03:00
Дмитрий 35e4f020b9 feat(G7-A): конфиг support.email + jivosite.widget_id
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 14:50:39 +03:00
Дмитрий 229e8e2459 docs(G7-A): план реализации клиентской «Помощь»
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 14:48:18 +03:00
Дмитрий 2affe6db01 docs(G7-A): спека клиентской «Помощь» (форма+email+JivoSite)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 14:18:16 +03:00
Дмитрий d33050f8f6 fix(schema): закрыть остаток дрейфа (project_routing_snapshots) + guard CREATE POLICY 05_27 (v8.47)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 13:37:48 +03:00
Дмитрий 4139896e0c fix(migration): guard CREATE POLICY в tenant_requisites (DROP IF EXISTS) — чинит migrate:fresh
G1-миграция guard'ила CREATE TABLE, но не CREATE POLICY (в PG нет IF NOT EXISTS) → коллизия с политикой из schema.sql на migrate:fresh. Тот же дрейф-класс. Теперь migrate:fresh зелёный целиком.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 12:58:37 +03:00
Дмитрий 1cb00e149c fix(schema): синк дрейфа lead-region в schema.sql + guard миграции 05_31 (v8.46)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 12:55:04 +03:00
Дмитрий ef28196082 fix(stan): Larastan-долг G1/G6 = 0 ошибок (реальные баги — починены, не спрятаны)
Продуктовый код (фиксы, не baseline): TenantRequisites+SupplierLead — явные @property (ide-helper:models пропускал модели); DealsController V1 — лишний ?-> на non-null received_at; ScrubPii — guard instanceof Monolog. Тест-код: ImitationTestCase @param int; findByInn return-type. Baseline перегенерён — в нём ТОЛЬКО ложноположительные (Pest TestCall + защитный ?-> на nullable first() в debug-строках ScenarioBC), 0 продуктовых подавлений (проверено диффом). composer stan: 0.

NB: столбцы lead-region (dadata_qc/phone_operator/region_source/resolved_subject_code) есть в БД, но отсутствуют в db/schema.sql — отдельный дрейф схемы.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 12:40:00 +03:00
Дмитрий 91e00b606f fix(G3): счётчик «7 событий» в уведомлениях + убрать «напоминаниях» из подсказки таймзоны
Хвосты, пойманные живым Playwright: захардкоженное «8 событий» после удаления reminder-события + stale-подсказка профиля.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 12:06:17 +03:00
Дмитрий ca04b45a55 chore(G3): почистить phpstan-baseline от напоминаний
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 11:55:57 +03:00
Дмитрий 3c214a692b feat(G3): drop таблицы reminders — миграция + schema.sql + CHANGELOG
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 11:48:26 +03:00
Дмитрий 8de94c46aa fix(G3): убрать создание reminders из HistoricalImportService (шов CSV-импорта)
CSV-колонку «Напоминание» парсер по-прежнему читает (внешний формат), но строки-напоминания больше не создаются — модель Reminder удалена.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 11:43:00 +03:00
Дмитрий 8e8cce885d feat(G3): убрать reminder из дефолтов notification_preferences (factory+seeder)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 11:38:58 +03:00
Дмитрий 5df354c39c feat(G3): удалить контроллер/роуты/модель/команду/письмо напоминаний
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 11:37:57 +03:00
Дмитрий c0f7d9ac73 feat(G3): убрать ветку reminder из NotificationService
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 11:36:27 +03:00
Дмитрий cb73457ec7 feat(G3): убрать next_reminder_at-подзапрос из DealController
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 11:34:36 +03:00
Дмитрий 25ac65e5e5 feat(G3): убрать преференцию «Напоминание» + хвосты фронт-тестов
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 11:29:46 +03:00
Дмитрий 0a3f90839c feat(G3): убрать next_reminder_at из фронт-слоя сделок
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 11:29:35 +03:00
Дмитрий abe6d51b0e feat(G3): убрать экран «Напоминания» и раздел в карточке сделки
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 11:18:49 +03:00
Дмитрий d6534375e3 docs(G3): план реализации удаления фичи «Напоминания»
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 11:08:29 +03:00
Дмитрий c9c5b44358 docs(G3): спека полного удаления фичи «Напоминания» (вкл. таблицу)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 10:56:18 +03:00
Дмитрий ca8bc0f415 docs: хэндофф сессии 19.06 — G1-хвосты+G2-B+G6 DONE, промпт следующей сессии
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 10:27:32 +03:00
Дмитрий bb2e0daad8 feat(G6): контроллер + роут GET /api/v1/deals (публичный read-API сделок)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 10:13:08 +03:00
Дмитрий 206e7a328d feat(G6): middleware ApiKeyAuth — аутентификация по API-ключу
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 10:12:03 +03:00
Дмитрий 1fd24745d1 test(G6): приёмка публичного API сделок (RED)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 10:11:24 +03:00
Дмитрий 4eb9ae3bb9 docs: G6 план реализации — публичный read-API сделок (middleware+контроллер+роут+тест)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 10:10:16 +03:00
Дмитрий f6a985c905 docs: G6 дизайн — публичный read-API сделок по API-ключу
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 10:07:11 +03:00
Дмитрий 6bfe654efa test(G2-B): UserFactory зеркалит новый дефолт new_lead.email true
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 08:53:36 +03:00
Дмитрий 8a3569df9e feat(G2-B): миграция — дефолт new_lead.email true + дотяжка существующих
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 08:53:07 +03:00
Дмитрий e0312734c0 chore(G2-B): канон схемы — дефолт new_lead.email true + CHANGELOG v8.44 (+sync v8.43 в header)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 08:52:31 +03:00
Дмитрий e6c921935c test(G2-B): дефолт new_lead.email=true (RED) + backfill SQL
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 08:51:04 +03:00