에디터를 릴레이, 권한의 앞에 정체성
EMPLOYEE는 자신의 레코드를 수정할 수 있습니다. - 그것은 편집기의 포인트입니다. 그것을 혼란시키는 것은 시계가 잘못되었는지 말해 직원을 떠나 그들은 단지 증인이다. 그들이 할 수없는 것은 계산 : 보정 땅은 여전히 이동해야 할 timecard에 조정으로 승인 체인. Ident...
펀치 자체의 조정 이유를 운반
수정되거나 삽입 된 시간은 이제 WHY를 wage 레코드에 기록합니다. 감사 로그에서만. 앤더슨 v. Mt. Clemens Pottery와 고용주 inadequate 레코드는 시간에 대한 의심의 혜택을 잃고, 기록은 그것의 자신의 justification를 나르는 것은 1개의 필요 보다...
대신 제한된 계층으로 이전 직원을 서명하십시오
ACTIVE가 문에 거절되지 않는 팀 멤버 "당신의 계정이 존재하지만이 시간에 활성화되지 않습니다." 그것은 잘못된 모양이었다. 종결 된 직원은 자신의 임금 기록에 적합한 통계를 가지고 있습니다. 캘리포니아 노동법 226(c)은 21일과 1-violation 처벌을 제공합니다. 즉, 운...
식사 시작 마감일을 휴식 규칙에 추가
캘리포니아는 다섯 번째 시간의 끝 전에 BEGIN에 첫 번째 식사를 요구합니다. 시간당 30분의 식사는 7시간이 지나도 전체적인 위반입니다. 오른쪽 길이이므로 마감일은 자체 열을 필요로합니다. 길이 체크는 할 수 없습니다. 그것에 대 한 서, 그리고 BreakEvaluator 이미 테스...
급여 기간, 휴식, 프리미엄, 노동 계정, accruals, 수출
나머지 임금 및 시간 스키마를 하나의 공유lib로 변경합니다. 단일 KamoInitializer의 전체 도메인 토지는 이전보다 오히려 실행 단계. 항목 : 규칙 버전 동결 열, 수입 라인, 휴식과 함께 기간을 지불 규칙 및 위반, 노동 계정 및 작업 세그먼트, accrual 정책, 균...
2 코어 천장에서 CPU 한계를 올립니다
복제 둘 다 ~47h를 위한 2 핵심 한계에 대하여 1997m/1999m에 핀으로 꼿습니다. 그것은 /languages 충분히 그 liveness 및 readiness 조사 적시에 밖으로 (443 및 921 실패) 및 서비스에서 하나의 복제를 떨어졌다 완전히 종료, 생존자에 모든 트래픽...
INTO 영어로 번역, 그냥 그것을 밖으로
두 공급자는 “en”.equals (sourceLang)에 지원 (), 이렇게 각을 문질렸습니다 inbound 쌍은 공급자의 앞에 암호로 했습니다. 공급자Router 합법적인 passthrough로 "no Provider가 이것을 지원하지 않음"을 대우하고 반환합니다. 입력 verbat...
예외 모형과 발견자
BlockingExceptions 문이 진짜로 만듭니다. 이제까지 전환 테이블 읽기 아무것도 썼다, 그래서 모든 timecard가 깨끗하고 '누락을 누락 제로로 지불하지 않는 것은 통제 보다는 오히려 의견이었습니다. BLOCKING 구분은 세금의 전체 지점입니다 : 열린 교대, unp...
Recurring 지불을 멈추기 전에 확인
모두 취소 작업 — 회원의 자신의 좌석과 그룹 관리자의 계획 — 지금 요청 첫째, 날짜 표지가 실행되고, 그룹에 대한, 얼마나 많은 사람들이 그들의 유지 다음까지 좌석. 공유 확인Dialog가 아닙니다. 즉, DESTROY를 입력해야 합니다. 버튼의 앞에 DELETE, REMOVE 또...
적용 및 그룹 페이로드의 갱신 날짜를 수행
이제 두 표면은 현재PeriodEnd 및 cancelAtPeriodEnd를 보고합니다. 날짜는 무엇입니까? 취소 확인은 실제로 말해야합니다 - "당신은 끝까지 좌석을 유지 기간"은 추상에 재흡입, "당신은 14 3 월까지 좌석을 유지" reassurance 누군가가 행동 할 수 있습니다...
그룹 플랜 취소는 유료 기간의 끝에 좌석을 유지
클라이언트에서 즉시 플래그를 완전히 삭제 — 더 이상 방법이 없습니다 오늘 중지에 대한 액세스를 요청, 때문에 좋은 이유가 없습니다. 더 보기 그룹 패널은 이제 압박되기 전에 취소하는 것을 말한다, 그리고 계획 말한다 국가 주변을 떠나기 보다는 오히려 후에 아래로 감기.
취소 중지 미래 청구 및 다른 아무것도
더 이상 "immediate" 플래그를 제거하고 고객 기반 경로가 묻지 않습니다. 한국어 진정한 구독을 종료하는 동시에 Stripe 요청 금지를 위해, 그래서 조직은 그 기간의 나머지를 잃었다 이미 지불하고 환불되지 않았습니다. 하루에 두 번 취소하는 Somebody 달은 그 달을 샀습...
청구서가 그들을 필요로 할 때 사람들에게 말하고 지불을 중지하십시오
결제를 할 때 홈 페이지의 배너가 있습니다. 실패, 청구 페이지로 연결. 이제 실패한 지불까지 더 이상 열리지 않는 앱만큼만 보여주었습니다. unpaid 송장보다는 깨진 소프트웨어로 읽습니다. 만에 그들이 행동 할 수있는 청구서 : 자신의 좌석, 그들은 관리 그룹. 그것은 렌더링 아무것...
조직 당 한 계획, 25 좌석 기업 천장, 그리고 지불하는 방법
계획은 이제 조직 수준 결정이며 다른 것은 무시 할 수 없습니다. 셀프 페이너 또는 그룹 관리자가 친절과 같은 자신의 읽기를 선택 정확한 버그: **************** "이 org를 사용 OR-ing에 의해이 응용 프로그램을 가지고 모든 라이브 구독 대상 org, 그래서 하나 1...
권한에서 해결된 역할을 가진 승인 층 릴레이
ROLE IS DECIDED HERE, 콜러의 권리와 그들의 관계에서 주제 -- 요청 몸에서 절대. 자신의 역할을 할 수있는 신체 지불해야 할 사람이 주장 할 수 있습니다. 선구자: PAYROLL (모든 국가에서 가장, 편집), 다음 MANAGER, 다음 EMPLOYEE 1개의 자신의...
APPROVE TIMECARD ADJUSTMENTS (197) 및 FINALIZE PAY PERIODS (198)
의무의 별거는 표현할 수 있습니다: 누구든지 timecard를 찬성하지 않습니다 자동 누가 그것을 통해 지불 기간을 닫을 수 있습니다. MANAGE 팀 (183) 모듈 게이트를 유지하고 deliberately하지 않습니다. 예상은 여전히 맞지 않습니다 -- 그것은 지속적인 고용 사실입...
승인 계층 상태 기계
직원 제출 -> 관리자 승인 -> 급여 닫힘, 소유자의 결정 당. 4개의 규칙은 순수한 전이 테이블에서 시행하고 25의 시험에 의해 핀으로 꼿습니다: 1. 직원이 제출 될 때까지 관리자 CANNOT 승인. 제출은 직원의 자신의 assertion 그 시간은 그들의 및 완료; 그것을 a...
회원 Timecard 탭 및 HRS Timecards 설정 탭
회원 탭은 SELF-SERVICE ONLY이며 정체성에 문질러 정확히 같은 법적 책임: 그것의 endpoints는 아무 일원 id를 전혀 가지고 갑니다, 그래서 구조상으로 입니다 다른 사람의 시간을 보여주는 것. checkRight는 여기에서 사용할 수 없습니다 -- 그것은 신 모드의 ...
/hr/attendance roster와 NavTop 시계 통제
HrTabPlaceholder 몸을 대체합니다. 경로, HR TABS 항목, MANAGE TIMECARDS 문과 탭 i18n 열쇠는 이미 존재했습니다; 여기 아무 것도 등록하지 않습니다. 로스터 시간은 모든 읽기에 immutable 펀치 로그에서 파생 된 서버 측입니다. 오히려 실행 ...
단계 1-3에 대한 로그 구축
발송되는 것을 기록합니다, 일단 조금을 가진 공유lib 푸시 주문 계약, timezone 질문에 침입하는 생산 조사, 그리고 pre-existing KamoInitializer 버그는 29 주자.
Punch repository에 데이터베이스 시간 액세스
모든 펀치는 즉시 DB에서 제공, JVM: pods 재시작 및 노드 시계 skew, 과 wage 기록 그의 주문은 어떤 pod 대답은에 달려 있습니다 이름 * SQL 표준 CAST, 때문에 :: 캐스트는 조용히 mangled -- Hibernate reads ':'라는 매개 변수 접두사...
/api/security/timecards를 위한 BFF 노선
TimecardService는 진입없이 ClusterIP입니다. 기능 404s 브라우저에서 모든 서비스는 건강하고 모든 빌드는 녹색 -- 이미이 플랫폼에 두 번 일어난 정확한 실패. 여기에서 허가 없음, deliberately: 이 층은 수송이고, 반 검사 통제되는 믿음을 초대합니다....
TimecardService에 보안 서비스 릴레이
승인 경계. TimecardService는 데이터와 엔진을 보유하지만, 세션; 이것은 세션을 보유하고 누가 무엇을 할 수 있는지 결정, 다음 릴레이. 더 보기 엔진은 따라서 여기에서 통과하지 않고 도달 할 수 없습니다. SecurityService는 모든 리퀘스트().permitAll...
Workday 버킷, 파이프라인의 2단계
해결된 간격은 사업 날짜 초, 할당기를 위해 준비되어 있습니다. 간격은 SPLIT에서 매일 경계를 횡단합니다: 22:00-06:00 교대 하룻밤의 평일은 다음 날에는 2 시간입니다. 관련 기사 시작 날짜에 전체적인 경은 매일 과시와 일곱 일 규칙을 만듭니다 모든 밤 노동자에 대 한 잘...
KI 등록 및 스키마 마이그레이션
테이블은 ddl-auto에서 온다; 이 러너는 Hibernate가 할 수없는 것을 공급합니다 -- 1개의 열린 1 차적인 할당 및 1개의 열리는 급여 비율에 부분적인 유일한 색인 window, 그리고 REVOKE 는 데이터베이스 절반의 부트 전용입니다. @Order(0) 그래서 나중에...
봄의 래퍼를 통해 기존의 CHECK 제약을 인식
TrainingSchemaMigration @Order(43)는 모든 KamoInitializer 실행을 낙관했습니다. 그 이후에 주문한 모든 29 주자를 보면서 조용히 (주문 45-112). 관련 기사 생산 2026-08-11. ITEM TARGET CHECK SQL의 javadoc...
일주 및 근무일 경계
평일은 FLSA 과시 단위입니다 -- 고정, 정기적으로 168 시간 반복 기간 -- 그리고 지불 기간이 아닙니다. Biweekly 기간은 정확하게 2를 붙듭니다 workweeks; 반 월간 또는 월별 기간은 항상 fractional 하나를 보유하고 있으므로 기간에 과잉 가동은 둘 다 u...
간격 해결책, 계산 파이프라인의 단계 1
펀치가 해결되었습니다. , 총, 값 유형 이상 entities 그래서 각 단계는 persistence 컨텍스트 없이 정착물 테스트할 수 있습니다. 내구시간은 내구시간에 옵니다. 그것은 전체 DST 이야기와 테스트 핀: 22:00-06:00 이동은 SEVEN 봄-앞과 NINE의 시간. ...
관할 구역 presets를 가진 비 pyramiding overtime allocator
규칙은 이미 이 라이브러리에서 사용 된 RequirementRule 모양의 DATA입니다. code branch, 그래서 캘리포니아는 rewrite 대신 구성 행이다. 할당 순서는 짐 방위입니다: 매일 규칙 가장 높 돌격 첫번째 (13 시간 CA의 날은 1.5x에서 2x와 4h에 1h...
Org timezone을 브라우저로 전달하십시오
클라이언트 조직 모델은 timezone 필드가 없었다, useFormatters 및 next-intl timeZone 및 timezoneService의 백엔드 호출 404'd -- 그래서 브라우저의 영역에서 렌더링 된 모든 타임스탬프, SSR의 서버. subset 보다는 오히려 모든 ...
HR timecards 디자인 및 계획 시리즈
25 시약 Cross-repo 조사에 기반을 둔 디자인. 부품 II가 12를 닫습니다. Blocker-level gaps 기업 기능 완전성 검토 사이에 발견 펀치 및 일반 ledger : 관리자 승인 계층, 동시 할당 및 급여율, 프리미엄 급여 및 일반 요금, 노동비, 계산 추적 및 감...
*** * ***
timezoneService.ts 는 이 endpoint 를 썼고 존재했습니다. Java 서비스 없음; 클라이언트는 404을 삼았고 UTC로 해결되었습니다. 이름 * useFormatters와 next-intl은 timeZone 없이 구성됩니다. timestamp는 브라우저의 영역에서 ...
WorkSite, 관할권 앵커
Named WorkSite, workLocation: TeamMember.workLocation은 기존의 office/remote enum 및 그 이름에 의해 두 번째 기호는 모든 grep에 충돌합니다. ZoneId는 TimezoneType보다는 무료 IANA 문자열입니다. 즉, 27...
고용 및 효과적인 할당 개정
Punches는 회원이 아닌 ASSIGNMENT를 참조합니다. 그것은 무엇 만드는 동시 위치, 29 CFR 778.115 가중치 정규적인 비율, 다중 사이트 관할 및 작업은 모두에서 표현할 수 있습니다. managerMemberId는 TeamMember.manager에서 개정 시간으로...
유효성 검사, 부과금 지급율
이 단체 전에는 직원 보상이 없습니다. 그것은 요구됩니다: 가동불능시간은 FLSA 일정한 비율에 대하여, CA 요구합니다 임금 진술에 대한 비율, 그리고 비율이 없는 수출은 payroll를 줍니다 아무것도 소비. 새로운 ROW입니다. 수출한 기간 안에 효과적인 비율은 생성합니다 ret...
Append-only 펀치 로그 및 감사 이벤트
모두 NARROW 저장소 인터페이스에 의해 제공, JpaRepository: deleteAllInBatch 그리고 대량 JPQL 우회 법인 콜백, 그래서 인터페이스 모양은 무엇이 만드는지 append-only real 오히려 고문보다. Instant + IANA Zone + 비즈니스 ...
Timezone-of-record 해결자
권한 작업 사이트 -> 회원 -> org -> UTC. 업무 사이트가 승리하기 때문에 wage-and-hour 규칙은 작업이 PERFORMED 어디에 있는지 따릅니다. 이 세션의 생산 인구 조사는 터치되지 않은 PACIFIC에 13 orgs를 발견했습니다. 기본적으로 63명의 회원 중...
공유 WORM refusal 감시
@Column (updatable=false)는 불능을 시행하지 않습니다 -- 조용히 Hibernate omits the column from UPDATE and the stale write looks 같은 그것 성공. 유일한 작업 가드는 @PreUpdate 그 던져.
도메인 enums 및 point-in-time version resolver
Enums는 전화 사이트에서 @Enumerated (STRING)입니다. ORDINAL은 수치를 방출합니다. SchemaCleanupRunner의 인리스트 스윕을 포함하는 범위 CHECK 모든 새로운 값에 손으로 넓혀야 합니다. 해결자는 즉시, 절대로 CONTAINS 창에 의해 해결 ...
실제로 도달 할 수있는 사람의 자신의 청구서를 넣어
셀프 페이 및 시트 커버리지 패널은 /settings/account?tab=billing에있었습니다. 그 페이지는 CONFIGURE SYSTEM 또는 재정적 권리가없는 사람을 다시 /settings, self-pay 패널은 누구에게만 렌더링됩니다. 조직 소유자 — 그래서 그것은 결코 할...
전체적인 초기화 대신 직렬화 충돌을 완화
그것을 실행에 의해 발견. YugabyteDB는 온라인 스키마 변경을 수행하므로 CREATE UNIQUE INDEX가 발급됩니다. Hibernate의 ddl-auto pass는 여전히 settling이 경주를 잃고 돌아갈 수 있습니다. 40001 "Concurrent 업데이트로 인해 연...
좌석을 지불 한 회원을 표시하고, 두 번째를 제공 중지
적용 엔드포인트는 번역 키와 구성 요소가 포함되지 않습니다. 질문에 대답 - 내 좌석을 지불하는 사람은 여전히 묻지 않았습니다. SeatCoveragePanel은 그것을 요구하고, 대답은 그 옆에 각자 급여 패널을 먹습니다: 좌석이 이미 조직 또는 그룹에 의해 덮여있는 누군가는 아니 더...
그룹 플랜 취소 및 1인용 더블 결제
마지막 배송의 세 가지 간격 : 계획이있는 그룹은 제거 할 수 없습니다. delete()는 살아있는 동안 거부합니다. 구독은 존재하지 않습니다., 그룹 행이 점유하는 것은 Stripe 구독 — 하지만 취소 할 방법이 없었다, 그래서 the safeguard was 죽은 끝. cance...
당신이 사람들을 넣을 수있는 그룹과 비용을 지불
그룹은 이름을 생성하고 다른 것도 없다 - 누군가를 추가하는 방법, 아니 방법 플랜을 선택하기 위해 매니저에게는 지불 할 곳이 없습니다. 지금 그룹을 열어 지불, 그 위에, 누가 여전히 좌석을 기다리고, 그리고 계획 제어 그 그 좌석을 구입. Canonical member Picker...
빌링 그룹은 끝을 끝내고, 아무것도 셀프 페이 충전을 중지
그룹은 사람들이 모여, 매니저의 자신의 카드에 계획을 살 수, 손 그것의 좌석. 그 존재의 아무도 : 유일한 운영은, approve 그리고 삭제, 그래서 그룹을 만든 소유자는 라벨과 그것을 사용하지 않는 방법. BillingGroupSeatService는 돈 이동 및 제목이 발행되는 ...
구독 찾기 rename을 따르십시오
**************** 공유에서 사라집니다. 도서관. 그것의 선택적인 반환은 더 긴 유일한 constraint에 의존했습니다 존재, 그래서 한 계정은 개인과 그룹 구독 모두 보유 두 개의 행을 일치하고 여기에서 던질 것입니다. 두 개의 호출 사이트가 정규을 원한다 비 그룹 구독,...
실제로 지불 할 수있는 그룹을위한 Schema
3개의 주자: BillingGroupRosterMigration은 billing pay group members를 만듭니다. 지불하는 방법, 전에 그것은 아무것도 샀다. org id는 그것에 denormalised 그래서 데이터베이스는 "회원이 가장 하나의 활성 청구 그룹에있을 수 있...
빌링 그룹은 자신의 payer
그룹은 명명 될 수 있으며 다른 것도 없습니다. 구독이 설정되지 않았습니다. — setSubscription라는 플랫폼에서 아무것도 — so subscription uid stayed null forever와 그룹은 단일 좌석을 살 수 없습니다. 세 가지는 모델에서 변경해야했습니다. ...
1b3553f의 소스 반은 테스트에만 전념
1b3553f는 두 개의 새로운 테스트 파일과 아무것도 다른, 그래서 그것을 착륙 asserting 오류 FolderManager.set 아직 존재하지 않은 플래그는 컴파일할 수 없습니다. 이름 * 이것은 그 테스트가 기록 된 변경입니다.
중복된 IMAP 플래그를 중지
IMAP 플래그는 독립적이므로 "이 읽기"는 별에 대해 아무것도 말해야합니다. EmailImapService.setFlags는 항상 nullable Booleans를 가지고 있으며 건너뛰기 null, 하지만 FolderManager 노출 세 원시 및 모든 호출기 위 false로 평평한 ...