본문으로 건너뛰기

wwwroot

wwwroot는 HandStack 화면과 정적 리소스를 제공하는 모듈입니다. 계약 기반 화면 리소스는 ContractRequestPath 아래에 노출하고, 실제 정적 자산은 WWWRootBasePath에서 서비스합니다.

책임 범위

  • contracts/wwwroot의 애플리케이션별 화면 리소스를 기본 /view 경로로 노출합니다.
  • modules/wwwroot/wwwroot 아래의 실제 정적 파일을 서비스합니다.
  • 정적 파일 요청에 대해 대소문자 무시 탐색과 캐시 정책을 적용합니다.
  • Basic token 기반 파일 동기화 API를 제공합니다.
  • 계약 파일 업로드 후 대상 모듈의 refresh API를 호출해 런타임 계약 캐시를 갱신합니다.

주요 API

메서드경로용도
POST/wwwroot/api/sync/upload계약 또는 정적 파일을 업로드 동기화합니다.
GET/wwwroot/api/sync/refresh대상 모듈 refresh API를 호출합니다.
GET/wwwroot/api/htmx/*HTMX 샘플/보조 API입니다.
GET/wwwroot/api/index/*화면 보조 API와 거래 직접 호출 래퍼입니다.

핵심 구현

  • ModuleInitializer.cs: 정적 파일 provider, 계약 리소스 경로, CORS/필터 처리를 구성합니다.
  • Areas/wwwroot/Controllers/SyncController.cs: 파일 업로드와 refresh 동기화 API입니다.
  • Areas/wwwroot/Controllers/IndexController.cs: 화면 보조 API와 transact 직접 호출을 제공합니다.
  • Extensions/ModuleApiClient.cs: 화면에서 업무 거래를 직접 호출하는 래퍼입니다.
  • Contracts/wwwroot: 계약 기반 화면/자산 매핑입니다.

주요 설정

설정설명
ContractRequestPath계약 기반 정적 리소스 요청 경로입니다. 기본값은 view입니다.
ContractBasePath계약 기반 화면 리소스 루트입니다.
WWWRootBasePath실제 정적 파일 루트입니다.
FileSyncTokens/wwwroot/api/sync/* 호출을 허용할 Basic token 목록입니다.
BusinessServerUrl화면 보조 API가 거래를 실행할 transact URL입니다.
ModuleLogFilePathwwwroot 모듈 로그 파일 경로입니다.

동기화 대상

SyncController는 계약 동기화 시 허용된 모듈만 처리합니다. 현재 소스 기준으로 dbclient, graphclient, transact, function, wwwroot 계약을 대상으로 합니다.

파일 업로드 후 refresh가 필요한 경우 대상 모듈의 refresh API가 호출됩니다. 예를 들어 DB 계약을 업로드하면 dbclient의 query 계약 캐시를 갱신해야 합니다.

실행 흐름

  1. 모듈 초기화 시 ContractBasePath/{ApplicationID}ContractRequestPath 아래 정적 파일 provider로 등록합니다.
  2. WWWRootBasePath는 실제 정적 파일 루트로 등록됩니다.
  3. 화면 요청은 계약 경로 또는 실제 정적 경로에서 파일을 찾습니다.
  4. 동기화 API는 Basic token을 검증한 뒤 파일을 저장하고 대상 모듈 refresh를 수행합니다.

운영 주의사항

  • FileSyncTokens가 비어 있으면 동기화 요청은 거부됩니다.
  • ContractRequestPathWWWRootBasePath는 요청 경로가 충돌하지 않게 분리합니다.
  • 정적 파일 동기화는 운영 화면에 직접 영향을 주므로 배포 권한과 감사 로그를 함께 관리합니다.
  • 화면에서 직접 거래를 호출하는 경우 BusinessServerUrl, 인증 토큰, 공개 거래 범위를 transact 설정과 함께 점검합니다.