Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· 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
Aggiungi campo fileHash all'entità Avatar per l'archiviazione sicura dei file
- Aggiungi la colonna fileHash per memorizzare SHA-256 hash di avatar ID - Hash viene utilizzato per il nome del file MinIO per evitare attacchi di enumerazione - Formato: {hash}.{fileExtension} invece di {id}.{fileExtension}
· kamo-internal
Ricostruire avatar UI - moderno, interattivo, lucido. Backend restituisce gli URL direttamente
· SecurityService
Rebuild avatar system - backend generates presigned URLs directly like backgrounds
· kamo-internal
Aggiungere le credenziali MinIO a k8s configmap
· kamo-internal
Generare URL prescritti in Next.js utilizzando MinIO SDK con dominio a tema
· kamo-shared-library
Aggiungi getPresignedUrlWithEndpoint metodo per gli URL prescritti da endpoint personalizzati
· kamo-internal
Aggiungi Avatar Creator avatar creazione, gestione di sfondo con riordinare, e pieno supporto libreria avatar / background
· SecurityService
Add avatar and background management endpoints
· kamo-shared-library
Aggiungi AvatarPhoto e AvatarAvatar Creator classi, refactor Avatar eredità struttura
· 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
Aggiungi repository Avatar e UserBackground e supporto URL prefirmato
- Aggiunto AvatarRepository con metodi per trovare avatar da utente - Aggiunto UserBackgroundRepository con metodi per trovare sfondi per utente/membro - Aggiunto getPresignedUrl metodi a MinIOStorageService per la generazione di URL di accesso temporaneo - Presigned URLs default a 7 giorni di scadenza, tempo di scadenza configurabile
· kamo-shared-library
Aggiungi UserPhoto e UserBackground entità con relazioni utente/membro
- Creato UserPhoto entità per la memorizzazione delle foto del profilo utente e dei membri - Creato UserBackground entità per la memorizzazione di immagini di sfondo utente e membro - Entrambe le entità supportano le associazioni a livello utente (member=null) e a livello di membro (set di membri) - UserPhoto include il campoSet per indicare quale foto è attualmente attiva - UserBackground include il campo sortId per l'ordinazione di più sfondi - Entrambe le entità utilizzano EmbRecordState incorporabile per tracciare la creazione, gli aggiornamenti e lo stato attivo - Aggiunti gli indici di database appropriati per l'ottimizzazione delle prestazioni
· kamo-internal
Aggiungere componente MemberHeader condiviso con avatar / override di fondo a livello membro
- Creato componente MemberHeader condiviso con immagini di sfondo e display avatar - Aggiunte opzioni di override a livello di membro per avatar e sfondo (uso utente predefinito vs membro-specifico) - Profilo aggiornatoTab per utilizzare il componente MemberHeader condiviso - Aggiornato MembershipPermissionsTab per utilizzare il componente MemberHeader condiviso - L'intestazione ora appare sia sul profilo che sulle schede di ammissione - Aggiunti gli switch per "Use Default User Avatar" e "Use Default User Background" - Supporta l'URL dell'immagine di sfondo personalizzato quando non si utilizza lo sfondo del tema predefinito
· kamo-marketing
Aggiungi supporto touch a Magneticcoder per dispositivi mobili
· kamo-internal
Modificare la griglia per il layout autoHeight per mostrare tutti i record senza barra di scorrimento
- Impostare domLayout per autoHeight così griglia si espande per adattarsi a tutte le righe - Rimuovere il troppopieno: nascosto dalle scatole dei container della griglia - Rimuovere l'altezza: 100% vincolo dalla scatola di involucro della griglia - Griglia ora mostra tutti i record sulla pagina corrente senza barra di scorrimento verticale
· kamo-internal
Sostituisci la colonna Indirizzo con colonne Stato e Strada
- Rimuovi la colonna Indirizzo e AddressRenderer - Aggiungi colonna Stato dopo Contatto (mostra suddivisione/codice stato) - Aggiungi la colonna Street dopo Stato (mostra il formato 'strada, città') - Sostituire l'indirizzoFilterValuta con StateFilterValuta e viaFilterValore - Aggiungere il filtro a discesa dello Stato con tutti gli Stati Uniti - Aggiungi campo filtro testo Street - Aggiornare la logica di filtraggio per colonne di Stato e Street - Rimuovere il filtro dell'indirizzo da resetFilters
· kamo-internal
Aggiornare le larghezze della colonna ai valori specificati
- Cambiare la larghezza della colonna Lead ID da 300px a 245px - La colonna di contatto rimane flex: 1 per riprendere la larghezza rimanente - Modifica larghezza della colonna di stato da 200px a 65px - Cambiare la larghezza della colonna Sub Status da 200px a 120px - Cambia la larghezza della colonna dell'agente da 150px a 120px - Aggiornare le corrispondenti larghezze del contenitore del campo filtro alle colonne di corrispondenza - Aggiungere vincoli espliciti di larghezza e larghezza massima dove necessario
· kamo-internal
Aggiorna gli ID mock lead a colonna di indirizzi alfanumerici casuali e imposta a 170px
- Aggiungi la funzione GenereRandomLeadId per creare stringhe alfanumeriche casuali di lunghezza 13 - Modificare i numeri di piombo mock da numeri sequenziali a alfanumerico casuale (ad esempio, '34FDK69HWGPPK') - Aggiorna la larghezza della colonna dell'indirizzo da 250px a 170px con esplicita min/max - Aggiornare la larghezza del contenitore del filtro dell'indirizzo per abbinare 170px
· kamo-internal
Aggiornare le larghezze della colonna della data e sostituire i pulsanti di azione
- Modifica della larghezza della colonna della data da 155px a 170px (Creato e Assegnato) - Aggiornamento data filtro campo contenitori per corrispondenza 170px larghezza - Sostituire i pulsanti 'Export Selected', 'Share' e 'Delete Selected' con: - 'Riassegna Selezionato ({importo selezionato})' con l'icona Persone - 'Change Status of Selected ({importo selezionato})' con l'icona SwapHoriz - Importare le persone e le icone SwapHoriz da Material-UI - I pulsanti mostrano dinamicamente il conteggio selezionato nelle etichette
· kamo-internal
Aggiungere il bordo grigio chiaro sottile alle schede secondarie
- Aggiungi bordoBottom: '1px solido rgba(0, 0, 0, 0.12)' a schede di stato contenitore - Abbina lo stile trovato su /leads/view/ page - Crea separazione visiva tra schede e contenuti qui sotto
· kamo-internal
Aggiungere sfondi grigi per i campi filtranti rimanenti e allineare al fondo
- Cambiare l'allineamento della riga del filtro dal centro al flex-end (allineamento del fondo) - Aggiungere lo sfondo grigio (#f8fafc) a tutti i contenitori di campo filtro rimanenti - Aggiungere il raggio di confine e l'imbottitura per abbinare lo styling del filtro data - Filtro regolare campi allineati al fondo, altezza corrispondente del campo della data inferiore - I campi data rimangono più alti con layout impilati - Tutti i campi filtranti ora hanno un trattamento di sfondo grigio coerente
· kamo-internal
Filtraggio data stack campi verticalmente con sfondo grigio isolato
- Modifica dei campi di filtro della data dal layout orizzontale a verticale (flexDirection: colonna) - Aggiungere lo sfondo grigio (#f8fafc) solo alle caselle di filtro di data, non l'intera riga di filtro - Impostare la larghezza esplicita di 220px per i campi filtranti di data - Rimuovere lo sfondo grigio dal contenitore principale della riga del filtro - Aggiungere il raggio di confine alle caselle di filtro di data per una migliore separazione visiva
· kamo-internal
Migliorare il layout dell'interfaccia utente e aumentare i dati mock
- Rendere il testo più piccolo per i campi di filtro della data (fontSize: 0.75rem per l'ingresso, 0.7rem per le etichette) - Sposta Ricerca rapida sulla stessa linea delle schede di stato, allineato a destra - Aumentare i cavi mock da 50 a 250 - Rimuovi la colonna Azioni dalla griglia - Pulisci il layout rimuovendo la sezione barra di ricerca duplicata
· kamo-internal
Aggiungi componenti del filtro dell'intervallo di date per colonne create e assegnate
- Aggiungi variabili di stato per i filtri dell'intervallo di date create e assegnate (datteri di inizio/fine) - Creare i componenti del filtro dell'intervallo di date con i campi Start Date e End Date - Aggiungi i componenti del filtro dell'intervallo di date alla riga del filtro personalizzata per colonne create e assegnate - Aggiornamento filtratoRowData logica per filtrare per intervalli di date - I campi di data vuoti non significano restrizioni (tutte le date per tale fine) - Reset di aggiornamento Funzione di filtri per l'intervallo di date chiare - I filtri di data supportano intervalli parziali (solo inizio, solo fine, o entrambi)
· kamo-internal
Fare i nomi di contatto link cliccabili e aggiungere doppio clic per aprire il cavo
- Aggiornare ContactRenderer per visualizzare il nome e il cognome come link cliccabili sottolineati - Aggiungi il manubrio onClick ai nomi di contatto che apre il cavo tramite suViewLead o naviga in /leads/view/:id - Aggiungi suRowDoubleClicked handler a AgGridReact per aprire il comando quando la riga è doppio clic - I nomi di contatto ora hanno colore primario, sottolineatura e effetto hover - Fare doppio clic ovunque su una riga apre il comando
· kamo-internal
Aggiungi icone al filtro a discesa sub-status e aggiorna Contratti Invia
- Aggiornamento 'Contracce firmate' a 'Contracce Sent' per abbinare Java enum - Cambia icona per Contratti Invia icona - Aggiungi icone agli elementi del menu a tendina sottostatus - Importa Invia icona da Materiale-UI - Visualizzazione icona accanto ad ogni opzione sub-status nel filtro a discesa
· kamo-internal
Aggiungi icone uniche per ogni sub-status con i colori dello stato del genitore
- Aggiungi icone uniche e rilevanti per ogni sub-status (ad esempio, PersonAdd for New Lead, Message for Left Message) - Icone mantengono il colore dello stato del genitore (verde per fresco, blu per il Reckoning, arancione per la fattoria, rosso per Grim, grigio per Void) - Importa icone materiali-UI aggiuntive per sub-statuses - Aggiornare ottenereSubStatusIcon per mappare ogni sub-status alla sua icona unica - Fresco: PersonAdd, Messaggio, Evento, Programma, Freccia, Descrizione, ShoppingCart, Pagamento - Reckoning: Sync, Assegnazione, AssegnazioneTurnedIn, Costruire, LocalShipping - Azienda: LocalFlorist, ThumbDown, PhoneDisabled, Business, AttachMoney, AccessibilitàNew, Block - Grim: Stampa, SignalWifiOff, PersonOff, Avvertenza, DoNotDisturb, Ripristino Da Trash - Void: Scienza, ContentCopy
· kamo-internal
Aggiungi le icone ai colori dello stato dei genitori corrispondenti della colonna sub-status
- Aggiungi la funzione di helper getSubStatusIcon per determinare l'icona in base allo stato del genitore - Le icone Sub-status utilizzano le stesse icone e i colori del loro stato genitore - Sottostatuse fresche: icona verde NewReleases - Sub-statuse di registrazione: icona di Gavel blu - sub-statuse agricole: icona Agricoltura arancione - Grim sub-statuses: icona raven rosso - Void sub-statuses: grigio Cancella icona

Il tuo universo ti sta aspettando.
Aggiungi i prodotti quando sei pronto: nessuna migrazione, nessun nuovo login, nessuna richiesta di pagamento.
Gratis per sempre — nessuna carta di credito richiesta