처리 순서와 실패 분기
시스템
단계를 고르면 앞뒤 연결이 드러납니다.
동작을 살펴본 뒤, 그 구조를 바꾼 판단까지.
벡터를 좌표로, 좌표를 브라우저가 읽을 타일로
기존 임베딩을 청크로 투영하고, 상세 타일에서 상위 타일을 유도합니다. 계산 표본·화면에 표시한 점·원본 규모를 구분합니다.
단계를 선택하면 바로 연결된 앞뒤 경로가 드러납니다.
배치 투영 · 외부 기법을 조합한 로컬 처리
저장·결합 · 재실행은 완료 조각을 건너뛴다
타일 생성·조회 · 표본 shown과 원래 영역 total을 따로 보관
키보드: Tab으로 단계에 진입 · 방향키로 항목 이동 · Home / End로 처음과 마지막
다른 단계 펼쳐 읽기
기존 임베딩외부 구성요소
- 공개 벡터 조각
- 새 모델 학습이 아님
이 단계에서 이어지는 연결
PCA·정규화처리
- 행 배치로 변환
- 64차원으로 축소
이 단계로 들어오는 연결
이 단계에서 이어지는 연결
앵커 후보 찾기처리
- GPU 청크별 top-3
- 후보 합쳐 다시 top-3
이 단계로 들어오는 연결
이 단계에서 이어지는 연결
2D 좌표 배치처리
- 역거리 가중 평균
- 거리 비례 지터 추가
이 단계로 들어오는 연결
이 단계에서 이어지는 연결
임시 파일 저장저장·상태
- 조각별 Parquet
- 완료 후 파일명 교체
이 단계로 들어오는 연결
이 단계에서 이어지는 연결
좌표·메타 결합처리
- work_id로 연결
- 연도·분야·인용 정보
이 단계로 들어오는 연결
이 단계에서 이어지는 연결
atlas 버킷저장·상태
- 10년 구간별 Parquet
- 필요한 컬럼·연도 선택
이 단계로 들어오는 연결
이 단계에서 이어지는 연결
z7 정렬 스트림처리
- 타일 좌표로 외부 정렬
- 배치 끝 같은 타일 이월
이 단계로 들어오는 연결
이 단계에서 이어지는 연결
고정 순위 표본처리
- ID 해시로 K개 선택
- 해시 오름차순 저장
이 단계로 들어오는 연결
이 단계에서 이어지는 연결
상위 타일 유도처리
- 자식 최대 4개 병합
- 같은 순위로 다시 K개
이 단계로 들어오는 연결
이 단계에서 이어지는 연결
bin·presence저장·상태
- 점 배열 + 존재 비트맵
- 원래 영역 총량도 전파
이 단계로 들어오는 연결
이 단계에서 이어지는 연결
가시 타일 요청처리
- 확대 수준·화면 영역
- 해당 타일을 읽기
이 단계로 들어오는 연결
이 단계에서 이어지는 연결
필터·탐색처리
- 분야·연도·논문 선택
- 원본 전량 동시 표시 X
이 단계로 들어오는 연결
실패 집계·종료실패·제한
- 다음 실행에서 재처리
- 완료 파일은 건너뜀
이 단계로 들어오는 연결
판정식과 검증 경계 읽기
판정·계산식
wᵢ = (dᵢ + 10⁻⁶)⁻¹ / Σⱼ(dⱼ + 10⁻⁶)⁻¹ p = Σᵢwᵢyᵢ + σ ε 가까운 앵커 3개 · dᵢ=1−cos 유사도, yᵢ=앵커 2D 좌표, σ=clip(0.5×평균 d, 0.0005, 0.01), ε=정규 잡음. 코드의 배치식이며 독자 알고리즘 고안 주장이 아님.
확인한 내용과 남은 경계
- 자식 타일에서 부모를 만드는 이유
- 레벨마다 큰 SQL 윈도를 만들다 메모리 한계에 부딪혔습니다. 고정 순위·동일 K라면 부모의 K개는 자식 표본 합집합에서 다시 고를 수 있어 계산 순서를 바꿨습니다.
- 좌표 오차만으로는 판단하지 않았다
- 앵커 벡터·좌표의 ID 경계와 조각별 완료 파일을 확인했습니다. 타일의 표본 수와 원래 점 수도 구분했습니다. 투영 후보는 실제 지도에서 군집이 구별되는지도 비교했습니다.
- 현재 도식에 포함한 범위
- P3 확정 커밋의 배치·탐색 구조이며 진행 중 P4 화면은 제외했습니다. 원본 좌표행 수를 브라우저 동시 렌더 수나 서비스 사용량으로 제시하지 않습니다.
이 구조의 한계라이브러리·기존 임베딩을 활용한 비상용 파이프라인입니다. 가중 배치가 모든 논문의 의미적 거리를 보존한다는 보장은 없습니다.
Graphify로 코드 구조를 탐색하고, 실제 소스와 대조해 처리 순서와 실패 분기를 편집했습니다. 전체 런타임을 자동 검증한 결과는 아닙니다.
세 프로젝트의 전체 구조를 글로 읽기
Noosphere
벡터를 좌표로, 좌표를 브라우저가 읽을 타일로
기존 임베딩을 청크로 투영하고, 상세 타일에서 상위 타일을 유도합니다. 계산 표본·화면에 표시한 점·원본 규모를 구분합니다.
기존 임베딩
공개 벡터 조각 · 새 모델 학습이 아님
- PCA·정규화 · 처리·명시된 호출
PCA·정규화
행 배치로 변환 · 64차원으로 축소
- 앵커 후보 찾기 · 처리·명시된 호출
앵커 후보 찾기
GPU 청크별 top-3 · 후보 합쳐 다시 top-3
- 2D 좌표 배치 · 처리·명시된 호출
2D 좌표 배치
역거리 가중 평균 · 거리 비례 지터 추가
- 임시 파일 저장 · 처리·명시된 호출
임시 파일 저장
조각별 Parquet · 완료 후 파일명 교체
- 좌표·메타 결합 · 데이터 읽기·참조
- 실패 집계·종료 · 조각 처리 실패
좌표·메타 결합
work_id로 연결 · 연도·분야·인용 정보
- atlas 버킷 · 처리·명시된 호출
atlas 버킷
10년 구간별 Parquet · 필요한 컬럼·연도 선택
- z7 정렬 스트림 · 데이터 읽기·참조
z7 정렬 스트림
타일 좌표로 외부 정렬 · 배치 끝 같은 타일 이월
- 고정 순위 표본 · 처리·명시된 호출
고정 순위 표본
ID 해시로 K개 선택 · 해시 오름차순 저장
- 상위 타일 유도 · 처리·명시된 호출
상위 타일 유도
자식 최대 4개 병합 · 같은 순위로 다시 K개
- bin·presence · 처리·명시된 호출
bin·presence
점 배열 + 존재 비트맵 · 원래 영역 총량도 전파
- 가시 타일 요청 · 데이터 읽기·참조
가시 타일 요청
확대 수준·화면 영역 · 해당 타일을 읽기
- 필터·탐색 · 처리·명시된 호출
필터·탐색
분야·연도·논문 선택 · 원본 전량 동시 표시 X
실패 집계·종료
다음 실행에서 재처리 · 완료 파일은 건너뜀
wᵢ = (dᵢ + 10⁻⁶)⁻¹ / Σⱼ(dⱼ + 10⁻⁶)⁻¹ p = Σᵢwᵢyᵢ + σ ε 가까운 앵커 3개 · dᵢ=1−cos 유사도, yᵢ=앵커 2D 좌표, σ=clip(0.5×평균 d, 0.0005, 0.01), ε=정규 잡음. 코드의 배치식이며 독자 알고리즘 고안 주장이 아님.
- 자식 타일에서 부모를 만드는 이유
- 레벨마다 큰 SQL 윈도를 만들다 메모리 한계에 부딪혔습니다. 고정 순위·동일 K라면 부모의 K개는 자식 표본 합집합에서 다시 고를 수 있어 계산 순서를 바꿨습니다.
- 좌표 오차만으로는 판단하지 않았다
- 앵커 벡터·좌표의 ID 경계와 조각별 완료 파일을 확인했습니다. 타일의 표본 수와 원래 점 수도 구분했습니다. 투영 후보는 실제 지도에서 군집이 구별되는지도 비교했습니다.
- 현재 도식에 포함한 범위
- P3 확정 커밋의 배치·탐색 구조이며 진행 중 P4 화면은 제외했습니다. 원본 좌표행 수를 브라우저 동시 렌더 수나 서비스 사용량으로 제시하지 않습니다.
이 구조의 한계라이브러리·기존 임베딩을 활용한 비상용 파이프라인입니다. 가중 배치가 모든 논문의 의미적 거리를 보존한다는 보장은 없습니다.
Noosphere 문제 해결 과정 읽기안심사인
서명 완료와 PDF 봉인은 서로 다른 상태다
입력 저장·서명 완료·PDF 봉인을 구분하고, 넘친 입력은 DB의 최종값을 조회해 별지로 연결합니다.
서명 세션 확인
수신자·만료 재검사 · 인증 방식별 증거
- 임시 입력 저장 · 처리·명시된 호출
임시 입력 저장
field_draft에 저장 · 세션·필드 소유 확인
- 서명 최종 확정 · 데이터 읽기·참조
서명 최종 확정
필수값 검사·값 승격 · 세션 소비·감사 기록
- 전체 서명 판정 · 처리·명시된 호출
전체 서명 판정
모든 서명자가 완료? · 미완료면 대기·다음 차수
- completed · 처리·명시된 호출
completed
봉투 완료·작업 생성 · PDF 봉인 완료와 다름
- 봉인 작업 점유 · 비동기·별도 요청
봉인 작업 점유
워커가 처리할 작업 점유 · lease·attempt 확인
- 최종 데이터 조회 · 처리·명시된 호출
최종 데이터 조회
원문값·label·좌표 · 짧은 DB 트랜잭션
- 원본 PDF 확인 · 처리·명시된 호출
원본 PDF 확인
저장소 읽기·해시 대조 · DB 잠금 밖 외부 I/O
- 본문·별지 합성 · 처리·명시된 호출
본문·별지 합성
넘친 필드의 전문 연결 · 100쪽 상한·잘림 안내
- PDF 서명 생성 · 처리·명시된 호출
PDF 서명 생성
최종 바이트·해시 생성 · PDF 내부 TSA는 조건부
- PDF 저장 · 처리·명시된 호출
PDF 저장
주 TSA 요청 전에 put · 저장소와 DB는 별개
- TSA 앵커 · 처리·명시된 호출
TSA 앵커
봉인 전 헤드+PDF 해시 · 외부 응답 후 DB 확정
- sealed 확정 · 처리·명시된 호출
- TSA 일시 지연 · 일시 오류
sealed 확정
lease 대조·교부 예약 · TSA·감사 함께 기록
- 파일 자체 검증 · 파일을 업로드하면
TSA 일시 지연
재시도 시각으로 미룸 · completed 상태로 대기
파일 자체 검증
업로드 PDF만 검증 · 계약 DB·감사 조회 없음
preimage = 봉인 전 head ∥ SHA256(최종 PDF) · messageImprint = SHA256(preimage)
- 봉인본이 아직 없는 완료 상태
- 전체 제출이 끝나면 completed 변경과 봉인 작업 생성을 같은 DB 트랜잭션으로 처리합니다. 워커의 PDF·TSA 처리가 끝나 sealed로 확정되기 전에는 봉인본이 없을 수 있습니다.
- 렌더 함수 밖에서 빠진 필드 이름
- 렌더 테스트만으로는 조회에서 label이 빠지는 문제를 잡지 못했습니다. DB의 최종값·이름이 별지까지 전달되는지, 상한을 넘으면 잘림을 안내하는지 연결해서 확인했습니다.
- 외부 요청과 DB 확정의 간격
- 교부 예약은 실제 수신과 다릅니다. TSA 일시 장애는 시도를 차감하지 않고 미룹니다. DB 확정 뒤 저장소의 확정본을 다시 쓰지만, DB·저장소·TSA가 함께 롤백되지는 않습니다.
이 구조의 한계주 TSA 앵커 뒤 envelope_sealed 감사가 추가됩니다. 최종 감사 헤드 앵커 완료나 특정 PAdES 등급을 주장하지 않습니다.
안심사인 문제 해결 과정 읽기에브리톡
필드명 변환부터 토큰 저장까지, 실제 요청이 지나는 순서
선택 기기 정보가 틀려도 필수 토큰 등록을 살리고, 실제 HTTP에서 바뀐 필드명을 저장 인자까지 연결합니다.
등록 요청
인증된 현재 사용자 · 토큰·타입 + 선택정보
- 전역 키 변환 · 처리·명시된 호출
전역 키 변환
snake → camel · 요청 body 교체
- 선택정보 정리 · 처리·명시된 호출
선택정보 정리
미허용 키·형식 제거 · 필수값 검증은 유지
- DTO 검증 · 처리·명시된 호출
DTO 검증
변환·정규화 후 검증 · 위반이면 400
- 등록 인자 결합 · 처리·명시된 호출
- 입력 거절 · 실패·제한 분기
등록 인자 결합
현재 사용자 ID만 사용 · 토큰·타입·기기·버전
- 등록 서비스 · 처리·명시된 호출
등록 서비스
DI 주입 시 아래 경로 · 미주입은 별도 폴백
- 트랜잭션·잠금 · 처리·명시된 호출
트랜잭션·잠금
DB 트랜잭션 시작 · 동일 토큰 등록 직렬화
- 소유자 전환 · 처리·명시된 호출
- DB 작업 실패 · 실패·제한 분기
소유자 전환
타 사용자 행 비활성 · 현재 사용자 행 저장
- 옛 토큰 정리 · 처리·명시된 호출
- DB 작업 실패 · 실패·제한 분기
옛 토큰 정리
활성 행의 판정 결과만 · 비활성으로 갱신
- 커밋·반환 · 처리·명시된 호출
- DB 작업 실패 · 실패·제한 분기
커밋·반환
DB 커밋 성공 · 등록 커넥션 반납
- 후행 미러 · 처리·명시된 호출
- DB 작업 실패 · 실패·제한 분기
후행 미러
DB 현재 소유자 재조회 · 오류는 기록하고 진행
- 저장 결과 반환 · 처리·명시된 호출
저장 결과 반환
등록 결과 반환 · 실기기 수신과는 별개
DB 작업 실패
try 안 실패: rollback · 예외 전파·미러 미실행
입력 거절
필수값·타입·길이 위반 · DTO 단계의 400
- 어떤 값은 버리고 어떤 값은 자르나
- camelCase는 구버전 별칭이 아니라 전역 변환 뒤의 실제 이름입니다. 잘못된 기기 식별자는 버리고, 진단용 버전 문자열만 자릅니다. 선택 정보가 필수 토큰을 막지 않게 했습니다.
- 파이프라인 시험이 확인한 범위
- ProbeController로 변환·전처리·DTO를 연결했습니다. 실제 인증·PostgreSQL·Firestore는 포함하지 않습니다. 인자 전달과 커넥션 반환은 별도 시험으로 확인했습니다.
- 등록 성공과 알림 도착은 별개
- 미러는 커밋·커넥션 반환 뒤 시도하며 실패해도 PostgreSQL을 되돌리지 않습니다. 자동 복구·실기기 수신은 별개입니다. 연결·트랜잭션 시작은 표시된 try 실패 처리 앞에 있습니다.
이 구조의 한계토큰 저장 성공은 실기기 알림 도착이나 PostgreSQL–Firestore의 원자적 동시 갱신을 뜻하지 않습니다.
에브리톡 문제 해결 과정 읽기결과가 달라지는 지점
같은 문장, 다음 요청, 두 가지 투영.
직접 바꿔 보며 확인하는 세 장면.


