checkup은 HandStack 운영 콘솔과 테넌트 앱 관리 기능을 제공하는 모듈입니다. 모듈 설정 초기화, 관리자 키 재설정, 로그인, 테넌트 앱 자산/설정 관리, 운영 기능 실행을 한곳에서 다룹니다.
module.json과 테넌트 settings.json을 읽어 운영 설정과 CORS 기준 정보를 초기화합니다.
- 관리자 로그인과 운영 콘솔 화면을 제공합니다.
- 테넌트 앱, 메뉴, 권한, 데이터베이스, 모듈 설정 같은 운영 정보를 조회하고 갱신합니다.
- repository 이벤트를 통해 로고, 프로필, 업로드 자산 같은 저장소 메타데이터와 연동합니다.
- 운영 콘솔에서 function 계약 실행을 시험할 수 있는 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입니다. |
ModuleBasePath | checkup 모듈 파일 기준 경로입니다. |
WWWRootBasePath | 운영 콘솔 정적 자산 경로입니다. |
ConnectionString | checkup 자체 SQLite 저장소 연결 문자열입니다. |
EventAction | 기본 발신 이벤트는 repository.Events.RepositoryRequest입니다. |
- 모듈 초기화 시
module.json을 읽고 ModuleConfiguration을 구성 합니다.
initialize-settings 호출로 테넌트 앱 설정을 읽어 Origin/Referer 기준 정보를 캐시합니다.
- 관리자는 계정 API를 통해 운영 콘솔에 접근합니다.
- 운영 콘솔은 필요에 따라
transact, dbclient, repository, function 계약을 호출해 설정과 자산을 관리합니다.
ManagedAccessKey, AuthorizationKey, EncryptionAES256Key는 운영 보안의 핵심 값이므로 환경별로 분리하고 외부에 노출하지 않습니다.
ConnectionString은 암호화 문자열도 허용하며 런타임에서 복호화해 사용합니다.
TenantAppController는 파일 시스템과 SQLite를 직접 다루므로 실행 계정의 파일 권한과 경로 격리가 중요합니다.
- 운영 콘솔은 관리 기능을 제공하므로 네트워크 접근 범위, 관리자 계정, 로그 보관 정책을 함께 점검합니다.