Add esign repos to JPA repository scan so ESignTemplateRepository bean is found
DocsService was crashing on startup because ESignTemplateRepository lives in com.kamo.z.shared.esign.repos which wasn't included in the @EnableJpaRepositories s...
현재 UTC 날짜 대신 24시간 윈도우 사용
서버는 UTC에서 실행되므로 US timezones toISOString()의 밤에는 반환합니다. 내일의 날짜 및 커밋 일치. 대신 24시간 롤링 창을 사용합니다.
Changelog API 경로에 힘 역학은 stale 날짜 캐싱을 방지하기 위해
Next.js는 빌드 시간에이 GET 경로 핸들러를 캐싱하고, 새로운 날짜 ()를 빌드 날짜에 동결하여 오늘의 변경 로그 수를 업데이트하지 않았습니다.
SystemDocsOnly flag for System Docs 탭을 사용하여 Original Docs의 모든 문서를 표시합니다
Original Docs 탭은 이제이 org/assocType에 대한 모든 문서를 보여줍니다. assocObjectId에 의해 필터링. System Docs 탭은 systemDocsOnly를 보냅니다: true null/empty assocObjectId를 가진 docs만 가져옵니다.
Use **************** for hasDesignVersion, add systemDocsOnly filter
hasDesignVersion now checks if an esign template exists with current_design_version > 0, instead of using isSigTemplate which is true for all uploads through th...
기본값 assocObjectId to current member ID for proper doc 탭 필터링
Oid URL param이 제공되지 않을 때, Original Docs 및 수정된 Docs 탭 현재 회원 ID에 의해 쿼리, System Docs 쿼리와 org-wide 문서를 위한 공백 assocObjectId.
Add @JsonIgnoreProperties to UploadTemplateRequest to prevent hash null on unknown fields
The frontend sends accessLevel, description, folderId, docTypeId in the metadata JSON. Jackson was failing to parse the entire metadata object when encountering...
유령의 정확한 시각 위치에 떨어졌다
Active.rect.current.translated (DragOverlay ghost's client rect) 대신 사용 번역된 ct과 일치하기 때문에, 필드는 이제 사용자를 정확하게 배치합니다. 출시되었습니다.
ForwardToApi()를 통해 모든 esig API 호출을 루트로 저장 실패를 수정합니다
모든 10 esig 경로 핸들러는 해결 ESIG SERVICE URL에 지적 비 유능한 kamowsesig-service 프록시에. 모든 핸들러를 교체 forwardToApi() 그래서 표준 API 게이트웨이를 통해 흐름 요청 (APIService → ESigService) OTK 인증...
Replace upsertSigners with full delete+insert to handle frontend temp UUIDs
The frontend assigns temporary crypto.randomUUID() values to newly-added signers before any backend call. The previous upsert-by-uid logic would throw 404 for t...
Correct 자전된 thumbnail 포지셔닝 및 회복 교체 변환
ThumbnailCanvas의 두 가지 버그 : 1. `height: \`${displayAspect * 100}%\``(ab-의 비율 높이 위치 요소 - 블록 높이가 제공 될 때 신뢰할 수없는 `aspectRatio: String(baseAspect)`를 가진 padding-top ...
Move scroll ownership from PdfCanvas to canvasContainerRef
PdfCanvas root Box previously had overflow-auto + h-full, making it its own scroll container. This meant: - scrollbarGutter: stable on canvasContainerRef had no...
Fit to Width calculates actual container width instead of resetting to zoom 1
Reads **************** (which accounts for the stable scrollbar gutter) and the page's natural width via **************** then computes fitZoom = (availableWidt...
Replace all hardcoded purple with var(--color-primary) on Settings & Signers page
Signers icon, icon background, count badge, Add Signer buttons, Add First Signer button, empty-state illustration tint, add-another hover, and the ALL_OF_TYPE s...
Remove fixed height and scroll bars from field properties panel
The panel had two vertical scrollbars: 1. DesignTab wrapper had height: 200 + overflowY: auto 2. FieldPropertiesPanel root had height: 200 + overflow: hidden, ...
PDF를 방지하기 위해 PDF dim 루프가 끝날 때까지 Defer setTotalPages
50 페이지 PDF에서 setTotalPages를 호출하십시오. getPage() 치수 루프 마운트 즉시 50 ThumbnailCanvas 구성 요소. 각은 PDF.js로 돌아갑니다 (서버 thumbnails는 템플릿에 생성되지 않습니다), 공유에서 50 동시 작업을 할당 PDF.js ...
Expand component scan and add full datasource/JPA/Redis/MinIO config
ConversionServiceApplication was only scanning com.kamo.ConversionService, missing all shared library beans (ImageService, MinIOStorageService, MemberRepository...
Add kamo-shared-library build stage to resolve missing dependency
The Dockerfile was trying to fetch kamo-shared-library from Maven Central, which doesn't exist there. Mirror the SecurityService pattern: clone the shared libra...
Thumbnail slivers를 겹쳐 쌓이는 페이지를 방지하고, PDF.js fallback를 가진 서버 측 엄밀을 추가하십시오
- flexShrink를 추가하십시오: PdfCanvas에 있는 0개에서 페이지 divs 그래서 페이지는 코드 란에서 압축하지 않습니다 - flexShrink를 추가하십시오: 같은 이유를 위한 PageThumbnailSidebar에 있는 엄밀한 품목에 0 - ThumbnailCanvas...
Eager PDF 렌더링, 자연 스케일 정상화, 수평 스크롤 없음
- PdfCanvas: eager 렌더링 모든 페이지와 IntersectionObserver를 대체합니다. 관찰자 기반 접근은 디자인 탭이 시작될 때 신뢰할 수 없었습니다. display:none - 브라우저는 재화 교차 이벤트를 믿을 수 없습니다. 디스플레이의 조상이 전환 할 때 : ...
삭제 제거아이 DOM 충돌 PDF thumbnail 렌더링
Container.innerHTML + appendChild 패턴을 ThumbnailCanvas로 교체하십시오. React-managed <canvas> ref로. 오래된 접근은 React-owned를 맑게 했습니다. DOM 노드가 직접 시도할 때 React reconciliation이...
핸들 적용 가능한PlanIds 및 적용 가능한BillingCycles 문자열 배열
이 필드는 string[]로 입력되지만 .split(",")가 호출되었습니다. TypeScript 빌드 실패 발생.
Add CockroachDB transaction retry for template init endpoint
CockroachDB serializable isolation can trigger RETRY_SERIALIZABLE on the read-then-write pattern in initTemplate. Retries up to 3 times with backoff when detect...
OTK auth에 프록시 경로를 재생, 사용되지 않은 esigProxy 헬퍼를 제거
OTK는 auth 메커니즘입니다 - 이전 세션 헤더 접근 설치된 보안 패턴을 우회. 이제 모든 esig 프록시 루트 사용 apiProxy.ts에서 generateOTK를 다시 생성합니다.
Correct OTK Redis key format and add imaging template list endpoint
OTK keys use OTK<id> and ***<id> (no colon) matching the Next.js proxy. Added POST /api/esig/templates/list to query imaging templates via shared library ImgRep...
ESigService 프록시 경로 대신 OTK 대신 직접 세션 헤더 사용
Read *** Next.js에서 Redis 세션과 orgId/memberId를 신뢰로 전달하십시오. 내부 K8s DNS를 통해 ESigService에 대한 헤더. OTK 의존성을 제거하십시오.
Replace OTK auth with trusted session headers for internal K8s calls
ESigService is internal — the Next.js backend reads the session from Redis and passes orgId/memberId/userId as X-Org-Id, X-Member-Id, X-User-Id headers. No OTK ...
Init endpoint를 사용하여 편집기로드에서 imgId에 의해 찾기 또는 생성 템플릿을 만듭니다
Create page는 URL에서 imgId를 전달합니다. 편집 페이지는 이제 호출 init endpoint를 찾아서 ESignTemplate를 만들고, 다음을 사용합니다 디자인 운영 및 버전 역사를 위한 UUID를 반환합니다.
Scan all shared library repository packages to resolve bean dependencies
ComponentScan picks up shared library services which depend on repos in donotmodify.dao.repos and commerce packages — must scan those too.
Remove .mvn/ copy from Dockerfile — directory does not exist in this project
접근 수준 API를 위한 backend와 frontend 사이에서 지도하는 정확한 분야 이름
Map backend securityLevelId→accessLevel, isOrganizationOwner→isOwner, API 경로의 memberType→isTeamMember. MANAGE MEMBER SECURITY 대신 EDIT MEMBER ACCESS LEVEL을 사용할 수...
구독 API를 사용할 때 static fallback을 추가하십시오
*********** 테이블은 아직 생산에 존재하지 않습니다, 그래서 API는 오류를 반환합니다. 하드코딩 및 계획 데이터로 돌아가기 그래서 제안 페이지는 백엔드 상태에 관계없이 작동합니다. 종료일을 4/20/20/2026로 설정합니다.
새로운 목록<String> 백엔드 응답 일치하기 위하여 ApiPromotion 유형을 새롭게 하십시오
적용 가능한PlanIds 및 적용 가능한BillingCycles는 이제 JSON 문자열이 아닌 배열입니다.
Extend 18DOFF promotion end date to 2026-12-31
The April 14 end date was causing the offer page to show as expired.
Validate Forgejo HMAC-SHA256 signature instead of plain secret header
Forgejo sends webhook secret as X-Gitea-Signature / X-Forgejo-Signature HMAC-SHA256 hash, not as a plain header value. Read body, verify HMAC, then forward to S...