콘텐츠로 건너뛰기
KAMOUniverse

변경 로그

무슨 일이야?

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

  1. · EmailService

    누가 알림 여행을 발생, 그래서 종은 회원으로 그립니다

    - NotificationRequest는 actorMemberId/actorName을 얻습니다. 이전 생성자는 모든 프로듀서에 머물러 있습니다. 그대에게 - Raise() halves 둘 다 있을 때만 쌍을 지킵니다, 이름은 그것의 란을 적합하고, 제목 또는 body really spells it: a name the text does not contain has nowhere to be draw, 과 하나 과거 255 그렇지 않으면 삽입을 실패하고 전체 알림을 가지고. - toPayload()는 actorName - 목록, 검색 및 소켓 프레임 옆에 TEXT로 actorMemberId를 보냅니다. - /api/internal/notifications는 actorMemberId (텍스트 또는 번호) 및 actorName을 읽습니다. - /api/notifications/self (브라우저의 읽지 않은 채팅 카드)는 그 회원이 안으로 있을 때 배우를 만 지킵니다 콜러의 자체 조직. id는 브라우저의 단어입니다; 그것은 보낸 사람 이름을 말할 수 있지만, 다른 곳에서 누군가가 (Exec2Exec counterpart, stale id)는 동료로 그려. 필요 kamo-shared-library 727c0ec2 및 DDL ...에서 *********** 2026-09-23에 손으로 생산에 적용되었습니다. 테스트: MemberNotificationServiceTest (+4), NotificationSelfRaiseActorTest (4). 풀 스위트: 1912 실행, 0 실패, 1 건너 뛰기.

  2. · kamo-shared-library

    알림은 그 일을 할 수 있습니다

    회원등록 ACTOR MEMBER ID (INT8) 및 ACTOR NAME (255) : 발생한 회원 - 누구 회의가 시작되고, 누가 당신에 썼다 - 그리고 그들의 이름은 제목 또는 신체로 정확히 그것을 붓는다. kamo-internal draws that stretch of the text as a member's name, 그래서 그것을 열거 회원 카드. 이제 종의 모든 이름은 일반 텍스트이므로 아무것도 기록되지 않았습니다. DDL, 2026-09-23 소유자 kamo (ddl-auto는 어디에나 없습니다)로 생산에 손으로 적용: ALTER TABLE public.member notifications ADD COLUMN 만약 EXISTS actor member id INT8; ALTER TABLE public.member notifications ADD COLUMN 만약 EXISTS actor name VARCHAR(255); 같은 진술은 이메일 서비스로 배송됩니다. *********** EmailService는 이 테이블을 읽고 쓰는 유일한 서비스입니다.

  3. · InitializerService

    메모 계획 기능은 "주의 & 체크리스트"입니다

    메모 앱은 2026-09-23 이후 체크리스트를 보유하고 있으며 호출됩니다. "Notes & Checklists"는 어디에 있습니다. 가격 페이지의 비교 도표는 commerce subscription features에서 그것의 줄 이름을, 이렇게 가지고 갑니다 참고 행은 다음과 같습니다. NotesChecklistsRenameMigration (@Order 215) renames every NOTES row는 여전히 오래된 기본 이름을 붙이고, rewrites 아직 오래된 문장을 읽는 핑크의 설명. 재검토 행은 혼자 남아 있고 재 실행은 아무것도 변경하지 않습니다. 만 복사 : service type 및 is included, 어떤 계획 제목을 결정, untouched. 카모크릭 Loader는 여기에 생성 된 카탈로그의 새로운 이름을 씨앗. 이 서비스 이후 2026-09-23에 손으로 적용 배포되지 않습니다.

  4. · kamo-internal

    Switched-to mailbox는 살아있는 체재하고, 검색 상자는 닦습니다

    실시간 업데이트 이 페이지는 mailbox를 보시려면 EmailService를 요청합니다. 그것은 회원 자체가 아닙니다 (/app/email/watch, reconnect 후에 re-sent, 페이지를 떠나기), 폴더 목록과 나무 다시로드 mailbox의 변경 - 새로운 메일 및 변경은 다른 클라이언트 또는 누군가 - 그들이 이미 회원을 위해 한대로 정확히. 릴레이는 자신의 주제, 그래서 메일 배지와 새로운 이메일 소리 결코 듣지 않는 누군가의 mailbox; 변화는 mailbox를 위해 실제로 행동됩니다 화면에 (lib/email/mailboxWatch). 폴란드어, 모두 Chrome에서 실제 부품을 운전에 의해 발견: - 도움말 대화 상자와 고급 양식은 모든 것에 대한 개방적 효과를 다시 실행합니다. 페이지 렌더링 (페이지는 신선한 onClose를 전달합니다), 이는 다시 초점을 끌어 마지막 버튼 / "From"는 회원의 밑에 상자. 지금 실행 오프닝 당 한 번. 대화 상자는 또한 탭을 유지하고 손이 다시 집중합니다. 닫을 때 "검색 방법"으로. - 검색 상자 위주자는 "검색 메일"; 긴 하나가 잘라 "검색 메일 - 시도 f"에서 320px 열 (전 6401409c). - "검색하는 방법"은 열이 너무 높을 때 자체 라인의 시작에 앉아 범위 toggle 옆에 좁은, 대신 오른쪽에 걸려. - 범위 toggle는 모든 라디오 그룹과 같은 화살표 키와 하나의 탭 스톱입니다. 제안 목록은 강조된 옵션을 발표합니다 (aria-activedescendant), 보기로 스크롤을 유지하고, 발표로 제목을 표시합니다.

  5. · kamo-internal

    Audio Lesson - 녹음 업로드 및 학습자는 정말 탐색 할 수 있습니다

    저자 (/hr/training 과정 편집기) - "Choose Media": 오디오 (MP3, M4A, AAC, WAV, OGG / Opus, FLAC) 외에도 모든 슬라이드에서 "업로드 파일" 영상 또는 이미지, 영상 파이프라인을 HR 자원으로 통해, 순간을 첨부 저장. 라이브러리 피커는 오디오를 너무 알고 (배지, 파형 엄지나일), 물론 커버 Picker는 이제 이미지를 제공합니다. - 오디오 슬라이드는 자체 편집기를 가져옵니다 : 필수 설명 ( 접근 가능한 이름), 수업 학습자가 그것을 만나고, 챕터 (플레이헤드에서 하나 추가, m로 편집 시간 : s 또는 h:mm:ss, 에서 플레이, 또는 일반 "00:00 Title" 모양에서 목록을 붙여 넣기, 그리고 성적표 다음을 따르십시오. 완료된 작업은 텍스트를 덮지 않고 ran ( 대신 제공 됩니다), 슬라이드가 다시 열릴 때 한 가지 발견 된 것은 같은 방법을 제공합니다. - 기록은 한 번 측정됩니다. 첨부 파일 : 길이 및 파형은 변환 서비스 및 슬라이드에 저장됩니다 (media meta json), 그래서 학습자는 그들을 기다립니다. "듣기 녹음"은 재생을 통해 규칙의 오디오 단어입니다. Learners (코스 플레이어) - 연주 된 것을 보여주는 파형 스크러버, 실제로 HEARD, 장, 그들의 책갈피와 A–B 반복; 클릭, 드래그 또는 화살표를 통해, 시간과 차터 hover에 미리보기. - 장 per-chapter는 진도, 이전 / 다음 장, 그리고 "이 장"을 들었다. - 녹음을 따르는 성적표, 클릭 중 어디에서 점프, 다음/이전 검색 일치를 통해; 파형의 밑에 말하는 선의 captions. - 메모가있는 책갈피는 회원의 선호도에 보관하여 장치간에 따라 다릅니다. (저장된 목록의 앞에 작성된 것은, 그것을 대체할 것입니다; 보류주의는 보내집니다, 슬라이더가 닫을 때 떨어지지 마십시오. - 0.5×에서 2×에 속도 (그리고 그 속도로 왼쪽 시간), ±10 s의 양, 회원 선택 스피커, 운영 체제의 미디어 키 및 키보드 맵 (Space/K, J/L, 화살표, Shift+arrows) 또는 P/N, < >, 0–9, M, B, A, C, /, ?) 도움 시트. -이 장치에서 중지 한 곳을 다시 시작하고, 그들이 듣지 않은 첫 번째 부분을 제공합니다. - Play-through 필요조건은 실제로 뻗기만 조사합니다: 추구 (scrubber, 건너뛰기, 루프, devtools, 또는 중간 seek 착륙 진드기)는 아무것도 적립하고, 2 ×보다 더 빨리하지 않습니다. 비디오 규칙과는 달리 배경 탭의 긴 진드기를 적립, 오디오는 사람들이 재생하는 것 1에서. 마지막의 두 번째가 전체 기록으로 나뉩니다. 저장된 형태 0.1 s에 돌고 내구는 아닙니다, 그리고 100%는 99% 영원히 읽었습니다. - 파일에 대한 탈출 해치 브라우저는 한 번 녹화의 길이가 나타납니다 비디오에 관해서는, 전달; 단축키 작업 wherever 초점은 플레이어의 대화 상자 안쪽에. 오디오로 비디오에 고정 - 결코 출판되지 않은 버전의 언 기간에 대해 측정 한 재생 추적 게이트 썼다 : 모든 비디오 버전은 null을 운반하므로 볼 수 없었다. 더 보기 이제는 요소의 자신의 내구를 사용합니다. - 다음을 눌러서만 서버에 도달한 회원은 물론, 중간에 그것을 잃었다. 그것은 매 20 s, 일시 중지 및 닫기에 저장됩니다, %와 완료 표시 (그는 결코 보내지 않았다, 그래서 모든 표시는 0% 적용을 기록). - 슬라이드 미디어, 질문 사진 및 수업 자체가 이제 회원을 통해로드 정렬 **************** 이미징 대신 VIEW DOCUMENTS가 필요한 스트림 - 149 회원의 32가 붙지 않았습니다. - 각 autosave가 교체하는 uid에 의하여 편집에 의하여 열쇠가 주어진 활주 카드, 그래서 각 득점방해 매 카드 - 그리고 오디오를 중지 한 저자는 장을 입력하면서 듣는. 이름 * 비행에서 업로드는 이동 또는 삭제를 통해 슬라이드를 따릅니다. - Sandboxing CSP 및 nosniff 회원 미디어 경로 답변 : 슬라이드 사진은 SVG가 될 수 있습니다. 직접 열면 이 기원에서 스크립트를 실행합니다. DocsService (media endpoint, media meta json) 및 변환서비스 (peaks, transcripts) 함께 배포; 영어는 kamo-translation-dictionary a4c6f856에.

  6. · KlusterServices

    실제로 황금 이미지를 구축하는 방법

    build-golden-image.sh는 "CI (see ../../.forgejo/workflows/)"에 의해 Run 말했다. 기타 작업 흐름이 기록되었습니다. libguestfs, qemu-img 및 virt-customize, 아무도 필요 이 repo 기계에 설치되는 것은 위에 작동되고, 거기 없습니다 컨테이너 실행 시간 - 그래서 하나의 artefact 전체 응용 프로그램은에 따라 달라 기존의 경로 그것은 컴퓨터가 발견 된 것을 할당하는 첫 번째 사람입니다. 빌드는 대신 클러스터에서 실행되며, 이미 한 자리가 장착되어 있습니다. 그것은: 노드는 KubeVirt를 실행하고 디바이스를 통해 /dev/kvm을 노출한다.kubevirt.io/kvm device plugin, so libguestfs is hardware-accelerated 오히려 에뮬레이션 보다 영업시간 직업은 vm/datavolume-template 때문에 황금 PVC로 직접 쓰고, source.pvc와 Filesystem 볼륨의 CDI 클론을 가진 복제는 그 내용을 복사합니다. 그래서 어떤 주장 보유 disk.img는 유효한 소스입니다. HTTP 호스팅 단계 제거, 업로드 자격 및 멀티 기가 바이트 파일의 두 번째 사본. golden-datavolume.yaml는 다른 곳에 내장 된 이미지에 머물. 쓰기에서 알고있는 3 가지 : 스크립트는 git clone 보다는 오히려 ConfigMaps로 여행, 그래서 작업 필요 없음 자격. 그들은 비트를 실행하지 않고 읽기 전용을 마운트, 그래서 그들은 복사됩니다 virt-customize 앞에 writable 경로 --run는 그(것)들을 실행할 수 있습니다. 빌드는 스크래치에서 발생하며 완성된 파일만 청구됩니다. 스크립트는 20 GB 작업 qcow2를 작성하고 qemu-img 변환 -c는 두 번째를 작성 그 외에 압축; 황금 주장에서 그것을 두 번해야 이미지의 크기가 유지됩니다. VERSION은 이제 overridable입니다. 인 클러스터 경로는 버전 BEFORE를 알고있다 build start, 때문에 주장은 그 이름에 그것을 운반하고 작업에 대해 존재해야합니다 쓰기, 그래서 래퍼는 Canonical의 일련을 한 번 해결하고 그 1 값을 사용합니다 모두. 기존 버전의 재건은 다음과 같이 쓰여지지 않습니다. 두 번째는 대중화 된 황금 PVC로 씁니다 실패는 각 10ant에 도달합니다 한 번.

  7. · ConversionService

    오디오 - 업로드 및 피크 및 성적에 파형 썸네일

    업로드 된 오디오 파일이 Docs PDF 경로로 떨어졌다, 이는 하나를 열 수 없습니다, 그래서 모든 오디오 업로드는 빈 라이브러리 타일로 "Conversion failed"를 종료했습니다. 오디오는 이제 자체 지점을 가지고, 비디오처럼: 스크래치로 스트래치로 스트래치로 스트래치로 스트래치, 그 페이지-0 Java의 그 피크에서 thumbnail 그려. 노 ffmpeg의 showwavespic, 모든 디코딩을 보유 파일의 끝까지 프레임 : 30 분 MP3 및 546 시간 동안 298 MB에서 측정 문서에 대한 pod 크기의 업로드 당 언바운드 실; 54 MB의 스트림 디코드 피크. FLAC, MIME 테이블 일반적인 바이너리로 저장, 그것의 확장에 의해 인식됩니다. ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** - GET /peaks - 지속 시간 및 1,600-bucket 파형 ( 0-255 피크의 기초). ffmpeg의 PCM은 스트림으로 읽고 50ms 창 당 단 하나만 유지됩니다, 그래서 시간 비용 72,000 짧은; browser's decodeAudioData는 같은 시간에 gigabyte를 붙들 것입니다. 가게 옆에 <datId> peaks v1.json로 파일, 그래서 내용 당 한 번 계산됩니다. - POST|GET /transcript — whisper-asr (vad filter on)의 타임 WebVTT 성적표 <datId> transcript v1.json의 상태와 가상 스레드에서 복제할 수 있습니다. (개인 작업 테이블은 다른 팟에 보이지 않을 것입니다). 한 번에 포드 당 일: whisper-asr는 음성 메일 및 회의 transcription과 공유 한 CPU 바운드 복제입니다. 지원하다 작업은 자신의 스레드에서 매 분을 다시 작성 (결과가 작성되기 전에 인용), 그래서 팟이 저자를 잠그는 대신 세 번의 비트 후 실패로 읽는 작업 Whisper timeout; ?restart=true는 완성된 성적표를 대체합니다. 라이브 서비스에 대한 측정 : 2 분 7 s 기록은 25 s를했다. 둘 다 VIEW DOCUMENTS와 영상 접근 수준이 요구하고, HR 자원만 봉사합니다: voicemails, 각 통화 녹음 및 채팅 음성 메모는 DocsService의 per-record 규칙을 수행합니다. 볼 수 없으므로 따라 규칙을 가져야 할 일이 404에 머무를 수 있습니다. 빌드는 또한 kamo-shared-library의 오디오 MIME 별칭을 선택합니다 : M4A, WAV, OGG 및 AAC 업로드 MIME mismatch로 거부되었습니다.

  8. · DocsService

    Audio slides - 미디어 메타데이터 및 학습자는 할당을 통해 미디어를 재생합니다

    오디오 슬라이드의 내비게이션은 media meta json (현도, 파형 피크, 장)에 살고 있습니다. 편집기 쓰기와 플레이어는 다시 verbatim을 읽습니다. 저장됩니다 (256K로, JSON으로 오브젝트, 슬라이드가 미디어를 가지고있는 동안만 유지), 복제, 출판 및 제공 플레이어 DTO. 또한 글을 쓰는 media duration ms 에서 그것 — 선언 버전에서 시작 and never written — and the course Quote counts a audio lesson'실제 길이. 지문은 AUDIO 슬라이드의 성적표와 메타데이터를 가지고 있어 성적표 또는 챕터를 이동할 수 있는 변경입니다. 다른 모든 슬라이드 hashes 정확히 이전: Widening 모든 슬라이드에 해시는 비디오 transcript "unpublished"로 각 출판 과정을 설정했습니다. 이 날은 배송. Get ***********는 슬라이드 (또는 질문)를 제공합니다. 범위 지원이있는 미디어, 회원의 자신의 할당에 의해 허가 : 파일은 있어야합니다 그들은 할당 된 버전, HR 자원에서, 자신의 조직에서, 살과 untrashed. 더 보기 이미징 스트림은 VIEW DOCUMENTS를 필요로 하며, 149명의 회원들 중 32명이 필요합니다. 모든 권리는 가지고 있지 않았다 — 그들 각자는 죽은 선수를 만났다. 학습자가 승인되기 때문에 과정의 파일 존재, 단위를 저장 지금은 파일을 거부 할 수 없습니다 (422) 슬라이드 또는 질문 이름을 지정하고, 모든 필요 VIEW DOCUMENTS에서 모든 파일을 첨부, 오른쪽 이미징 스트림 자체 요구; 재 실행 모두 전체 과정을 체크, 그래서 초안 이전 또는 co-author가 동일한 규칙에 보관됩니다. 그렇지 않으면 MANAGE TRAINING 혼자 수 있었다 파일을 게시하면 홀더가 과정을 읽을 수 없으며 스스로 할당 할 수 없습니다. 학습자 경로 또한 그림, 비디오 또는 녹음뿐만 아니라, 문서는 공예품 저장 이름을 저장하지 않습니다. HR 리소스는 다른 모든 바이트 규칙보다 좁아집니다. (발행 패키지는 SERVICE APPLICATION, per-party document LOAN 또는 ACCOUNT MEMBER VAULT이며, chat/voicemail/call 매체에는 그들의 자신의 수집이 있습니다. /imaging/stream 처럼 감사 합니다. 그리고 Range 대답은 /imaging/stream가 이제도 사용합니다. 출판은 오디오 자체 단어에 대한 설명없이 오디오 슬라이드를 거부합니다. 필요 kamo-shared-library "feat(imaging,training): 오디오 업로드는 MIME 검사를 통과하고 슬라이드 미디어 메타데이터(media meta json on both slide entities; DDL 적용)를 수행합니다.

  9. · kamo-shared-library

    오디오 업로드는 MIME 검사를 통과하고 슬라이드는 미디어 메타데이터를 수행합니다

    모든 오디오 업로드하지만 MP3는 MIME mismatch로 거부되었습니다. 업로드 할 때만 허용됩니다. 브라우저의 유형과 Tika의 스니프는 같은 ImageMimeType을 해결하고, 오디오를 위해 양측 결코 같은 방법을 포맷. Tika 2.9.2에 대한 측정 : 오디오 / vnd.wave로 WAV 스니프 (브라우저는 오디오/웨이브를 보냅니다), 오디오/vorbis 또는 오디오/opus (audio/ogg), 오디오/x-aac로 ADTS AAC (audio/aac) 및 Windows 및 macOS는 Tika가 오디오/mp4를 말하는 오디오/x-m4a로 .m4a를 보냅니다. stringToImageMimeType은 현재 케이스, 주변 공간 및 매개 변수를 무시하고 그 별명을 맵핑합니다. 그 이름으로. 비디오 (Matroska, WebM, MP4) 오디오 상수로, FLAC는 이전과 같이 양측에 일반적인 바이너리를 유지합니다. TrainingSlide 및 TrainingVersionSlide 이득 media meta json (TEXT) : 기간, 파형 피크 그리고 챕터는 교육 플레이어가 편집자에 의해 작성된 오디오 레슨을 탐색합니다. 버전으로 냉동. DDL, 이 커밋 전에 손으로 생산에 적용 (InitializerService는 배포되지 않습니다) : ALTER TABLE public.hr training slide ADD COLUMN을 초과하지 않으면 media meta json TEXT; 케이블 **************** 미디어 meta json TEXT를 초과하지 않는 경우에 추가 COLUMN;

  10. · kamo-internal

    도구 창의 전체 제목, 그러나 그것은 짧은 잘라

    제목 바는 한 줄, 대화, 이메일 또는 표 제목 또는 터미널의 디렉토리는 정기적으로 더 이상 룸보다 - 회원 커트오프 시작을 읽을 수 있었습니다. 각 창의 제목이 그려집니다. 이제 전체 카드가 열립니다. 제목 표시 줄, 뒤에 서 있는 창의 지구, 뜨 또는 확대한 창의 막대기, 및 확대된 창의 위의 탭 (브라우저 자체를 대체하는 곳) unstyled `title` 도구 끝). 회원이 요청할 때마다 도달: - 호버: 짧은 휴식 후, 한 번에 다른 제목에서 슬라이딩 할 때; 한 번에 카드 - 프레스 : 한 번에; 순간을 촬영하면 보도가 창 드래그되고 포인터 잎까지 유지하거나 다시 afresh 온다 - 탭: 한 번에, 손가락이 다른 곳에 탭 땅까지 들어갑니다 - 키보드 : 스트립, 탭 또는 부동 창의 바에 초점을 맞추고; 탈출 닫기 - right-click: 창 메뉴는 이제 상단에 창을 이름을 붙이고 "Copy title"열이 있습니다. 실제로 차단되는 제목에 대해서만 (열릴 때 측정 됨) sub-pixel overflow `scrollWidth` 라운드를 포함), 그리고 그것은 다음과 같습니다 행 이동으로 창, 제목이 소켓에 이름을 붙일 때 업데이트, 그리고 한 번의 극대화 또는 더 넓은 행은 제목을 맞습니다. 카드는 org의 자신의 타이틀 바 색상의 더 깊은 그늘, 전체 제목을 줄 커트오프의 밑에, 선택할 수 있고, 전체적인 제목을 복사합니다. 카드는 포털이지만 React는 제목 표시줄으로 다시 이벤트를 버립니다. 프레스, 클릭, 더블 클릭, 컨텍스트 메뉴 및 키가 중지됩니다. 드래그, 절상, 극대화 또는 창 밑창 이동.

  11. · InitializerService

    제목 카탈로그에 앱을 넣어, add-on 만

    **************** 모든 판매된 앱은 분류되고 앉아 있습니다. tier ladder에 어딘가, 앱이 카탈로그가 땅을 설명하지 않기 때문에 가격 매트릭스 및 침묵은 모든 계층에 is included=false를 쓰지 않습니다. Hosted Computers는 판매 및 설명 된 nowhere였습니다. 그래서 그것은 assertions를 모두 끊었습니다. 현재 ServiceType 37이 존재했습니다. 다른 애드온 전용 앱 공유의 이유가 없습니다. MLOS의 개인 대출 시스템 및 환자 기록은 그들 때문에 협상됩니다 수행; Hosted Computers는 그것이 보내는 것 때문에 협상됩니다. 사이트맵 KubeVirt VMs를 할당 할 권리가 있음을 계획하는 모든 조직을 손으로 만들 것입니다. Scheduler는 대신 REQUESTS에 의해 함대를 경계, 그래서 orgs 그 entitlement를 사용하면 나머지 노드를 취할 것입니다 - 출판물 가격, 그것은 다시 걸어 어렵게 만드는 부분입니다. 어떤 움직임에 rung는 더 많은 노드, 가격 변경이 아닙니다. add-on은 이미 협상 된 앱에 적용 한 모양을 따릅니다. 목록 가격, 그래서 아무것도 하나 렌더링, 및 CUSTOM 계획과 호환. 그것은 앱이 COMPLETED에 도달 할 때까지도 제공되지 않습니다. 카탈로그 항목은 다른 사람의 작업 옆에 생산성에 앉아. · 한 앱을 들고있는 범주는 누구에게도 매트릭스를 열 수 있습니다.

  12. · kamo-internal

    Human/AI 회원 계정, 전화 이름, 직업 제목 및 부서 요구

    회원 추가 / 팀 회원 추가 - 첫 번째 "Person 또는 AI"섹션 : 인간 지능 (기본) 또는 두 개의 인공 지능 키보드 가동 가능한 선택 카드. AI는 감독 팀 구성원 (과태에 당신을 때 팀원입니다. AI 모델; 팀원의 작업 위치는 원격으로 사전 충전합니다. - 선호된 이름 옆에 있는 Phonetic 이름, 발음 끝과 읽는 2개의 놀이 단추 비밀번호 찾기 - 요약은 지능과 "Says it"를 보여줍니다. 직업 제목이나 부서를 선택하는 것은 그것이 무엇인지 보여줍니다. 예상 (도용 + 요구); 기존의 계정의 통지는 그 이름과 발음 말한다 계속. - 대량 추가 : 일괄 정보 설정 (+ supervisor), per-row override 및 Phonetic 열; CSV 가져오기 자동지도 "pronunciation", "human 또는 ai"와 친구 ("AI", "Bot", "Human"...). 작성 후 - 회원 / 팀 멤버 그리드 : 인텔리전스 열, 모든 · 인간의 · 조사와 AI 필터, 및 "AI"와 폰틱 이름을 찾는 빠른 검색. - 회원 카드 (모든 이름 hover) : AI 알약과 "그냥"플레이 버튼과 라인; 로스터 행 둘 다에 그것을 전치십시오. - 프로필 : 영웅은 AI pill과 "Says it"를 착용합니다. 이름; 회원 카드 쇼/edits 지능, 감독 및 모델 (Manage member only, never 자신의 프로필에); 작업실은 라이브, 읽기 전용 롤 기대 카드를 얻을. 직책 및 부서 (/settings/essential) - 추가 / 편집 대화 상자는 예상 섹션을 얻습니다. 설명 (4,000 문자, 카운터) 및 요구 사항 편집기 - 카테고리, 텍스트, 필수 / 선호, 주문, 제거, 다음을 추가 입력, 목록이 행으로 나뉩니다. 예를 들어 칩, 50 줄 캡. - 테이블은 설명의 첫 번째 라인과 호버 목록이있는 요구 사항 열을 보여줍니다. 두 페이지 새로 고침된 라이브 (오버가 열리면서 사용) 및 거부 된 저장에 서버의 자신의 단어를 보여줍니다. 공유 조각: app/lib/members/intelligence, app/lib/speech (feature-detected, SSR-safe), IntelligenceBadge / IntelligenceChoice / PhoneticNameField / SayItButton, 앱/lib/org문의, 요구 사항Editor, 역할Expectations. docs/superpowers의 밑에 Spec 그리고 계획. kamo-shared-library + securityservice (same 기능) 및 사전 키가 먼저 밀어.

  13. · SecurityService

    Human/AI 회원, 폰틱 이름, 역할 요구 사항; 고정 위치는 보안을 저장

    이름 * - Create, create-team-member 및 Bulk-create는 `intelligenceType`, `namePhonetic`(새 이름과 같은 계정, AI 계정 `aiSupervisorMemberId` + `aiModel`. 더 보기 수퍼바이저는 org의 인간 팀 구성원이며 결코 계정 자체가 아닙니다. 때 제작자는 자격이 있는지 (AiSupervisorPolicy)를 의미합니다. 모든 refusal 이름 아무것도 작성하기 전에 필드. - PUT /members/{id}: `namePhonetic`는 user-identity 필드(법명과 같은 권한)입니다. `intelligenceType`, `aiSupervisorMember Id`, `aiModel` 필요 MANAGE MEMBERS 또는 열린 신 창, 그리고 자신의 회원 (CANNOT RELABEL SELF)에 거부되므로 AI는 인간을 다시 표현할 수 없습니다. HUMAN에 전환은 감독과 모델을 명확하게합니다. - GET /members/{id}, /members/{id}/card, by-department roster 및 계정 목록 행은 수행 `intelligenceType`과 `namePhonetic`(프로필도 supervisor id/name과 model을 얻게 됩니다). - org-config의 작업 제목 및 부서는 작성 양식에 대한 설명 + 요구 사항을 수행한다. 직책 및 부서 - POST/PUT/DELETE는 지금 CONFIGURE SYSTEM를 요구합니다 (또는 열린 신 창) - 설정 페이지 이미 썼습니다. 서버는 org의 서명된 회원을 허용했습니다. 변경되지 않았습니다. - 공유 서비스를 통해 설명 및 요구 사항 흐름 (kamo-shared-library 참조). 수정: PUT /member-security/{id}는 역할, 직접 권한 및 세션 타임아웃을 대체합니다. 요청하지 않았다. 프로필의 위치 카드는 부서 / 직책 / 공식을 보내 title / manager, 그래서 모든 위치 편집은 회원의 맞춤 역할, 직접 권리 및 타임 아웃을 닦았습니다 오버라이드. 각각은 이제 키가 존재할 때만 대체됩니다. 보안 편집기는 모든 3을 보냅니다. DDL: ****** **************** (이 전에 소유자로 손으로 승인 푸시; 0 schema-mismatch 오류 보안 / 이메일 / 다음 15 분 이상).

  14. · kamo-shared-library

    인텔리전스 유형, 폰틱 이름, AI 감독, 직업 제목/출발 필요조건

    멤버: `Member.intelligenceType` (HUMAN | ARTIFICIAL, STRING, 각 건설에 기본 HUMAN 경로와 열), `aiSupervisorMember Id` (plain id - 회원은 가장 인기있는 테이블이며 hard-deleted) 과 `aiModel`. user: `namePhonetic`, EmbNameFull 이외의 이름으로, 지도, 계정, 대여 및 세션도 포함. 직업 제목 및 부서 : `description` (TEXT, 4,000 문자) 및 주문 요구 사항 두 개의 어린이 테이블 (`org job title requirements`, `dept requirements`: 카테고리, 필수 / 선호, 텍스트 ≤ 500, 안정적인 에이즈, 에 DELETE CASCADE). `OrgRequirements`는 두 가지 규칙입니다. 아무것도 쓰여지기 전에 유효성 검사, diff-by-id 그래서 유지된 요구는 그것의 ID를 유지하고, id에서 다른 소유자는 새로운로 대우됩니다. 업데이트는 두 가지 새로운 필드에 "absent means unchanged"를 따르므로 그들이 그(것)들을 닦을 수 없는 콜러; "" / [] 맑음. **************** 이제 요청 DTO (보안 서비스만 호출)를 취합니다. DDL는 손 applied **************** 적용됩니다 2026-09-22 03:01Z, 이 푸시 전에). 전체 라이브러리에 대한 실시간 SessionFactory는 새로운 DDL (RoleRequirementsMappingTest)에 테이블과 란.

  15. · kamo-internal

    Nav 옵션, 설정 섹션 및 저장 그림

    구성원의 Linux 컴퓨터는 상단 바에서 열립니다. 앱(ServiceType 37) 및 3권 공유 라이브러리에 착륙; 이것은 절반 사람들이 볼 수 있습니다. NAV OPTION APPEARS EXACTLY WHEN THERE는 IT를 제거하는 방법 서버의 대답에 "컴퓨터가이 회원이 열릴 수 있음", 오른쪽과 신에 없습니다. 더 보기 dev-machine 옵션은 이것을 가르쳤다 : 그것은 사람과 사람의 앞에 아이콘을 넣어 한 번 신화되었다 기계에 계정이 없으며 Guacamole의 일반적인 오류를 생성 할 때. 감사합니다. ACCESS SUBORDINATE COMPUTERS와 그 자체의 컴퓨터는 여전히 아이콘을 얻지 못했습니다. 그것은 - 관리자 보유 MANAGE 및 할당되지 않는 아무것도. 목록은 서버의 순서에서 서버의, 입니다: 첫째로 소유하고, 그 후에, 조직의. 여기에 필터 또는 주문이 없습니다, 이유 /network's listing is server-decided — client-side 필터는 이미 전송 된 목록이며, 주문은 고객이 결코 볼 수 없습니다. 관리자 체인이 없기 때문에. 각 행은 DESKTOP RESOLUTIONS의 크기로 확장되므로 크기가 추가되었습니다. 어떤 사람이 경계를 이동하지 않고 "내 창을 잘라"의 규칙의 올바른 측면에 착륙합니다. 모든 행 그 상태를 착용, 때문에 "잠자는"이 컴퓨터 중 하나의 정상 휴식 상태는 오히려 결함, 그리고 아무것도 하지 말한 행은 누군가가 그것을 실패 한 분 생각을 기다릴. openHostedComputer는 fetch 이상이며 같은 이유로 리디렉션됩니다. 발사에는 세 가지 답변과 두 가지는 링크가 아닙니다. 수면이 시작되고 30-90 초 정도 걸립니다. 복제 된 볼륨을 다시 메모리, 그래서 탭 SAYS 그 - 분을위한 공백 탭 openKamoDesktop이 가르치고있었습니다. 로그인이 아직 Kamo는 암호를 저장하지 않고 회원은 한 번 확인합니다. 디자인 작업은 실패하지 않습니다. 그래서 탭이 닫고 대화 상자는 설명 nobody의 페이지를 떠나지 않고 요청합니다. THREE 설정 TABS. 하나는 물었다; 다른 두는 왜 쓸모 컴퓨터는 하나이다: 할당, 크기, 변경 저장, 수면, 제거, useOrgChanges에 살고. 제품 정보 대답 "왜이 시작되지 않습니까?", 그렇지 않으면 제품에 아무런 대답이 없습니다 - 그리고 대답 카운터 intuitive, 그래서 바는 사용 보다는 오히려 REQUESTS를 말한다, 기계 절반 idle를 볼 수 있기 때문에 방이 없습니다. 기본은 조직이 모든 사람에게 크기와 디스크를 재구성하고, 모든 상자 공백이 "플랫폼을 따르는 것"과 0이 아닌 빈이 될 수 있습니다. Resize 대화 상자와 저장 대화 상자는 다음과 같이 말하지 않습니다 : 크기 수면 이미지가 메모리 크기에 바인딩되기 때문에 컴퓨터를 다시 시작, 그리고 저장 변화는 온라인으로 볼륨을 확장하고 아무것도 방해합니다. STATS PAGE에 저장, ITS OWN 패널 HostedComputerUsagePanel은 설정 → 내 계정 → 통계 및 비용에 저장 후 직접 앉아 있습니다. 로그인 그 테이블: 그것의 행은 계산 스냅샷 청소 걷는 저장 RECORDS에서 옵니다, 컴퓨터의 디스크는 가지고 있습니다 아무도 - 게스트에게만 알려지지 않은 것은 자신의 파일 시스템 수치를보고. Longhorn의 수 그 사정에 잘못 될 것 이다, 그것은 모든 썼 고 결코 때 떨어졌다 누군가 파일을 삭제합니다. 스왑 파일은 제외됩니다. 그것은 컴퓨터의 메모리의 크기이며 존재합니다. 기계는 잠을 수 있습니다. 두 가지 내 자신의 체크 붙잡고 고정 : nav 문은 "false"보다 "undefined"를 반환 플래그 세트가 없는 조직(`undefined && x`), 저장 열은 `number | null`을 ICU로 전달 placeholder - 천장과 "성장"은 같은 사실이므로 이제 한 번 천장을 읽고 TypeScript가 좁히는 것을 따릅니다. 인증: tsc는 모든 것을 깨끗하지만 채팅 및 지원에서 4 개의 사전 컴파일 대답Quote 오류, 현재 근원/주에 동일한 선. 320 nav 및 lib 테스트 패스. eslint 모든 새 파일에 깨끗하고 새로운 편집 된 것에 경고. 모든 세 가지 이미지 빌드 가드 패스 — check-i18n-keys clean over 4268 파일 사전 헤드에 대한, 이는 첫 번째를 밀어과 ancestry에 의해 확인.

  16. · kamo-internal

    메모 앱의 체크리스트 - 필수품, 끈, 홈 팬 및 달력

    참고는 기억입니다; 체크리스트는 일입니다. /notes now has two halves — 노트와 Checklists (?view=checklists) - 그리고 체크리스트는 자체 레코드입니다. (/api/checklists, KBService) 다른 작업을 기다릴 수 있는 작업. 관련 상품 - 자체 벽에 목록 당 카드 : 진도 가장자리 및 링, 작업에 tickable 카드, 일정 칩; 진도에 대한 레일 필터 / 시작하지 / 완료 / 예약 / 홈 / 즐겨찾기, 모든 작업에 도달하는 검색. - 편집기: 빠른 작업 추가 (Enter; Shift+ 다음 단계로 추가; 목록을 붙여넣기), 수정, 드래그 또는 Alt+arrows를 클릭하여 주문, 삭제 Undo, All/Ready/Waiting/Done 필터, "주문에서", untick 모두, 명확한 완료, 신선한 복사로 복제, Markdown으로 복사. - Prerequisites: 링크 모드는 어떤 작업을 기다리고 있는지, 아무것도 회색 즉, 잠겨있는 작업은 통제를 보여줍니다. 행을 붓고, 작업이 길에 밝고 제공 그들에게 점프. 뭔가 완성 된 작업을 Unticking, 또는 제공 열린 prerequisite를 완료, 먼저 요청하고 어떤 다시 열거. 더 보기 의존성 가로장은 각 연결을 끌고 hovered 작업의 점화합니다. 서버 같은 규칙을 시행, 그래서 아무것도 그들을 돌리게. - 잠금 해제, 진드기 및 마무리 목록은 애니메이션; 마무리는 confetti 그리고 마지막 진드기가 만든 표면의 톤. 자주 묻는 질문 - 뜨: checklists는 동일한 오바레이, 겹쳐 쌓이는 순서에 있는 끈으로 묶습니다, 저장된 배치 및 hex-head 도크 노트 (더 자체 도크 그룹). - 홈: pinned checklist는 pinned 노트, tickable 옆에 발사 패드 팬입니다. - 1개의 살아있는 상점은 각 표면을, `checklists`org에 의해 새로 고침했습니다 변경, 그래서 어디서나 땅을 틱. (주) - 체크리스트는 실제 이벤트(sourceType CHECKLIST)로 캘린더에 진행되며, 달력의 자신의 이벤트 대화 상자를 통해 예약, 또는 달력의 새로운 체크리스트 트레이에서 하루 또는 한 시간에 드래그. - 체크리스트 이벤트는 각보기에서 진행 상황을 보여줍니다. 이벤트 대화 상자 쇼 목록, 장소에서 tickable; overdue 일 맥박 빨강. - 달력 프록시는 이제 모든 쓰기에 `calendar` org 변경을 게시합니다. EmailService의 자신의 주제는 팟 당, 그래서 다른 팟에 탭을 듣지 않습니다. 디자인: ****************

  17. · APIService

    앞으로 /api/checklists로 KBService

    체크리스트는 노트 앱에서 라이브하며 노트 옆에 KBService가 제공됩니다. 스스로; 이 경로없이 전체 기능 404 게이트웨이에서.

  18. · KBService

    Checklist API, 서버의 사전 요구 사항

    /api/checklists: list, get, create, update, delete, duplicate, reset, clear-done, sequence ("do in order"), clear link, 작업당 추가, 편집, tick/untick, set prerequisites, 이동 및 삭제. 모든 mutation 답변 전체 체크리스트 그래서 모든 표면은 한 응답에서 철회합니다. 이 규칙은 ChecklistRules, 순식간에 시험되고, 1개를 붙듭니다 invariant: 작업이 열리면 절대 기다리지 않습니다. 진드기가 거절되는 동안 prerequisite는 열려 있습니다 (409 PREREQUISITES OPEN, 그들을 명명); untick 그 행한 작업은 cascade=true가 아닌 거부됩니다. 반복되는 링크 거절 (409 CYCLE, 루프와); 완성 된 작업을 떠나는 링크 열린 일에 대기는 reopen=true (409 REOPEN REQUIRED)를 필요로 합니다. 같은 규칙 즉시 피드백에 대한 브라우저에서 실행, 그러나 이것은 결정하는 것 - 끈적한, 달력 또는 stale 탭을 얻을 수 없습니다. 저작권은 메모 앱의: VIEW NOTES를 읽고, CREATE NOTES, EDIT NOTES 및 DELETE NOTES를 변경합니다. 진흙은 @RetryOnDbConflict를 수행하고 범프합니다. checklist의 버전, 그래서 두 개의 탭은 한 번에 serialize. create checklists.sql은 DDL, idempotent, 소유자로 적용된다.

  19. · kamo-shared-library

    Checklist 및 Checklist항목, 저장소 및 DTO

    Checklists는 Notes 앱의 두 번째 레코드 유형입니다. 작업은 다른 작업을 기다릴 수 있습니다. 세 테이블 - 체크리스트, checklist items 및 checklist item prerequisites — UUID에 의해 모든 키가 너무 id는 int64 a 브라우저는 둥근 수 있었습니다. 작업 텍스트는 회원의 메모 키 아래 ciphertext입니다. checklist 행은 create at/updated at (EmbRecordState's)를 나릅니다. DATE UPDATED는 삽입/update=false이고 결코 움직입니다) 그리고 @Version는 모든 mutation에 서비스 범프, 그래서 동시 편집 한 목록 콜드 interleaving 대신. DDL는 손에 의해 적용됩니다 **************** 여기 창조하지 않습니다 테이블.

  20. · SecurityService

    브라우저 파싱 표면, 두 번째 Guacamole 게이트

    SecurityService는 Hosted Computers의 신뢰 경계입니다. 세션, 권리 및 org를 보유하고 있습니다. 차트; ComputeService는 Kubernetes credentials 및 모든 세션을 보유하고 있습니다. 언더스트림 재검사 여기서 클러스터를 만드세요. ORG ID는 즉시 대기 중입니다. 모든 통화 스탬프 콜러의 자체 해결 된 조직. · Hosted Computer는 자체 조직과 인터넷을 볼 수있는 네트워크에 전체 기계이므로 몸에서 org ID를 허용하는 핸들러는 누출 목록이 아닙니다. 누군가로 문이 될 것입니다. 다른 데스크탑. 할당 경로는 콜러 자체를 통해 대상 회원의 이메일에 추가적으로 해결합니다. 회원 확인으로 두 배의 조직 : 관리자가 컴퓨터에 할당 할 수없는 또 다른 임산부에 속하는 회원 ID가 있으며이 org의 네임스페이스에 내장되어 있습니다. 이름. THREE DIFFERENT GATES, BECAUSE THERE는 제3자 품질입니다. 회사연혁 다운로드 컴퓨터를 컴퓨터로 열어 두 개의 ACCESS 권한 중 하나 Widen it - 콜러가 컴퓨터가 동일한 가시성을 재작업하여 응답 할 수 있는지 여부 nav 메뉴가 내장되었는지, 오히려 두 번째 규칙에 의해 disagree 할 수. 회원은 컴퓨터가 id를 추측하여 도달 할 수 없습니다. 비밀번호가 전혀 필요 없습니다. 회원의 자신의 컴퓨터가 로그인을 얻는 방법. ORG CHART는 한 개의 쿼리에서 적절한 NEEDS IT를 일시 중지하고 있습니다. ACCESS SUBORDINATE COMPUTERS에 대하여 제품정보 아래 전체 하위 트리, 그래서 가장자리는 쌍으로 다시 와서 traversal 다운 스트림은 그들을 걸어 방문한 세트 이상 - managerId는 유효한 나무가 아닌 자유로운 모양 단면도 분야입니다, 그래서 주기는 1입니다 자주 묻는 질문 권한이 없는 회원은 nav가 이것에게 묻기 때문에 한 통화를 지불합니다. 각 페이지 짐. TOKEN FORMAT가 지금 공유되지 않습니다. GuacamoleTokenCodec는 GuacamoleJsonAuth에서 추출됩니다. 두 개의 게이트웨이가 있습니다. 플랫폼 관리자 및 컴퓨터 용<domain>.<domain> 10개, 다른 signing 열쇠 및 다른 연결 모형. 그 형식의 두 사본은 하나 일 것입니다 구현 및 한 책임, 실수 사본은 결국 'expires` 실수 - 그것은 링크 TTL과 같은 읽고 실제로 세션의 재연결 창, 그리고 그것을 잘못 비난 라이브 사용자의 연결 목록 조용히. 바닥은 두 호출자에 의해 시행됩니다. HostedComputerSso는 분기보다는 sibling입니다. 그 게이트웨이는 세 개의 고정 대상을 제공하고 모든 것을 넣어 모든 토큰에 그들; 이 하나는 컴퓨터 후에 지명된 컴퓨터 당 1개의 연결이, 한 번에 있습니다 시작 당 자격 증명 - 그래서 회원의 자신의 Kamo 암호는 토큰에 결코 여행하지 않습니다. 플랫폼 데스크톱은 계정 암호의 해독 가능한 사본을 정확하게 유지해야하므로 Guacamole은 자동 로그인 할 수 있습니다. 이 아니, 그리고 그 개선. PasswordChangeController는 이제 회원의 컴퓨터에 새로운 암호를 밀어줍니다. 이것은 유일한 순간입니다 Plaintext가 존재합니다. Kamo는 해시를 저장하고 어디로 뒤집을 수 없는 사본을 보관합니다. 푸시는 최고의 노력입니다. 건설 : 실패는 회원이 요청한 변경을 실패하고, 수면 컴퓨터가 표시되지 않습니다. stale 그래서 그 다음 발사는 확인을 요청합니다. 누적 된 암호가 저장되기 때문에 아무것도 누락됩니다. 비밀번호 스위트: 2755 테스트, 5 실패, 그리고 모든 5는 같은 것 pristine 근원/주요 생성입니다 — PromoCodeInternalController에 UnauthenticatedEndpointRatchet (에 의해 추가 9578ca0 그리고 결코 추가되지 않음) 기본) 및 4 **************** NPEs 에 AppliedJobStamp. 모두 실행하여 인증 근원/주에 청결한 worktree. 내 자체 컨트롤러는 ratchet를 전달합니다. 모든 핸들러는 세션을 해결하고 답변 401 하나없이. Hc-guac-sso 비밀을 민트 링크에 필요; 그것은 출시 경로가 너무 평범하지 않는 것을 말할 때까지 Guacamole의 일반적인 오류 화면에 착륙하는 링크를 다시.

  21. · EmailService

    회원은 일정에 체크리스트를 넣을 수 있습니다

    Checklists는 KBService에 살고 있으며 캘린더는 WHEN 만 소유합니다. 예정된 체크리스트는 일반 회원 이벤트 나르는 sourceType CHECKLIST, 체크리스트 UUID 및 /notes에 대한 깊은 링크. 이 링크는 서버 측은 몸에서 결코 읽지 않으며, 사건은 통해 갑니다 정상적인 회원은 경로를 만들기 그래서 달력 변경 게시 여전히 불. 동일한 체크리스트의 두 번째 활성 일정은 첫 번째 409 naming입니다. *** * *** /notes에 칩을 위해 그들을 나열합니다. 편집은 여전히 이벤트가 무엇인지 변경할 수 없습니다. 체크리스트 알림 달력을 유지하고 체크리스트 아이콘을 가져옵니다.

  22. · APIService

    Hosted Computer Agent 경로 및 그 경로 만 전달

    /api/hosted-computers/agent/** -> Compute서비스 Hosted Computer의 네트워크 정책은 클러스터를 완전히 파괴합니다 - 데이터베이스 없음, 서비스 없음, 심지어 클러스터 DNS - 그래서 열렬한의 가상 머신을위한 유일한 방법은 Kamo에게 아무것도 인터넷에 밖으로 그리고 api.<domain>를 통해 다른 클라이언트와 같이. 컴퓨터에 대한 다른 모든 것은 그것에 밀어; 이것은 단일 인바운드 경로입니다. NARROWNESS는 포인트입니다. /api/hosted-computers/의 밑에 그것의 주사는 내부 관리 API입니다: 컴퓨터를 할당하고, 1개를 삭제하고, 다른 tenant의 수용량을 읽으십시오. 이 출입구 SecurityConfig는 완전히 논평했습니다, 그래서 앞으로 경로는 대중적이고 상류 서비스는 소유합니다 auth - 와일드 카드는 여기에 인터넷에 VM-creation API를 게시 할 것입니다. 그것은 같은 실수 /api/bulktext/inbound/**는 피하기 위하여 존재하고, 대리인 표면은 /agent의 아이를 했습니다 관리 경로의 sibling 보다는 오히려. forwardWebhook 보다는 오히려: 운반대 webhook와는 달리, 제3자 서명은 위에 없습니다 원시 바이트 및 자격은 일반 권한입니다 : Bearer 헤더 - per-computer secret 회전 ComputeService가 그 컴퓨터에 대해 확인하는 모든 Wake에. endpoint는 쓰기 전용 telemetry입니다. 그의 응답은 조직에 대해 아무것도하지 않습니다, 그래서 10대의 자신의 데스크탑에서 상승 바탕 화면의 저장 그림과 다른 아무것도 게시 할 수있는 능력을 구입.

  23. · kamo-shared-library

    조직 전체보고 그래프에 대한 하나의 쿼리

    findMemberAndManagerIds는 1개의 조직에 있는 각 (memberId, managerId) 가장자리를 반환합니다, 주인을 위한 컴퓨터의 ACCESS SUBORDINATE COMPUTERS right — 회원이 아닌 전체 하위 트리에 도달 그들의 직접적인 보고 보다는. 대안은 findDirectReportMemberIds walked level by level 입니다. nav 메뉴는 각 페이지 부하에 표시되며 깊이는 고객의 org 차트의 속성입니다. 이 코드 제어. 결의된 subtree 보다는 오히려 EDGES를, traversal 주기에 대하여 감시하기 위하여 가지고 있기 때문에 돌려보냅니다: managerId는 회원님의 프로필에 대한 자유형 참조이므로 유효 트리가 아니라 B에 대한보고 A에 대한 B 보고서는 한 번의 클릭 또는 한 개의 재구성을 멀리하고 반복적인 쿼리는 반환되지 않습니다. 콜러는 방문한 세트를 통해 이 빵을 걷습니다. 필터 미러 findDirectReportMemberIds 정확하게, tm.user에 명시된 LEFT JOIN을 포함 — implicit 경로 가입은 JPQL에 가입하고 사용자가 행하는 모든 보고서를 자동으로 삭제합니다. 누락 된, 그 방법은 자신의 코멘트 레코드. libraryQueryParseTest에 의해 검증, 이는 실제 기업의 라이브러리에서 모든 @Query를 번역 맵핑. 즉, Spring Data는 저장소 bean을 구축 할 때 annotated 쿼리를 검증합니다. 그래서 나쁜 경로 컴파일, CI를 통과, 배, 그리고 그 때 모든 시작에서 consuming 서비스를 중지.

  24. · kamo-internal

    오래된 메시지의 소셜 inbox의 인용은 카드로 저자 이름을 붙입니다

    견적은 이제 서버 (@kamo/chat-core's Quote.senderMemberId)에서 저자를 취합니다. mediaservice ceee73e 이후 소셜 컨택의 ID가 저장됩니다. 연결 소유자 및 소유자 이름에 사용되는 인용. 그래서 메시지의 인용에 rep's 이름 로드 된 페이지보다 오래된 카드가 이미 한로드 된 것과 같이 열립니다. 적재된 접촉 메시지 여기에 거부되며, 이전 서버가 말한다.

  25. · kamo-internal

    카드는 회원에게 회원 ID를 보여줍니다

    HR 및 지원은 회원 카드가 대체되는 HR rosters의 도구 팁을 읽습니다. (카드가 열리면 툴팁 sat). 이제 카드의 세부 사항은 회원 ID 행을 동일하게 수행합니다. 연락처 값으로 복사 버튼, 회원 프로필을 열 수있는 시청자 - 권리 회원, 신, 회원을 관리합니다. 다른 사람은 id가 없습니다.

  26. · kamo-shared-library

    앱, 3권, 계층/국가 및 단체

    ServiceType.HOSTED COMPUTERS at id 37, COMPLETED보다 테스트. 단계는 나르는 무게입니다 AppCatalogService는 `stage == COMPLETED`로 `available`를 해결합니다. 그리고 unavailable app는 FeatureController의 자동 감독 반복에 의해 건너집니다. 다른 모든 완료 앱은 모든 25 조직에 전환하여 배송합니다. 이 한 손으로 가상 머신 두 개의 노드 클러스터에 실제 RAM을 들고, 그래서 그것은 연산자에 의해 조직 당 부여해야 수용량에 보기. 아무것도 잃지 않습니다 - 플랫폼 앱 & 기능 화면은 정확하게 존재 앱을 독립적으로 배포합니다. 그래서 행은 "Not Available"에서 기다리고 있습니다. 326-328의 3권은 320-322가 아닙니다. 지역 체크 아웃은 30의 커밋이었고 320은 MANAGE 이메일 OPT OUTS. 그 파일에 IDS를 읽으십시오, 선 순서가 결코 — 318-325는 선의 수백을 앉습니다 마지막으로 보이는 상수 위에. 모든 세는 뿌리이며 아무도 다른 어린이입니다, 오히려 기록의 결정 현재 위치 MANAGE HOSTED COMPUTERS 게이트 설정 섹션; 두 ACCESS 권한 게이트 WHOSE 컴퓨터는 회원의 nav 메뉴에 나타납니다. MANAGE의 밑에 부모는 비싼에서 잘못될 것입니다 방향 - 모든 기계를 열 필요가있는 IT 리드는 프로비저닝 화면을 유지하고, 관리자는 팀의 컴퓨터의보기를 부여하여 크기를 조정할 수 있습니다. 네이터 게이트 회원의 OWN 컴퓨터 : 컴퓨터가 제공 할 수 있기 때문에 모든 것에 맞지 않습니다. 누군가에게 도달 할 수 없습니다. HostedComputerTier 및 HostedComputerState persist 로 NAME. 이 테이블은 새로운, 그래서 아무것도 없다 Reorder Risk AssocType 및 ServiceType을 상속하는 이유는 다음과 같습니다. 계층의 두 파생는 로드 베어링이며 둘 다 실패하지 않고: - 최소DiskGb()는 게스트 메모리 + 25입니다. 램을 자신의 스왑 파일로 작성하여 컴퓨터의 수면, 그래서 이미지를 위한 방이 없는 디스크는 결코 잠들지 않는 컴퓨터를 일으킵니다 — 또는 부분 쓰기 회원의 세션을 깨끗하게 이미지와 부츠. 아무 것도보고, 그래서 바닥은 제안보다 오히려 시행. - requestMib()는 데스크톱 1에서 ~324 MiB에 측정된 KubeVirt의 발사기 오버헤드를 추가하고, 400. 수용량은 POD 요구에 대하여 비교해야 합니다: 체크 그 omits는 컴퓨터 적합이라고 말합니다 그리고 그 pod Pending indefinitely를 나타낸다. 나타났고 회원이 볼 수 없습니다. ****************는 어떤 수용량 계획 subtracts이고, ASLEEP는 deliberately 아닙니다 그것은 — 그 전체 기능입니다. KubeVirt의 자신의 일시 중지 " CPU를 해제하지 않고 프로세스를 동결 자원, 그러나 기억은 할당된다, 그래서 잠들다 여기 suspend-to-disk를 의미: VMI와 그 launcher pod는 사라지고 메모리 요청은 스케줄러로 돌아갑니다. 스토리지는 세 번째 의미와 불린이 없는 한 쌍입니다. 현재 디스크의 천장은 회원 경험으로 "unlimited"; absent 천장은 디스크가 성장하지 않습니다. 없음 `unlimited` flag가 천장이 없는 flag가 클러스터를 조용히 먹는 구성이기 때문에 - 규칙 StorageAutoExpandSweep은 이미 파일에 대해 시행합니다. PhiModule.HOSTED COMPUTERS는 BLOCKED NO BAA이며, 그 이유는 다음과 같은 것들의 속성입니다. 논문의 간격. 다른 모든 모듈은 알려진 데이터 흐름으로 알려진 표면입니다. 이것은 데스크탑입니다. 누군가가 어떤 것도 설치하고 붙여 넣을 수 있습니다. Kamo는 재고가없는 화면보기. 고립은 진짜로 강하고 BAA가 요구하는 것은 아닙니다. 또한 지도 KAMO UNIVERSE, CHESS 및 HOLDEM, PhiModule없이 배송 및 왼쪽 PhiServiceType매핑 빨간 시험. 내 말은 아니지만, 테스트는 발견 한 첫 번째 간격에 실패합니다. HOSTED COMPUTERS는 모두 맵핑 할 수 없습니다. 그들은 게임, 자신의 부모가 걸립니다. Suite: 3026 테스트, 나머지 4개의 실패는 동일한 것 pristine 근원/주요 생성입니다 — 공지사항 테스트 (PlatformRightType ordinal, 여기 터치), 두 개의 GROWTH REQUEST IMAGE 저장 도메인 테스트 및 SystemBugCountContractTest의 NoSuchMethod. 깨끗하게 아무것도를 바꾸기 전에 근원/주요에 worktree. 테이블은 ***********에 있으며 라이브 데이터베이스에 적용되었습니다.

  27. · kamo-internal

    이전 메시지에 대한 답변은 카드와 함께 저자

    @kamo/chat-core를 0.1.19로 이동하여 응답 인용문은 senderMemberId를 나릅니다: 서버의 parentSenderMemberId는 web-chat 방문자에 대해 한 번 전송할 때, 단어가 저장됩니다. 시스템 회원), 다른 사람 로드 된 부모의 회원. 전에 콘솔은 저자를 읽을 수 있습니다. 로드 된 부모, 그래서로드 된 페이지보다 오래된 메시지에 대한 대답은 일반 이름을 인용. - Colleague chats (MessageList)는 따옴표의 저자를 가지고 있습니다. - 표는 규칙을 적용합니다 거품의 얼굴은 그것에 따릅니다 — 구경꾼의 자신의 측, 한 번 측 is known (isOwnSide) - 이제 언로드 된 부모도 보유합니다. - 사회 상자는 자신의 규칙을 유지 (단체의 reps 중 하나에서 부모를로드) : 서버는 소셜 연락처의 ID를 보류하지 않습니다. 연락처는 시스템 회원의 밑에 저장됩니다. package-lock.json: 채팅 핵심 항목의 버전, 해결 및 무결성 (checked against the 다운로드 tarball); 그것의 핀 의존성 (@kamo/net 0.1.2, @kamo/realtime 0.1.1)는 변하지 않습니다.

  28. · KlusterServices

    Per-org VM 섬, suspend-to-disk, 화이트 라벨 골든 이미지

    구성원의 Linux 컴퓨터, 조직의 네임스페이스에서 KubeVirt VM으로 실행 본문 바로가기 바탕 화면 / 모든 방법에서 분리 : 그것은 하나의 공유 플랫폼 관리자를 위한 기계, pod 네트워크에 deliberately 그래서 그것은 데이터베이스에 도달 할 수 있습니다, NATS 그리고 MinIO. 이것은 재산을 정의하는 tenant 기계는 반대입니다. 세 가지 사실이 모양, 그리고 각 피임약 명백한 독서: - VM을 해방하는 것은 아무것도 없다. KubeVirt의 문서 : CPU를 해제하지 않고 "freezes the process 자원, 그러나 기억은 할당됩니다. 그래서 잠자는 것은 suspend-to-DISK입니다 — 손님은 그립니다 자신의 스왑 및 전원으로 메모리, 발사기 팟 종료, 그리고 메모리 요청이 간다 스케줄러로 돌아가기. runStrategy RerunOnFailure가 필요한 경우, 게스트가 종료되도록 문서화 런치하지 않고 자라. 항상 수면 아래는 초에 undone이 될 것입니다. - 헤드룸은 스케줄러 REQUESTS, 물리적 RAM이 없습니다. 적합하지 않는 launcher pod 결코 나타나지 않고 아무것도 로그하지 않는 컴퓨터와 정확히 보이는 영원히 종료. 그래서 깨어난 것은 시도되기 전에 거부되며, refusal 이름은 번호입니다. - Cilium 예약된 식별은 CIDR 규칙에 의해 일치할 수 없습니다. ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** toEntities [host, remote-node]가 ALLOW에 추가 될 수 있는 outage에서 기록 노드. 여기 같은 사실은 의향이다: 규칙은 그들과 과 과 과 과 과실. 스낵 바 egressDenies 그들 그래서 나중에 편집 할 수 없습니다 — Cilium deny beats 모든 허용, 어떤 파일에서. 고립은 오히려 검토 보다는 asserted. canary/verify-isolation.sh는 pod를 동일한 나르는 것을 실행합니다 kamo.io/hc-org 상표 발사기 포드는, 그래서 동일한 ID 및 동일한 정책을 얻고, 프로브 양쪽 방향: 노드, kube-apiserver, YugabyteDB, NATS, MinIO, kube-dns, metadata 주소 및 또 다른 org의 컴퓨터는 모두 허용되어야한다; 인터넷과 같은 컴퓨터 일하다. 그것은 또한보고, asserting없이, 업스트림 라우터 hairpins - api.kamocrm.com Traefik의 LoadBalancer IP가 k1m1's own 192.168.4.22 인 경우 47.181.8.84로 해결됩니다. heartbeat는 건축에 의해 제일 노력이고 아무것도 그것에 달려 있습니다. White-labeling needs no distro rebuild, 표면이 먼저 검사 된 표면. 모든 눈에 Xubuntu identity는 구성 또는 이동식 패키지입니다. strip-distro-identity.sh 제거 그들과 핀 그래서 apt는 복원 할 수 없습니다 — 그림자 파일이 다음 업그레이드에 다시 와서 실패는 다른 사람의 로고 주를 나중에 본 tenant. 황금 이미지는 로고 없이 배와 색깔 없음 모든; 대리인은 Behavior & Labeling에서 org 당 그(것)들을 그(것)들을 그(것)들을 그(것)들을 페인트합니다, KamoCRM의 이미지를 볼 수 없습니다. 에이전트는 stdlib-only이며, 호출 할 수 없습니다, 네트워크 정책은 아무도가 없다는 것을 의미합니다. 전화. Config는 안으로 밀어, 수면 결정은 국부적으로입니다 그래서 그것은 Kamo outage, 및 hibernation를 생존합니다 readiness는 확인됩니다 (스왑 크기, 재시작= 및 재시작 offset=, /sys/power/state의 디스크) 전에 idle timer는 armed — misconfigured hibernate는 올리지 않습니다, 그것은 청소하고 세션을 잃습니다. 26 시험은 arithmetic 플러스 브랜딩 입력 검증을 커버. ****************는 손에 의해 적용됩니다 (ddl-auto는 아무도 및 InitializerService는 아닙니다 배포 됨) 그리고, 라이브 데이터베이스에 대한 소유자. 그것은 기존의 조리법을 보조해야합니다. 언급하지 않습니다 : NEW 스키마에는 ACL이 없습니다, 그래서 테이블을 왼쪽으로 커버하는 글로벌 기본 특전 kamo app 와 "permission denied for schema hosting computer" 에 첫 삽입. 확인 된 후. kubectl apply --dry-run=server와 검증된 모든 징후.

  29. · kamo-shared-library

    콜러가 혼자 Img id에 의해 MediaObjImg을 해결하자

    DocsService의 이미징 엔드포인트(download/stream/list/delete)는 Img의 ID를 알고 있습니다. 하지만 MediaObj를 붙 잡는 이유가 없습니다. - 그들이 필요로 할 때까지 그것은에 채팅 배치 revoke 플래그를 존중 (MediaObjImg.isAccessRevoked) 채팅 / 미디어 스키마를 소유하지 않고 스스로. MediaObjImgRepository 전용 다른 방향으로 지원 ( obj id에 의해, 주문, 한 메시지 렌더링 첨부파일). findByImg Id는 격차를 닫습니다; 독특하기 때문에 복수 constraint는 (OBJ ID, IMG ID), 혼자 IMG ID에 아닙니다. 새로운 테스트: MediaObjImgRepositoryQueryTest, 파생된 쿼리의 핀 서명 the way *********** 이미 그에 대해 sibling 저장소 (이 라이브러리에는 runnable @DataJpaTest/H2 하네스가 없습니다. 파생된 no-@Query 방법은 운동 보다 반사에 의해 asserted. 풀 스위트: 3013 테스트, 4 사전 제작 실패 + 1 사전 제작 오류, 모든 이 변화의 앞에 청결한 근원/주요 체크 아웃에 현재를 확인하거든 unrelated to it (PhiServiceTypeMappingTest: ServiceType.KAMO UNIVERSE에는 없습니다 PhiModule; **************** ****************는 StorageDomain에 의해 불평; ReportVisibilityTest: off-by-one 보고서 수; SystemBugCountContractTest: SystemBugRepository.findVisible 서명 드리프트).

  30. · DaemonService

    리드 ledgers를 매 30 s를 펼치고 밤을 회귀합니다. 작업 트리거는 클러스터 비밀을 필요로합니다

    납 ledgers (securityservice create lead ledgers.sql, 적용 2026-09-22)는 COUNT (*)를 위에 대체합니다 796k-lead 풀과 Lead credits를 통해 총을 유지하고 append-only 저널을 행합니다. 트리거 쓰기. 이 서비스는 그(것)들을 접히고 정직하게 지킵니다: - LeadLedgerFoldJob (모든 30 s) : 배치 당 하나의 문은 저널 행을 삭제하고 그들에게 추가합니다. 합계, 그래서 독자는 전에 또는 후에, 결코 반을 봅니다. 독자는 이미 저널을 추가합니다. 총, 그래서 놓은 진드기 비용 읽기 시간, 결코 정확하지. 틱당 최대 40개의 배치가 5,000개입니다. - LeadLedgerReconcileJob (03:40 밤) : 각 org의 풀과 모든 회원의 사용 가능한 크레딧을 재개 행에서 그들과 비교하여 총 + 한 문장의 저널 (하나의 스냅 샷). 차이점은 'RECONCILE' deltas로 APPENDED, 전체를 작성하지 않았으므로, 리사이클은 트리거 또는 경주할 수 없습니다. 겹. 그것은 또한 어떤 저널 트리거는 누락 또는 비활성화. 건강한 체계에서 그것은 찾아냅니다 아무것도, 그래서 모든 보정은 WARN에 기록된다. 둘 다 @DisallowConcurrentExecution이고 40001 (각은 원자입니다, 그래서 retry는 더블 카운트 할 수 없습니다. SQL은 이 발송하기 전에 YugabyteDB에 대해 재생되었습니다 (temp 테이블: 방아쇠, 읽음, 겹 및 recount, 60 체크). JobTriggerController: POST /api/daemon/trigger/{job} 및 GET /status는 누구에게 응답했습니다. 보안Config 모든 것을 허용하고 daemon-route IngressRoute는 공공 웹 보안 항목에이 서비스를 넣어 (Host daemon.internal.kamocrm.com; 200 익명으로 프로브 됨), 그래서 모든 작업 - 이제 리카트 포함 — 인터넷에서 시작 될 수 있습니다, 많은 overlapping 복사 석영 수영장 보유로. 더 알아보기 X-Internal-Auth = mlos.internal-auth-secret (constant-time)을 필요로 하고 그 비밀이 있을 때 모두를 거부합니다. 설정되지 않습니다. 플랫폼에서 아무것도이 엔드포인트를 호출; 연산자는 여전히 클러스터 내부에서 할 수 있습니다. 테스트: LeadLedgerMaintenanceTest (겹 반복 및 모자, 회신 보고, 누락된 방아쇠, 재try 규칙 및 라이브 트래픽 옆에 안전한 SQL 모양), JobTriggerControllerAuthTest.

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

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

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