[Specification] 사이트·사용자 등록관리
대상 기관(사이트) 및 담당자 연락처 정보를 등록·조회·수정하는 기능 명세.
기관 단위 SLA, 계약 정보, 담당자 이메일·전화번호를 통합 관리한다.
1. 기관(사이트) 관리
1.1. 데이터 모델
| 필드 |
타입 |
설명 |
inst_id |
VARCHAR(20) |
기관 코드 (PK, 예: MOF, MOIS) |
inst_name |
VARCHAR(100) |
기관명 |
address |
VARCHAR(300) |
기관 주소 |
region |
VARCHAR(50) |
지역 (서울/세종/부산 등) |
contract_start |
DATE |
유지보수 계약 시작일 |
contract_end |
DATE |
유지보수 계약 종료일 |
sla_hours |
INT |
SLA 응답 시간 (기본 4시간) |
pm_contact |
VARCHAR(50) |
담당 PM 사번 |
phone |
VARCHAR(20) |
기관 대표 연락처 |
note |
TEXT |
특이사항·메모 |
is_active |
CHAR(1) |
Y: 활성 / N: 비활성 |
1.2. API 엔드포인트
| 메서드 |
URL |
권한 |
설명 |
GET |
/api/institutions |
ADMIN, PM |
전체 기관 목록 조회 |
GET |
/api/institutions/{inst_code} |
ADMIN, PM, ENGINEER |
기관 상세 조회 |
POST |
/api/institutions |
ADMIN |
기관 신규 등록 |
PATCH |
/api/institutions/{inst_code} |
ADMIN, PM |
기관 정보 수정 |
DELETE |
/api/institutions/{inst_code} |
ADMIN |
기관 비활성화 |
1.3. 응답 스키마 (InstitutionOut)
class InstitutionOut(BaseModel):
inst_code: str
inst_name: str
address: str | None
region: str | None
contract_start: date | None
contract_end: date | None
sla_hours: int
pm_contact: str | None
phone: str | None
note: str | None
is_active: str
server_count: int # 연결된 서버 수 (조인)
contact_count: int # 등록된 담당자 수 (조인)
created_at: datetime
updated_at: datetime
2. 기관 담당자 관리
2.1. 데이터 모델
| 필드 |
타입 |
설명 |
contact_id |
BIGINT |
PK |
inst_id |
VARCHAR(20) |
FK → TB_INST_META |
contact_name |
VARCHAR(50) |
담당자 이름 |
dept |
VARCHAR(100) |
부서명 |
position |
VARCHAR(50) |
직책/직급 |
role |
VARCHAR(30) |
MANAGER / ENGINEER / PM / SECURITY / HELPDESK |
email |
VARCHAR(100) |
이메일 주소 |
phone |
VARCHAR(20) |
직통 전화 |
mobile |
VARCHAR(20) |
휴대폰 번호 |
is_primary |
CHAR(1) |
Y: 주 담당자 |
is_active |
CHAR(1) |
Y: 재직중 |
2.2. API 엔드포인트
| 메서드 |
URL |
권한 |
설명 |
GET |
/api/institutions/{inst_code}/contacts |
ADMIN, PM, ENGINEER |
기관 담당자 목록 |
POST |
/api/institutions/{inst_code}/contacts |
ADMIN, PM |
담당자 추가 |
PATCH |
/api/institutions/{inst_code}/contacts/{id} |
ADMIN, PM |
담당자 수정 |
DELETE |
/api/institutions/{inst_code}/contacts/{id} |
ADMIN |
담당자 삭제(비활성) |
2.3. 담당자 역할 정의
| role |
설명 |
MANAGER |
기관 총괄 담당자 (SLA 관련 주 연락처) |
ENGINEER |
현장 엔지니어 (기술 담당) |
PM |
프로젝트 매니저 |
SECURITY |
정보보안 담당자 |
HELPDESK |
헬프데스크 / 1차 접수 담당자 |
3. ITSM 사용자 (내부 운영자) 관리
GUARDiA ITSM 로그인 계정 관리. 기관 담당자와 별도 관리.
3.1. 사용자 역할 (RBAC)
| 역할 |
설명 |
주요 기능 |
ADMIN |
시스템 관리자 |
전체 설정, 사용자 관리, 모든 기관 접근 |
PM |
PM / 팀장 |
SR 승인, 전체 현황 조회, 타임테이블 관리 |
ENGINEER |
SM 엔지니어 |
담당 SR 처리, 쉘 스크립트 실행, 타임테이블 입력 |
CUSTOMER |
기관 담당자 |
자기 기관 SR 등록 및 현황 조회만 허용 |
3.2. API 엔드포인트
| 메서드 |
URL |
권한 |
설명 |
GET |
/api/users |
ADMIN |
전체 사용자 목록 |
GET |
/api/users/me |
전체 |
내 프로필 조회 |
POST |
/api/users/register |
ADMIN |
신규 계정 생성 |
PATCH |
/api/users/{id} |
ADMIN |
사용자 정보 수정 |
POST |
/api/users/{id}/deactivate |
ADMIN |
계정 비활성화 |
POST |
/api/auth/login |
- |
로그인 (JWT 발급) |
POST |
/api/auth/logout |
전체 |
로그아웃 |
3.3. 사용자 추가 필드
class User(Base):
# 기존 필드 외 추가
email: str # 이메일 (알림 발송용)
phone: str | None # 휴대폰 (SMS 알림용)
dept: str | None # 부서명
position: str | None # 직책
inst_code: str | None # 소속 기관 코드 (CUSTOMER 역할용)
4. 프론트엔드 화면 구성
4.1. 기관 관리 화면 (view-institutions)
┌─────────────────────────────────────────────────────────┐
│ 🏢 기관(사이트) 관리 [+ 기관 등록] │
├─────────────────────────────────────────────────────────┤
│ [검색: 기관명] [지역 필터▼] [계약만료 임박▼] │
├──────┬───────────┬──────┬───────────┬──────┬────────────┤
│ 코드 │ 기관명 │ 지역 │ 계약 만료 │ 서버 │ SLA │
├──────┼───────────┼──────┼───────────┼──────┼────────────┤
│ MOF │ 기획재정부 │ 세종 │ 2025-12-31│ 8대 │ 4h │
│ MOIS │ 행정안전부 │ 서울 │ 2026-03-31│ 12대 │ 2h ⚠ │ ← SLA 단시간 경고
│ MSS │ 중소벤처부 │ 세종 │ 2025-11-30│ 5대 │ 4h 🔴 │ ← 만료 임박
└──────┴───────────┴──────┴───────────┴──────┴────────────┘
4.2. 기관 상세 / 담당자 탭
┌─ 기관 상세: 기획재정부 (MOF) ──────────────────────────┐
│ [기본정보] [담당자] [서버] [SR이력] [타임테이블] │
├─────────────────────────────────────────────────────────┤
│ 담당자 탭 [+ 담당자 추가] │
│ ┌──────────┬────┬────────────┬──────────────────┬──────┐ │
│ │ 이름 │역할│ 이메일 │ 연락처 │ 주담 │ │
│ ├──────────┼────┼────────────┼──────────────────┼──────┤ │
│ │ 김○○ │PM │ k@mof.go.kr│ 010-xxxx-xxxx │ ★ │ │
│ │ 이○○ │ENG │ l@mof.go.kr│ 02-xxxx-xxxx │ │ │
│ └──────────┴────┴────────────┴──────────────────┴──────┘ │
└─────────────────────────────────────────────────────────┘
5. 알림 연동
- 계약 만료 30일/7일/1일 전 → 담당 PM 이메일 발송 (Celery Beat 스케줄)
- SSL 인증서 만료 60일/30일/7일 전 → ITSM 알림 + 메신저 채널 경고
- SLA 초과 위험 SR → 기관 담당자 이메일/SMS 통보 (연락처 DB 기반)