가상 진료예약 API와 n8n을 연결해 안전한 알림 자동화 패턴을 보여주는 공개 포트폴리오 프로젝트 초안입니다.
이 프로젝트는 실제 의료기관, EMR, 환자정보, 업무 규칙과 관련이 없습니다. 모든 데이터와 API 계약은 포트폴리오를 위해 새로 설계한 가상 예시입니다.
- FastAPI 기반 가상 업무 API
- n8n 스케줄·HTTP·Code·IF 노드 연계
- 서버 결과와 워크플로우의 이중 필터
- 대상 0건 정상 종료
- idempotency key를 이용한 중복 요청 방지
- 처리 후 결과 재조회
- 실행 워크플로우와 모니터링 워크플로우 분리
알림 대상은 예약 확정, 알림 동의, 허용 채널, 미래 예약 시각 조건을 모두 만족해야 합니다. API가 한 번 필터링하고 n8n Code 노드가 같은 기준을 다시 확인합니다. 두 결과가 다르면 처리하지 않는 fail-safe 구조입니다.
FastAPI Mock API
├─ 예약 조회
├─ 알림 대상 미리보기
├─ 알림 요청
├─ 처리 결과 조회
└─ 실패 결과 조회
n8n
├─ notification.json
│ ├─ 스케줄
│ ├─ 미리보기 API
│ ├─ 이중 필터
│ ├─ 0건 조기 종료
│ ├─ 알림 요청
│ └─ 결과 재조회
└─ monitor.json
├─ 모니터링 스케줄
├─ 실패 조회
└─ 점검 결과 정규화
아직 이 초안에서는 Docker·API·n8n 워크플로우를 실행하지 않았습니다. 공개 저장소로 옮긴 뒤 다음 순서로 검증합니다.
.env.example을.env로 복사하고 공개용 개발값을 설정- Docker Compose로 가상 API와 n8n 시작
- API healthcheck 확인
- 두 워크플로우를 n8n에 import
- 수동 실행으로 0건·정상·중복·실패 시나리오 확인
- API 결과와 워크플로우 결과의 mismatch가 0인지 확인
- 모니터링 워크플로우를 함께 활성화
- 대상 0건
- 알림 미동의
- 취소된 예약
- 과거 예약 시각
- 중복 idempotency key
- 업무 실패 응답
- 결과 재조회 불일치
- 모니터링 대상 없음
- 실제 의료정보를 입력하지 않습니다.
- 실제 EMR·DB·API 주소를 설정하지 않습니다.
.env, n8n credential, 실행 DB와 로그를 커밋하지 않습니다.- 모든 fixture는 생성 스크립트로 다시 만들 수 있어야 합니다.