본문 바로가기
FLUXIS
SOFTWARE STACK

PostalNexus

촬영부터 설비 제어까지를 11개 모듈로 나눴습니다. 모듈마다 단독으로 실행되고 단독으로 시험되며, 통신은 gRPC 하나로 통일했습니다. 한 파일이 300줄을 넘지 않습니다.

RUNTIME

런타임

라인이 도는 동안 항상 떠 있는 모듈

Vision

촬영 · 전처리 · 전송
운영

우편물을 찍고 기울기를 세워 인식하기 좋은 상태로 만든 뒤 관제로 올립니다. 프레임그레버 종속성을 제거해 카메라 제조사에 묶이지 않습니다.

  • GPU 전처리 체인 — 리사이즈·회전·CLAHE 를 업로드/다운로드 한 번으로 묶어 PCIe 전송 비용 제거
  • 폴더 시뮬레이터 + 가상 트리거 — 하드웨어 없이 전 구간 시험
  • 7-세그먼트 LED 형태 실시간 계수 표시 — 라인에서 멀리 떨어져도 읽힘
  • 설정·로그는 실행파일 옆에 — 단일 exe 배포에서도 유지

Supervisor

관제 서버 + HMI
운영

여러 대의 비전·인식기·구분엔진을 묶어 우편물이 촬영부터 구분칸 할당까지 흐르도록 중계합니다. "한 통도 놓치지 않는다"는 약속이 실제로 구현된 곳입니다.

  • 밀어넣기(push) 대신 가져가기(pull) — 유휴 워커가 직접 작업을 요청
  • 임대(lease) 장부 — 워커가 죽으면 우편물이 큐 앞쪽으로 되돌아옴
  • 큐에서 꺼내기와 장부 기록이 하나의 임계구역 — 32스레드 3,000건 시험 중복 0
  • 같은 piece_id 재전송 차단 + 스트림 종료 유예 2초 — 중복 배달 방지
  • 60,000통/h 시험 유실 0 · 120,000통/h 워커 1대 사망 시험 유실 0

Recognizer

주소 · 바코드 AI 인식
운영

봉투에서 주소와 등기 바코드를 읽어냅니다. NF OCR 엔진을 교체할 수 있고, GPU 를 여러 장 붙여 처리량을 늘릴 수 있습니다.

  • NF OCR V5 / V3 / Nemotron OCR — 라인 성격에 맞춰 엔진 선택
  • credit 방식 — 여유가 생길 때만 작업을 요청해 임대 만료가 나지 않음
  • 멀티 GPU 라운드로빈 + 단일 큐 — 느린 카드가 줄을 세우지 않음
  • 발신/수신 배타 배정 — 두 역할을 동시에 결정
  • 인식 코어를 실행파일에 동결하지 않음 — 로직 갱신 시 폴더만 교체

SortCore

주소 매칭 · 참조 데이터 엔진
운영

주소 문자열을 참조 데이터의 한 행으로 확정하는 일만 합니다. UI·통신·구분계획을 전혀 모르기 때문에 단독으로 시험하고 단독으로 교체할 수 있습니다.

  • 정규화 · 파싱 · 4단계 조회 · 유사도 · 앙상블 — 매칭 로직의 심장
  • DLL 교체 모델 — 코어 폴더만 갈아 끼우면 재설치 없이 로직 갱신
  • 호환성 세대(api=N) 검사 — 짝이 어긋난 배포로 조용한 오구분이 나지 않음
  • MySQL / PostgreSQL 드라이버 + 워터마크 캐시

SortEngine

포켓 할당 · 판단 추적
운영

인식된 우편물 한 통을 받아 주소를 확정하고 구분계획에 따라 포켓 번호를 정합니다. 그 판단의 근거를 22단계로 남깁니다.

  • 22단계 판단 추적 — 값이 실제로 바뀐 단계만 밝게 표시
  • 탈락 후보까지 점수와 함께 공개
  • 즉석 시험 — 클레임 주소 한 줄을 붙여 넣고 지금 재현
  • 구분이력 90일 보관 + 추적 최근 1,000건 (리젝트 별도 500건)
  • Supervisor 없이 시뮬레이션 단독 구동 — 구분 로직은 한 줄도 다르지 않음

Gateway

컨트롤러(PLC) 연동
운영

구분기 컨트롤러와 사내 시스템 사이의 통역·중계입니다. 어떤 회사의 어떤 컨트롤러든 붙일 수 있도록 전송 축과 규격 축을 분리했습니다.

  • 회사명 + 모델만 선택 — 드라이버·프로토콜·포트·주소 배치는 카탈로그가 결정
  • 적용 시 프로그램 재시작 없이 링크 재생성
  • FINS · Modbus TCP · Modbus RTU · 시뮬레이터를 순수 파이썬으로 직접 구현
  • 새 컨트롤러 대부분은 카탈로그 한 줄 추가로 끝 — link/services/ui 무변경
  • gRPC 생성 코드가 없으면 소켓으로 자동 폴백
PLANNING

운영 준비

구분계획 수립과 사전 검증 도구

SortPlanManager

구분계획 생성 · 편집
운영

어느 우편물을 어느 칸으로 보낼지 적은 구분계획을 만들고 편집합니다. 도착 · 발송 · 순로 · 복합 네 종류를 한 프로그램에서 다룹니다.

  • 순로구분 자동 배정 — LSD 기수정렬 + LIFO 보정
  • 복합구분 — 순로의 빈 칸에 도착·발송을 얹고 충돌 표시
  • 엑셀 → 구분계획 XML 변환 (미리보기 후 변환)
  • 구분 테스트 — 번호를 넣어 어느 칸으로 가는지 즉시 확인
  • 독립 실행 — 네트워크 연동 없이 동작 (DB·엑셀은 선택 의존성)

DeliverySequenceSearcher

배달 순번 조회
운영

등기국을 지정하면 배달점을 집배원이 실제로 도는 순서로 늘어놓고 집배구 안 순번을 보여줍니다. 순로 계획을 짜기 전 검증 도구입니다.

  • 읽기 전용 — 배달점 원장 DB 의 어떤 테이블에도 쓰지 않음
  • 주배달점 / 주+상세 / 상세만 조회 모드
  • 집배구 필터 · 도로명/지번/표시주소 검색
  • 엑셀 내보내기 — 전체 시트 + 집배구별 시트 분리
  • 수만 행에서도 버벅이지 않는 가상 테이블 모델
OPS

배포 · 운영

현장 PC 관리와 실적 분석

Agent

현장 PC 배포 · 감시
운영

현장 PC 마다 상주하며 프로그램을 지키고, 갱신하고, 상태를 올려 보냅니다. 가장 먼저 깔리고 가장 늦게 죽어야 하는 모듈입니다.

  • 프로그램이 죽으면 다시 띄우고, 이미 떠 있으면 넘겨받음
  • 정비 시간대 + 그 PC 가 우편물을 처리하지 않을 때만 업데이트 진입
  • 실패 시 자동 롤백 · 파일 잠금으로 동시 교체 구조적 차단
  • 모니터 없는 관제실 서버용 무인 모드 — GUI 의존성 없이 전 기능 동작
  • CPU·메모리·GPU·디스크 상태 보고 + 원격 로그 수집

Analytics

처리 실적 · 인식률 분석
운영

구분 이력과 판단 추적을 모아 인식률 · 리젝트 사유 · 시간대별 처리량을 집계합니다. 어느 집배구에서 왜 리젝트가 몰리는지 추적하는 것이 목표입니다.

  • 리젝트 사유별 분해 — 어느 단계에서 끊겼는지 기준으로 집계
  • OCR 보정표 개선 후보 자동 추출
  • 대량 집계는 GPU 가속 검토 대상 (cuDF/CuPy)

Command

통합 관제 대시보드
운영

여러 국사·여러 라인의 상태를 한 화면에 모읍니다. 각 현장 에이전트가 올리는 상태를 받아 설비 가동률과 이상 징후를 한눈에 보여주는 것이 목표입니다.

  • 다국사 · 다라인 통합 뷰
  • 에이전트 허브 연동 — 원격 배포와 로그 수집을 한 곳에서
  • Nexus-HUD 웹 테마 — 관제실 대형 화면 기준 설계
DESIGN RULES

이렇게 만듭니다

한 파일 300줄

소켓 수신 · 주소 매칭 · 포켓 할당 · 화면 갱신이 한 파일에서 서로를 직접 호출하면, 서비스 계층만 따로 시험할 방법이 사라집니다. 모듈 경계를 파일 경계와 일치시켜 각 계층을 단독으로 실행하고 검증합니다.

없어도 뜬다

DB · 엑셀 · GUI · GPU 는 모두 선택 의존성입니다. 없으면 해당 기능만 꺼지고 프로그램은 정상 기동합니다. 현장에서 무엇이 없어서 안 되는지는 --doctor 가 한 화면에 보여줍니다.

조용한 실패 금지

GPU 초기화가 실패했는데 CPU 로 몰래 내려앉거나, 코어 버전이 어긋난 채 구분이 계속되는 상황을 구조적으로 막습니다. 성능이나 정확도가 떨어질 때는 반드시 드러나야 합니다.

기존 설비에 소프트웨어만 얹을 수 있습니다

기구부는 그대로 두고 비전·인식·구분 계층만 교체하는 방식입니다. 어떤 컨트롤러가 붙어 있는지 알려주시면 연동 가능 여부를 확인해 드립니다.