Commit Graph

42 Commits

Author SHA1 Message Date
wasrusgen
25c785f520 brand(crm): дашборд-заголовки и поиск без эмодзи 2026-06-03 16:50:40 +03:00
wasrusgen
d704bd84ef brand(crm): пиктограммы по брендбуку (Lucide stroke 1.75) — навигация, вкладки, заголовки 2026-06-03 16:48:56 +03:00
wasrusgen
5ded2c7312 feat: предложения клиента — фиксация и триаж
Отдельный backlog «Предложения» (не отклонения): Елена ловит идею в диалоге
(record_suggestion) + кнопка «Мои идеи» в кабинете. Статусы new/discussion/
accepted/rejected + решение. CRM-вкладка «Предложения» с триажем, клиент видит статус.
2026-06-03 13:18:39 +03:00
wasrusgen
4be49a25fb feat(chat): авто-обновление канала Консультант (polling 15с, GET /api/operator-chat) 2026-06-03 12:57:47 +03:00
wasrusgen
865b87e664 feat: живой канал «Консультант» (клиент ↔ руководитель проекта)
Отдельный человеческий канал рядом с Еленой (AI):
- backend: /api/operator-chat (channel=operator), уведомления в Telegram обеим сторонам
- кабинет: раздел «💬 Консультант» (чат с Русланом, мик)
- CRM: вкладка «Чат с клиентом» + бейдж непрочитанных + мик
2026-06-03 12:36:32 +03:00
wasrusgen
9c4f68cf55 feat(ux): микрофон везде + документы у оператора + полировка интерфейса
🎤 голос: «Спросить Елену» и профиль (кабинет), заметка и задачи (CRM) — переиспользуемая кнопка-мик
📎 документы: вкладка «Документы» в CRM (просмотр+загрузка оператором), открытие/скачивание файлов,
   прикрепление файла к вопросу Елене (кабинет), backend /api/doc
🖥 интерфейс: модалка «Новый клиент» (имя/ниша/контакт/источник) вместо prompt(),
   inline-правка цены этапа, тосты вместо alert()
2026-06-03 12:17:48 +03:00
wasrusgen
7c79cd305a security(crm): закрыть операторские роуты + авто-токен на все вызовы CRM
- gate /api/project/crm|tasks|approve|delete под is_operator() (только crm.html их зовёт)
- crm.html: обёртка window.fetch — X-Operator-Token на все /api/ вызовы оператора
2026-06-02 07:05:04 +03:00
wasrusgen
a3fc1b6d9d feat: операторская авторизация (Telegram initData + пароль) + MiniApp + каркас Sber PAY
- backend: /api/operator/auth (initData HMAC | пароль), gate /api/projects,
  бот /myid + кнопка «Открыть CRM» для оператора (ADMIN_TG_IDS)
- crm.html: Telegram SDK + гейт (вход через TG на телефоне, пароль на десктопе),
  X-Operator-Token на /api/projects
- каркас Sber PAY: mTLS из .p12, OAuth-токен, /api/payment/sber-invoice,
  /api/payment/sber-status — активируется по .env (SBER_PAY_ENABLED + пароль + secret)
2026-06-02 07:01:13 +03:00
wasrusgen
835b6a05df feat(crm): индикатор баланса AI-движка
/api/ai-status — пинг в 1 токен, ловит low_balance. В CRM: точка в шапке
(зелёная/красная) + плашка «AI-движок недоступен — пополните баланс».
Без названия вендора (публичный репо + правило конфиденциальности).
2026-06-02 06:28:15 +03:00
wasrusgen
5e67ddb286 feat: орг.слой в CRM + Организация в смете + Phase 3 (ТЗ под клиента) + выгрузка
1. Операторская CRM: вкладка «Организация» (оргструктура+должностные) с пересборкой
2. Смета: «Организация» — оплачиваемый этап (org:10000) во всех массивах стадий
3. Phase 3: /api/build-spec-client — ТЗ под вариант клиента (учёт отклонений+орг),
   переключатель «Эталон Елены / Вариант клиента» в ТЗ-вкладке CRM
4. Должностные+оргструктура в выгрузку ТЗ (PDF в CRM, MD+JSON в кабинете)
2026-06-02 00:14:52 +03:00
wasrusgen
024c3fb500 fix(cabinet): чат интервью открывается сразу внизу, без «пролёта» сверху
Причина: addMsg скроллил .chat (без своего скролла), реальный контейнер .scroll
оставался вверху, потом уезжал вниз скролл-анкерингом. Теперь скроллим .scroll,
прыжок вниз после показа sv1 (rAF), overflow-anchor:none против дрейфа.
2026-06-02 00:09:05 +03:00
wasrusgen
9558c8b423 feat(crm): вкладка «Отклонения» — эталон Елены против выбора клиента
Оператор при внедрении видит расхождения: решение клиента (внедряем) +
рекомендация Елены (флажок) + причина клиента. Бейдж со счётчиком.
2026-06-01 23:38:38 +03:00
wasrusgen
30160a0999 feat(воронка): drag-and-drop смены этапа, суммы по колонкам, степпер+бейдж на картах, моб.скролл
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 22:59:40 +03:00
wasrusgen
0a9d924d58 feat(CRM): мобильный адаптив — гамбургер-меню, drawer-сайдбар, KPI/гриды в 1-2 колонки
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 21:52:20 +03:00
wasrusgen
509ce225b9 fix(смета): «Получено» и разблокировка ТЗ считаются по всему реестру платежей, не только по этап-привязанным (устранён рассинхрон чисел)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 17:22:07 +03:00
wasrusgen
c7c91d9dbe feat(дашборд): поиск по клиентам + сортировка (имя/сумма/этап/статус)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 17:12:41 +03:00
wasrusgen
c56d7ebf00 feat(СБП): динамический QR Сбера — кнопка на этапе, демо-режим, webhook + ручное подтверждение
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 09:12:11 +03:00
wasrusgen
2fc91433da feat(платежи): автозадачи-напоминания о сроках оплаты этапов
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 09:02:00 +03:00
wasrusgen
066a628695 feat(платежи): нераспределённый остаток, сроки этапов (график), нал/безнал, клиент видит даты
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 08:54:07 +03:00
wasrusgen
a621f301ce ui: правка существующих платежей в реестре (дата/сумма/назначение) + sync со сметой
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 08:14:24 +03:00
wasrusgen
9b0d0af277 ui: полное редактирование сметы — правка цены этапа, отмена оплаты, синхронизация с реестром
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 08:00:44 +03:00
wasrusgen
24bd0e29d5 ui: сворачиваемые секции (динамика свёрнута) + фильтры клиентов и задач
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 07:55:10 +03:00
wasrusgen
984ead3f2f ui: вкладка Сделка — плотный обзор клиента (прогресс+финансы+контакт+заметка)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 07:48:35 +03:00
wasrusgen
6828ecfeb3 ui: компактный дашборд — таблицы вместо карточек, степпер в строку
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 07:38:32 +03:00
wasrusgen
5b146fb7e5 feat: смета проекта — гибридная модель оплаты (вход 0₽ + модули)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 07:27:31 +03:00
wasrusgen
d6923e5ad1 fix: payment stages from client progress (5 analysis stages), no generator; rule: 100% paid = ТЗ unlocked; backend adds stage_payments
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 01:22:46 +03:00
wasrusgen
78b3e22eb6 feat: payment plan (schedule) bound to analysis milestones — flexible per-client schemes (100%/50-50/staged), mark stage paid creates registry payment; backend whitelists payment_schedule 2026-05-31 01:14:24 +03:00
wasrusgen
9a349fe21e crm dashboard: client rows show billing type + 5-stage stepper + current stage; backend adds has_selection
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 00:01:07 +03:00
wasrusgen
37c7486cc0 crm: screen mockup table full-width + horizontal scroll (nowrap cells, no 640px cap)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 23:56:00 +03:00
wasrusgen
435f9b9a4d crm: functional client card — top main-tabs (Сделка/Цена/Платежи/Задачи/Анализ) with badges, pricing for paid+free, Telegram invite button
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 16:49:26 +03:00
wasrusgen
4776b9a9e0 feat: billing type (paid/free) + AI pricing — scale assessment, market analysis, packages with arguments 2026-05-30 15:26:47 +03:00
wasrusgen
a056f1a7eb feat: revenue chart by month + auto-task on balance + payments CSV export 2026-05-30 14:54:50 +03:00
wasrusgen
13db0cf9c9 feat: payments registry — payment log, balance, status + finance KPIs on dashboard 2026-05-30 14:45:38 +03:00
wasrusgen
c37491cbc7 feat: delete client — removes project with all data (messages/models/artifacts/docs) 2026-05-30 14:38:35 +03:00
wasrusgen
6477ef3ed4 feat: tasks & reminders — per-client tasks with due dates + upcoming on dashboard 2026-05-30 14:04:49 +03:00
wasrusgen
f5d1c466c5 feat: screen mockup generator — Elena designs UI previews per module with client data 2026-05-30 14:01:00 +03:00
wasrusgen
2fab7092b3 feat: PDF export of tech spec — branded printable document for developer 2026-05-30 13:58:36 +03:00
wasrusgen
4507625911 feat: dynamic API base — works on wasrusgen1.ru/consulting (own domain, no CORS) 2026-05-30 13:57:11 +03:00
wasrusgen
269c6f9b0a feat: full CRM — dashboard (KPI), sales pipeline (kanban), client card (deal/payment/funnel) 2026-05-30 13:26:11 +03:00
wasrusgen
ade80274ff feat: production blocks 1-3 — invite links, server-side checkpoints, CRM↔client binding 2026-05-30 13:14:26 +03:00
wasrusgen
dfad10bbff brand: fix logo — vertical separator + КОНСАЛТИНГ emphasized (per brandbook) 2026-05-30 13:00:44 +03:00
wasrusgen
9a6623fbc0 feat: consultant CRM — projects list, 5 tabs (interview/methods/canvas/idef0/spec), checkpoints 2026-05-30 12:29:01 +03:00