1개의 계획 & 빌링 스크린 대신에 2개의 그것 각 대답된 반
플랫폼에는 2개의 청구 스크린이 있었습니다. /settings/account?tab=요금 청구 조직이 지불하는 것; 계획 및 회원 프로필에 빌링은 무엇을 대답 한 사람의 지불. 네이터 이름은 당신이 원한 것을 말하고, 분할은 아니었다 심지어 깨끗한 : 조직의 콘솔 - 실제 가격으로 계획...
CRM 시장이 존재하지 않을 때 시장에 온보딩 패널 표시
/leads는 빈, 장애인 시장 탭 바와 리드 그리드를 렌더링 CRM 시장을 결코 구성하지 않았다. 이제 같은 온보딩 패널을 보여줍니다. /commerce는 누락된 상거래 시장에 대한 쇼 — 추출 MarketOnboardingEmptyState 그래서 두 가지 숙박 동일 — CRM 리드...
새로운 메시지를 열고 나머지를 스크롤
긴 대화를 열어 가장 오래된로드 된 메시지가 처음과 다음 회원이 대기하면서 현재로 이동했습니다. 두 채팅 표면 목록이 이미 상단에 그려진 후 아래쪽으로 스크롤했습니다. rAF → rAF → setTimeout(0), TicketChat을 통해 채팅 setTimeout(..., 50) —...
기간 그래프 및 timecard는 초안으로 편집합니다
1일 타임라인을 ***********로 대체합니다. 전체 급여 기간, 그리고 어떤 편집을 변경 같은 느낌. 약은 텍스트가 없습니다. 그들은 자신의 시간을 수행하기 위해 사용, 라벨은 60px 넓지만 긴 것은 설명했다 — 그래서 10 분 휴식과 4 시간의 이동은 같은 알약을 붓고, 한 ...
누군가가 그것에 응답 할 때 지원 대화를 올리십시오
지원 창을 닫지 않고 대화를 떠나지 만 처리되었습니다. 그것이 있다면. ChatNotificationListener는 모든 SUPPORT TICKET에 일찍 돌아갑니다. 알림 - 올바르게, 티켓이 일반 채팅 창을 열지 않기 때문에, 그것은 전혀 살아있는 re-open 없이 지원을 떠났습...
Linkable 탭, 작업 추가 회원 및 전체 역사 탭
/account/view/{id}의 모든 탭은 실제 경로입니다 — /members, /history and 나머지는 누군가가 보낼 수 있습니다, bookmark, 또는 땅에. 늙은 ?tab= 링크 리디렉션 일치하는 것. 각 탭은 자체 데이터를로드하므로 계정을 더 이상 열 수 없습니다. ...
펀치를 쓰기 전에 시계 in/out 확인
Nav 시계 펀치 똑 바른 떨어져서 클릭. 그 막대기에 있는 다른 통제 idempotent 또는 trivially undoable입니다; 펀치는 뒤에 오는 임금 기록입니다 필수 작성된 이유를 가진 HR 관리자만 수정할 수 있습니다 — and the button Logout에서 하나의 픽...
한 스트립 - 필터와 하위 탭 옆에 새로 고침
컨트롤 탭 스트립 아래 두 번째 전체 폭 행에서 sat 세 개의 짧은 단어와 아이콘, 팬의 전체 밴드를 보내는 것은 무엇에 공간에 맞는 탭 라벨은 이미 빈을 떠나. 그들은 이동 탭 행, 오른쪽 정렬; 그리드는 높이를 유지합니다. 두 패널의 필터는 부모에서 렌더링하므로 행을 변경할 수 ...
옵션 스트립을 생성하는 것은 클러스터 대신 방을 생성
왼쪽 클러스터는 minWidth를 수행 : 0 그 내용 (현재)은 거부 수축 또는 포장, 그래서 혼잡한 막대기 shrank 그것의 자신의 내용 및의 밑에 상자 content spilled 아웃 에 the right — 언어 단추 was draw straight over 로그아웃 링크. ...
선택의 장소에 있는 Segmented 상태 필터
Pending/Complete/All는 1개의 선에 적합했던 3개의 짧은 동료입니다, 그래서 드롭다운 클릭 뒤에 두 가지를 숨기고 라벨과 170px를 보냈다. 아무것도 말하지 않는다. 닫히는 선택은 또한 대답할 수 없습니다 "나는 봐 모두?"그것을 열지 않고. 관련 기사 필터 공유: ...
Skeleton는 공유 그리드 헬러를 추적; jsonBody의 204 가드를 테스트
App/hr/overview/page.tsx에 있는 선적 skeleton는 아직도 손으로 wrote 1800px Breakpoint는 OverviewPillars와 친구가 추출 한 primitives.tsx (WIDE BREAKPOINT / 칼럼 트랙 / 반응형 컬럼). 같은 도우미로 ...
CurrentPeriod의 승인을 따르고, null을 0으로 읽습니다
SecurityService 7c55054는 현재 내부의 waitingApproval을 이동했습니다. 실제로, omits는 완전히 열리면. 페이지는 그것의 withheld를 파생했습니다 두 개의 구성 요소에서 두 번 신호, 두 개의 다른 표현과 함께 - 어떤 테스트 중 하나 `=== n...
Two-up Figure rows 그래서 카드 라벨 랩 없음
그림 라벨은 연산자 라벨입니다 - 상부, 11px, 0.12em 추적 - 158px에서 "Execution incomplete"를 넣어, 150px에서 "잠금 예외" 135px의 "Awaiting 승인". 분기 페이지 카드 안쪽에 3 위로는 각을 줍니다 그림 131px, 그래서 그 세는...
고정 크롬 라벨을 두 개의 라인 건너 뛸
플렉스 아이템의 자동 최소 크기는 min-content width입니다. 래핑 텍스트는 가장 넓은 단어입니다. 그래서 혼잡 한 바는 이러한 컨트롤을 짜 56px-tall bar 안에 라벨을 깰 수 있습니다. 2 의 4 크롬 링크는 자신의 whiteSpace를 수행 : nowrap 및 다...
시계 아이콘에 한 광택, 버튼의 주위에 두 가지
규칙은 방사능과 상자 그림자를 수행. 그라디언트 상자 그림자가 외부에 별도의 링을 그린 동안 자체 상자 - 두 단일 규칙에서 동심의 글로우, 그것은 정확히 어떻게 본. 또한 IconButton에 sat, 그래서 외부 반지는 단추의 둥근 추적했습니다 rectangle는 전체적인 통제의 ...
옵션 분쇄 대신 군중 nav를 슬라이드
Nav 보다는 더 많은 선택권을 핀으로 꼿는 모양에서 도와를 밖으로 짜낼 수 있습니다: 두 개의 스트립은 익지않는 오버 플로우 상자이고 타일은 코드 아이들이 없습니다 그들의 자신의 flex-shrink, 그래서 상단 바는 그들을 파괴 (그리고 숨겨 scrollbar outright, 그...
카드 번호를 공유 기본 라인에 줄
마스트헤드의 모든 인물과 4 개의 기둥 카드는 자체 겹쳐 쌓이는 박스였습니다. 위의 연산자 라벨, 아래 값. 통신수 상표는 0.12em를 가진 uppercase입니다 "Overdue"의 카드 컬럼 내에서 추적, "Execution 불완전한"두와 "그런 시도"3,그리고 각 값은 따라서 시...
Withheld 승인 상태는 명확하지 않은, 렌더링
attendanceState()는 blockingExceptions가 0이고, 각 멤버 'clear'를 표시했습니다. timecardState는 'SUBMITTED'가 아닙니다. - 콜러 부족의 모든 구성원에 대한 사실 FINALIZE PAY PERIODS는 서버가 timecardSta...
AwaitingApproval은 무효이며, null은 0이 아닙니다
SecurityService는 콜러의 요약의 승인 절반을 기록합니다. FINALIZE PAY PERIODS 없이 - 해결은 MANAGE TIMECARDS를 인정하지 않습니다. 승인 기관, 그래서 합성은 수와 per-member에 손을 잡았다 승인은 플랫폼이 직접 봉사하는 것을 거부합니다...
Honest Compliance Figure, per-section 실패한 상태, 올바른 gating
돛대head 비율 혼합 단위는 단지 flatter일 수 있었습니다. `complete` 요약 org-wide ASSIGNMENT counts while `open` counted MEMBER-DOMAINS off memberRows, 회원당 2명에 넣었습니다. 800명에 달하는 50명의...
Derive Summary 기둥 깊은 링크에서 sub-tab id 맵; kill dead textSecondary in activity rail
개요Pillars.tsx 하드 코딩 *********** 대신 그들에 **************** 주의사항Ledger.tsx는 이미 — 같은 name-indexed pattern apply here so a rename in one place is a compile error, 아니 ...
개요 탭을 다른 네 위에 보고하십시오
전체 폭 보고 콘솔: 돛대head readout, 4개의 탭 기둥, needs-attention ledger, 인력 준수 매트릭스 및 활동 철도. read-only — 모든 행동은 자기 탭에 깊은 링크입니다.
개요 주의 ledger, 준수 매트릭스 및 활동 레일
useMemberNames 소스 /api/security/members/names 오히려 간단한 것 보다는 짐작 .../org-config 모양: org-config는 회원 목록을 반환하지 않습니다 (읽기에 의해 확인 됨) LegalPackageDialog.tsx 및 TrainingAs...
HrOverview id-precision 및 출석 상태 적용 강화
정밀 시험은 15자리의 회원Id를 사용했으며, 이는 숫자를 통해 라운드 트랙() 손실이 없고 가입 키가 문자열을 유지하지 못했습니다. 이전 id로 전환 Number.MAX SAFE INTEGER와 두 가지 다른 ids와 케이스를 추가하여 붕괴 숫자 밑에 동일한 두 배 () coercio...
개요 데이터 후크 및 공유 시각적 primitives
useHrOverview fetches 출석 + docs summaries 와 allSettled 그래서 하나 죽은 서비스 등급은 자신의 섹션 만; 그것은 전적으로 fetches 건너 sections 눈에 띄는OverviewSections() 회원은 볼 수 없습니다. 더 보기 primi...
시계 떨어져 있을 때 놀 빨강, 위에 녹색, 그리고 탄알을 떨어뜨리십시오
직장에서 시계는 누군가 돈을 지불하는 상태이며, 아무도 발표되지 않았다 : 지표는 단순히 결석되었다, 그리고 부재는 신호가 아닙니다. 제어는 이제 숨을 쉬는 붉은 빛이 될 때마다 회원가입 단단한 blink 보다는 오히려 1.8s 주기에 숨기는 glow. 그것은 잘 밑에 세 번의 감광율...
등록하지 않을 때 등록 탭을 열고 회원 Timecard 탭을 숨기십시오
누군가에 timecards를 끄는 방법이 없었다. 모든 읽기 표면이 존재하고 그들 각자는 정확하게 아무것도 보여주기 때문에 등록은 할 수 있었습니다 create — so *********** "현재가 아닌 말 추적"무엇없이 제품을 바꿀 수 있습니다. EnrollmentSubTab은 H...
승인 및 예외 탭은 실제로 현재 존재
두 백엔드가 일찍 배송되었지만 패널이 기록되지 않았습니다. /hr/attendance?sub=approvals 및 ?sub=exceptions 렌더링 된 "이 탭은 작업 엔드 포인트에 내장. 승인SubTab은 관리자 큐입니다. timecard는 두 가지 attestations를 나타낸...
완료를 통해 로그인
24 테이블 최종 스키마 기록, 4 부분 인덱스를 수행 이중 지불 및 이중 코드 보증, 두 개의 늦은 스키마 결정 여분의 KI 실행을 요하고 가치가 있었다, 그리고 두 곳의 봄 각자 직업 함정은 운에 의해 오히려 건축에 의해 피되었습니다.
400 명과 함께 org에 대한 정기적인 스크린
재검출 예외, 모든 사람들의 수입, 모든 것을 승인 caller can — 각 보고서에 대한 MEMBER가 거부하는 이유. "312 of 400 Successed"는 불안정합니다. 사람이 지금 그것을 운영하는 것은 손에 의해 8y-eight, 정확히 작업 대량 작업이 되어야 저장하기....
규정 준수 보고서, 중단 attestation, 그리고 당신의 자신의 기록
/hr/attendance에 대한 보고서 sub-tab은 3개의 org-wide 보고서를 실행합니다. 1개의 창. 둥근 보고는 칩과 발견으로 verdict를 보여줍니다 "FAVOURS EMPLOYER"가 임금 노출이기 때문에 경고합니다. 숫자 아무도는 그것을 계산의 점을 패배. 관련 ...
Real timecard 설정 탭
작업 표면을 가진 placeholder를 대체하십시오: 평일 시작, workday 경계, open-shift 문턱, 둥근, 리뷰 스위치, 휴식-rule Seeding 및 org 기본 일정. 라운드 필드는 베어 번호가 아닌 자체를 설명합니다. 연락처 시간 이상 NEUTRAL 만 법화 (...
시각적 편집기, 급여 달력, 급여 수출, 제한 계층
DayTimeline은 드래그할 수 있는 핸들과 함께 24시간 트랙으로 일했습니다. 모든 펀치. 잘못된 펀치가 거의 결코 없기 때문에 테이블보다 그래픽 숫자가 공개되는 방식으로 잘못됨: 17:00의 시계 아웃은 목록에서 잘 보입니다. 13시에 종료하기 전에 이동이 끝난 트랙에 분명히 잘...
Recurring 지불을 멈추기 전에 확인
모두 취소 작업 — 회원의 자신의 좌석과 그룹 관리자의 계획 — 지금 요청 첫째, 날짜 표지가 실행되고, 그룹에 대한, 얼마나 많은 사람들이 그들의 유지 다음까지 좌석. 공유 확인Dialog가 아닙니다. 즉, DESTROY를 입력해야 합니다. 버튼의 앞에 DELETE, REMOVE 또...
그룹 플랜 취소는 유료 기간의 끝에 좌석을 유지
클라이언트에서 즉시 플래그를 완전히 삭제 — 더 이상 방법이 없습니다 오늘 중지에 대한 액세스를 요청, 때문에 좋은 이유가 없습니다. 더 보기 그룹 패널은 이제 압박되기 전에 취소하는 것을 말한다, 그리고 계획 말한다 국가 주변을 떠나기 보다는 오히려 후에 아래로 감기.
청구서가 그들을 필요로 할 때 사람들에게 말하고 지불을 중지하십시오
결제를 할 때 홈 페이지의 배너가 있습니다. 실패, 청구 페이지로 연결. 이제 실패한 지불까지 더 이상 열리지 않는 앱만큼만 보여주었습니다. unpaid 송장보다는 깨진 소프트웨어로 읽습니다. 만에 그들이 행동 할 수있는 청구서 : 자신의 좌석, 그들은 관리 그룹. 그것은 렌더링 아무것...
회원 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 주자.
/api/security/timecards를 위한 BFF 노선
TimecardService는 진입없이 ClusterIP입니다. 기능 404s 브라우저에서 모든 서비스는 건강하고 모든 빌드는 녹색 -- 이미이 플랫폼에 두 번 일어난 정확한 실패. 여기에서 허가 없음, deliberately: 이 층은 수송이고, 반 검사 통제되는 믿음을 초대합니다....
Org timezone을 브라우저로 전달하십시오
클라이언트 조직 모델은 timezone 필드가 없었다, useFormatters 및 next-intl timeZone 및 timezoneService의 백엔드 호출 404'd -- 그래서 브라우저의 영역에서 렌더링 된 모든 타임스탬프, SSR의 서버. subset 보다는 오히려 모든 ...
HR timecards 디자인 및 계획 시리즈
25 시약 Cross-repo 조사에 기반을 둔 디자인. 부품 II가 12를 닫습니다. Blocker-level gaps 기업 기능 완전성 검토 사이에 발견 펀치 및 일반 ledger : 관리자 승인 계층, 동시 할당 및 급여율, 프리미엄 급여 및 일반 요금, 노동비, 계산 추적 및 감...
실제로 도달 할 수있는 사람의 자신의 청구서를 넣어
셀프 페이 및 시트 커버리지 패널은 /settings/account?tab=billing에있었습니다. 그 페이지는 CONFIGURE SYSTEM 또는 재정적 권리가없는 사람을 다시 /settings, self-pay 패널은 누구에게만 렌더링됩니다. 조직 소유자 — 그래서 그것은 결코 할...
좌석을 지불 한 회원을 표시하고, 두 번째를 제공 중지
적용 엔드포인트는 번역 키와 구성 요소가 포함되지 않습니다. 질문에 대답 - 내 좌석을 지불하는 사람은 여전히 묻지 않았습니다. SeatCoveragePanel은 그것을 요구하고, 대답은 그 옆에 각자 급여 패널을 먹습니다: 좌석이 이미 조직 또는 그룹에 의해 덮여있는 누군가는 아니 더...
당신이 사람들을 넣을 수있는 그룹과 비용을 지불
그룹은 이름을 생성하고 다른 것도 없다 - 누군가를 추가하는 방법, 아니 방법 플랜을 선택하기 위해 매니저에게는 지불 할 곳이 없습니다. 지금 그룹을 열어 지불, 그 위에, 누가 여전히 좌석을 기다리고, 그리고 계획 제어 그 그 좌석을 구입. Canonical member Picker...