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

크라우니클라우드 B절 — 백엔드 없던 API 3종 신규 구현

개요

크라우니클라우드 사이드카(:9662)에 없던 API 3종(B-1/B-2/B-3)을 클라우드_서비스.한선에 신규 함수+라우팅으로 추가. 가드/게이트 큐 내부 로직은 동시 작업 중인 다른 에이전트 영역이라 손대지 않음.

무엇을 했는지

  • B-1 POST /api/services/update — body {id,name,port,domain} → 변경보호 큐(service_update) 등록. 승인 시 서비스_적용_설정이 사용자서비스만 실제 필드 갱신(빈 필드는 기존값 보존), 시스템(registry) 서비스는 기록만+수동안내.
  • B-2 GET /api/services/stats?id= — PID를 lsof -tiTCP:<port> -sTCP:LISTEN으로 찾아 ps -o rss=(mem MB)·ps -o etime=(uptime) 실측. requests/errorRate는 카운터 인프라 없어 정직하게 null+note.
  • B-3 GET /api/services/logs?id=&lines= — id 화이트리스트(영숫자/_/-) 검증 후 logs/<id>.log 우선, 없으면 /tmp/<id>.errtail -n N(N≤40)으로. 둘 다 없으면 {"lines":[],"note":"로그 파일 없음"}.
  • 신규 헬퍼: 서비스_경로시작, 서비스_쿼리값, 서비스_id검증, 서비스_id로포트, 서비스_사용자서비스필드갱신.
  • 서비스적용(kind,payload)service_update 분기 추가.

관련 파일

  • /Users/ef/crowny-services/클라우드_서비스.한선 (수정, 백업 .bak-보수-20260730)
  • /Users/ef/crowny-services/클라우드관리.한선 (변경 없음, 재컴파일만)
  • 컴파일 산출물 재배치: /Users/ef/crowny-services/클라우드_서비스.toau, 클라우드관리.toau

검증 (실측)

  • STRICT 컴파일 0경고 (양쪽 모듈)
  • :9662 재기동 확인(자가치유, PID 신규)
  • B-1: POST update{"queued":1,"pendingId":"pend_..."}. 실제 사용자서비스 생성→update→approve 흐름에서 가드통계 ok 3건 실측(create/update/delete)
  • B-2: GET stats?id=mail{"requests":null,"errorRate":null,"mem":7,"uptime":"22:14","note":"..."}. id 누락 시 400 id_required
  • B-3: GET logs?id=mail&lines=5 → 실제 mail 서비스 로그 라인 반환
  • 회귀: GET 9종 전부 200, 9611/9610 생존 확인

잔여 이슈 (내 범위 밖 — 다른 에이전트 확인 필요)

  • 클라우드_가드.한선가드approve서비스적용(kind, what, payload) 3인자로 호출하는데, 서비스적용(kind, payload) 2인자로 정의돼 있음. 이 arity 불일치로 approve 경로에서 실제 서비스적용 내부의 서비스_적용_생성/설정/삭제가 감사장부에 _적용/_보류 로그를 전혀 남기지 않음(가드통계는 ok로 찍히지만 실제 적용 함수 로직이 의도대로 안 탐 — payload 자리에 what 문자열이 들어가 JSON 필드추출이 전부 빈값이 되는 것으로 추정). 실측: 보수테스트svc create→update→delete 큐 승인 후 감사장부에 system|... 라인이 하나도 없음. 가드/서비스 큐 부분 수리 중인 에이전트에게 인계 — 호출부(가드approve) 또는 서비스적용 시그니처 중 하나를 통일 필요.