진짜 멀티 에이전트 오케스트레이션 — 라우터 + 워커 + 합성 3단계
Engine (multiAgentExecutionEngine.ts)
- execution_mode 'coordinator' 신규 추가
- executeCoordinator() 3 라운드 구현:
Round 1: coordinator 가 사용자 요청 분해 → JSON delegations 출력
system prompt 에 sub-agent 카탈로그(role/desc/connectors) 자동 inject
Round 2: delegated sub-agent 들 각자 짧은 task 만 받아 병렬 실행
Round 3: coordinator 가 모든 sub-agent 응답을 받아 사용자 친화적 최종 답변 합성
- coordinator 식별: member.config.is_coordinator === true 우선,
없으면 execution_order 가 가장 작은 멤버
- JSON 파싱 실패 시 모든 worker 에 원문 fallback
Service (aiAgentGroupService.ts)
- updateMember 에 config / is_coordinator 옵션 추가
is_coordinator 단축키는 기존 config jsonb 와 || 머지
UI (workspace/page.tsx)
- EXEC_MODES 에 'coordinator' (Compass 아이콘) 추가
- MemberCardContent 에 코디네이터 토글 버튼 (왕관 아이콘) — 클릭 즉시
updateGroupMember(is_coordinator) 호출
- 활성 시 분홍 배지 "코디네이터" 표시
검증 결과 (PLM 그룹 / 환율전문가=coordinator)
- 사용자: "환율과 화성시 날씨 알려줘"
Round 1: 기상전문가 ← "화성시의 날씨 정보를 알려줘"
Round 2: 기상전문가 → API 호출 → HTML 응답 → 정직하게 "데이터 못받음"
Round 3: coordinator 가 환율/날씨 모두 정리한 단일 답변 합성
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
LLM 호출
- llmClient.resolveProvider 우선순위 보강: model_name 정확 매칭(case-insensitive)을 1순위로 추가
- MODEL_PROVIDER_MAP regex 모두 /i 플래그 (대문자 'Qwen' 등 대응)
- max_tokens fallback 4096 → 16384
- API key 빈 값일 때 Authorization 헤더 자체를 생략 (인증 안 받는 로컬 LLM 대응)
multiAgentExecutionEngine
- 강제 max_tokens=2000 제거 → provider DB 값 fallback 으로 위임
에이전트 관리 (agents/page.tsx)
- 모델 드롭다운: 하드코딩 MODEL_GROUPS 제거 → 등록된 ai_llm_providers 동적 로드
- 같은 provider type(anthropic/openai/ollama 등) 끼리 그룹핑, 0개일 때 안내
- model_name 빈 값 row 는 dropdown 에서 자동 제외 (Radix 제약 회피)
- max_tokens 기본 16384, 빠른선택 버튼 (4K/16K/32K/64K) 추가
- 적용된 지식 파일 row 클릭 시 상세 모달 (내용/복사) 오픈
- hard delete 서비스 변경에 맞춘 UX
LLM 프로바이더 (providers/page.tsx)
- Ollama (로컬) 선택 시 'API 호출 URL' 입력 필드 노출
- '모델 ID' 직접 입력 필드 추가 (Qwen3.6-35B-A3B 같은 커스텀 모델)
- max_tokens / temperature 편집 UI 추가, 기본값 16384/0.7
- 더미 'ollama' API key 자동주입 제거 (실제 인증 토큰 보존)
- ollama 일 때 model_name 빈 값 저장 차단
대화 모니터링 (conversations/page.tsx)
- 메시지 안의 fenced code block (```lang ... ```) 자동 파싱
- 코드블록 별 다운로드 / 복사 버튼 (파일명 자동 추출 또는 snippet-{n}.{ext})
- 17종 언어 → 확장자 매핑 (html/jsp/ts/tsx/py/java/c/cpp/cs/go/rs/rb/php/sql/yml ...)
- 모달 폭 max-w-2xl → max-w-4xl
API 키 관리 (api-keys-manage/page.tsx)
- 그룹 실행 axios 호출 timeout 30s → 5분 (multi-agent 추론 시간 대응)
지식 라이브러리 (knowledge/page.tsx)
- TS2774 (Buffer.byteLength 함수 참조 truthy 체크) 컴파일 에러 수정 → 청크 빌드 정상화
aiAgentService
- delete() 진짜 hard DELETE 로 변경 + 외래키 의존 row(group_members/conversations/logs/usage) 정리
- list() 기본 필터에 status <> 'archived' 추가 → soft-deleted row 자동 숨김
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Docker/K8s 배포 설정을 pipeline-backend/pipeline-front로 통일
- 네임스페이스, 서비스, PVC 등 k8s 리소스명 pipeline-* 로 변경
- AI 에이전트 관리 기능 추가 (에이전트, 그룹, 프로바이더, 대화, API 키, 지식베이스)
- 장비 연결 관리 기능 추가 (PLC/Modbus/OPC-UA/MQTT)
- 배치 스케줄러에 AI agent/device collection/crawling 타입 추가
- 배치 편집 UI 개선 (6가지 실행 방식 지원)
- 회사별 페이지(COMPANY_*) 제거 및 AdminPageRenderer 최적화
- 메뉴 재구성: 장비 연결 관리 시스템관리로 이동, 에이전트 오케스트레이션으로 개명
- ai-assistant 디렉토리 제거 (backend-node로 통합)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Modified API requests in the inspection management pages for multiple companies to include a `filterCompanyCode` query parameter.
- This change ensures that the data fetched is specific to the respective company, enhancing data accuracy and relevance.
- Aimed at improving the user experience by providing tailored data views across different company implementations.
- Changed column width definitions from fixed to minimum widths for better responsiveness in the purchase order and sales order pages.
- Increased the pagination size from 500 to 5000 for supplier and user data fetching to accommodate larger datasets.
- Enhanced item search functionality by including management item filters in server queries, improving data handling and user experience.
- These changes aim to provide a more flexible and user-friendly interface across multiple company implementations.
- Removed unnecessary variables and commented-out code related to master-detail grouping in the outbound and receiving pages.
- Simplified the header filter and sorting logic to improve performance and readability.
- Updated the column mapping and filtering mechanisms to ensure a more efficient data handling process.
- These changes aim to enhance the overall user experience and maintainability of the logistics management interface across multiple company implementations.
- Updated the table header and cell styles to enhance visibility and usability, including adjustments to z-index and sticky positioning.
- Implemented dynamic label mapping for inspection types in the item inspection page to improve clarity.
- Enhanced the sales order page by including management item filters in server queries, allowing for better data handling and user experience.
- These changes aim to provide a more intuitive interface and improve data representation across multiple company implementations.
- Added DnD (Drag and Drop) capabilities to allow users to reorder columns in the modal for purchase orders.
- Introduced a new `SortableModalHead` component to manage the sortable headers.
- Implemented local storage functionality to save and retrieve the column order, enhancing user customization.
- This feature aims to improve the user experience by providing flexibility in how data is displayed across multiple company implementations.
- Updated the customer form validation to only check for the business number, removing checks for contact phone and email.
- Removed unused input fields for contact person, phone, and email from the customer management page to streamline the form and improve user experience.
- This change aims to enhance the clarity and usability of the customer management interface across multiple company implementations.
- Enhanced the `getProgressLabel` function to utilize a mapping for progress statuses, improving clarity in status representation.
- The mapping includes translations for statuses such as "completed", "in_progress", and "pending", ensuring a more user-friendly display across multiple company implementations.
- This change aims to improve the overall user experience by providing clearer information regarding work progress.
- Implemented a `parseRemark` function to convert JSON remarks into human-readable text, improving clarity in the inbound-outbound page.
- Updated the category filtering logic to utilize parsed remarks, enhancing data representation.
- Added unit label mapping for better display of item units in the inbound-outbound page.
- Enhanced the material status page with a status mapping feature, allowing for dynamic styling based on status labels.
- These changes aim to improve user experience by providing clearer information and better data management across multiple company implementations.
- Updated API calls in the purchase and sales item pages to increase the data size limit from 500 to 5000, enhancing the ability to fetch larger datasets.
- This change aims to improve performance and user experience by allowing more data to be loaded in a single request across multiple company implementations.
- Added searchable category combobox and multi-category combobox components to improve item selection in the purchase and sales item pages.
- Updated the supplier management page to utilize useCallback for item search, enhancing performance and responsiveness.
- Implemented real-time search functionality for item selection, ensuring a smoother user experience.
- Enhanced the handling of item mappings and prices, allowing for soft deletion of supplier connections while retaining data integrity.
These changes aim to improve the overall user experience by providing more intuitive item management and selection processes across multiple company implementations.
- Updated API calls in the InventoryStatusPage and BomManagementPage to fetch user data with a limit of 9999 users, improving performance and ensuring all users are loaded.
- Implemented user mapping to display user names instead of IDs, enhancing clarity in user-related data across multiple company implementations.
- These changes aim to improve the overall user experience by providing clearer information and better data management in the logistics and BOM sections.
- Enhanced error handling in the OutboundPage component to capture and display error messages from API responses, improving user feedback during operations.
- Updated the InventoryStatusPage to render warehouse names instead of codes, providing clearer information to users.
- These changes aim to enhance the user experience by ensuring better error visibility and more informative data representation across multiple company implementations.
- Implemented user mapping to display user names instead of IDs in the inventory and receiving pages.
- Added category mapping for materials and units in the outbound page, improving data representation.
- Updated API calls to fetch user and category data, ensuring accurate and user-friendly displays.
- These enhancements aim to improve the overall user experience by providing clearer information and better data management across multiple company implementations.
- Added `categoryOptions` to the dependency array of the useEffect hook that fetches orders, ensuring that the component re-fetches orders when category options change.
- This change improves the responsiveness of the SalesOrderPage when category options are updated, enhancing the overall user experience across multiple company implementations.
- Replaced manual image upload logic with the ImageUpload component for better management of mold images.
- Updated image source handling to ensure proper display of images based on their URL format.
- Enhanced error handling for image display to improve user experience.
These changes aim to streamline the image upload process and enhance the overall functionality of the mold information page across multiple companies.
- Added loading of item division categories to enhance filtering capabilities in supplier and customer management pages.
- Updated filtering logic to dynamically use item division codes for improved item search results.
- Ensured consistent handling of division codes across multiple company pages.
These changes aim to improve the user experience and data management in supplier and customer processes across various companies.
- Added loading of item division categories to improve item search capabilities in subcontractor management pages.
- Updated filtering logic to use dynamic category codes for division filtering in subcontractor and sales item pages.
- Consolidated standard price labels in purchase item pages for clarity.
These changes aim to improve the user experience and data handling in subcontractor and item management processes across multiple companies.
- Enhanced the rendering of the manager column to display user labels instead of IDs for better clarity.
- Updated the default state for the defect form to set is_active to "사용" upon creation.
- Simplified the badge rendering logic for the is_active status to improve readability.
- Adjusted the select component for active status to remove unnecessary options and streamline user interaction.
These changes aim to enhance the user experience and data representation in the inspection management process across multiple companies.
- Added resizable panel components to improve layout flexibility.
- Updated item name label from "품목명" to "품명" for consistency.
- Refactored state management for selected items and inspection types to enhance user interaction.
- Improved modal handling and search functionality for item selection.
- Enhanced inspection method and category loading to ensure accurate data representation.
These changes aim to provide a better user experience and streamline the item inspection process across multiple companies.
- Updated fileController to include Cross-Origin-Resource-Policy headers for improved security and file handling.
- Added error handling for file streams to ensure robust responses in case of read errors.
- Modified materialStatusController to correctly map material IDs to their respective codes for inventory stock queries.
- Enhanced moldController to include warranty shot count in mold creation and update processes.
- Improved item inspection page by adding inspection method category loading and mapping, ensuring accurate display of method labels in the UI.
These changes aim to enhance the overall functionality and user experience across multiple companies by ensuring proper file handling, data mapping, and error management.
- Changed the table layout from fixed to a minimum width of 900px to enhance responsiveness.
- Adjusted TableHead components to ensure consistent width and minimum width settings for better alignment and usability.
- These modifications aim to improve the overall user experience by providing a more flexible and visually appealing table layout across multiple companies.
- Updated the input mode selection logic to clear associated fields (partner_id, delivery_partner_id, delivery_address) when the input mode changes.
- This change ensures that the form state is correctly managed and prevents stale data from being retained, enhancing the user experience across multiple companies.
These modifications aim to improve the clarity and functionality of the Sales Order page by ensuring that changes in input mode reflect accurately in the form state.
- Added functionality to map category codes to labels for inspection cycles and methods in the equipment inspection record page.
- Introduced a new state to manage category mappings and updated the UI to display the mapped labels instead of raw codes.
- Enhanced error handling for category retrieval to ensure a smoother user experience.
These changes aim to improve the clarity and usability of the inspection records by providing meaningful labels for inspection categories across multiple companies.
- Introduced new pages for managing equipment inspection records and quality inspection results across COMPANY_10, COMPANY_16, COMPANY_29, and COMPANY_30.
- Implemented dynamic search filters, data fetching, and Excel export functionality to enhance user experience.
- Added responsive table layouts with loading states and badges for status representation, improving data visibility and interaction.
These changes aim to provide a comprehensive interface for monitoring and managing inspection processes across multiple companies.
- Updated the BOM management page to streamline the layout by moving the edit button to the top right for better accessibility.
- Enhanced the DataGrid and EDataTable components to support a no-wrapper option, allowing for sticky headers to function correctly with parent overflow settings.
- Adjusted the Sales Order page to utilize the new noWrapper feature for the table, ensuring consistent styling and behavior.
- Enabled sticky headers in the V2 table list definition for improved data visibility during scrolling.
These changes aim to enhance the user experience by providing a more intuitive and organized interface for managing BOM and sales order data across multiple companies.