콘텐츠로 건너뛰기
KAMOUniverse

변경 로그

무슨 일이야?

플랫폼에 대한 모든 개선 사항, 그것이 선적.

  1. · VOIPService

    SmsKeywordService - 인바운드 키워드를위한 한 작가 (MS1 작업 3)

    왼쪽된 TODO Task 2를 닫습니다. 이를 통해 검증된 인바운드 STOP BulkTextInboundController에 도달 한 후, 인식되었습니다. DROPPED - 엔드 포인트는 선택 아웃을 허용하고 아무것도 억제. SmsKeywordService는 단일 작가입니다: 그것은 WORM ConsentRecord를 부과하고 AgentContactState 행 아웃바운드 게이트를 이미 읽습니다. 거래 (플랜 결정 M2 — 원장 플러스 파생 된 투사, 하지 두 소스 진실의; MS2는 문이 ConsentRecord를, 그 후에 직접 읽었습니다 프로젝션은 캐시가 됩니다. 순서: 정상 또는 거부; 해석; idempotency 영수증을 삽입하십시오; 그 후에 STOP / 시작 / HELP. UNKNOWN은 즉시 반환하고 아무것도 쓰지 않습니다, 그래서 일반 메시지는 정상적인 취급으로 떨어졌다. 나중에 arguing의 결정. * AIService를 호출하는 것보다 AgentContactState를 직접 작성합니다. ****************는 이미 안으로 노출됩니다 POST ***********는 아직도 여기에서서 불안합니다 3개의 독립적인 이유: VOIPService에는 AIService에 클라이언트가 없습니다; AIService DIFFERENT 비밀을 가진 표면 **************** not internal.auth.secret); 그리고 엔드포인트 bare E.164뿐만 아니라 *********** 및 베어 inbound STOP가 무엇인지 정확히 파악합니다. * 접촉 열쇠는 “tel:<e164>”입니다. AGENT CONTACT STATE는 (ORGANIZATION ID, CONTACT KEY) 및 전화 열이 없습니다. 다른 베어 번호가 갈 수 있습니다. CONSEQUENCE는 MS1에 의해 닫히지 않습니다: 이 줄은 아닙니다 나중에 합병 "lead:<uid>" 같은 인간을위한 행, 그래서 게이트 컨설팅 납 키 행은 옵트 아웃을 볼 수 없습니다. MS2는 문을 읽는 것을 통해서 그것을 닫습니다 ConsentRecord, 숫자 키 입력. * 모든 4개의 수로를 놓는 벌거벗은 STOP. 그것은 "SMS 만", 그리고 그것을 읽지 않습니다 그 길은 그들에게 멈출 것이라고 말한 열성적인 전자 메일을 남깁니다. 기타 re-grants SMS ONLY - 캠페인 번호에 대한 START 텍스트는 SMS에 대한 증거입니다. 그리고 아무것도. * null org는 영수증을 기록하고 다른 것을 주목합니다. 동의 줄 없음, 없음 projection: a ConsentRecord with a null 조직은 글로벌 압축 posture C1 forbids, 그리고 ***********는 입니다 nullable = false 어쨌든. STOP의 증거는 오늘 침묵을 이길 것입니다. * permissionedAt는 캐리어의 이벤트 시간과 레코드를 선호합니다. Twilio의 인바운드 웹훅은 전혀 타임 스탬프를 운반하므로 javadoc의 "이벤트에서 앱 세트, 이제 결코 ()"는 그것을 위해 만족하지 않습니다. Flowroute는 `timestamp`를 보내면 InboundSms는 `carrierEventAt` 컴포넌트와 Flowroute parser는 그것을 읽습니다 (내 / offsetDateTime / bare 로컬, 정상화 UTC; 모든 읽지 않은 것은 null, 결코 추측하지 않습니다. 동의 행의 proofBlob "consentedAtSource": "carrier" | "receipt". 영수증 시간은 입니다 불능하고 날조된 것은 아닙니다; 2는 indistinguishable 입니다 이후 검토를 살아남지 않을 것입니다. * 손잡이 ()는 기록, 계획의 6 위치 매개변수를 가지고 갑니다. 계획의 서명은 영수증 시간을, 운반대 사건 시간 또는 익지않는 나르지 않을 수 있었습니다 증거 탑재량 및 매개 변수의 4는 인접한 문자열이었다 — transposing `from`와 `to`는 침묵적으로 컴파일하고 tenant's 자신의 번호를 억제합니다. VOIPServiceApplication 이득 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 항목 없음: basePackages 일치 sub-packages 및 com.kamo.z.shared.comms는 이미 나열되어 있습니다. VoipRepositoryScan테스트 스프링 데이터의 JpaRepositoriesRegistrar를 동일한 패키지 목록에 드라이브 asserts 세 저장소 SmsKeywordService 인젝터는 bean 정의를 얻습니다. 전체 @SpringBootTest 부팅은이 서비스에 사용할 수 없습니다 - 테스트 데이터베이스 없음, 테스트 리소스 없음, 기존 컨텍스트 테스트 없음 — 이렇게 이 레지스트라를 연습 실제로 DataSource없이 결과를 결정합니다. TDD - 관찰 실패, 동사. 구현하기 전에 빨간색 : [ERROR] SmsKeywordServiceTest.java는 기호를 찾을 수 없습니다. [ERROR] 기호 : 클래스 SmsKeywordService [ERROR] 기호 : 클래스 인바운드KeywordEvent [ERROR] 위치: 클래스 **************** [정보] BUILD FAILURE [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 기호를 찾을 수 없습니다 [ERROR] 기호 : 방법 캐리어이벤트At() 녹색 후: SmsKeywordServiceTest 17/17; 전체 스위트 314/314. Mutation 1 - ConsentRecord 쓰기에서 org를 제거 : [ERROR] 테스트 실행 : 17, 실패 : 2, 오류 : 0 << < 실패! 예상: 100L 하지만이었다: null [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** [ null org의 동의 행은 글로벌 억제입니다 - posture C1 forbids] [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** Mutation 2 - 영수증 삽입을 제거: [ERROR] 테스트 실행 : 17, 실패 : 3, 오류 : 0 << < 실패! 구할 수 없는: [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 참고 : 계획은이 돌연변이는 RETRY 테스트 빨간색을 켜야합니다. 없습니다. ****************는 존재합니다 () 진실한 미리 체크, 그래서 삽입하기 전에 단락을 짧고 녹색을 유지하십시오. 더 보기 잘못된 테스트라는 계획. 아래에 Mutation 2b는 구호를 다룹니다 M1 idempotency 주장을 실행하지 않고 경로가 중단됩니다. 다른 것을 증명하는 돌연변이. Mutation 2b - 대신 존재하는 제거(): [ERROR] 테스트 실행 : 17, 실패 : 2, 오류 : 0 << < 실패! ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 여기에 원하지 않는: [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** Mutation 3 - 모든 4 채널 대신 SMS를 선택 : [ERROR] 테스트 실행 : 17, 실패 : 1, 오류 : 0 << < 실패! 진정한 가치를 기대하지만 false이었다 [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** Mutation 4 — 떨어졌다 **************** 패키지, 즉, CrashLoop 자체 : [ERROR] 테스트 실행: 3, 실패: 2, 오류: 0< FAILURE! [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** [ConsentRecordRepository는 빈 정의가 없습니다 - *********** @EnableJpaRepositories에 의해 덮지 않습니다. 이것은 runtime null이 아닙니다. 시작 및 pod CrashLoops를 수정합니다.] [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** [이 테스트의 프로브는 VOIPServiceApplication의 실제 표기에서 드리프트] 모든 거꾸로. 반전 후 전체 스위트: 테스트 실행: 314, 실패: 0, 오류: 0. DDL HAS는 착륙하지 않습니다. 이것은 kamo-shared-library 추가에 달려 있습니다. comms sms inbound receipt 과 **************** 어떤 것도 아직 데이터베이스에 존재합니다. PRIVATE의 공유형 jar에 대한 현지화 -Dmaven.repo.local; ~/.m2의 1.6.0 항아리는 byte-identical 전에 확인되었습니다. 이후 (md5 ****************

  2. · kamo-internal

    창에서 채팅 네비게이터를 분리하여 극대화합니다

    대화 navigator는 ToolWindowShell의 아이 버팀대, 렌더링되었습니다. 극대화된 창의 콘텐츠 상자 안에. 열을 클릭하면 열다. 극대화된 대화, 이 창을 떠난다 — 그래서 navigator unmounted 과 remounted 에 모든 사용. 회원이 탐색 그들이 항해 한 것을 파괴 : 물통, 스크롤 위치 및 검색 텍스트 모든 재설정 즉시 그들은 클릭. 지금 도킹 레벨입니다. ToolDock 마운트 정확히 하나 ChatNavigatorPanel, 왼쪽 가장자리를 고정, 및 확대 창 정지 그 대신에 (`leftInset`)의 짧은. 스왑 건너 패널은 결코 마운트되지 않습니다, 그래서 React의 관점에서 볼 아무것도 발생하지 그것은. 버킷 씨앗은 첫 번째 도구에서 얼어붙습니다. 그래서 목록 한 줄을 클릭한 회원의 밑에 다시 필터링하지 않습니다. 운동은 지도와 가로장입니다: 극화, 좌측의 navigator 봄 가장자리와 창은 나중에 70ms 뒤에 무슨 왼쪽으로 확장합니다; 나머지는 90ms에 의해 반전, 창 첫째로, 항해를 합니다. Neither 구성 요소는 방향을 저장합니다. — 모두는 "maximized"에서 파생됩니다. 그래서 깃발은 방향입니다. 공유 타이밍은 극대화Motion.ts에서 라이브 두 halves가 더 이상 서로의 상태를 볼 수 없기 때문에. 행 클릭은 별도로 choreographed (useMaximizedSwap): 팬 동결 그리고 두 개의 대화는 내부에 횡단합니다, 오히려 한 창 다른 비행 동안 도크에 비행하는 것은 항해자 밖에서 완벽하게. 파열된 창은 파열의 기하학을 유지하면서, 그런 다음 여전히 전환을 가진 도크 슬롯에 정착 비트를 가져옵니다, 그래서 그것은 뷰포트를 가로지르는 대신 퇴출하여 재출발합니다. Opacity 및 CSS에서 Framer-motion으로 이동 변환 : CSS 전환 이미 장착 된 요소의 "시작 8px 낮은"을 표현할 수 없습니다. 창이 창을 파열해야 할 일입니다. Geometry는 CSS에 머물다 — framer는 측정 calc (100vw - Npx) 각 프레임을 다시 측정 할 것입니다. 선호 사항 모든 것을 opacity swap에 떨어뜨립니다. Collapse 상태는 useChatNavigatorCollapse로 들어갑니다. ToolDock은 navigator의 폭은 창을 치수를 재는, 그것의 자신의 폭을 소유하는 성분 그것을 말할 수 없습니다. 새로운 i18n 열쇠 없음. 인증: tsc 깨끗, 144 테스트는 도구 / 및 대화 /, 모든 감시 스크립트 패스. 두 개의 부하 베어링 동작 (frozen Bucket Seed, 녹을 통해 열거 된 팬)은 무서운 테스트되었습니다. 시각적으로 검증되지 않음 -이 repo에는 헤드리스 브라우저가 없습니다.

  3. · kamo-internal

    회원의 서명에 대한 회사 전화 (main/toll free), 확장

    ****************의 내용 탭은 2개의 스위치를 얻습니다: 회사 전화 (주) 및 회사 전화 (무료 전화). 사용 가능한, 그들은 인쇄 조직의 출판 라인은 전송 회원의 확장에 따라 — "(555) 555-5555 x81234" — 그래서 대답 전화는 썼던 사람에 도달, 스위치 보드가 아닙니다. 숫자는 연락처 정보에서 온다 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 확장은 회원이 실제로 할당됩니다 : MemberVoipConfig, VOIPService에서 읽으며 VOIP가 활성화되면 회원이 그것은 꺼지지 않습니다. TeamMember.phoneWorkExtension의 경우 fallback 이며 모든 조직은 전화 서버를 통해 실행 Kamo는 이제까지 있습니다. 확장이 아닌 숫자 인쇄 표시 줄을 의미합니다. dangling "x". 동일한 선호도 QuoteAgentContactResolver는 이미 적용합니다 서버 측. companyPhone 가 companyPhoneMain + companyPhoneTollFree, 이는 두 가지를 수정 그것은 숨겨져 있었다 : - applyFieldConfig는 1개의 분야의 뒤에 둘 수를 가진 문질렸습니다 `if (!local && !tollFree)`, 그래서 조직은 toll-free만 활성화 라인은 여전히 로컬 하나가 인쇄되었습니다. - CampaignEditor는 SignatureContent로 companyPhone key를 작성했습니다. 필드는 컴파일러가 그것을 발견했지만, 스프레드는 그것을 통해 시켰습니다. 조용히, 그래서 캠페인 미리보기는 줄을 떨어졌다. 모든 29 서명 템플릿은 이제 모두 줄을 렌더링합니다. 3 전, 그래서 동등 부서 및 회사 toggles는 크게 주장했다. - 하나를 가능하게 다른 26 레이아웃에 아무것도 및 깨진 설정으로 읽습니다. 부서 및 회사 toggles는 그들의 저장된 열쇠를 지키고 동일한 wording에 relabelled, 그래서 세 가지 범위는 더 이상 동일한 번호 두 가지 다른 것들을 호출하지 않습니다. 4개의 독립적인 경로는 서명 내용을 건설합니다 — 설정 미리보기, 작곡가, 캠페인 및 회의 초대 — 모두 4 업데이트됩니다. VOIPService는 forwardToApi (APIService 경로 없음 /api/voip prefix), 그래서 초대 루트는 기본 URL 헬퍼를 잡아 이미, ****************로 들어갔다. EmailService 및 KamoInitializerService 마이그레이션이 착륙해야 합니다. 2개의 toggles는 persisted org-wide입니다.

  4. · EmailService

    Persist 두 회사 전화 toggles

    읽기 및 쓰기 userCompanyPhoneMain / userCompanyPhoneTollFree 서명 필드 구성, 그래서 콘텐츠 탭의 새로운 스위치는 저장을 살아. saveFieldConfig 복사 필드를 사용하여 기존의 행으로 교체하는 것보다 그것은, 그래서 toggle omitted 그 침묵 떨어졌다 모든 저장 후 첫 번째 — 새로운 필드는 그 사본뿐만 아니라 요청 mapper 및 응답. 일치하는 열을 필요로 합니다: KamoInitializerService's ****************는 이 배의 앞에 실행되어야 합니다.

  5. · kamo-shared-library

    서버에 무료 확장을 제공 그들은 위에

    새로운 빈 KamoPBX 서버 옆에 바쁜 FreePBX 서버를 실행 "21 청구 가능한 확장 - $ 63.00 / 월"카모PBX를 찾고있는 동안. 두 숫자는 조직의 진실과 서버의 진실은 없었다 화면, 화면에 대한 방법이 없습니다. 차이를 알려줍니다. 고장 가능한 확장 당 인스턴스를 수행하지만 무료 하나를 붕괴 단일 조직 전체 int. undefinedThirdPartyByInstance replaces that int. undefinedThirdPartyCount()는 따라서 수행 한 것보다 파생 된 합계로 유지, 그래서 합계 및 부품 부패 할 수 없으며, 모든 기존 부수 및 assertion는 부패되지 않습니다. billableCountFor(instance), countFor(instance, class)를 추가하고 **************** — per-server 줄에 충분하다. 클래스 규칙, 여기에 중요 한 방식과 다른: 호스팅 확장은 할당된 또는 아닙니다, 제 3 자 만 누군가가 될 때. 그래서 빈 KamoPBX 서버는 $0이고 KamoPBX 서버는 5개의 할당된 연장은 아닙니다. 1.6.0에 deliberately 변하지 않는 버전. 내장 및 격리 테스트 worktree off Origin/main — 또 다른 세션에는 7개의 관련 파일이 있습니다. 그리고 이 나무에서 설치는 진행중인 작업을 게시했습니다. 2305 테스트 패스.

  6. · InitializerService

    이메일 서비스 전에 회사 전화 toggle 열을 착륙

    ADD COLUMN은 ****** ***********에 대해 제외됩니다. user company phone main 및 user company phone toll free를 사용하십시오. 이 서비스 ddl-auto : 업데이트는 모두 엔터티티에서 추가되지만 모든 서비스 그들은 ddl-auto를 실행: none, 그리고 Hibernate의 자신의 ALTER는 DEFAULT를 운반. 여기에 NULL보다 기존 조직에 대한 FALSE를 착륙, "기본값으로 떨어져"는 의미한다. 주문 0 :이 빌드가 시작된 순간부터 엔티티티지도 모두 열, 그래서 runner는 JPA를 통해로드 한 후 주문했습니다. 결코 실행되지 않습니다. — 먼저 "column은 존재하지 않습니다"에 죽을 것이고 전체 실행을합니다.

  7. · kamo-shared-library

    회사 전화는 개별 서명을 수행 할 수 있습니다

    Email signature field config: user company phone main 및 두 개의 org-wide 플래그 user company phone toll free를 사용하세요. 그들은 조직의 출판 라인을 넣어 회원은 회원의 확장을 수행하는 서명 - "(555) 555-5555 x81234" — 수신자가 아닌 그들에 쓴 사람에 도달하는 방법 스위치 보드. 기본값으로. 주요 번호, 또는 그 회원을 게시하는 조직 직접적인 선을 붙들고, 각 이름의 밑에 나타나는 여분 선을 찾아낼 필요가 없습니다 설치.

  8. · kamo-shared-library

    인바운드 키워드 영수증 및 캠페인에 대한 재 키 동의 (MS1 Task 3)

    인바운드 STOP가 기록되기 전에 두 가지 동의 ledger 필요 단단하게 한 번. `SmsInboundReceipt` (comms sms inbound receipt)는 idempotency 앵커입니다. 계획 결정 M1. inbound 가로장은 이미 dedupe와 dedupe 할 수 없습니다 키워드: *********** dedupes 여부를 묻는 `VoipMessage` 행은 캐리어의 메시지 ID에 존재하지만 키워드 메시지는 제외 및 반환 BEFORE 그 행은 쓰기 — 그래서 두 번째 배달의 캐리어 리트리는 행을 찾아 다시 처리됩니다. 이 테이블 없이 캐리어 Retrying STOP 3 번은 WORM ledger에 세 가지 재직 기록을 추가합니다. 청소할 수 없습니다. 고유 (ORG ID, CARRIER MESSAGE ID); WORM 총 블록 ConsentRecord, deliberately not from AgentOutboundTouch에서 복사 한 보안 append-only는 모든 것에 대한 보안이 없습니다. ORG ID는 null일 수 있으므로 unattributable STOP는 여전히 증거로 기록됩니다. SQL 유일한 constraints는 constrain NULLs, 그래서 저장소는 나릅니다 기타 제품 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 일반에게 전달되는 null '= NULL'로 파생된 파커는 결코 사실이 아닙니다. 체크는 매번 조용히 전달됩니다. 그 구멍은 문서화 법인; ADD5/MS3가 org resolvable을 만들 때 닫습니다. `ConsentRecord`는 1개의 nullable 열, `campaign id`, 그리고 1개의 색인을 얻습니다. (organization id, raw number, 범위). 그렇지 않으면 이동 : WORM 가드, party-XOR-rawNumber `assertIdentified()`는 DB CHECK입니다. mlos consent one identity chk는 3개의 사전 노출 색인 및 nullable organization id는 모든 변경되지 않습니다. 그리고 `ConsentRecordCampaignKeyTest` 각각의 회귀 울타리입니다. 새로운 org-scoped finders org-AGNOSTIC 옆에 앉아 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 즉, MLOS Global-STOP 읽기 및 MS1에 대한 잘못, STOPs Bob의 집주인 배관은 Dave의 HVAC에 의해 도달 할 수 있어야합니다. 둘 다 문서화 선언 그래서 잘못된 것을 선택하면 전화 사이트에서 볼 수 있습니다. 침묵하는 단결 억제. TDD - 관찰 실패, 동사. 구현하기 전에 빨강 (mvn -o -Dmaven.repo.local=<private> 테스트): [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 기호를 찾을 수 없습니다 [ERROR] 기호 : 클래스 SmsInboundReceipt [ERROR] 위치: 클래스 **************** (9 발생) [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 기호를 찾을 수 없습니다 [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 기호를 찾을 수 없습니다 [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 기호를 찾을 수 없습니다 [정보] BUILD FAILURE 녹색 후: 테스트 실행: 19, 실패: 0, 오류: 0 ( NotificationConsentTest에). Mutation A - 영수증의 인덱스에서 `unique = true`를 떨어졌다: [ERROR] 테스트 실행: 5, 실패: 1, 오류: 0 <<< FAILURE! -- 에서 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 다운로드 AssertionError: comms sms inbound receipt는 UNIQUE 인덱스를 필요로 합니다. 두 번째 재발행을 승인하는 캐리어 재발행을 중지하는 유일한 것은 이름 * [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** Mutation B - 제거 (organization id, raw number, 범위) 인덱스: [ERROR] 테스트 실행: 6, 실패: 1, 오류: 0 <<< FAILURE! -- 에서 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** [an (organization id, raw number, 범위) 인덱스 — tenant-scoped opt-out 읽기] 둘 다 거꾸로. 반전 후 전체 스위트: 테스트 실행: 2295, 실패: 0, 오류: 0 — SharedLibBeanSafetyTest를 포함한 두 가지 새로운 클래스 패스가 있기 때문에 봄 스테레오 타입은 없습니다. DDL HAS는 착륙하지 않습니다. comms sms inbound receipt는 존재하지 않습니다. mlos consent record에는 Campaign id 열이 없습니다. 이것은 전에 발송하지 않아야 KamoInitializerService는 새로운 테이블에 모두 REVOKEs UPDATE/DELETE를 적용합니다 (계획 작업 5) - 엔티티티티 콜백은 대량 JPQL 또는 기본 SQL을 위해 화재하지 않습니다.

  9. · kamo-shared-library

    Sync 저널, 그리고 터미널 실행 정말 냉동

    BL1 작업 5, 공유 라이브러리 절반. 5개의 저널 enums, 3개의 entities 및 3개의 **************** 아래 저장소 입체 음향 없음: BillingWormGuard는 일반 최종 클래스이며, 공유LibBeanSafety 시험은 녹색입니다. payroll 근원에 2개의 deliberate 개선: 1. TERMINAL-RUN GUARD PAYROLL 문서 및 DOES는 없습니다 (완전히 5). PayrollSyncRun의 javadoc은 "단말 실행은 결코 rewritten"을 주장합니다. 그 뒤에 아무것도. BillingSyncRun은 그것을 시행합니다. 계획은 현재 필드의 bare 읽음으로 감시를 지정합니다. if (state != null && state != BillingSyncRunState.RUNNING) { throw ... } 그 버전은 WRONG이고 부서진 생산이 있을 것입니다. @PreUpdate 화재 콜러는 엔티티티티를 mutated 때문에 터미널 상태를 볼 수 있습니다. BillingSyncJournal.complete()는 할당된 것이고 1개의 쓰기를 거부합니다. 행은 받는 존재 — 완전한() 모든 실행에 던져지고 closeStaleRuns() 모든 청소에. 따라서 감시는 비교합니다 LOADED로서 @PostLoad 스냅샷을 @Transient 필드로 캡처했습니다. · 행은 결코 로드되지 않습니다 (새로운 새로운 ')는 현재 상태에 판단됩니다, 이는 유지 계획의 자체 테스트 의미. 2. dbNow() (Self-Review's flagged gap). Payroll은 데이터베이스 시계를 읽습니다. TimecardPunchRepository; InvoicingService에는 펀치 테이블이 없습니다. 지원하다 ********************** @Query(value = "SELECT CAST(now() AS timestamp)", nativeQuery = true) - 와 SQL-standard CAST는, `::`캐스팅은 침묵적으로 mangled: Hibernate reads `:`라는 매개 변수의 접두사로 지금 전환():timestamp로 : 타임 스탬프 BillingSyncJournal은 단지 콜러이고 진짜 작가의 resultAt; entities' @PrePersist LocalDateTime.now()가 유지됩니다. 마지막 리조트 가드와 같은 문서화 (제6과). 두 WORM entities는 NARROW 저장소 확장 저장소에 의해 제공, 하지 JpaRepository는, 그래서 @PreRemove 과거를 걸기 위하여 배치 삭제가 없습니다. TDD 증거 - RED 첫째 (일반, 클래스의 일부가 존재하기 전에) : [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 기호를 찾을 수 없습니다 [ERROR] 기호 : 클래스 빌링SyncIsssue [ERROR] 위치: 클래스 **************** ... 20 더 "암호를 찾을 수 없습니다" 오류, BUILD FAILURE 실행 후 녹색 : 테스트 실행 : 7, 실패 : 0, 오류 : 0, Skipped : 0 Mutations, 각각 고립 된 `git archive HEAD`에서 실행 대상 및 자체 -Dmaven.repo.local (이 체크 아웃은 다른 사람들과 공유됩니다. 세션과 빨간색 스위트는 일반적으로 다른 사람의 빨간색 단계입니다. MUTATION D - 시행 Immutability의 `throw`는 `return`로 대체했습니다. (계획의 단계 6 이름): 테스트 실행: 7, 실패: 2, 오류: 0, Skipped: 0< FAILURE! ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** << < FAILURE! 다운로드 AssertionError: 예상 코드를 제기할 수 있습니다. ****************에 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** << < FAILURE! 다운로드 AssertionError: 예상 코드를 제기할 수 있습니다. ****************에 MUTATION E - 보안은 계획으로 EXACTLY를 준수, 즉. 베어 @PostLoad 스냅 샷없이 `state`의 읽으십시오. 이것은 증거입니다. 계획의 버전은 부서집니다: 테스트 실행: 7, 실패: 1, 오류: 0, Skipped: 0< FAILURE! ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** << < FAILURE! 다운로드 AssertionError: 예상 코드를 올리지 만 잡았다 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** BillingSyncRun null은 SUCCEEDED이며, 완료된 실행에 대한 증거; 그것은 rewritten 할 수 없습니다. ****************에 ****************에 MUTATION F - BillingWormGuard.reject는 no-op을 만들었습니다. 테스트 실행: 7, 실패: 4, 오류: 0, Skipped: 0< FAILURE! ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** -- 예상 코드를 제기할 수 있습니다. ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** -- 예상 코드를 제기할 수 있습니다. ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** -- 예상 코드를 제기할 수 있습니다. ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** -- 예상 코드를 제기할 수 있습니다. 모든 3개의 거꾸로. 이후의 전체 라이브러리 스위트: 테스트 실행: 2288, 실패: 0, 오류: 0, Skipped: 0 BUILD 소개 <version>는 1.6.0에 닿지 않았습니다. 누락되지 않음 - 작업 9 토지 DDL 먼저.

  10. · VOIPService

    인바운드 SMS webhook (MS1 태스크 2)

    ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** -- form-encoded 또는 JSON, 보안 CARRIER의 OWN 신호. 왜 새로운 엔드포인트입니다. /api/voip/webhook은 STOP를받지 않고 침묵적으로 실패합니다. it readTree()s body with no `consumes` 제한, 모든 대량 텍스트 캐리어 이름 * ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 파스 던지기, 예외는 삼키고 캐리어는 200 OK -- 그래서 그것은 결코 retries. 이름 * 이 쓰기 전에 현재 소스에서. 왜이 경로. ***********는 “/api/bulktext/send”를 붙듭니다 그리고 startWith와 일치하므로 X-Internal-Auth를 요구하십시오. 캐리어를 보낼 수 없습니다. /api/bulktext/inbound는 /send의 SIBLING입니다. ****** *****에 추가하고 deliberately 등록되지 않습니다 내부AuthFilter에서. Twilio 서명: HMAC-SHA1 전체 URL (커디 문자열 포함) 플러스 POST 매개변수는 케이스 과민한 분류한 순서, Base64에 있는 이름 그 후에 가치, MessageDigest.isEqual과 X-Twilio-Signature에 비해. 인증 및 인증 Twilio의 보안 문서, 그런 다음 출판 된 벡터에 핀 Twilio의 자체 twilio-java RequestValidatorTest (token 12345 ->) RSOYDt4T1cUTdK1PDd93/VVr8B8=)는, 그래서 시험은 잘못된 알고리즘을 위해 통과할 수 없습니다. MicrosoftTeamsProvider (blank secret -> log + false; 예외 -> false; 일정한 비교); RingCentralProvider의 `return true; // TODO`, RingCentralSignatureUtil's equalsIgnoreCase는 재사용되지 않습니다. 서명된 URL은 X-Forwarded-Proto/Host에서 재건되며 getRequestURL()이 아닙니다. 더 보기 가장자리는 TLS를 종결합니다, 그래서 getRequestURL ()는 콘테이너의 자신의 계획을 반환하고 Twilio가 서명하지 않는 호스트 -- 모든 서명은 실패하고 실패는 forgery 같이 정확하게 보입니다. 자주 묻는 질문 Flowroute 게시 없음 webhook 서명: inbound-message docs는 콜백 URL을 지정합니다. application/vnd.api+json 내용 유형 및 페이로드 모양 및 서명 없음 헤더, HMAC 계획 또는 공유 비밀. 확인하는 것은 아무것도 없다, 그래서 그것은 유지 발명 된 계획을 얻기 보다는 오히려 실패 닫힌 기본 -- 발명 된 하나의 모든 정품 트래픽을 거부하거나 진실을 반환하기 위해 작성 될 것입니다. forgery 표면이 인터페이스는 방지 할 수 있습니다. Flowroute도 아니다 post form-encoded, 그래서 `consumes`는 vnd.api+json도 받아들입니다. Sinch, 정보 및 Vonage는 두 가지 방법으로 단순화되고 경고를 스스로 naming합니다. TDD 증거 · 빨강 (종류 absent): [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 기호를 찾을 수 없습니다 기호: 클래스 BulkTextInboundController 위치: 클래스 *********** 녹색 : 테스트 실행 : 27, 실패 : 0, 오류 : 0, Skipped : 0 Mutation 1 -- PLAN 이름 하나, 그리고 그것은 아무것도 증명. 계획 작업 2 단계 8 말한다: validateWebhookSignature 기본적으로 `true`와 aMissingWebhookSecretRejects는 적색해야합니다. 전망 : 테스트 실행: 24, 실패: 0, 오류: 0, Skipped: 0 [정보] BUILD SUCCESS 아무것도 갔다. 모든 테스트는 Twilio를 구동하므로 기본적으로 OVERRIDES가 실패 닫히는 과태는 전혀 시험에 의해 운동하고 침묵하게 할 수 있었습니다 언제든지 거꾸로 - - "모든 것을 거부"에서 4 개의 캐리어를 켜 "무엇을 받아들이는 종점에"무엇을 낯선 소비자의 동의를 구합니다. 자주 묻는 질문 **************** 바에 기본을 핀 구현하고 4 개의 실제 캐리어에 의존합니다. 다시 실행 그것에 대하여 mutation: ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** [Unimplemented 캐리어는 믿을 수없는 웹훅을 허용하지 않아야합니다] 잘못된 값이 기대하지만 사실이었다 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** [SinchTextProvider가 실패해야 함] 잘못된 값이 기대하지만 사실이었다 Mutation 2 -- 실제로 계획의 이름 테스트를 대상 : Twilio의 blank-authToken 가드는 `return false`에서 `return true`로 바뀌었습니다. 전망 : ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 예상: 403 그러나이었다: 200 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 잘못된 값이 기대하지만 사실이었다 Mutation 3 -- 매개 변수 정렬 반전 (TreeMap natural order -> Comparator.reverseOrder(), 알고리즘 테스트를 표시하는 것은 백신이 아닙니다. ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 진정한 가치를 기대하지만 false이었다 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 예상: 200 하지만 403 모든 3 개의 mutations는 거꾸로. 반전 후에 가득 차있는 스위트: 테스트 실행: 290, 실패: 0, 오류: 0, Skipped: 0 / BUILD SUCCESS Known gaps, deliberate 및 로그아웃 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** * 검증 된 인바운드 메시지는 인식되고 LOGGED BUT가 없습니다. 더 보기 SmsKeywordService에 손 떨어져는 그 종류가 안으로 도착하기 때문에 표시된 TODO입니다 작업 3. 이 엔드포인트는 아직 아무것도 억제하지 않습니다. * Org 해상도는 활성 인스턴스를 스캔하고 to-number와 일치합니다. 연락처Canon.phone. 번호 재고가 없습니다 -- 유일한 소유권 기록 BulkTextProviderInstance에 대한 Single null이 없습니다. 발견자 및 색인 없음. 두 개의 orgs의 맞은편, 또는 일치 없음, 속성 nobody and logs에 메시지; tenant 추측은 revocation를 기록할 것이다 잘못 된 것에 대해 기록하지 않고 악화됩니다. ADD5/MS3가 필요합니다. * InboundSms는 캐리어 타임 스탬프를 운반하지 않습니다. Twilio의 인바운드 SMS webhook은하지 않습니다. 1를 보내십시오. 작업 3 "consentedAt는 캐리어 이벤트에서 온다, 결코 지금 ()"는 따라서 Twilio에 만족하지 않습니다. 참고 : ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 작업 2

  11. · kamo-shared-library

    E.164 정상화기 및 SMS 키워드 해석기 (MS1 작업 1)

    I/O와 봄 스테레오 타입이 없는 2개의 순수한 종류, 그래서 각 서비스는 할 수 있습니다 그들을로드하고 SharedLibBeanSafety 시험은 녹색을 체재합니다. E164.normalize(raw, defaultRegion) -> 옵션<String>. 좁고 좁고 NANP-only: libphonenumber는 이 모듈의 의존도가 아니며 추가되지 않았습니다. 이 경우, 라이브러리에 의향을 추가하기 때문에 모든 28 서비스 load는 opt-out parser가 만드는 결정이 아닙니다. '+'가 인정됩니다. as-is; NANP 지역을 가진 10의 벌거벗은 손가락, 또는 11는 '1'에 의해, 1개가 됩니다; 무엇이든 다른 것은 비어 있습니다. Refusing is the point -- 사실에 토지를 추측하지만 다른 숫자는 낯선 사람을 억압하고 STOP를 texted 사람 아직도 텍스트를 수신. contactCanon.phone(), 손실 미국 전용 비교 키 (마지막 10 플랫폼의 리드 통화 일치가 달려 있음을 나타내는 자리. 여기로 변하지 않는. ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** -> -> SmsKeyword {STOP, HELP, 별, UNKNOWN}. CTIA의 구급차 플러스 ARRET/AIDE. 매칭은 EXACT 설정 회원입니다. ****************는 포함하지 않습니다 (). TDD 증거 · 빨강 (종류 absent): [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 기호를 찾을 수 없습니다 [ERROR] 기호 : 변수 SmsKeyword 인터프리터 [ERROR] 위치: 클래스 **************** 녹색 : 테스트 실행 : 10, 실패 : 0, 오류 : 0, Skipped : 0 Mutation 1 -- 정확한 일치는 바뀝니다 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ( HELP/START와 동일). 관찰된 빨강: ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 예상: UNKNOWN 그러나이었다: STOP ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** [위스톱] 예상: 시작 그러나이었다: STOP 두 번째 실패는 계획에 의해 예측되지 않았고 기록 가치가있다. "UNSTOP" CONTAINS "STOP", 그래서 하위 문자열 구현은 소비자의 re-opt-in as a opt-out. include()는 단순히 여기에 잘못되지 않습니다, 그것은 inverts 억압하지 않는 한 메시지의 의미. Mutation 2 -- E164의 마지막 `return 선택적인.empty()`로 바뀌는 `return 선택적인.of("+1" + 손가락)`. 관찰된 빨강: ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 다운로드 AssertionError: 빈 옵션을 기대하지만 값을 포함했다 : "+112345" 두 개의 mutations reverted. 반전 후에 가득 차있는 스위트: 테스트 실행: 2284, 실패: 0, 오류: 0, Skipped: 0 / BUILD SUCCESS 참고 : ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 작업 1

  12. · kamo-shared-library

    공급자 연결 줄, org 당 하나

    BL1 Task 1. payroll 공급자의 근실한 transliteration 그리고 PayrollConnection으로 **************** Enums, one entity 과 one repository — 스테레오 타입 없음, 그래서 SharedLibBeanSafetyTest는 녹색과 자신의 서비스를 유지합니다 (InvoicingService) 모든 콩을 선언합니다. 급여에 대한 새로운 관계 : WEBHOOK SECRET CIPHERTEXT, per-org rotatable 자체 열에 webhook 비밀 (B2). 하나의 플랫폼 전체 비밀은 의미 어떤 단 하나 org의 누출 후에 자전은 각 다른 org의 지불을 끊습니다 동일한 즉시에 ingestion. PlatformOAuthProviderType에는 QUICKBOOKS, XERO 또는 SQUARE 상수가 없습니다. ADP WFN(17)에 종료하면 ids는 persisted이며, append-only를 문서화합니다. 계획의 작업 1 단계 3 지침 당, 모든 3 배 PER ORG CREDENTIALS 와 NULL 등록 오히려 공유보다 ordinal enum 에 이 작업. 그 계획의 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 그에 대한 예방 usePlatformOAuth() 분기, 그래서 다섯 번째 테스트는 직접 결과: 입력할 수 없습니다 PLATFORM OAUTH에 등록 없이 포인트를 적립할 수 있습니다. TDD 증거. RED (테스트 작성, 구현 없음) : [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 기호를 찾을 수 없습니다 [ERROR] 기호 : 가변 BillingProviderType [ERROR] 위치: 클래스 **************** [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 기호를 찾을 수 없습니다 [ERROR] 기호 : 가변 BillingAuthKind 녹색: [INFO] 테스트 실행: 5, 실패: 0, 오류: 0, Skipped: 0 -- 에서 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** MUTATION (KAMO NATIVE authKind NONE -> PER ORG CREDENTIALS) - 정확히 하나 시험 빨강, 점은인: [ERROR] 테스트 실행: 5, 실패: 1, 오류: 0, Skipped: 0< FAILURE! [기타] ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** << < FAILURE! ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 예상: NONE 하지만이었다: PER ORG CREDENTIALS ****************에 이름 * 전체 항목 : 테스트 실행 : 2271, 실패 : 0, 오류 : 0, Skipped : 0 / BUILD SUCCESS. 격리된 `git archive HEAD` 복사에서 자신의 대상/그리고 그 자체로 실행 -Dmaven.repo.local, 공유 체크 아웃하지 : 다른 세션은 중간 TDD이었다 ...에서 그것 *********** 아직 구현), 그래서 `mvn test`는 red for reason unrelated to 이 변화. ~/.m2가 작성되지 않았으며 mvn 설치가 실행되지 않았습니다. 누락되지 않음 - 작업 9는 DDL을 먼저 착륙합니다.

  13. · KlusterServices

    모든 kamocrm 확장 WebRTC 및 게이트 아웃 바운드 호출

    모든 21 kamocrm 팀은 지금 k1m1 PBX에 8XXX 확장을 보유 (Chris는 7255에서 8134)로 재개했습니다. 두 가지 변화는 여기 다시. WebRTC 엔드포인트 블록은 이제 모든 직원 확장을 커버합니다. 3 명의 사람이 발견되었다. kamo softphone는 브라우저입니다, 그래서 DTLS/ICE는 개선이 아닙니다 - 블록없이 확장 WS에 등록 한 다음 어떤 통화에 오디오가 없습니다. 8888 사 몇 달 동안 unlisted. 아웃바운드 호출은 이제 권한이 적용됩니다 : 목록에 나열된 확장 만 [kamo-outbound-allowed] 트렁크에 도달합니다. 모두 확장을 유지-to- PSTN에서 확장 다이얼 및 인바운드, 모두 실행 이 경로를 터치하지 않습니다. 문은 외곽에 비해 [내부-고객]의 삶 from-internal-xfer가 되기 때문에 경로를 앞두고 있습니다. in-internal-additional에서, 그래서 그것은 outrt-의 앞에 다이얼 번호 참조 1명 1명 이름 * route's own match cid 칼럼은 대안이며 허용된 연장 당 1개의 중복 본 행, 및 denies를 필요로 합니다 FreePBX의 " 다이얼로 완료 할 수 없습니다"- 직원을 보내는 메시지 잘 된 수에 오타 사냥. 회원은 DIALPLAN EXISTS 와 함께 테스트됩니다. 사람 당, 그래서 아무것도 반감기: 80800와 빈 콜걸 모두 안전 방향이 실패합니다. 3개의 intercept 본 인바운드 루트 차선의 다이얼 패턴의 거울이며, 한국어 k1m1에 확인: 모든 21 엔드포인트 보고서 ice support=true, media encryption=dtls, WS 수송 및 direct media=false; 모든 21 오른쪽 AMPUSER 장치와 힌트 키; 허용된 경로는 여전히 국내 및 011 패턴 모두에 대한 outrt-1에 대한 해결.

  14. · kamo-internal

    ServiceJobApi.createJob 및 백 링크 빌더

    SW6c Task 2의 클라이언트 절반을 복원, 이는 157fa714로 착륙하고 떨어졌다 동시 세션에서 재쓰기; 자체가 살아남은 창조 내부 bddd3617 그리고이 때문에 모두 가져올. `createJob` post`CreateJobInput` at the base path and Answer with the detail 투사, 그래서 콜러는 반환된 일을 전체 채택할 수 있습니다. 7개의 분야 및 아무도 서버 자체 열: 상태 없음, 작업 번호 없음, 총 없음, 기호 없음. 사이트맵 `PUT /{uid}` 허용 후 `JobInput`에서 `JobInput`를 정확히 제거 `CreateJobInput``는 컨트랙트 테스트의 입력 쌍에 결합하여 `status`는 이 측에 혼자 추가해 serialised 및 침묵하는 것 보다는 오히려 실패합니다 이름 * `commerceBackHref`는 정의에 문서화됩니다. `/commerce?tab=service`는 절대로 실제 탭을 명명하고, 모든 콜러는 오늘 서비스를 사용하지 않기 때문에 시장을 통과하지 기록은 1개를 나릅니다.

  15. · kamo-internal

    Service-request grid 및 클라이언트는 실제 endpoints를 읽습니다

    SW6c Task 4의 나머지를 복원, 이는 d58a6aba로 착륙하고 떨어졌다 역사는 동시 세션에서 다시 작성; 세부 페이지는 bddd3617 내부 생존 그리고 `serviceQuoteWorkOrder`를 가져 왔습니다. `PipelineServiceRequestsTab` 호출 `GET /service-quotes` 대신 `generateMockServiceRequests`. requester, 부서, 범주, 우선 순위, SLA, 기술 및 팀 열은 사라집니다 : 아무도 와이어에 소스, 열 그것이 em dash forever를 렌더링하는 것은 "이 아닌 기록 된"으로 읽습니다. not real” – `serviceName`, `serviceId`, `engagement 메서드 Id` 살아남은 SW6a의 앞에 전체적인 스크린의 일생. Status는 `IntentStatus`의 5 값이 아닌 정착물의 6, 그리고 상태 단추는 그것으로 사라집니다: 그들은 국부적으로 이동했습니다 브라우저를 떠나지 않는 쓰기를위한 성공 토스트를 배열하고 올리십시오. 정확히 하나의 제안을 보내고 말한다. `CreateServiceQuoteRequest``를 호출합니다. 광고 `List<Long> serviceOfferingUids`와 서비스는 `.get(0)`만 유지, 자주 묻는 질문 ****************에 포인트에 사용되는 새로운 버튼 존재하지 않습니다. 대화 상자를 엽니다. `marketId` 이 목록을 필터링 할 수 없습니다, 그래서 `data.filter(() => true)`는 옷을 입는다 필터가 사라지고 캡션은 모든 시장은 동일한 행을 보여줍니다. `posApi.ServiceQuote`는 DTO 전송에 대한 `serviceId`와 `serviceName`를 선언했습니다. `serviceOfferingUid`와 `serviceOfferingName` — sibling에 동일한 결함 type - 그리고 이제 `ServiceQuoteDTO`를 미러링합니다. `WorkOrder`의 팬텀 멤버는 제대로, 그들 중 하나가 짐 방위이기 때문에: `acceptServiceQuote`는 `FulfillmentOrder`로 답합니다. `ServiceJob`'s, `engagementUid`는 전체 스레드입니다. `serviceQuoteWorkOrder.ts`는 그것을 따르고, 그 테스트 핀은 작동할 부분입니다. 시드 데이터베이스 및 생산 중지 — `JsSafeLongSerializer` 견적 `Long` by value, 그래서 동일한 필드는 19자리 id와 a 문자열로 도착 작은 것에 숫자.

  16. · kamo-internal

    버그 보고서에 스크린 샷 및 동영상

    Reporters는 prose에서 화면 녹화를 설명하고 그 후 파일을 게시했습니다. 채팅으로, 보고서 양식은 여전히 걸렸습니다. 지금 MP4, MOV를 가지고 4개의 이미지 체재 옆에 WebM, 100 MB까지 각각, 동일한 10 파일 안쪽에 모자. dropzone는 더 이상 자신의 규칙을 구현하지 않습니다. 그것은 일괄 처리 `ingestFiles` 에 대한 새로운 system BUG ATTACHMENT POLICY, 동일한 경로 채팅 메시지와 이메일을 통해 이동, 어떤 얻을 그것 per-class 크기 천장, 폴더가 폴더로 인식, 중복 드롭 무시, 그리고 복사 스프레드 시트 셀의 범위는 침묵으로 비트 맵이되는 대신 텍스트로 왼쪽. 더 이상 삭제되지 않은 파일이 배치의 나머지를 무시합니다. 오브젝트 URL 이동 to `useDraftThumbnails`, 그래서 아무것도 여기에 하나를 되돌려 기억. Video는 이미 제품에 다른 곳에서도 마찬가지입니다. 포스터 `#t=0.1`로 그려진 프레임과 타일에서 재생 배지, 브라우저 제어 lightbox에서. Thumbnails는 metadata 전용 fetches이므로 타일 전체 서랍 전체 클립을 풀지 않습니다 — 어떤 범위 지원이 추가되었는지 MediaService는, 왜이 프록시는 Range와 206를 모두 통과합니다. 그(것)들을 collapsing 보다는 오히려 방향. formData()로 몸을 파싱하는 업로드 경로. 그것은 전체 파일을 열었다. 이 프로세스의 힙, 10 MB 스크린 샷에 대한 생존 100 MB 기록; 그것은 이제 노드를 통해 파이프:http 채팅 업로드 같은, 같은 undici-timeout 이유. 버튼은 파일을 계산하는 동안 작동 — fetch report no 업로드 진행 및 "업로드 ..." 몇 분 동안 앉아 걸음으로 읽습니다. AI 리스트 이미지만 전송합니다. 세션은 그림을 읽고 비디오를 볼 수 없습니다, 이렇게 제공하는 것은 실패 할 것입니다; 대화 상자는 얼마나 많은 체류를 말한다 뒤에, 그리고 SecurityService는 stale 콘솔이 그것을 보낼 경우 이름에 의해 하나를 거부합니다.

  17. · MediaService

    버그 보고서에 비디오를 첨부, 스크린 샷뿐만 아니라

    여전히 3 번의 클릭을 표시 할 수 없습니다. prose에 녹음을 설명하고 대신 채팅에 파일을 게시합니다. 더 보기 지금 첨부된 엔드포인트는 MP4, MOV 및 WebM을 네 개의 이미지 형식으로 가져갑니다. - 마법 숫자 스니프는 비디오 반을 성장. ftyp 박스는 "ISO base"라고 말합니다. 미디어, 그래서 브랜드는 수당에 일치: HEIC, AVIF 및 3GP는 같은 상자 및 비디오 / mp4로 저장 된 것은 <video> 요소에 도달 죽은 플레이어를 보여줍니다. Matroska는 EBML DocType이 말하는 경우에만 받아들여집니다 "webm" - 일반 .mkv는 브라우저에서 콘솔이 실행되지 않습니다. - 비디오는 자신의 100 MB 천장을 얻을; 이미지는 10 MB를 유지합니다. 10 파일 캡 스팬 두 종류. 검사의 순서는 비용에 의해 입니다: 조사, 그 후에 외부 천장, 그 후에 형식, 그 종류의 자신의 천장 - 첫 번째 침전은 그 파일을 읽을 것입니다 자주 묻는 질문 - unnamed 업로드는 바이트가 무엇인지에 대해 명명됩니다. 저장된 객체는 keyed 그 확장으로 과거 녹음 스크린 샷을 호출합니다.png .png MP4에서 브라우저를 <video>로 설정하지 않습니다. - 콘텐츠 엔드포인트 답변 범위 요청, 한 번의 동영상이 아닌 첨부할 수 있습니다: <video>는 그들없이 찾을 수 없습니다, Safari는 모든 비디오를 엽니다 "bytes=0-1"로 200을 "이 서버는 비디오를하지 않습니다"로 읽고 갤러리 엄지나일은 전체보다 오히려 메타데이터 전용 fetch에서 그려집니다. 클립. 미러를 파싱 ImagingProxyController. RangeStream은 이제 닫힙니다. 응답이 완료되면, 아무것도 전에 닫혔습니다.

  18. · kamo-internal

    파이프라인 견적 탭 및 와이어 견적 변환 복원

    `POST /quotes/{uid}/convert`는 SW4에서 출하하고 아무것도 호출하지 않았습니다: `quotesApi`는 10 가지 방법이 있었고 `convert`는 그들 중 아니었다. 그래서 endpoint 라이브 및 무제한. 이것은 서비스에서 따옴표 sub-tab를 둡니다. 파이프라인 및 제안 ACCEPTED 견적에 변환. 이 필요한 코드 앞에 테스트가 필요한 이유: `subTabLabels`는 `Record<PipelineSubTabId, string>`, 그래서 누락된 라벨은 컴파일 오류이지만, `renderSubContent`는 4 `if (id === "intents")가 반환하는 것을 결정했습니다. X; 반환 Y;` 사슬, 그리고 그 추적 `return Y` 응답 모든 ID nobody 자세히 보기 id를 Appending 따라서 침묵하는 스크린에 새로운 탭을 넣어 모든 4개의 수직과 Typechecked의 약속 목록을 철수합니다. 그것은 defect `pipelineSubTabs.ts`는 이미 발송한 헤더를 가지고 있습니다. **************** asserts, 소스에 대한, 그 모든 `SUB TAB IDS` 항목은 각 수직으로 지정됩니다. 그것은 어떤 분지의 앞에 빨강이었습니다 변경 - 'commitments', 모든 4 개의 수직에서, 가을을 통해 이름이 없습니다. 완성 된 코드에서 하나의 `case`를 삭제 `tsc --noEmit` 침묵하고 테스트 빨간색을 회전, 이는 존재의 전체 지점입니다. 체인은 이제 `default` 없이 전환합니다. 견적 없이 수직 여전히 'case "quotes":'를 그것의 투입 케이스 옆에, 그래서 다음 id 추가 누군가가 대답을 상속하는 대신 4 시간을 선택합니다. 만 서비스 목록 `SUB TABS BY VERTICAL`에서 `quotes`, 그래서 단지 서비스 쇼 탭 - 렌더링 된 예약에 대한 인용 탭은 동일한 침묵일 것입니다 새로운 장소에 잘못. 스트립 주문은 여전히 'SUB TAB IDS`에서만 제공됩니다. 새로운 맵은 설정이며 `Tab value`는 `SUB TAB IDS` 인덱스를 유지하므로 탭을 omitting 다른 사람을 재수할 수 없습니다. `subIndexForVertical`는 `?sub=quotes` 링크를 클램프합니다. MUI가 그렇지 않으면 렌더링 된 탭없이 수직에 착륙 가을 뒤 내용에 빈 선택. `quotesApi.convert` 409 및 404 apart를 유지, 그들은 다른 것을 말한다 때문에: 409은 "이 따옴표의 상태는 잘못되고 서버의 이유는 유용합니다 반", 404은 "이 org에서 사라집니다." 누군가에게 그들이 찾고있는 기록 진실이 " 아직 허용되지 않음"일 때 발견되지 않았습니다. 존재하지 않는 문제, 그래서 단지 404는 다시로드를 강제. `QuoteConversion.orderUid`는 `string`입니다. `Order는 BaseEntity`를 확장합니다. 즉, id는 `INT8 DEFAULT unique rowid()`; 서버는 이미 필드를 선언합니다. 문자열 및 다음 프록시는 Node One hop upstream의 몸을 다시 비교합니다. 브라우저, 그래서 베어 int64 어떤 클라이언트 코드가 그것을 볼 수 전에 라운드. `total`는 `string | number`를 입력하고 `Number()`를 통해 읽습니다. `BigDecimal`, 그리고 `HttpWireJacksonConfig`는 `Long`만 문자열을 지정합니다. 변환은 ACCEPTED 및 다른 아무것도에 제공; 받아 들이고 디코더 체재에 고객의 토큰화 페이지는 실제로 주문의 나머지를 수용하는 것입니다. 이름 * 생산은 15의 따옴표, 모든 DRAFT를 붙듭니다, 그래서 단추는 현재 눈에 보입니다 그들 중 아무도.

  19. · kamo-marketing

    우리의 가격은 카탈로그에서 옵니다, 다시 입력될 수 없습니다

    비교 페이지는 $ 29 스타터 및 $ 64 비즈니스에서 KamoCRM을 해독 카탈로그는 $ 34 및 $ 72에서 판매했습니다. Nine 파일, forty-two 언급, 그리고 build was green the whole time — the price in prose 이다 다만 prose. 그들은 {starterMonthly} / {businessMonthly} 토큰을 지금 수행, 렌더링에 해결 동일한 카탈로그에서 endpoint 가격 페이지를 읽습니다, 캐시 항목을 공유 동일한 URL과 revalidate를 통해. 카탈로그의 계획은 다음과 같습니다. 누구나 만들 수 있습니다. multiplier 형태는 합계를 커버합니다 사본은 확대를 계산합니다 — {businessMonthly*10} 10 석 팀, {businessMonthly*50*12} 3년 Salesforce 비교. 그들은 hardcoded의 최악이었다 번호: 경쟁자의 청구서에 대해 인용, 권한으로 읽음, 잘못된 으로 정확히 그 뒤에 단위 가격을 잘못했다. 대체는 로컬라이제이션 이후 실행되므로, 번역된 페이지는 라이브 번호 너무, 그리고 그것은 경쟁자 자료가 단지 어디에 보다는 오히려 읽는 적용되는 그것은 현재 필요 - 나중에 돈을 언급하는 필드는되어야한다 를 잊지 마세요. check-price-tokens는 두 방향을 감시합니다: 리터럴로 입력된 우리의 숫자, 및 해결되지 않는 토큰. {businessMonthy} 배송 스테이플 번호보다 악화되는 쓰레기. Competitors의 가격 체재 리터럴, 비교의 점은 - 가드가 가까이에 도착합니다. Kamo 언급과 금액이 범위의 끝점인지 여부에 따라. FALLBACK KAMO PRICES는 API 키가 absent이기 때문에 CI 렌더링이 무엇인지 이 페이지는 다음과 같습니다. 그것은 살아있는 카탈로그 가치, deliberately입니다: stale fallback은 새로운 장소에 같은 버그가 될 것입니다.

  20. · KlusterServices

    Extension-to-extension 호출에 대한 기록 보관소 알림

    세 번째 호출 경로 완료. 직원 - 직원은 참석자를 만지지 않습니다. - 그들은 내부에서 이동 -> ext-local, Dial은 FreePBX에 속한다 - 그래서 [from-internal-custom] 이제 실제 확장을 차단하고 경로를 통해 [kamo-internal-connect], 이럴을 소유하고 A()를 수행 할 수 있습니다. Interception은 두 가지가 먼저 검사했기 때문에 안전합니다. - 내부에서 내부 상담에서 비FORE, 확장을 해결하지 않습니다. 그것이 이렇게 했습니까, in-internal-custom는 결코 하지 않을 것입니다 거기에 도달하고 이것은 침묵적으로 아무것도하지 않았다. - in-internal-custom는 앞의 내부 xfer에 의해 포함됩니다 in-internal-additional, 그래서 먼저 확장을 볼 수 있습니다. 실제 확장이없는 것은 FreePBX로 곧바로 내부 다이얼 플랜 변경에 다른 것은 없습니다. DIALPLAN EXISTS는 오히려 테스트 가정보다, bare Goto가 누락 된 확장은 콜러에 걸린다 대신 "서비스에서 아닙니다". 회귀 테스트 모든 3 내부 사례: - 8912 (실제, 오프라인) -> kamo-internal-connect, Dial PJSIP/8912,15,aA(...), userfield DS:CHANUNAVAIL/VM: 과태는, Voicemail에 떨어졌습니다 - 8080 (실제, 온라인) -> Dial PJSIP/8080,15,aA (...), 전화 - 7777 (ext-test) -> 여전히 내선 및 루프에 도달 - 3000 (bad number) -> 여전히 나쁜 숫자에 도달합니다. 그것은 CDR 행을 쓰고, 실패가 아닙니다: bad-number는 ResetCDR()와 디자인에 의해 CDR PROP (disable)=true. BOTH 파티는 내부 통화에 AGENT 녹음을 듣습니다. 고객이 없습니다. 호출에, 그래서 클라이언트 회의 wording 누군가에 주소 될 것 이다 이름 * 각 측은 그것의 자신의 세계적인, 그래서 1 선 변화입니다. 내부 no-answer는 vm-nobodyavail을 확장 할 때 mailbox가 없습니다. 고객 queue가 아닌, 인바운드 콜러가 돌아왔습니다.

  21. · SecurityService

    POST /service-jobs, MANAGE SERVICE WORK에 게이트

    동사를 만들면 절대가 없었다. app/commerce/service/new는 입니다 전화에 아무 것도 없었기 때문에 17-line placeholder. MANAGE SERVICE WORK에 덧붙여 다른 모든 글이 여기에 있습니다. CHILD입니다. VIEW SERVICE WORK 는 관람객이 출입할 때도 볼 수 있습니다. 누구나 보드를 볼 수 있습니다 - ServiceJobRightsGateTest는 새로운 드라이브 handler with view-only session and asserts the service is never 도달 하지 않습니다. Tenant는 세션을 오프하고 첫 번째 인수로 서비스에 도달합니다. 쿼리 내부의 predicate가되는 곳; 몸의 marketUid 및 customerUid 이름은 조직에 대해 아무것도. 시장 또는 계정 또 다른 종족은 "찾지 못함"이며 404의 답변, 그 중 하나에서 구별 결코 존재하지 않습니다. CreateJobInput의 구성 요소는 asserted: 상태 없음, jobNumber, 총 없음, 아니 로그인. 동서 세트 assertion는 이제 4 개의 POST를 기대하므로 다음 프록시를 기대합니다. 이 표면은 여전히 모든 5 동사를 수출해야합니다.

  22. · kamo-shared-library

    CreateJob, 그래서 작업 순서는 순서 없이 올릴 수 있습니다

    서비스 작업 표면이 누락되었습니다. 지금까지 ServiceJob 행을 생산할 수있는 플랫폼은 **************** 결제 주문 해제 — 왜 각 업무 테이블은 0개의 줄을 붙듭니다. CreateJobInput은 열을 서버 소유하지 않습니다. 상태 없음, jobNumber, no 합계, 서명 없음/signoff At. SW6b는 JobInput에서 5 개를 정확히했습니다. PUT / {uid}는 동사각형을 허용; 그들을 가지고 한 경로는 다른 이름으로 동일한 문. sourceCommitment는 null, deliberately를 유지합니다. processOrderPaid가 열립니다. `if (order.getCommitment() != null) 반환;`, 그래서 여기에 발명 된 약속 nullable 열을 채우면 전체 유료 주문 다운스트림을 비활성화합니다. 나중에 주문했다. One ServiceVisit, sequenceNo 1, SCHEDULED, 달력 이벤트 및 할당 없음 — 같은 4 개의 사실 createFromCommitment 쓰기, 그래서 작업은 같은 모습 그러나 그것은 제기되었다. 시장과 고객은 쿼리에서 org predicate로 해결됩니다. (findByIdAndOrganizationId / findByUidAndOrganization), 에 사용되는 쌍 SW4 견적 요청 시장은 보관할 수 없습니다. 시장의 열이 없습니다. ServiceJob과 Engagement에 아무도 — 그래서 그것의 1개의 튼튼한 효력은 참여입니다 type, through ***********는 따옴표로 정확히 일치합니다.

  23. · kamo-internal

    미러 VIEW/MANAGE ORDERS 및 VIEW/MANAGE PRICING

    고객의 반은 주문의 구멍을 닫습니다. 지금 보안 서비스 39 주문, 가격 및 세금 내점 4 새로운 권리; 이들은 두 Java enum의 거울은 그것으로 이동해야, 또는 권한은 존재 서버는 UI에서 ungrantable 입니다. rightsHierarchy.ts는 4개의 가장자리를 얻습니다 — VIEW ORDERS와 VIEW PRICING의 밑에 ACCESS COMMERCE, MANAGE ORDERS, 첫 번째 및 MANAGE PRICING 아래 두 번째 - 편집기를 만드는 것은 서버의 동의 정상화. RoleRightType.ts는 4개의 상수와 4개의 상수를 얻습니다. values 항목; 그 배열의 일정한 왼쪽은 모든 것에 보이지 않는 그것이 enum, 그리고 권한 편집기 iterate. 권한 섹션 변경이 필요했습니다 : 모든 4 개의 수행 ServiceType. POS 및 Commerce row는 이미 permissionAppSections.ts와 그 인라인 모두에 존재합니다. SecurityRoleManager.tsx에 중복, 그래서 그들은 도착에 부여됩니다. 둘 다 댓글은 카운트 stale을 떠나기보다 오히려 말을 수정. 사전 변경이 없습니다. 올바른 라벨은 Java `display` 끈입니다. 거울 동사, i18n 열쇠. 서비스 작업의 5 추가 아무것도 같은 이유로 kamo-translation-dictionary. 불순 총 189 -> 193. Java 소스에 대한 검증 rightsHierarchyParity 및 roleRightMirrorParity, 모두 읽기 kamo-shared-library 직접; 전체 스위트 278 파일 / 3603 테스트, 0 실패.

  24. · kamo-shared-library

    VIEW/MANAGE ORDERS 및 VIEW/MANAGE PRICING, ids 273-276

    어떤 순서도 정량은 어디에서든지 존재했습니다. POSController의 주문 엔드포인트 및 CommerceMarketController의 모든 가격 및 세금 핸들러는 org를 읽습니다. 세션 및 다른 것을 확인, 그래서 어떤 역할의 정통 멤버 수 생성, 편집, 환불 및 재 통계 주문 - 및 가격 목록, 세금을 다시 작성 클래스, 세금 영역, 세금율 및 고객 계층 — 자신의 org 내부. 이름 * 단결; 역할은 단순히 그 표면에 아무것도 의미. 3개 미만의 4개의 권리: MANAGE는 두 쌍에 있는 전망 떨어져 있습니다 그래서 주문이나 가격을 변경할 수 없습니다. 변경되고 있으므로 VIEW를 수락하는 쓰기 엔드 포인트는 보이지 않는 것 보다는 오히려 탐지가능한 downgrade. VIEW PRICING은 없습니다. 훈장 - 세금율과 가격표가 일반인 것을 읽으십시오 재정 및 감사는 그(것)들을 바꾸기 위하여 힘을 나르지 않아야 합니다. Max id는 즉시 쓰기 전에 근원/주요에 대하여 재 검사되었습니다: 272. · duplicate id는 static initialiser, 즉의 Collectors.toMap 실패입니다. 이 enum 중지 부팅을로드하는 서비스. 핀 카운트 이동 263/189/35/39 -> 267/193/35/39: 모든 4는 아이들과 입니다 ACCESS COMMERCE는 이미 root-with-children이었다, 그래서 두 개의 숫자 이동. 참고 :이 커밋은 역할RightType.java에서 다섯 줄의 주석 제거를 수행 이 체크 아웃에서 동시 세션에 의해 만들어진. `git commit --only`는 경로의 worktree 상태; 변경은 그들의, 내, 보존되지 여기는 오히려 불멸.

  25. · KlusterServices

    직접적인 확장에 기록된 통화 고시도

    인사말에 대한 확장을 다이얼하는 콜러는 이제 공지를 듣고 이름 * 그 경로가 갔다 from-did-direct, 어디 다이얼에 속하는 FreePBX의 ext-local, 그래서 A()에 첨부 할 수 없습니다 — 콜러가 도달 모든 것에 대한 통지가 없습니다. 직접 다이얼을 통해 [kamo-direct-connect]를 통해 경로를 입력하여, 자체 다이얼을 소유합니다. 그리고 따라서 queue 경로와 같이 aA (agent:client)를 정확하게 나릅니다. 비용은 ext-local 두 가지 간단한 것은 무료로 제공, 여기에 보존: - 링 타이머 : per-extension AMPUSER/<ext>/ringtimer 설정, 다른 FreePBX의 RINGTIMER DEFAULT (15s), 그래서 그것에 사용된 긴을 위한 연장 반지 - no-answer : 확장의 자신의 사서함이 있다면, 그렇지 않으면 다시 queue for a live person 오히려 그 외침을 종료. 큐의 10 분은 여전히 메인 사서함으로 운반합니다. Kept는 [kamo-agent-connect] deliberately에서 분리합니다. 그것은 도달 queue 회원으로, no-answer가 app queue로 돌아갈 수 있도록 시도 할 수 있습니다. 다음 에이전트; 음성 메일을 추가 fallback 거기 QUEUED 호출기를 드롭 1개의 대리인의 개인적인 mailbox로. 검증된 라이브: 7255 (메일 박스 없음, 오프라인) rang 15s 그 후 큐에 반환, 8080에 두 대리인과 연결해. Branch 선택은 이제 볼 수 있습니다. userfield를 통해 CDR에서 - 8912는 DS를 기록했습니다: CHANUNAVAIL/VM:default, i.e. 그것은 Voicemail을 통해 올바르게 떨어졌다. Asterisk는 "오디오 없음 Local/...;2"에 유효한, medialess 시험 수로인 방언: `channel starte ... application wait`에는 미디어가 없습니다. 재생 경로, 같은 이유 MixMonitor는 그것에 빈 파일을 반환합니다.

  26. · KlusterServices

    한 번에 두 당사자에 기록 된 통화 통지, 그 다리 톤

    에이전트가 누락된 통화를 답변할 때, 콜러는 클라이언트 통지와 듣습니다. 대리인은 동일한 시간에 대리인 고시를 듣습니다, 그 후에 공유된 1000Hz 음색 그들이 연결되는 순간. Queue 회원은 로컬 채널에서 [kamo-agent-connect] 로 가집니다. PJSIP/<ext>에서 똑바른, 그래서 마지막 다리는 다이얼입니다 () — 다이얼 A (x:y)는 입니다 각 당사자에게 DIFFERENT 오디오를 재생하는 Asterisk의 유일한 것 SIMULTANEOUSLY 그리고 그 후에 교량. Queue's own 아나운서는 대용품이 아닙니다. 에이전트 만, 브리징 전에 콜러는 여전히 음악을 잡아. A() 이전의 더 낮은 케이스 `a`는 linchpin이며 옵션이 아닙니다. 그것 없이 Dial는 발표가 끝날 때까지 호출 채널을 unanswered, 그래서 app queue 결코 다리와 콜러 사이드 파일은 채널 nobody로 재생됩니다. 감사합니다. queue log는이 measurable을 만들었습니다: 7s에 연결 (오디오 후에) `a`없이, 0s에 연결하십시오. 음악 침묵과 교차로의 콜러 다리를 녹음함으로써 입증 캡처 된 오디오를 상관: 대 클라이언트 파일 0.833 대 에이전트 파일 0.068 대 보유 음악 0.044 그리고 1000Hz 톤은 t=5.75s에서 콜러의 자신의 오디오에서 검출했습니다. 두 파일은 정확히 7.53s에 패딩됩니다 (클라이언트 연설은 0.32s 더 짧습니다, 그래서 그것 실로 차이를 운반) 같은 톤과 끝, 그래서 톤 화재 함께하고 파티가 일찍 출시되지 않습니다. Tone 레벨은 연설과 일치합니다. (RMS 3082 대 ~3200) - ffmpeg의 사인 필터는 전체 스케일 아래에 있습니다, 그래서 그것은 필요 추측 보다는 오히려 측정. 알려진 제한: 이 커버 QUEUE 경로. 확장을 다이얼하는 콜러 직접 인사를 통해 여전히 from-did-direct에 도달하고 통지를 듣지 않습니다. 이 컨텍스트를 통해 routing는 FreePBX의 per-extension 링을 거래 할 것입니다. 타이머 및 음성 메일 fallback.

  27. · InitializerService

    각 계획에 좌석 당 4 GB, 그리고 사용자 보다는 오히려 좌석

    저장은 층 differentiator입니다. 2/4/5 사다리는 1 기가 바이트를 뒀습니다 그 다음 "풀"을 설명해야 페이지의 스타터 및 비즈니스 사이에 즉, 현재 좌석 당 4 GB는 어디에나 있습니다 : 무료에 한 번, 상속 위의 카드에 의해. 디스플레이 코드가 특별한 경우를 필요로하지 않습니다 - 카드 아래쪽에 tier's delta를 렌더링하므로, 같은 행은 자신의 것에 떨어지게됩니다. 기업은 조직을 위해 "150 GB"를 잃습니다. StorageQuotaService만 읽습니다 numeric value 과 multiplies 그것 로 seat count, 그래서 그 행으로 청구 페이지가 플랫 풀을 약속 한 동안 150 GB. prose 및 코드 disagreed 및 코드는 조용히. 미국 기능은 "좌석"과 "좌석"입니다. 기능 코드는 deliberately unchanged - 그것은 함대의 이름으로 일치. 또한 내부 소유자 계획을 수리, 아무도 누락 된 동안 발견 새로운 천장에: 그것의 측정한 줄 전부는 NULL를 가진 실행했습니다 numeric is unlimited = false, 이는 planStorage는 단단한 0으로 읽습니다. 계획 그의 설명은 "Covers every feature"를 저장하지 못하고 1개의 좌석 및 kamoclub는 99의 좌석에 그것을 붙듭니다.

  28. · kamo-internal

    6개의 일 순서 탭 persist

    SW6b 작업 4. 노동, 부품, 시간, 공급 업체, 사인 오프 및 노트는 React `useState` 에 `commerce/service/[id]` 과 모든 것을 다시 로드합니다. 현재 위치 endpoints에 쓰기 SW6b 작업 3 착륙. 클라이언트는 `ServiceJobApi.java`에서 3개의 끊는 변화를 반영합니다: * `JobInput`는 `labourTotal`, `materialTotal`, `total`, `signedoff`를 잃습니다. `signoffAt`입니다. 총은 작업의 선에서 서버 측을 recomputed 각 행 쓰기, 그리고 기호 오프는 `PATCH /{uid}/signoff`를 통해 간다. 자신의 시계를 스탬프합니다. 일반 업데이트에 그들을 떠나 두 번째 문 5개의 열에 서버가 소유하고, 두번째 문은 아무도입니다 자주 묻는 질문 * `JobView`는 `lines`, `notes`와 `vendors`를 얻습니다. **Null은 "로드되지 않음", 빈은 "none"** — `listJobs`는 모든 3 개의 null을 나타낸다. 그래서 그리드는하지 않는다. 행당 세 개의 쿼리를 실행하고, 각 탭은 두 개의 apart를 오히려 말한다 "라인 없음"을 12 개가 넘는 작업. * 프록시는 모두 다섯 개의 동사를 수출합니다. POST와 DELETE는 deliberately absent이었습니다 직업은 아이들이 없었다 동안; 선과 납품업자 참여는 창조되고 여기에 제거, 그래서 모두 mapped 지금. ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 두 방향으로 설정하고 그들과 함께 넓은. 전체적인 디테일 `JobView`와 각 핸들러 핸즈에 대한 모든 돌연변이 답변 `adopt`로 스트레이트합니다. 손에 의해 쓰기의 효과를 병합: 세 합계는 서버와 클라이언트 arithmetic reproduces 그들입니다. ₢ 킹 deliberately는 sign-off 초안을 재조정하지 않습니다 — SW6a의 페이지는 매각했습니다 각 응답의 지역 분야, 그래서 선을 침묵적으로 discarded 추가 엔지니어는 완료 쓰기 업으로 입력했다. 짐과 a만 성공적인 sign-off는 re-seed 그것을 저장합니다. 노트 탭은 마크 업에서 지정됩니다. 대화 상자, 다섯 개의 기존 키 재사용. 2개의 출발, 둘 다 기록했습니다 코드: 참고 저자는 id이고 탭은 현재 회원을위한 "You"라고 말합니다. 그리고 다른 사람을 위한 저자 선을 omits, endpoint가 해결하지 않기 때문에 의 배치 회원 ids 에 이름 과 베어 19-디지털 번호 아래 머리에 "author"는 아무도 도움이되지 않습니다; 그리고 구원의 `.reverse()`는 떨어졌다, 때문에 서버는 이미 최신 응답하고 가장 오래된 것을 뒤집기 맨 위로. `commerceVendorDirectory.ts`는 `posApi.getVendors()`이기 때문에 새로운 존재 벤더 피커에 사용할 수 없습니다: `POSController.getVendors` 답변 `Vendor` entity, `uid`는 ~19-digit`unique rowid()`로 작성된 JSON 수를 베어, 그래서 `JSON.parse`는 어떤 구성 요소가 그것을보고 전에 그것을 라운드 `posApi.Vendor`는 `uid: number`를 선언합니다. 라운드 된 공급 업체에 참여 id 이름은 존재하지 않는 행입니다. 이 모듈은 텍스트와 응답을 읽습니다. 구문 앞에 긴 `"uid"`값을 인용합니다. 좁은 수정은 보내는 DTO입니다. `ServiceJobApi`는 문자열로 id; 이 존재까지 정직한 읽기. 사전 처음 착륙 : kamo-translation-dictionary 0eaab740.

  29. · KlusterServices

    광고 공개 IP를 미디어 팟에 전달

  30. · SecurityService

    선, 주, 납품업자, 표시 떨어져 및 시계를 위한 8개의 일 주문 끝점

    SW6b 작업 3, 컨트롤러 반. POST/PUT/DELETE /{jobUid}/lines/..., POST /{jobUid}/notes, POST/DELETE /{jobUid}/vendors/..., PATCH /{jobUid}/signoff 및 파칭 **************** VIEW SERVICE WORK에 머물기 8 중 하나는 MANAGE SERVICE WORK입니다. MANAGE SERVICE WORK 는 VIEW SERVICE WORK 의 CHILD이므로, 읽는 핸들러는 쓰기에 볼 수 있으며 여전히 문질러 보입니다. 다운로드 ServiceJobRightsGateTest는 보기 전용으로 모든 12개의 핸들러를 구동합니다. 세션과 서비스는 결코 도달하지 않습니다 -- 행동하는 핸들러 그때 checks 반환 403 이미 작성한 행. 두 ids는 모든 아이 엔드 포인트에 서비스를 도달, 및 서비스는 해결 직업 uid와 org를 가진 아이는 1개의 질문에서 전형적으로 합니다. 없음 부모 하나, DELETE /{jobUid}/lines/{lineUid}는 org에서 어떤 선에 도달 완전히 올바른 URL을 통해. 참고 저자는 memberId(req)이며, 몸이 절대 없다. NoteInput은 몸을 운반한다. 그리고 아무것도 다른, 기록에 편집 경로가 정확하게 그래서 그것이 말하는 것 그는 말했다. 방문의 밖으로 시계 아무도는 방문의 국가를 명명하는 409이다, 400이 아닌 500 -- 요청은 잘 형성되고 행은 존재하며 무엇이 잘못되었는지. 동일한 납품업자를 두번 관여시키는 것은 409입니다. 이 테스트는 이제 컨트롤러와 asserts this의 mapped 핸들러 이름을 읽습니다. 클래스는 그들 중 하나를 구동, 그래서 ninth 엔드 포인트 추가 및 잊어 여기에 아무것도 덮지 않는 것보다 실패합니다. 동서 세트 assertion는 넓게 입니다 모든 5개의 동사에: 이 표면을 위한 다음 프록시는 GET, POST, PUT를 수출해야 합니다, PATCH 및 DELETE 또는 모든 답변 405 다음에서 아무것도없이 서버 로그. Mutation-tested, 19 mutations, 각 별명 실패: 오른쪽 체크 8개 중 각각에 삭제된 MANAGE는 8개 중 각 VIEW로 교체했습니다. 체크는 서비스 호출 후 이동, 세션 org는 리터럴로 대체, 그리고 한 동사 변경.

당신의 우주는 기다리고 있습니다.

몇 분 안에 무료로 시작하세요. 준비가 되면 언제든지 제품을 추가할 수 있습니다.

영원히 무료 - 신용 카드 필요 없음