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>
기존: WACE ERP/PLM 일반 솔루션 소개
변경: Pipeline 의 실제 정체성 — 장비 수집 + 외부 DB 통합 + AI 에이전트 오케스트레이션 통합 플랫폼
포함 내용
- 10대 핵심 기능 (장비 통신/적재/Edge 자가보고/MQTT/외부DB/AI 에이전트/Fleet/Python Hook/배치/데이터플로)
- 프로토콜 6종 클라이언트 표 (XGT/Modbus/OPCUA/S7/MQTT/MSSQL)
- AI 에이전트 모듈 11개 매핑
- 실제 디렉터리 구조 + 핵심 파일 링크
- 빠른 시작 (로컬/Docker), 엣지 배포 절차
- 데이터 흐름 다이어그램 (PLC → Pipeline → IDC TimescaleDB + retry queue)
- 주요 DB 테이블 카테고리별 정리
- 운영 메모 (이중 push, Python 이관 대상)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
MSSQL 수집기 (새 파일 mssqlClient.ts)
- Python sql_collector.py 의 MSSQL 모드 포팅
- watermark 기반 증분 SELECT, batch_mode (row 당 장비), fetch_size 지원
- timestamp_expression 으로 CONVERT/LEFT/RIGHT 등 복합 타임스탬프 표현 가능
- Protocol: MSSQL_DB
MQTT 구독 수집기 (새 파일 mqttCollectorClient.ts)
- tag.address = 토픽, 메시지 캐시 후 readTags() 호출 시 최신값 반환
- payload JSON 파싱 시 json_path 로 특정 필드 추출 가능
- Protocol: MQTT_SUB
Target DB retry queue (pipeline_target_retry_queue)
- 기존 in-memory Array → PG 영속화
- 실패 → enqueue(exp.backoff), 30s 워커가 재시도, 10회 초과 시 폐기
- IDC TimescaleDB 일시 다운 시 데이터 유실 방지 (기존 단순 warn → 적재)
Watermark 영속화 (pipeline_collector_watermark)
- connection_id 당 마지막으로 읽은 타임스탬프 기록
- MSSQL 증분 수집의 핵심, 재기동에도 중복 없음
deviceCollectorService.ts
- case "MSSQL_DB", "MQTT_SUB" 분기 추가
- clientCache 타입에 MssqlClient, MqttCollectorClient 추가
- publishData 5단계 실패 시 enqueueTargetRetry 호출
- startRetryWorker()/stopRetryWorker() 수명 주기 관리
app.ts
- 기동 시 startRetryWorker() 호출
pipelineDeviceTypes.ts
- DeviceProtocol union 에 MSSQL_DB, MQTT_SUB 추가
- PROTOCOL_OPTIONS / PROTOCOL_DEFAULTS 에 등록
- UI 드롭다운 및 기본값 지원
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
XGT FEnet 클라이언트
- 응답 data_length offset [12] → [16] (요청 시에만 [12,16] 둘 다 씀; 응답은 PLC가 [12:14]를 CPU 정보로 덮음)
- socket.setTimeout idle 타임아웃 제거 → connect 전용 수동 타이머 + setKeepAlive(10s). 폴링 간격(5s)마다 재연결되던 문제 해결
Edge 이벤트 리포터
- edgeStatusReporter.ts 추가: 60초 간격 edge_status_1 하트비트 + edge_events_1 이벤트 기록
- 기동/종료 이벤트 + PLC 상태 전이(connected/disconnected/error) 자동 기록
- PIPELINE_EDGE_* env 로 edge_id/company_id/UUID/table/interval 주입
edge_telemetry metadata 포맷 교정
- migrated_at → forwarded_at, _pipeline 추가 블록 제거
- 프로덕션 원본 스키마와 완전 호환: {priority, device_id(UUID), forwarded_at}
라우트 순서 버그 수정
- pipelineDeviceConnectionRoutes.ts: /target-databases* 가 /:id 뒤에 있어 /:id 가 먼저 매칭됨 → UI 저장 DB 드롭다운 비어있던 문제
- 정적 경로를 /:id 위로 이동
프론트 API URL 해석 일반화
- NEXT_PUBLIC_API_URL 가 localhost인데 브라우저는 원격이면 env 무시하고 현재 origin의 :8080 사용 → 엣지 원격 접속 시 API 연결 보장
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.
- Updated column visibility logic to filter based on defaultVisibleKeys, ensuring only relevant columns are displayed.
- Improved merging of saved column settings by filtering out invalid columns from the saved settings.
- Adjusted the order of visible columns to prioritize those defined in defaultVisibleKeys, enhancing user experience in table settings.
These changes aim to provide a more intuitive and efficient column management experience in the TableSettingsModal component.
- Added SERVER_API_URL argument to the Dockerfile for backend API integration.
- Updated docker-compose.yml to include SERVER_API_URL for the frontend service.
These changes aim to ensure proper communication between the frontend and backend services during deployment.
- 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.