본문으로 건너뛰기

Site 도메인 요구사항 명세서

1. 기능 요구사항

1.1. 사이트 등록 관리

1.1.1. 사이트 등록 요청 생성

  • SITE-FR-BE-001: 사용자는 사이트 이름, 관리자 계정 정보(이메일, 비밀번호, 이름, 전화번호)와 함께 사이트 등록을 요청할 수 있어야 한다.
  • SITE-FR-BE-002: 사이트 등록 요청 시 관리자 계정의 이메일은 기존에 등록되지 않은 이메일이어야 한다.
  • SITE-FR-BE-003: 이미 존재하는 이메일로 사이트 등록을 요청할 경우 "이미 동일한 이메일 정보가 존재합니다." 오류를 반환해야 한다.
  • SITE-FR-BE-004: 사이트 등록 요청 시 생성된 계정의 Group은 medi.site-admin으로 자동 설정되어야 한다.
  • SITE-FR-BE-005: 사이트 등록 요청 시 관리자 계정에는 healthcare.prescriberAdmin role을 부여하여 처방을 할 수 있도록 한다.

1.1.2. 등록 요청 목록 조회

  • SITE-FR-BE-006: Platform Admin 그룹 사용자는 모든 사이트 등록 요청 목록을 조회할 수 있어야 한다.
  • SITE-FR-BE-007: 등록 요청 목록 조회 시 페이지네이션을 지원해야 한다 (limit, page).
  • SITE-FR-BE-008: 페이지네이션 기본값은 limit=10, page=1이어야 한다.
  • SITE-FR-BE-009: 사이트 코드(code) 또는 사이트명(name)으로 검색할 수 있어야 한다 (searchKey).
  • SITE-FR-BE-010: 등록 요청 목록을 created_at, name, code, status 필드로 정렬할 수 있어야 한다.
  • SITE-FR-BE-011: 정렬 방향은 오름차순(asc) 또는 내림차순(desc)이며, 기본값은 created_at 내림차순이다.
  • SITE-FR-BE-012: 승인 상태(approved, pending)로 필터링할 수 있어야 한다 (filterBy).
  • SITE-FR-BE-013: status로 정렬 시 내부적으로 approved 필드로 변환되어 처리되어야 한다.
  • SITE-FR-BE-014: 허용되지 않은 필드로 정렬 요청 시 "Invalid orderBy parameter" 오류를 반환해야 한다.

1.1.3. 등록 요청 상세 조회

  • SITE-FR-BE-015: Platform Admin 그룹 사용자는 등록 요청 ID(UUID)로 특정 등록 요청의 상세 정보를 조회할 수 있어야 한다.
  • SITE-FR-BE-016: 등록 요청 상세 정보에는 사이트 정보와 함께 등록된 모든 계정 정보가 포함되어야 한다.
  • SITE-FR-BE-017: 요청한 등록 ID가 유효한 UUID 형식이 아닌 경우 "입력 값이 유효하지 않습니다" 오류를 반환해야 한다.
  • SITE-FR-BE-018: 존재하지 않는 등록 ID로 요청 시 "등록된 기관 신청 정보를 찾을 수 없습니다" 오류를 반환해야 한다.

1.1.4. 등록 요청 승인

  • SITE-FR-BE-019: Platform Admin 그룹 사용자는 사이트 등록 요청을 승인할 수 있어야 한다.
  • SITE-FR-BE-020: 등록 요청 승인 시 특정 계정들만 선택적으로 승인할 수 있어야 한다.
  • SITE-FR-BE-021: 등록 요청 승인 시 승인자의 계정 ID가 자동으로 기록되어야 한다.
  • SITE-FR-BE-022: 등록 요청 승인 시 사이트 등록 ID(siteRegistrationId)는 필수 항목이어야 한다.
  • SITE-FR-BE-023: 등록 요청 승인 성공 시 승인된 등록 요청의 전체 정보를 반환해야 한다.
  • SITE-FR-BE-024: 등록 요청 승인 시 실제 사이트와 계정이 생성되어야 한다.

1.2. 사이트 조회 및 검색

  • SITE-FR-BE-025: Platform Admin 그룹 사용자는 등록된 모든 사이트 목록을 조회할 수 있어야 한다.
  • SITE-FR-BE-026: 사이트 목록 조회 시 페이지네이션을 지원해야 한다 (limit, page 파라미터).
  • SITE-FR-BE-027: 페이지네이션 기본값은 limit=10, page=1이어야 한다.
  • SITE-FR-BE-028: limit 최대값은 100으로 제한되어야 한다.
  • SITE-FR-BE-029: 사이트 코드(code) 또는 사이트명(name)으로 검색할 수 있어야 한다 (searchKey 파라미터).
  • SITE-FR-BE-030: 사이트 목록을 특정 필드로 정렬할 수 있어야 한다 (orderBy 파라미터).
  • SITE-FR-BE-031: 정렬 가능한 필드는 created_at, name, code로 제한되어야 한다.
  • SITE-FR-BE-032: 정렬 방향을 오름차순(asc) 또는 내림차순(desc)으로 지정할 수 있어야 한다 (orderDirection 파라미터).
  • SITE-FR-BE-033: 정렬 기본값은 created_at 기준 내림차순(desc)이어야 한다.
  • SITE-FR-BE-034: 허용되지 않은 필드로 정렬을 요청할 경우 "Invalid orderBy parameter" 오류를 반환해야 한다.

1.3. 특정 사이트 상세 조회

  • SITE-FR-BE-035: Platform Admin 그룹 사용자는 사이트 ID(UUID)로 특정 사이트의 상세 정보를 조회할 수 있어야 한다.
  • SITE-FR-BE-036: 사이트 상세 조회 API는 JWT 인증과 Admin 권한 검증을 통과한 사용자만 접근할 수 있어야 한다.
  • SITE-FR-BE-037: 요청한 사이트 ID가 유효한 UUID 형식이 아닌 경우 "입력 값이 유효하지 않습니다" 오류를 반환해야 한다.
  • SITE-FR-BE-038: 요청한 사이트 ID에 해당하는 사이트가 존재하지 않는 경우 "등록된 기관을 찾을 수 없습니다" 오류를 반환해야 한다.
  • SITE-FR-BE-039: 사이트 상세 정보에는 사이트의 모든 속성(id, name, description, code, clinicalResearch, managedByCrm 등)이 포함되어야 한다.

1.4. 사이트 생성

  • SITE-FR-BE-040: Platform Admin 그룹 사용자는 새로운 사이트를 생성할 수 있어야 한다.
  • SITE-FR-BE-041: 사이트 생성 시 사이트명(name)은 필수 항목이어야 한다.
  • SITE-FR-BE-042: 사이트 생성 시 사이트 코드(code), 설명(description)을 선택적으로 입력할 수 있어야 한다.
  • SITE-FR-BE-043: 사이트 생성 시 임상연구 여부(clinicalResearch)를 설정할 수 있어야 한다.
  • SITE-FR-BE-044: 사이트 생성 시 CRM 관리 여부(managedByCrm)를 설정할 수 있어야 한다.
  • SITE-FR-BE-045: 사이트 생성 시 등록 요청 ID(registrationId)를 연결할 수 있어야 한다.
  • SITE-FR-BE-046: 사이트 생성 시 매칭 키워드(matchingKeywords) 배열을 설정할 수 있어야 한다.
  • SITE-FR-BE-047: 필수 항목이 누락되거나 형식이 올바르지 않은 경우 "입력 값이 유효하지 않습니다" 오류를 반환해야 한다.
  • SITE-FR-BE-048: 사이트 생성 성공 시 생성된 사이트의 전체 정보를 반환해야 한다.

1.5. 사이트 정보 수정

  • SITE-FR-BE-049: Platform Admin 그룹 사용자는 사이트 ID(UUID)로 특정 사이트의 정보를 수정할 수 있어야 한다.
  • SITE-FR-BE-050: 사이트명(name), 코드(code), 설명(description)을 수정할 수 있어야 한다.
  • SITE-FR-BE-051: 임상연구 여부(clinicalResearch), CRM 관리 여부(managedByCrm)를 수정할 수 있어야 한다.
  • SITE-FR-BE-052: 매칭 키워드(matchingKeywords) 배열을 수정할 수 있어야 한다.
  • SITE-FR-BE-053: 등록 요청 ID(registrationId)를 수정할 수 있어야 한다.
  • SITE-FR-BE-054: 요청한 사이트 ID가 유효한 UUID 형식이 아닌 경우 "입력 값이 유효하지 않습니다" 오류를 반환해야 한다.
  • SITE-FR-BE-055: 수정하려는 사이트가 존재하지 않는 경우 "등록된 기관을 찾을 수 없습니다" 오류를 반환해야 한다.
  • SITE-FR-BE-056: 사이트 수정 성공 시 수정된 사이트의 전체 정보를 반환해야 한다.

1.6. 사이트 삭제

  • SITE-FR-BE-057: Platform Admin 그룹 사용자는 사이트 ID(UUID)로 특정 사이트를 삭제할 수 있어야 한다.
  • SITE-FR-BE-058: 사이트 삭제는 기본적으로 소프트 삭제(soft delete)로 처리되어야 한다.
  • SITE-FR-BE-059: 소프트 삭제 시 사이트는 삭제 시간(deletedAt)이 기록되어야 한다.
  • SITE-FR-BE-060: hard 파라미터를 true로 설정하면 물리적 삭제(hard delete)가 수행되어야 한다.
  • SITE-FR-BE-061: 물리적 삭제 시 사이트 데이터가 데이터베이스에서 완전히 제거되어야 한다.
  • SITE-FR-BE-062: 요청한 사이트 ID가 유효한 UUID 형식이 아닌 경우 "입력 값이 유효하지 않습니다" 오류를 반환해야 한다.
  • SITE-FR-BE-063: 삭제하려는 사이트가 존재하지 않는 경우 "등록된 기관을 찾을 수 없습니다" 오류를 반환해야 한다.
  • SITE-FR-BE-064: 사이트 삭제 성공 시 삭제된 사이트의 정보를 반환해야 한다.

2. 제약 사항

2.1 데이터 제약

  • SITE-CR-001: site 관련 데이터(sites, site_registrations)는 'site' 스키마에 저장되어야 한다.

변경 이력

버전날짜작성자변경 내용
0.58.02025-12-16dalia@weltcorp.com최초 작성