본문으로 건너뛰기

checkup

checkup은 HandStack 운영 콘솔과 테넌트 앱 관리 기능을 제공하는 모듈입니다. 모듈 설정 초기화, 관리자 키 재설정, 로그인, 테넌트 앱 자산/설정 관리, 운영 기능 실행을 한곳에서 다룹니다.

책임 범위

  • module.json과 테넌트 settings.json을 읽어 운영 설정과 CORS 기준 정보를 초기화합니다.
  • 관리자 로그인과 운영 콘솔 화면을 제공합니다.
  • 테넌트 앱, 메뉴, 권한, 데이터베이스, 모듈 설정 같은 운영 정보를 조회하고 갱신합니다.
  • repository 이벤트를 통해 로고, 프로필, 업로드 자산 같은 저장소 메타데이터와 연동합니다.
  • 운영 콘솔에서 function 계약 실행을 시험할 수 있는 API를 제공합니다.

주요 API

메서드경로용도
GET/checkup/api/managed/initialize-settings모듈과 테넌트 설정을 초기화합니다.
GET/checkup/api/managed/reset-administrator-key관리자 접근 키를 재설정합니다.
GET/checkup/api/account/login로그인 화면 또는 로그인 흐름을 시작합니다.
GET/checkup/api/account/sign-in관리자 로그인 링크를 처리합니다.
GET/POST/checkup/api/tenant-app/*테넌트 앱, 설정, 메뉴, 자산, DB 보조 기능을 관리합니다.
POST/checkup/api/function/execute운영 콘솔에서 function 계약을 실행합니다.

핵심 구현

  • Areas/checkup/Controllers/ManagedController.cs: 초기 설정과 관리자 키 관리 API입니다.
  • Areas/checkup/Controllers/AccountController.cs: 관리자 인증과 로그인 흐름을 담당합니다.
  • Areas/checkup/Controllers/TenantAppController.cs: 테넌트 앱 운영 기능의 대부분을 처리합니다.
  • Areas/checkup/Controllers/FunctionController.cs: 운영 콘솔의 function 실행 API입니다.
  • Services/JwtManager.cs, Services/UserAccountService.cs: 인증 토큰과 관리자 계정 처리입니다.
  • Contracts/dbclient, Contracts/function, Contracts/repository, Contracts/transact: checkup 자체 운영 기능이 사용하는 계약입니다.

주요 설정

설정설명
ManagedAccessKey관리 API 호출을 보호하는 접근 키입니다.
EncryptionAES256Key로그인 링크와 내부 보호 데이터에 사용하는 16자리 AES 키입니다.
AdministratorEmailID기본 관리자 이메일 ID입니다.
ModuleConfigurationUrl설정 초기화 API URL입니다.
BusinessServerUrl내부 거래 실행을 위한 transact URL입니다.
ModuleBasePathcheckup 모듈 파일 기준 경로입니다.
WWWRootBasePath운영 콘솔 정적 자산 경로입니다.
ConnectionStringcheckup 자체 SQLite 저장소 연결 문자열입니다.
EventAction기본 발신 이벤트는 repository.Events.RepositoryRequest입니다.

실행 흐름

  1. 모듈 초기화 시 module.json을 읽고 ModuleConfiguration을 구성합니다.
  2. initialize-settings 호출로 테넌트 앱 설정을 읽어 Origin/Referer 기준 정보를 캐시합니다.
  3. 관리자는 계정 API를 통해 운영 콘솔에 접근합니다.
  4. 운영 콘솔은 필요에 따라 transact, dbclient, repository, function 계약을 호출해 설정과 자산을 관리합니다.

운영 주의사항

  • ManagedAccessKey, AuthorizationKey, EncryptionAES256Key는 운영 보안의 핵심 값이므로 환경별로 분리하고 외부에 노출하지 않습니다.
  • ConnectionString은 암호화 문자열도 허용하며 런타임에서 복호화해 사용합니다.
  • TenantAppController는 파일 시스템과 SQLite를 직접 다루므로 실행 계정의 파일 권한과 경로 격리가 중요합니다.
  • 운영 콘솔은 관리 기능을 제공하므로 네트워크 접근 범위, 관리자 계정, 로그 보관 정책을 함께 점검합니다.