Salta al contenuto
KAMOUniverse

Changelog

Cosa c'è di nuovo.

Ogni miglioramento alla piattaforma, come si spedisce.

  1. · kamo-internal

    Panoramica dei dati gancio e primitivi visivi condivisi

    useHrOverview fetches frequenza + documenti riassunti con tuttoSettled così uno il servizio morto degrada solo le sue sezioni; salta le fetches interamente per sezioni visibiliOverviewSezioni() dice che il membro non può vedere. The primitivi (CountUp, ProgressRing, StackedBar, StatePip, Figura, SectionShell) sono i blocchi di costruzione condivisi che rendono le sezioni di panoramica con, tutto il movimento sorvegliato da usoReducedMotion e EASE HOUSE.

  2. · kamo-internal

    Panoramica dei client di sintesi e delle regole da cui provengono

  3. · kamo-shared-library

    Domande di conteggio/sum/recente per un set live org+assoc

    HrResourceSummaryService stava materializzando l'intero non nascosto di un org Img raccolta in memoria per calcolare un conteggio, una somma byte e un fetta recente di 5 righe. Aggiunge il conte/sum/paged-recent query così un riassunto mai deve caricare la collezione per rispondere a tre numeri.

  4. · DocsService

    Riepilogo legale, formativo e risorse per il HR Panoramica

    Una lettura per il dominio della scheda, ogni blocco gated sul proprio diritto e omesso piuttosto che rifiutarsi quando fuori portata.

  5. · SecurityService

    Riepilogo delle presenze per la panoramica HR

    Una chiamata di MANAGE TIMECARDS-gated che compone il roster e manager-queue relè con l'eccezione locale, l'occupazione e le file pay-period.

  6. · kamo-marketing

    Localizzare le schede hub e smettere di bundling i dataset inglesi

    Le quattro pagine hub hanno reso componenti client che hanno importato la collezione moduli direttamente e non ha preso oggetti di scena, così ogni carta — nomi del settore, integrazione slogan, definizioni glossarie, riassunti dei concorrenti — era inglese in tutti i 22 locali anche se il cromo circostante è stato tradotto. Significava anche full English datasets spedito nel pacchetto client. Il server ora localizza e passa solo i campi che ogni hub effettivamente rende, in modo che il cliente mantiene le costanti strutturali (categoria etichette, ordine del display) e rilascia i moduli dati. I marchi del venditore e dei concorrenti rimangono intranslati ma sono ancora passati, dal momento che le carte li stampano. L'OggettoList/DefinedTermSet JSON-LD su queste pagine ha anche hardcoded /en URL per ogni locale; ora seguono il locale della pagina.

  7. · kamo-shared-library

    Riepilogo delle domande per l'HR Panoramica

    Istogrammi di stato, fette in ritardo e rotoli per-membro per legale e la formazione, più i conteggi di stato del modello/corso. Nessun cambiamento di entità.

  8. · kamo-internal

    Glow rosso quando fuori dell'orologio, verde quando acceso, e cadere il proiettile

    Essere fuori orario mentre al lavoro è lo stato che costa qualcuno denaro, e era l'unico stato nulla annunciato: l'indicatore era semplicemente assente, e un l'assenza non è un segnale. Il controllo ora porta una luce rossa respiratoria ogni volta il membro è chiuso. Un bagliore respiratorio su un ciclo di 1,8 piuttosto che un batter duri. Questo è bene sotto soglia di fotosensibilità di tre piatti per secondo, e uno strobo nell'angolo di ogni schermo sarebbe intollerabile per le otto ore al giorno è destinato ad essere visibile. Sotto la preferenza-ridotta-mozione il bagliore è tenuto STEADY piuttosto che rimossa — a differenza dell'anello di obbligo accanto a esso, la mozione qui non è ridondante con un distintivo o un conteggio, quindi rimuoverlo rimuoverebbe l'unico segnale. Il bagliore appare solo una volta che lo stato è in realtà KNOWN. Dipingerlo durante il prima presa, o mid-punch, mentre il gioco ottimista si calma, annuncerebbe un problema che non può esistere, e un avvertimento che piange il lupo in ogni carico di pagina è una gente impara a smettere di vedere. Il punto in orologio è verde invece di --accent-persone. Quel token è l'HRS tint di identità ambra del modulo (#c47d1a), che legge come un avviso seduto accanto a un bagliore rosso — sull'orologio è lo stato buono e deve assomigliare. Il proiettile e' sparito. Non ha portato alcuna informazione il punto non ha già portare, e ha preso il .tabulare!importante lavoro intorno a esso. overflow è visibile sul pulsante piuttosto che ereditato: il bagliore siede un inset negativo, quindi un ButtonBase clipping lo ingoia completamente e il controllo sembrerebbe semplicemente senza stile piuttosto che rotto — il tipo più duro bug visivo da notare.

  9. · kamo-internal

    Una scheda di iscrizione e nascondere la scheda Timecard membro quando non iscritti

    Non c'era modo di attivare i timecard per nessuno. Ogni superficie letta esisteva e ognuno di loro correttamente non ha mostrato nulla, perché nessuna registrazione potrebbe essere ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** tracciato" con nulla in tutto il prodotto in grado di cambiarlo. IscrizioniSubTab è quel controllo, su /hr/attenzione dove HR gestisce il forza lavoro. Esso utilizza il canonica MemberPickerDialog in multi-seletto, e iscrive un membro per chiamata piuttosto che come lotto: ogni iscrizione scrive un'occupazione fila E un incarico efficace-datato, quindi un fallimento parziale deve lasciare la gente che è riuscito a iscriversi invece di rotolare tutti indietro. Lo schermo dice perché non è su ruoli e autorizzazioni, perché questo è il primo domanda chiunque avrà: i diritti di sicurezza vengono rimossi quando un membro si ferma essere attivo, che cambierebbe la timecard di qualcuno al momento i loro registri di pagamento devono superare il loro lavoro. Non esente è il default e la finestra di dialogo dice perché — classificare qualcuno esente che non è l'errore più costoso nella legge salariale, ed è fatto dal titolo di lavoro molto più spesso di qualsiasi test reale. La scheda Timecard membro ora è completamente nascosta a meno che il membro non sia effettivamente Iscritta. In precedenza ha reso per chiunque in un org HRS e poi ha annunciato non aveva nulla da mostrare, che è un vicolo cieco: niente su quella pagina potrebbe accenderlo. L'iscrizione rimane `undefined` fino a quando conosciuto piuttosto che predefinito a falso, in modo che il

  10. · SecurityService

    Iscrizione del relè

    MANAGE TIMECARDS per leggere o cambiare chi è su schede temporali — l'iscrizione decide chi viene pagato da questo sistema, quindi è tenuto all'amministratore HR giusto piuttosto che alla linea di segnalazione di un manager.

  11. · kamo-marketing

    Traduci le pagine di raccolta invece di nasconderle

    Le 2.400 pagine di dettaglio noindexed non sono state indicizzate perché la loro copia del corpo non ha traduzione: concorrenti, industrie, integrazioni e glossario mantengono la loro prosa in app/lib/**/*.ts, che il dizionario non ha mai visto, quindi /fr/solutions/real-estate reso francese voci intorno ai paragrafi inglesi. scripts/extract-collections.ts tira le stringhe traslabili 3,799 da quelle 120 elementi in un albero che miruffa la struttura, saltando tutto ciò che un traduttore deve non toccare — slugs, categoria enums, stato matrice, percorsi logo, relativiTermini cross-references, e nomi di fornitore / prodotto. Quell'albero naviga come le `collezioni` namespace in kamo-marketing/en.json. A tempo di lettura localizzareItem fonde l'albero tradotto sopra l'oggetto inglese. Solo le chiavi presenti nella traduzione sono sostituite, e un array la cui lunghezza derivato dalla fonte è caduto all'ingrosso piuttosto che rendere un elenco con voci mancanti, così le traduzioni stanti si degradano all'inglese invece di rompere la pagina. `collezioni` è spogliato da NextIntlClientProvider: è ~420 KB che solo i componenti del server leggono, e il prossimo-intl serializza qualsiasi cosa il provider entri il carico di pagamento RSC di ogni pagina. La fusione per-locale in i18n/request.ts è ora per lo stesso motivo — era economico a 150 KB e non è a 514 KB. collezioneRobots segnala ancora noindex fino alla terra delle traduzioni; ampliamento COLLECTION CONTENT LOCALES è ciò che lo solleva.

  12. · kamo-internal

    Le schede Approvazioni e Eccezioni esistono attualmente

    Entrambi i backend spediti prima ma nessuno dei due fu mai scritto, quindi /hr/attendance?sub=approvazioni e ?sub=eccezioni rese "questa scheda è in corso costruito" su endpoint di lavoro. ApprovalsSubTab è la coda del manager. Una cartolina porta due attestazioni — la — l'unica azione senza motivo è una semplice approvazione di una carta che il dipendente si è presentato, dove la loro attestazione è il record. Inviare una carta indietro e approvare per conto entrambi prendono una ragione obbligatoria, perché l'invio della cartolina di qualcuno indietro senza dicendo perché è come un dipendente perde un giorno e non scopre mai quale. Una carta con eccezioni di blocco ha il suo pulsante di approvazione DISABLED piuttosto che permesso di fallire: il server rifiuta comunque, e un pulsante che sempre gli errori è peggio di uno che è visibilmente non disponibile. Il chip di blocco passa al Eccezioni scheda, che è dove il lavoro in realtà è. EccezioniSubTab mostra due numeri deliberatamente diversi — tutto aperto, e il sottoinsieme che BLOCKS un vicino. isBlocking è reso esattamente come il server inviato e non ha mai re-derivato dalla stringa di tipo. Il risveglio è presentato come quello che è: nulla è stato fissato, una persona sta scegliendo di procedere comunque, e la ragione è che cosa che la decisione sopravviva dopo essere stata chiesta. Il segnaposto fallback rimane nella pagina anche se tutti i sette indici sono ora cablato — l'applicazione di un id subtab senza un pannello dovrebbe dire così piuttosto che rendere uno schermo vuoto.

  13. · SecurityService

    Relè la coda delle eccezioni

    MANAGE TIMECARDS per leggere la coda e rinunciare, perché la coda nomina ogni membro con un problema e rinunciando cambia ciò che il cancello finalize legge. The per-member re-detect passa attraverso risolvereRole, quindi un manager può eseguire il rilevamento sulla loro relazione senza un diritto di org.

  14. · InitializerService

    Gli indici parziali che fermano un doppio pagamento e una collisione di codice

    # I denti dietro il servizio di esportazione # rifiuto di ristampa. Un secondo file impegnato per un periodo di pagamento doppio-paga un tutta la società, e il controllo a livello di servizio da solo perde a due operatori cliccare nello stesso momento. Una correzione porta reverses batch id ed è quindi escluso dal predicato, che è l'intera ragione che questo non può essere un semplice vincolo unico sull'entità — e il test afferma che l'esclusione, perché senza di esso una correzione non potrebbe mai essere emessa affatto. ux tclabor code active scopes labor-account codice unicità alle righe ACTIVE. Un reparto in pensione ri-creato sotto il suo vecchio codice è contabilità ordinaria pulizia; un vincolo di coperta costringerebbe l'org a inventare "SALES-2" mentre la fila in pensione deve ancora esistere per segmenti storici a punto. The Il vincolo di coperta dell'entità è stato abbandonato a favore di questo. EXPORT REVOKE revoca DELETE ma deliberatamente NON UPDATE: un lotto legittimamente transizioni DRY RUN -> COMITATO -> REVERSED, e revocare UPDATE congelare un a secco prima che possa essere commesso. I perni di prova questa distinzione.

  15. · kamo-internal

    Lo schermo chiuso per un org con 400 persone

    Rileva le eccezioni, ricomputa i guadagni di tutti, approva tutto il ogni segnalazione PER MEMBER con il motivo per cui ha rifiutato. "312 di 400 succeduti" è inutilizzabile: la persona che lo gestisce ora deve trovare 18-otto a mano, che è esattamente il lavoro che l'operazione di massa doveva per salvare. La tabella di rifiuto porta la frase a valle verbatim, quindi "questo timecard ha 2 eccezioni di blocco" dice all'approvazione cosa fare invece di dicendo loro di aprire un biglietto. La finestra di dialogo di approvazione dice chiaramente che il motivo è registrato su ogni scheda, e che ogni carta passa ancora attraverso gli stessi assegni. Entrambi sono veri e entrambi sono il punto: un'approvazione di massa è una decisione applicata a molti record, e fingere altrimenti richiedendo un commento per-card produrrebbe quattrocento copie della parola "ok".

  16. · SecurityService

    Relè operazioni di rinfuse e presenze

    Il ruolo di approvazione di massa è DERIVED qui dai diritti del chiamante e allegato a il sentiero — mai letto dal corpo. Un ruolo fornito dal corpo è un corpo fornito promozione, e questo punto finale approva centinaia di record salariali in una sola volta. I punti di frequenza seguono la stessa regola di identità prima di tutto una persona di nome: proprio sull'identità, ha bisogno di chiunque altro MANAGE TIMECARDS.

  17. · kamo-internal

    Rapporti di conformità, attestazione di rottura e i propri record

    A Reports sub-tab su /hr/attendance che gestisce tutti e tre i rapporti su tutto il territorio una finestra. Il rapporto di arrotondamento mostra il verdetto come un chip e il risultato come un avviso, perché "FAVOURS EMPLOYER" è un'esposizione salariale e seppellirla in un numero nessuno legge sconfigge il punto di calcolo. BreakAttestation Il pannello è il proprio conto del dipendente delle loro pause. Riposo i periodi sono pagati e quindi mai puniti, quindi questa è l'unica prova riposo la conformità avrà mai — un solo punzone report di progettazione perfetta conformità per ogni org per sempre, che produce prove contro il dipendente piuttosto che Mi manca. Nulla in esso è pre-riempito con una risposta conforme, e un conteggio di riposo vuoto rimane NULL piuttosto che diventare zero: zero è una pretesa che non sono stati presi resti, che è una violazione, mentre null è "non risponde", che non è. MyRecordsPanel dà a un dipendente i loro saldi di congedo e le loro prove pacchetto. Il download è disponibile senza alcun diritto, e rimane disponibile dopo la fine dell'occupazione, perché in diversi stati il diritto a questi record supera l'occupazione per statuto e le persone più propensi a averne bisogno sono quelli che sono appena andati via.

  18. · SecurityService

    Relè i rapporti di conformità, il pacchetto di prove sull'identità

    I resoconti di org hanno bisogno di MANAGE TIMECARDS. Il pacco prova non lo fa, quando — e questo è il punto. Il pacchetto è quello che un dipendente ha bisogno di portare un reclamo salariale, e gating esso dietro un diritto HR significherebbe il solo le persone che possono produrre le prove sono quelle contro cui verrebbe usato. Un membro della categoria ristretta non detiene alcun diritto ed è esattamente chi Ne ha bisogno.

  19. · kamo-internal

    La scheda di configurazione di timecard reale

    Sostituisce il segnaposto con la superficie di lavoro: inizio settimana di lavoro, giornata di lavoro limite, soglia open-shift, arrotondamento, la revisione interruttori, rotolo seeding e il programma predefinito org. Il campo di arrotondamento si spiega piuttosto che essere un numero nudo. Arrotondamento è legalmente federale solo quando NEUTRAL nel tempo (29 CFR 785.48(b)), California ha effettivamente finito per i periodi di pasto (Donohue v. AMN) e gettare dubbi su di esso generalmente (Camp v. Home Depot) — un amministratore accenderlo dovrebbe sapere che hanno ha assunto l'obbligo di dimostrare quale direzione si dirige, e l'avvertimento appare nel momento in cui il valore supera lo zero. L'attestazione dice perché esiste accanto al proprio interruttore: i periodi di riposo sono pagati e quindi mai punito, quindi l'attestazione è l'unica prova a mantenere la conformità sarà mai successo. Senza di esso il sistema riporta la perfetta conformità per sempre, che è peggio di segnalare nulla perché produce prove contro dipendente. L'interruttore di geofence dice "flag", mai "rifiutare". Rifiutare di registrare il lavoro che è stata effettivamente fatto è la violazione esatta che questo sistema esiste per prevenire. La sezione di pianificazione afferma chiaramente che un programma non paga mai nessuno — è rispetto a quello che è successo, e dove i due non sono d'accordo il record reale governa.

  20. · SecurityService

    Relè la superficie di configurazione della scheda temporale

    MANAGE TIMECARDS per leggere le regole dell'org — la settimana lavorativa e le impostazioni di arrotondamento descrivere come tutti nel org è pagato — e FINALIZE PAY PERIODS per cambiare loro, perché sono i numeri un periodo congela quando si chiude. Un membro può leggere il loro programma OWN sull'identità, senza alcun diritto. Un programma è quello che qualcuno si aspetta di lavorare, e non essere in grado di vedere non è un prodotto defensibile.

  21. · DaemonService

    Programmare le spazzate della cartolina notturna

    Cron vive qui piuttosto che in TimecardService perché questa distribuzione è RollingUpdate con maxSurge: 1 — due pod sovrapposti su ogni rollout e ogni @Scheduled metodo ci sarebbe fuoco due volte, che per una spazzata che scrive eccezioni significa righe duplicate. Questo servizio è replica: 1, strategia: Ricreare, ed è l'unico posto su questa piattaforma dove "once" significa una volta. Corre alle 02:20 al giorno: dopo mezzanotte così una giornata piena di affari ha chiuso ovunque negli Stati Uniti continentali, e fuori l'ora quindi non contende con ogni altro lavoro di piattaforma. Stamps mlos.internal-auth-secret, non interno.auth.secret. DaemonService interno.auth.secret si risolve al valore della catena pubblica e 403 ogni chiamata, che è la trappola StewardEmailClient già documenti. Quando il segreto è mancare il lavoro si rifiuta di correre e lo dice a ERROR piuttosto che registrare un falso successo — una spazzata che tranquillamente non corre mai è indistinguibile da uno che Non trova nulla, e la differenza è un mese di punzoni mancanti non rilevati. Le tre spazzate sono tentate indipendentemente. Una rottura è un fallimento il divario di conformità mentre un'eccezione spazzare la mancanza è un giorno non pagato, e l'accoppiamento loro permette che il fallimento più economico tolga quello costoso.

  22. · kamo-shared-library

    Configurazione Org, calendari e orari delle vacanze

    TimecardOrgConfig detiene il workweek, confine di giorno di lavoro, arrotondamento, regola-set puntatori e gli interruttori di revisione. Nulla in esso è letto in tempo di calcolo — ogni valore viene istantaneo su un periodo di pagamento quando il periodo si chiude e il motore legge l'istantanea, che è ciò che permette un org cambiare le sue regole senza riscrivere ciò che ha già pagato. TimecardHoliday è DATED, non governato. "Quattro giovedì a novembre" è una regola e le regole derivano, quindi un calendario generato tre anni fa sotto un la regola sarebbe silenziosamente in disaccordo con ciò che è stato effettivamente pagato. La divisione pagata/lavorata è il motivo per cui l'entità esiste affatto: vacanza PAY è ore non funzionate, quindi 778.218 lo esclude dal tasso regolare e non conta verso il soglia di straordinario, mentre le ore di vacanza lavorate sono ore ordinarie che possono portare un premio. Trattandoli come una cosa supera il tasso regolare per tutti coloro che hanno preso il giorno libero e understates straordinario per tutti coloro che non lo hanno fatto. TimecardSchedule è una tabella sia per il default di org che per il override di un membro, perché la risoluzione è "la fila del membro se ce n'è uno, l'org's altrimenti" e due tabelle duplicano ogni colonna e li lasciano andare. Si'. è datato in modo efficace in modo che un cambiamento di programma in giugno non può reattivamente fare marzo Sembra assenteismo. Un programma non paga mai nessuno. È paragonato a quello che è successo e mai usato al posto di esso — pagando da un programma è il pranzo auto dedotto di pianificazione del cambiamento. Ciò che guida legittimamente è il rilevamento delle eccezioni, la frequenza punti, avvisi open-shift e premi predittivi-scheduling.

  23. · kamo-internal

    L'editor visivo, il calendario di pagamento, payroll export, tier limitato

    DayTimeline disegna una giornata lavorata come pista di 24 ore con una maniglia trascinabile Ogni pugno. Un grafico piuttosto che un tavolo perché un pugno sbagliato non è quasi mai sbagliato in un modo un numero rivela: un orologio-out alle 17:00 sembra bene in una lista e è ovviamente sbagliato su una pista dove il turno prima che finisse alle 13:00 e nulla segue. La forma è ciò che rende una brutta giornata visibile a una holding del recensore cinquanta cartoline. I PROPOSIZIONI. Non scrive mai. Il rilascio del manico apre l'obbligo ragione dialogo e la proposta si tiene fino a quando la ragione è scritta, perché un cursore che salvato sul rilascio metterebbe una regolazione salariale inspiegabile uno stray motivo di trascinamento piuttosto che digitare un tempo. Un turno non chiuso è disegnato come un bar aperto piuttosto che chiuso a "ora". Indovinate una fine è esattamente ciò che il motore si rifiuta di fare, e l'immagine deve non implica una risposta che il calcolo non darà. Il nuovo istante deriva dallo SHIFTING l'originale piuttosto che ricostruire un tempo di parete locale, che è ciò che lo mantiene corretto attraverso un confine DST: "09:00 in questa data in questa zona" è ambiguo due volte all'anno e semplicemente sbagliato una volta. PayPeriodsSubTab rende visibili entrambe le regole di periodo — solo un periodo di progresso alla volta, e chiusura congela le versioni di regola. PayrollExportSubTab conduce con la corsa a secco: stessi numeri, non commette nulla, quindi la varianza può essere letta prima Chiunque è pagato. L'impegno viene confermato separatamente e disabilitato una volta che un periodo uno, e un'inversione viene offerto invece di una ristampa. RestrictedMembershipGuard confina un membro la cui occupazione è finita al loro i propri record tramite una lista prefissata — una lista di permessi in modo da una pagina aggiunta in seguito è negato per impostazione predefinita, dove un blocklist lo ammetterebbe silenziosamente. È un UX confine, non quello di sicurezza: ogni punto dietro di esso è indipendente autorizzato in SecurityService, perché un reindirizzamento lato client impedisce a nessuno chi può aprire devtools. `chat` ora mappe per canSendTextMessages in TOOL CAPABILITY, l'unico piano capacità il livello limitato toglie. Il proxy payroll passa il testo/csv attraverso intoccato — parsing it as JSON fallire il download come un 500 mentre il file era perfettamente a posto dall'altra parte.

  24. · SecurityService

    Relè l'editor, autorizzato dall'identità prima dei diritti

    Un EMPLOYEE può correggere il proprio record — questo è il punto del redattore, e rifiutando lascia il dipendente senza modo di dire che l'orologio era sbagliato su un giorno sono l'unico testimone. Ciò che non possono fare è far contare: la correzione atterra come una regolazione su una scheda temporale che deve ancora passare attraverso la catena di approvazione. L'identità viene risolta attraverso la risoluzioneRole, che controlla l'argomento PRIMA consultare qualsiasi diritto. La modalità Dio fa il checkReal dritto per ogni diritto, quindi qualcosa che descrive una persona di nome deve ammettere che la persona sull'identità da solo. Deve anche lavorare per un membro nel livello limitato, che non detiene i diritti e ha ancora un diritto legale alle proprie ore.

  25. · kamo-shared-library

    Portare la ragione di regolazione sul pugno stesso

    Un tempo corretto o inserito ora registra WHY sul record salariale piuttosto che solo nel registro dell'audit. Sotto Anderson v. Mt. Clemens Pottery un datore di lavoro con inadeguato record perde il beneficio del dubbio sulle ore, e un record che porta la propria giustificazione è una prova materialmente più forte di una necessità unire a un tavolo di audit per spiegarsi. Consente inoltre all'editor di mostrare il ragione accanto al tempo senza una seconda query, che è ciò che rende chiunque In realta' l'ho letto.

  26. · SecurityService

    Firmare ex dipendenti a un livello limitato invece di rifiutarli

    Un membro del team il cui impiego non è ACTIVE è stato rifiutato alla porta con "Il tuo account esiste ma non è attivo in questo momento." Quella era la forma sbagliata. Un dipendente terminato ha un diritto di legge alle proprie registrazioni salariali — California Labor Code 226(c) dà 21 giorni e una pena di perviolazione dopo che — e un ex dipendente che non può firmare non ha modo di esercitarlo. Loro i riconoscimenti di conformità sono la stessa storia. Essi ora firmano e atterrano inCapabilities membri. ristretto: una strettamente più stretta più tier che unlicensed e ortogonal ad esso. Significa che l'org non ha pagato per voi; limitato significa che non più vi impiega. Ciò che sopravvive è ciò hanno il diritto di raggiungere dopo la separazione — le proprie schede temporali, la propria conformità record, proprio profilo, proprio fatturazione, supporto. Chat è la capacità di un piano questo livello porta via, perché un ex dipendente che tiene una linea live nella la conversazione interna dell'azienda è un problema diverso da uno che non può inviare un'email. canViewOwnTimecards e canViewOwnLegalCompliance non vengono mai mantenuti in alcun livello: le persone che hanno più probabilità di avere bisogno dei loro record di pagamento sono quelli che solo a sinistra. Il controllo record-attivo ancora REFUSES. Un membro soffice non è un ex dipendente, è un membro che non esiste più. Tre porte aperte, una volutamente chiusa: - SecurityController login ora rifiuta solo su record-attivo - SessionRefreshController non uccide più una sessione off-board sulla prossima sondaggio, che avrebbe fatto l'accesso durare circa un minuto - DeviceAuthController partite, quindi un dipendente terminato può raggiungere il loro record dal telefono che avevano già firmato - EnterAs e Impersonation sono invariati: questi sono percorsi di amministrazione con i propri semantica e allargamento non è quello che si tratta ristrettoSe non svuotato OPEN, ed è l'unica cosa su questo percorso che Si'. Ogni altro controllo di ammissibilità non viene chiuso perché ammettere un sconosciuto membro è la direzione pericolosa. Qui invertisce: questo corre su ogni il diritto letto per ogni membro, e un repository blip striscerebbe la chat da un intero org di persone perfettamente impiegate. Il cancello di login a monte ha deciso se la sessione esiste. Aggiunge anche PayrollRelayController — il limite di autorizzazione per i periodi di pagamento, payroll export, break compliance, congedo e costi di lavoro. FINALIZE PAY PERIODS cancelli qualsiasi cosa toccare il file payroll (commettere uno paga una società), MANAGE TIMECARDS porta le superfici HR, e gli endpoint /me/** non fanno parte in modo che siano strutturalmente incapaci di agire su qualcun altro — che questioni più per l'attestazione di rottura, una dichiarazione del dipendente sulla propria giorno, e per un membro ristretto che non detiene alcun diritto.

  27. · kamo-shared-library

    Aggiungi il termine di inizio pasto alla regola di pausa

    La California richiede il primo pasto a BEGIN prima della fine della quinta ora. Un pasto di 30 minuti preso all'ora sette è una violazione completa anche se era la lunghezza giusta, quindi la scadenza ha bisogno della propria colonna — un controllo di lunghezza non può e BreakEvaluator prova già MEAL LATE contro di esso.

  28. · kamo-shared-library

    Paga i periodi, le rotture, i premi, i conti del lavoro, le accruals, le esportazioni

    Batte il restante schema salari-e-ora in un cambiamento condiviso-lib così il tutto il dominio atterra in un unico run KamoInitializer piuttosto che una migrazione per fase. Entità: i periodi di pagamento con le colonne di bloccaggio delle regole, le linee di guadagno, la rottura regole e violazioni, conti di lavoro e segmenti di lavoro, politiche di accrual, bilancia e registro, lasciare casi, esportare lotti, presenze. Quattro motori puri, 51 test: BreakEvaluator — mai auto-deduce un pranzo, perché un pasto auto-dedotto libri una mezz'ora non pagata il datore di lavoro non può dimostrare era duty-free. Premiums sono WAGES (Naranjo), quindi fluiscono in guadagni piuttosto che un rapporto. Uno premio per CATEGORY al giorno (UPS v. Superior Court): due pasti mancati devono uno, un pasto mancato più un riposo perso deve due. Un pasto waiver è onorato solo dove lo statuto lo permette — un dipendente non può acconsentire al di fuori di esso. Riposo sono scomparsi, quindi il silenzio sull'attestazione non viene mai segnato come una violazione. RegolareRateCalculator — straordinario è dovuto sul tasso REGULAR, non la base tasso. 778.115 media ponderata, 778.209 straordinario retroattivo bonus non discrezionali, 778.216/218 esclusioni, e il premio di metà tempo: il tempo diritto è già nel totale, così il tempo straordinario aggiunge 0.5x, non 1,5x. AccrualEngine — un soffitto smette di accrual senza eliminare l'equilibrio, il riporto è bloccato separatamente dal soffitto, e una deduzione che viola il pavimento lancia piuttosto che approvare silenziosamente mezza giornata di riposo. PayPeriodCalendar — generato, non rientrato a mano, e verificareRifiuti dovuti un divario (lavoro appartenente a nessun periodo, mai pagato) o una sovrapposizione (pagato due volte).

  29. · kamo-shared-library

    Eccezione modello e rivelatore

    Rende reale il bloccoExceptions gate. Finora la tabella di transizione ha letto un contare che nulla ha scritto, così ogni timecard sembrava pulita e 'un pugno mancante è mai pagato come zero' era un commento piuttosto che un controllo. La distinzione BLOCKING è l'intero punto della tassonomia: un turno aperto, un punzone incontaminabile e una finalizzazione provvisoria senza pari, perché chiudendo su di loro afferma qualcosa che nessuno può stare dietro. A geofence miss and uno skew orologio sono ADVISORY e non bloccare mai -- rifiutando di registrare o finalizzare il tempo che è stato effettivamente lavorato è l'esatta violazione salariale questo sistema previene. Il rivelatore segnala e non ripara mai. Ogni modo di indovinare un turno non chiuso è sbagliato: lasciarlo acceca ore assurde, auto-chiusura sotto-reporte, un cappello inventa una figura che nessuno ha assistito. Quindi diventa un'eccezione. Idemponte per costruzione tramite il vincolo unico (membro, data, tipo) -- i duplicati avrebbero gonfiato il conteggio e reso una cartolina non definitiva per un motivo Nessuno poteva trovare.

  30. · kamo-internal

    Confermare prima di interrompere un pagamento ricorrente

    Entrambi annullano le azioni — il proprio posto di un membro e il piano di un direttore di gruppo — ora chiedono in primo luogo, nominare la copertura della data corre a e, per un gruppo, quante persone tengono la loro fino ad allora. Deliberatamente non la Confermazione condivisaDialog. Quello richiede di digitare DESTROY, DELETE, REMOVE o ERASE prima che il suo pulsante consenta, che è giusto per cancellazioni irreversibili per cui è stato costruito. La cancellazione non è né irreversibile né distruttivo: nessun dato è perso, l'accesso continua alla fine del periodo pagato, e puoi iscriverti di nuovo quando vuoi. Un gauntlet tipo la parola davanti fermare un pagamento è attrito su un'azione un cliente è inequivocabilmente diritto di prendere facilmente. Né il pulsante dice "Cancel". In una finestra di dialogo sulla cancellazione, quella parola significa entrambi "abbandonare questa finestra di dialogo" e "cancella il mio abbonamento" e non può essere letto in modo affidabile come entrambi i pulsanti nominano il loro risultato: "Mantenere il mio piano" e "Stop future pagamenti».

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