← 목록
기타 2026-07-20 3KB 읽기 3분

crowny-factory SOP 일괄공급 엔드포인트 추가

개요

factory.crowny.org:8300 → FAB(fab.crowny.org:8200) SOP 핸드오프 계약에서, 기존 /api/process/sop?id=<공정id>가 1건씩만 반환해 FAB이 10공정 전체를 받으려면 10회 왕복해야 했다. 일괄 공급 엔드포인트를 추가해 1회 왕복으로 해소.

무엇을 했는지

  1. 팩토리엔진.한선SOP_직렬화(id,버전,채택수)(기존 단건 {"sop":{...}} 응답, 계약 불변)를 리팩터링:
- SOP_직렬화_객체(id,버전,채택수) 신설 — sop 필드 알맹이(래핑 없는 순수 객체)만 반환. 단건/일괄 공용 SSOT. - SOP_직렬화는 이제 "{\"sop\":" + SOP_직렬화_객체(...) + "}" 로 재구성 — byte-identical 유지(테스트로 회귀 검증).
  1. 서버.한선:
- _처리process_sop_all(소켓) 신설 — 공정_수()(10) 순회, 각 공정 SOP_직렬화_객체 재사용해 {"ok":1,"count":10,"generatedAt":<현재시간()>,"sops":[...]} 응답 조립(서버는 envelope만, sop 필드 자체는 엔진 재사용). - GET /api/process/sop/all 신규 라우트 배선. - GET /api/process/sop?id=all 하위호환 — _처리process_sop에서 id=="all"이면 동일 핸들러로 위임(기존 "알 수 없는 공정: all" 오류 해소).
  1. 테스트.한선SOP_직렬화_객체 검증 5건 추가(래핑 없음 확인, 단건과의 합성 일치, 공정 10건 전수 processId 일치). 총 assert 117 → 122, 전항목 PASS.

검증 (라이브 실측, 2026-07-20)

  • CROWNY_STRICT=1 hanseonc_high 서버.한선 경고 0.
  • launchctl kickstart -k gui/$(id -u)/org.crowny.factory 재기동 후:
  • GET /api/process/sop/all → 200, JSON 파싱 성공, count==10, sops 배열 10건.
  • GET /api/process/sop?id=all → ①과 byte-identical(diff 없음).
  • ③ 회귀: GET /api/process/sop?id=iqc → 기존 단건 스키마(processId/processName/version/totalSteps/steps/cost) 그대로 유지.
  • ④ 일괄 첫 원소(sops[0], supply)와 단건(?id=supply)의 sop 필드 구성(키 11종·타입) 완전 일치 확인.
  • GET / 200, GET /api/health {"ok":1,...} — 앱 서빙/헬스 무회귀.
  • id=bogus(알 수 없는 공정), id 누락 오류 응답도 종전과 동일하게 유지 확인.
  • data/이벤트.psv — 신규 라우트는 읽기 전용(쓰기 없음), 검증 중 오염 없이 0바이트 청정 유지 확인.
  • 관련 파일

    • /Users/ef/crowny-factory/서버.한선
    • /Users/ef/crowny-factory/팩토리엔진.한선
    • /Users/ef/crowny-factory/테스트.한선
    • (건드리지 않음) /Users/ef/crowny-factory/public/앱.한선 — 별도 트랙 완료본, 무접촉 지시 준수.

    잔여 이슈

    • 없음. FAB 측 소비 여부(fab.crowny.org:8200이 신규 /api/process/sop/all을 실제로 호출하도록 배선)는 FAB 트랙의 몫 — factory 측 공급 계약은 이 작업으로 완결.