K1m1 (clone+registry+kubeconfig from k1m1, 드롭 k2m1, 간단한 kubectl install)에 마이그레이션
Scope concurrency to build jobs, not Kubernetes deploys
Workflow-level concurrency serialized the whole pipeline (including kubectl rollouts). Move the group to the build job only so deploy jobs from different runs c...
Rebuild for kamo-shared-library update (CREATE_CHILD_ORG right + apply-to flags)
Pulls the new RoleRightType.CREATE_CHILD_ORG (id 131), the three apply-to flags on ChildOrgSecurityModel, the two 13-arg service overloads, and the AppliedModel...
Rebuild for kamo-shared-library update (appConfig upsert-only fix)
Pulls the hardened **************** that no longer deletes appConfig rows whose service types are absent from the caller's payload — prevents silent data loss w...
Rebuild for kamo-shared-library update (effective-feature resolver)
Picks up the new AppliedModelEnforcementService methods (computeAvailabilitiesMap, isAppEffectivelyEnabled, getEffectivelyEnabledAppTypes, computeEffectiveFeatu...
Kamo-shared-library 업데이트에 대한 재건 (applied-model 시행 + appConfigs + isPrivate)
Triggers는 이렇게 이 서비스를 끌어 올렸습니다 적용되는 ModelEnforcementService, ChildOrgSecurityModelAppConfig entity, ServiceAvailability를 포함하는 업데이트 된 kamo-shared-library 유형 enum,...
Kamo-shared-library 업데이트에 대 한 재건 (시간 힘 규칙 + DEFAULT fallback in MemberRightsAppliedService)
Triggers는 업데이트된 ***********를 선택하여 템플릿의 힘 규칙과 DEFAULT-template fallbacks를 적용했습니다.
Kamo-shared-library 업데이트에 대 한 재건 (마스터 모델, 기본 역할 템플릿, 힘-rule 해결자)
Triggers는 조직.branchTypeID, Organization.masterModelID, ****************를 포함하는 새로운 kamo-shared-library 개정을 잡아 역할RightTemplateSetting 유형 enum, DefaultRoleType enu...
Add concurrency group to prevent duplicate workflow runs
When a push triggers a workflow and workflow_dispatch is also fired (or two pushes arrive in quick succession), both runs would execute simultaneously. Adding a...
익명 방문자를위한 RAG 통합으로 공공 AI 채팅 엔드 포인트 추가
/api/ai/public/sessions endpoints를 마케팅 사이트에 익명 AI 채팅에 추가합니다. OTK auth 필터를 우회합니다. public-facing 시스템 프롬프트 사용 RAG with memberType=null for public-only KB 기사 가시성.
0.5에서 0.25까지 낮은 RAG min-score 임계 값은 관련 KB 결과 필터링을 중지합니다
0.5 임계 값은 임베딩 모델에서 유효 결과를 버리는 것이 었습니다. 특히 작은 384-dim 벡터와 도메인 별 내용.
RAG를 통한 회원유형 조회
MemberRepository에서 회원 유형에 용해하고 RAG 검색 요청에 포함 그래서 벡터 DB는 청중 가시성에 의해 KB 기사를 필터링 할 수 있습니다.
Wire ConversationContextService for sliding window context management
Trims conversation history to fit model's context window before sending to LLM. Keeps recent messages verbatim, summarizes older ones.
Include clickable source links in RAG context for AI chat
Update RagClient to embed markdown links in the context sent to the AI model. KB articles link to /kb/{guid}, notes link to /notes?id={noteId}. Instructs the mo...
Pass memberId to RAG for note-aware AI chat
Add extractMemberId to SessionHelper. Update RagClient to send memberId in search requests so RAG returns both org KB articles and the member's own AI-enabled n...
Update AI entity ID references from Long to UUID
Updates all controllers, services, and WebSocket handler to use UUID for AI entity IDs (providers, models, sessions, messages, folders, policies, MCP configs). ...
Add response body and request logging to RagClient for debugging
Log the RAG search request URL, orgId, query, and response body on error to diagnose 500 responses from RAGService.
Add RAG context injection for Knowledge Base in AI chat
- New RagClient service for calling RAGService semantic search - ChatOrchestrationService injects KB context before AI responds - Configurable via AiOrgSettings...
Use non-streaming chat completion for REST endpoint
Streaming over REST with blockLast() was producing empty responses because WebClient's SSE parsing doesn't work reliably with bodyToFlux(String.class). Added ha...
Add detailed error logging to HuggingFaceAdapter for debugging 400 errors
Captures and logs the actual HF error response body instead of just status code.
Switch HuggingFace to router.huggingface.co (api-inference is deprecated)
HF returns 410 on api-inference.huggingface.co with message to use router.huggingface.co instead.
Use HuggingFace OpenAI-compatible endpoint with model in request body
HF's /v1/chat/completions endpoint takes the model ID in the JSON body, not in the URL path. Switched from per-model URL routing to standard
Add model count to provider list, switch HF to router endpoint
- Include modelCount in provider list GET response - Switch Hugging Face default base URL to router.huggingface.co - Support both api-inference and router URL f...
Support enabling/disabling models via PUT /api/ai/providers/{id}
When the frontend sends a 'models' array of model IDs in the provider update request, models in the array are set active and models not in the array (belonging ...
Add POST **************** endpoint for sending chat messages
Receives user message, sends to AI provider via ChatOrchestrationService, returns complete response. Supports REST-based chat flow.
Return full decrypted API key in provider responses
Users need to see and edit the full key, not a masked version.
Add Hugging Face as dedicated provider type with custom adapter
- HuggingFaceAdapter handles HF's URL structure **************** - Model discovery via HF API (warm text-generation models) - Registered in ProviderAdapterFacto...
Add manual model creation, handle 410/404 in test, use discovered model for CUSTOM providers
- POST /api/ai/models endpoint for manually adding models - DELETE /api/ai/models/{id} endpoint - CUSTOM providers use first discovered model for chat test inst...
Normalize base URL to prevent /v1/v1 duplication
Strips trailing /v1 from base URL before appending /v1/chat/completions, so users can enter base URLs with or without the /v1 suffix.