프로젝트

일반

사용자정보

Actions

업무 #391

진행중
JL JL

Add admin HTTP server with dev console UI (port 9090)

업무 #391: Add admin HTTP server with dev console UI (port 9090)

James Lee이(가) 약 7시간 전에 추가함.

상태:
해결
우선순위:
보통
담당자:
목표버전:
시작일:
2026/04/20
완료일:
진척도:

0%

추정시간:

설명

목표

포팅 완료된 gRPC 서비스를 브라우저에서 직접 테스트할 수 있는 개발자 콘솔 UI를 구현한다.

범위

  • axum 의존성 추가
  • src/config.rs — admin_port 설정 추가 (기본값 9090)
  • src/admin/mod.rs — axum HTTP 서버 + REST API + 임베디드 HTML UI
  • src/lib.rs, src/main.rs — admin 서버 등록 및 병렬 실행

REST API 엔드포인트

Method Path 설명
GET /api/auth/keypair secp256k1 키페어 생성
POST /api/auth/challenge 로그인 챌린지 발급
POST /api/dev/sign 챌린지 서명 (dev helper)
POST /api/auth/verify 서명 검증 + JWT 발급
GET /api/users/:wallet 사용자 프로필 조회
GET /api/nodes 노드 목록
GET /api/nodes/:id 노드 상세
POST /api/nodes/challenge 노드 챌린지 발급
POST /api/nodes/register 노드 등록
POST /api/nodes/:id/heartbeat 하트비트 (JWT 필요)
DELETE /api/nodes/:id 노드 삭제 (JWT 필요)
GET /api/wallets/:wallet/receipts 수익 영수증 (JWT 필요)
GET /api/wallets/:wallet/earnings 수익 요약 (JWT 필요)

UI 기능

  • 서비스별 탭 (Auth / User / Node / Wallet)
  • 엔드포인트별 입력 카드 + 응답 JSON 패널
  • 자동 채우기: Keypair → Challenge → Sign → Verify 순서 흐름
  • JWT 헤더 표시 및 저장

DoD

  • cargo build 통과
  • port 9090에서 UI 접근 가능
  • 모든 API 엔드포인트 정상 동작
  • 브라우저에서 전체 Auth 흐름 테스트 가능

JL James Lee이(가) 6달 전에 변경 Actions #1

  • 상태을(를) 신규에서 해결(으)로 변경되었습니다.

구현 완료 — commit:server|47de6a4

변경 파일

파일 내용
Cargo.toml axum = "0.8" 의존성 추가
src/config.rs admin_port 필드 추가 (ADMIN_PORT 환경변수, 기본 9090)
src/admin/mod.rs axum HTTP 서버 + 13개 REST API + 임베디드 HTML+JS UI
src/server/mod.rs run_with_state(Arc<AppState>) 추출 — AppState 공유를 위한 리팩터링
src/lib.rs pub mod admin 추가
src/main.rs 단일 AppState 빌드 후 admin 서버를 tokio::spawn으로 병렬 실행

REST API 엔드포인트 (모두 동작 확인)

Method Path 비고
GET /api/auth/keypair 키페어 생성
POST /api/auth/challenge 챌린지 발급
POST /api/dev/sign 서버사이드 서명 (dev helper)
POST /api/auth/verify JWT 발급
GET /api/users/:wallet 사용자 프로필
GET /api/nodes 노드 목록 (필터/페이징)
GET /api/nodes/:id 노드 상세
POST /api/nodes/challenge 노드 챌린지
POST /api/nodes/register 노드 등록 + Node JWT 발급
POST /api/nodes/:id/heartbeat 하트비트 (JWT 필요)
DELETE /api/nodes/:id 노드 삭제 (JWT 필요)
GET /api/wallets/:wallet/receipts 영수증 목록 (JWT 필요)
GET /api/wallets/:wallet/earnings 수익 요약 (JWT 필요)

UI 기능

  • 서비스별 탭 (Auth / User / Node / Wallet)
  • 자동 채우기: Keypair → Challenge → Sign → Verify 순서대로 입력값 전파
  • Quick Sign 버튼: Node 탭에서 저장된 private key로 노드 챌린지 즉시 서명
  • JWT 헤더 표시 (App JWT + Node JWT 별도 저장)
  • 응답 JSON 구문 강조 + 응답 시간 표시

DoD 체크

  • cargo build 통과 (경고 0)
  • port 9090에서 UI 접근 가능
  • 모든 API 엔드포인트 정상 동작 (curl 테스트 완료)
  • 전체 Auth 흐름 (keypair → challenge → sign → verify → GetUser) 확인
Actions

내보내기 PDF Atom