Журнал изменений
Что нового.
Каждое усовершенствование платформы, как только она появится.
· SecurityService
Implement hash-based file storage for avatars
- Generate SHA-256 hash from avatar ID after persistence - Store hash in database fileHash field - Upload files to MinIO using hash-based naming: {hash}.{fileExtension} - Update all URL generation to use hash instead of ID - Add backward compatibility: generate hash for old avatars without hash - Update photo upload, Avatar Creator creation, update, and delete operations - Prevents enumeration attacks by making file names unpredictable
· kamo-shared-library
Добавление поля fileHash в объект Avatar для безопасного хранения файлов
Добавить колонку fileHash для хранения хэша SHA-256 идентификатора аватара Hash используется для именования файлов MinIO для предотвращения атак перечисления. Формат: {hash}.{fileExtension} вместо {id}.{fileExtension}
· kamo-internal
Rebuild avatar UI - современный, интерактивный, полированный. Backend возвращает URL напрямую
· SecurityService
Rebuild avatar system - backend generates presigned URLs directly like backgrounds
· kamo-internal
Добавьте учетные данные MinIO в k8s configmap
· kamo-internal
Создавайте URL-адреса в Next.js с помощью MinIO SDK с доменом темы
· kamo-shared-library
Добавьте метод getPresignedUrlWithEndpoint для пользовательских URL-адресов конечных точек
· kamo-internal
Добавьте создание аватара Avatar Creator, управление фоном с переупорядочением и полную поддержку библиотеки аватара / фона
· SecurityService
Add avatar and background management endpoints
· kamo-shared-library
Добавить классы AvatarPhoto и AvatarAvatar Creator, изменить структуру наследования Avatar
· SecurityService
Organize MinIO storage with folder structure and add Avatar Creator SVG support
- Updated storage paths to use organized folder structure: * members/avatars/photos/ for photo avatars * members/avatars/vector/ for Avatar Creator SVG avatars * members/backgrounds/ for background images - Added SVG file generation and storage for Avatar Creator avatars - Avatar Creator avatar creation/update now accepts SVG string and saves to MinIO - All presigned URL generation updated to use new folder paths - SVG files are saved when Avatar Creator avatars are created or updated
· SecurityService
Add avatar, background, and member profile management endpoints
- Added AvatarController with CRUD operations for avatars (photo and Avatar Creator) - Added UserBackgroundController for managing user background images - Extended MemberController with GET/PUT endpoints for member profile data - All endpoints support MinIO uploads to 'internal' bucket with presigned URL generation - Avatar endpoints support photo uploads and Avatar Creator avatar creation - Background endpoints support member-specific backgrounds - Member profile endpoints support updating avatar selection from user's collection
· kamo-shared-library
Добавьте репозитории Avatar и UserBackground и поддержку URL
Добавлен AvatarRepository с методами поиска аватаров пользователем - Добавлен UserBackgroundRepository с методами поиска фонов пользователем/членом Добавлены методы getPresignedUrl в MinIOStorageService для генерации URL-адресов временного доступа Подписанные URL-адреса по умолчанию до 7 дней истечения, настраиваемое время истечения срока действия
· kamo-shared-library
Добавить UserPhoto и UserBackground субъектов отношений с пользователем / участником
- Создан объект UserPhoto для хранения фотографий профиля пользователя и участника - Созданный объект UserBackground для хранения фоновых изображений пользователей и членов Обе организации поддерживают ассоциации пользовательского уровня (member=null) и членского уровня (member set). UserPhoto включает поле isSet, чтобы указать, какая фотография в настоящее время активна. UserBackground включает в себя поле sortId для заказа нескольких фонов Обе организации используют EmbRecordState для отслеживания создания, обновления и активного статуса. Добавлены соответствующие индексы баз данных для оптимизации производительности
· kamo-internal
Добавить общий компонент MemberHeader с аватаром / задним фоном уровня члена
- Создан общий компонент MemberHeader с фоновыми изображениями и аватарным дисплеем - Добавлены опции переопределения уровня участника для аватара и фона (использовать пользователя по умолчанию против конкретного участника) Обновленный ProfileTab для использования компонента MemberHeader - Обновленная вкладка MembershipPermissionsTab для использования общего компонента MemberHeader Заголовок теперь появляется как на вкладках профиля, так и на вкладках членских разрешений Добавлены переключатели переключателей для «Use Default User Avatar» и «Use Default User Background» Поддерживает пользовательский URL-адрес фонового изображения при отсутствии использования фона темы по умолчанию
· kamo-marketing
Добавить сенсорную поддержку Magneticcoder для мобильных устройств
· kamo-internal
Измените сетку на автовысоту, чтобы показать все записи без прокрутки
Установите domLayout на autoHeight, чтобы сетка расширялась, чтобы соответствовать всем рядам - Удалить переполнение: скрытые от сети контейнерные ящики - Удалить высоту: 100% ограничение от оберточной коробки сетки Сетка теперь показывает все записи на текущей странице без вертикальной прокрутки
· kamo-internal
Заменить колонку «Адрес» колонками «Государство» и «Улица»
- Удалить колонку Адрес и AddressRenderer - Добавить колонку состояния после контакта (показывает подотдел/код состояния) Добавить колонку «Улица после штата» (показывает формат «улица, город») - Заменить адрес FilterValue на StateFilterValue и streetFilterValue Добавьте фильтр выпадения штата ко всем штатам США Добавить поле фильтра уличного текста Обновить логику фильтрации для колонок State и Street - Удалить фильтрацию адресов из ResetFilters
· kamo-internal
Обновление ширины столбца до заданных значений
- Изменить ширину колонки идентификатора свинца с 300px до 245px - Контактная колонка остается гибкой: 1 принять оставшуюся ширину - Изменить ширину колонки статуса с 200px до 65px - Изменить ширину колонки Sub Status с 200px до 120px - Изменение ширины колонки агента от 150px до 120px - Обновление соответствующей ширины контейнера поля фильтра для соответствия столбцам Добавить явные ограничения minWidth и maxWidth там, где это необходимо
· kamo-internal
Обновление макета приводит идентификаторы к случайной буквенно-цифровой и задается столбец адресов до 170px
Добавить генерациюRandomLeadId для создания случайных буквенно-цифровых строк длиной 13 - Изменить поддельные идентификаторы свинца с последовательных чисел на случайные буквенно-цифровые (например, '34FDK69HWGPPK') - Ширина столбца адреса обновления от 250px до 170px с явным мин/макс - Обновление адреса фильтра контейнера шириной до 170px
· kamo-internal
Обновить ширину колонки даты и заменить кнопки действия
- Изменить ширину столбца даты с 155px до 170px (создан и назначен) - Обновление дат фильтра полевых контейнеров, чтобы соответствовать ширине 170px Заменить кнопки «Выбранный экспорт», «Поделиться» и «Удалить выбранный» на: - «Reassign Selected ({amount selected})» с иконой «Люди» - «Изменить статус избранного ({количество выбрано})» с иконой SwapHoriz Импорт иконок SwapHoriz из Material-UI Кнопки динамически показывают выбранное количество в этикетках
· kamo-internal
Добавить тонкую светло-серую границу дна во вторичные вкладки
- Добавить BorderBottom: '1px solid rgba(0, 0, 0, 0.12)' в контейнер вкладок состояния - Соответствует стилю, найденному на /leads/view/ page Создает визуальное разделение между вкладками и контентом ниже
· kamo-internal
Добавьте серые фоны к оставшимся полям фильтра и выровняйтесь вниз
- Изменение выравнивания строк фильтра от центра к флекс-концу (нижнее выравнивание) - Добавить серый фон (#f8fafc) ко всем остальным контейнерам поля фильтра - Добавить радиус границы и прокладку в соответствии со стилем фильтра даты - Регулярные поля фильтра выравниваются до дна, совпадая с высотой нижнего поля даты - Дата поля остаются выше с уложенной компоновкой Все поля фильтров теперь имеют последовательную обработку серого фона
· kamo-internal
Поля фильтра даты стека вертикально с изолированным серым фоном
Изменение полей фильтра даты от горизонтальной до вертикальной компоновки (flexDirection: column) Добавьте серый фон (#f8fafc) только для датированных фильтров, а не весь ряд фильтров. - Установить явную ширину 220px для полей фильтра даты - Удалить серый фон из основного контейнера строки фильтра - Добавить пограничный радиус к дате фильтров для лучшего визуального разделения
· kamo-internal
Улучшение макета пользовательского интерфейса и увеличение макетных данных
- Уменьшение текста для полей фильтра даты (размер шрифта: 0,75 для ввода, 0,7 для меток) Переместите быстрый поиск на ту же строку, что и вкладки статуса, выровненные справа - Увеличение макета ведет от 50 до 250 Удалить колонку Actions из сетки - Очистите макет, удалив дублированный раздел строки поиска
· kamo-internal
Добавить компоненты фильтра диапазона дат для созданных и назначенных столбцов
Добавить переменные состояния для фильтров диапазона созданных и назначенных дат (даты начала/конца) Создание компонентов фильтра диапазона дат с полями «Дата начала» и «Дата окончания» Добавить компоненты фильтра диапазона дат в строку фильтров для созданных и назначенных столбцов Обновление фильтрованной логики RowData для фильтрации по диапазонам дат Поля пустых дат не означают никаких ограничений (все даты для этой цели). Функция ResetFilters для очистки фильтров диапазона дат Фильтры даты поддерживают частичные диапазоны (только начало, только конец или оба)
· kamo-internal
Сделайте имена контактов кликабельными ссылками и добавьте двойной клик, чтобы открыть свинец
Обновление ContactRenderer для отображения имени и фамилии в виде подчеркнутых кликабельных ссылок - Добавить обработчик onClick к именам контактов, которые открывают лидерство через onViewLead или перемещаются в /leads/view/:id Добавьте обработчик onRowDoubleClicked в AgGridReact, чтобы открыть свинец, когда строка дважды щелкается Контактные имена теперь имеют основной цвет, подчеркивание и эффект наведения - Двойное щелчок в любом месте на ряду открывает лидерство
· kamo-internal
Добавить значки в выпадающий фильтр подстатуса и обновить отправленные контракты
Обновить «Подписанные контракты» на «Отправленные контракты» в соответствии с Java enum - Изменить значок для контрактов, отправленных от назначения, чтобы отправить значок - Добавить значки в выпадающие элементы меню фильтра субстатуса Импортировать значок из Material-UI - Иконки отображаются рядом с каждой опцией подстатуса в выпадающем фильтре
· kamo-internal
Add unique icons for each sub-status with parent status colors
- Add unique, relevant icons for each sub-status (e.g., PersonAdd for New Lead, Message for Left Message) - Icons maintain parent status color (green for Fresh, blue for Reckoning, orange for Farm, red for Grim, gray for Void) - Import additional Material-UI icons for sub-statuses - Update getSubStatusIcon to map each sub-status to its unique icon - Fresh: PersonAdd, Message, Event, Schedule, PlayArrow, Description, ShoppingCart, Payment - Reckoning: Sync, Assignment, AssignmentTurnedIn, Build, LocalShipping - Farm: LocalFlorist, ThumbDown, PhoneDisabled, Business, AttachMoney, AccessibilityNew, Block - Grim: Print, SignalWifiOff, PersonOff, Warning, DoNotDisturb, RestoreFromTrash - Void: Science, ContentCopy
· kamo-internal
Добавьте значки в колонку подстатуса, соответствующую цветам родительского статуса
Добавить функцию помощника getSubStatusIcon для определения значка на основе родительского статуса Иконки субстатуса используют те же иконки и цвета, что и их родительский статус. Свежие субстатусы: зеленый значок NewReleases - Расчет субстатусов: синяя икона Гавела Подстатусы ферм: оранжевая икона сельского хозяйства - Мрачные подстатусы: икона красного ворона - Подстатусы пустоты: иконка серого отмена

Ваша вселенная ждет.
Начните бесплатно через несколько минут. Добавляйте продукты, когда будете готовы — без миграции, без новых логинов.
Бесплатно навсегда — не требуется кредитная карта