Модуль «Активности» (4 экрана)¶
/p/:pid/activities — Activities List¶
Назначение: Табличный вид всех активностей проекта. Доступ: Member+.
Компоновка:
├── Header + Sidebar (пункт «Активности (3)» — счётчик просроченных)
└── Main:
├── Заголовок: «Активности» | Toggle: [Список●] [Календарь] | [+ Активность] → Drawer
├── Панель фильтров:
│ ├── 🔍 Поиск по названию
│ ├── Тип: ☑ Задача ☑ Звонок ☑ Встреча ☑ Заметка
│ ├── Статус: Запланирована / В работе / Завершена / Отменена
│ ├── Просроченные: ☐ Только просроченные
│ ├── Ответственный (multi-select)
│ ├── Срок (date range)
│ └── Привязка: Сделка / Контакт / Компания (поиск)
│
└── Таблица:
| ☐ | Тип | Название ▼ | Срок | Приоритет | Статус | Ответст. | Привязка |
| ☐ | 📞 | Звонок: Банк Ромашка | сегодня | Средний | Заплан. | Петрова | Сделка #42 |
| ☐ | 📋 | Подготовить КП | вчера ⚠ | Высокий | В работе | Козлов | Сделка #38 |
Просроченные: строка подсвечена красным, дата с ⚠.
Пагинация: стандартная.
Empty state: «Нет активностей.» [+ Создать задачу]
Drawer «Создание активности»¶
├── Заголовок: «Новая активность»
├── Тип: ○ Задача ○ Звонок ○ Встреча ○ Заметка (toggle, по умолчанию — Задача)
├── Общие поля:
│ ├── Название* (input)
│ ├── Ответственный* (dropdown — участники проекта, по умолчанию — я)
│ └── Привязка (dropdown: сделка / контакт / компания / продажа, опционально)
│
├── Если Задача:
│ ├── Описание (textarea)
│ ├── Срок* (date picker)
│ ├── Приоритет: Низкий / Средний● / Высокий / Срочный
│ └── Напоминание: ○ Нет ○ За 15 мин ○ За 1 час ◉ За 1 день
│
├── Если Звонок:
│ ├── Направление: ○ Входящий ◉ Исходящий
│ ├── Дата и время (datetime picker)
│ └── Напоминание
│
├── Если Встреча:
│ ├── Дата начала (datetime picker)
│ ├── Дата окончания (datetime picker)
│ ├── Место / ссылка (input)
│ ├── Участники (multi-select из участников проекта)
│ └── Напоминание
│
├── Если Заметка:
│ └── Текст* (textarea)
│
└── Кнопки: [Создать] [Отмена]
/p/:pid/activities/calendar — Calendar View¶
Назначение: Календарный вид активностей. Доступ: Member+.
Компоновка:
├── Header + Sidebar
└── Main:
├── Заголовок: «Активности» | Toggle: [Список] [Календарь●]
├── Навигация: [← Пред.] Февраль 2026 [След. →] | [День] [Неделя●] [Месяц]
├── Фильтры: Тип ▼ | Мой / Все ▼
│
└── Календарная сетка:
Неделя (по умолчанию):
┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
│ Пн 16 │ Вт 17 │ Ср 18 │ Чт 19● │ Пт 20 │ Сб 21 │ Вс 22 │
├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
│ 09:00 │ │ │ │ │ │ │
│ 📞 Зво │ │ ━━━━━━━│━ Встреча с Альфа ━━│ │ │
│ нок │ │ 10:00 │ │ │ │ │
│ │ │ -12:00│ │ │ │ │
│ │ │ │ │ │ │ │
│ 15:00 │ │ │ │ │ │ │
│ 📋 КП │ │ │ 14:00 │ │ │ │
│ │ │ │ 📞 Банк│ │ │ │
└────────┴────────┴────────┴────────┴────────┴────────┴────────┘
Задачи без времени: отображаются в верхней строке дня (all-day).
Клик на событие → popup с деталями + ссылка на карточку.
Клик на пустую ячейку → Drawer создания с предзаполненной датой/временем.
/p/:pid/activities/:id — Activity Details¶
Назначение: Карточка активности. Доступ: Member+ (по политике).
Компоновка:
├── Header + Sidebar
└── Main:
├── Шапка:
│ ├── Иконка типа + «Задача: Подготовить КП»
│ ├── Статус: [В работе ▼] (dropdown для смены)
│ ├── Приоритет: 🔴 Высокий
│ ├── Срок: 18 февраля 2026 (⚠ Просрочена — красный)
│ ├── Ответственный: Козлов
│ └── Действия: [Редактировать] [Завершить ✓] [Удалить]
│
├── Описание:
│ Текст задачи (markdown или plain text).
│
├── Привязки:
│ ├── Сделка: «Альфа — ЗП проект» (ссылка)
│ ├── Контакт: Иванов И.И. (ссылка)
│ └── [+ Добавить привязку]
│
├── Для звонка/встречи дополнительно:
│ ├── Результат: textarea (заполняется после звонка/встречи)
│ ├── Длительность: 25 мин (для звонка)
│ └── Участники: Петрова, Козлов (для встречи)
│
└── История: лог изменений
/p/:pid/activities/:id/edit — Edit Activity¶
Назначение: Редактирование активности. Доступ: Member+ (по политике: свои, расшаренные).
Компоновка: форма с полями в зависимости от типа (аналогично Drawer, но расширенная).
Дополнительно:
├── Результат (textarea — для звонков/встреч)
├── Смена статуса
└── Смена типа: запрещено (тип фиксируется при создании)