English {#english}
Scope: After provisioning, show success animation and portal links only when readiness checks pass (DNS, Frappe, admin API probe, Zuplo); align welcome email with the same URLs; surface Employee portal, Administrator portal, Onboarding URL, Live support from CP-backed config.
Existing UI: apps/admin-web/app/page.tsx — ReadyToLaunchStep (step 6), Lottie progress/success, job polling.
Related plans: Plan A · Plan B · Plan C · Onboarding, provisioning, logpath, admin console
한국어 {#korean}
1. 상태 모델 (job vs activation)
| 개념 | 의미 | UI |
|---|---|---|
job.status Running/Pending | 파이프라인 진행 | 진행 Lottie + 체크리스트 |
| Failed | 실패 | 에러 + trace |
Completed 且 readiness.all_passed = false | 파이프 끝, 검증 미통과 | “확인 중” 등 |
Completed 且 readiness.all_passed = true | 활성화 가능 | 성공 애니메이션 + 포털 + Open tenant |
호환: readiness 필드 없으면 기존 동작 유지 또는 플래그 ACTIVATION_GATE_STRICT로 점진 롤아웃.
2. Readiness 체크 목록 (초안)
| check_id | 검증 | 실패 메시지 키 |
|---|---|---|
dns_a | 테넌트 서브도메인 DNS | readiness_dns |
frappe_http | Frappe 헬스 HTTP | readiness_frappe |
admin_api | Administrator API probe(비밀 미노출) | readiness_api |
zuplo_route | Zuplo 키/라우트 존재 | readiness_zuplo |
실행 주체: GitHub Actions 마지막 스텝 또는 CP post-provision Worker 등 한 곳으로 통일.
3. API 계약 확장 (개념)
GET /v1/jobs/:id 및 GET /internal/onboarding-status에 동기화:
"readiness": { "all_passed": false, "checked_at": "ISO8601", "checks": [ { "id": "dns_a", "passed": true, "detail": "optional" }, { "id": "frappe_http", "passed": false, "detail": "timeout" } ]}4. 포털·지원 블록 (데이터 출처)
| UI 라벨 | 소스 |
|---|---|
| Employee portal | CP 테넌트 메타 또는 EMPLOYEE_PORTAL_URL_TEMPLATE |
| Administrator portal | https://{slug}.pregoi.com 또는 메타 |
| Onboarding URL | client-web 경로와 동일 상수를 CP가 반환 |
| Live support | Variables SUPPORT_URL, SUPPORT_EMAIL |
admin-web Step 6는 job JSON 위주로 렌더(하드코딩 최소화).
5. 이메일 정합
- 템플릿 변수:
tenant_id,trace_id, 위 URL 4종,origin_url_with_trace. - 정책 결정:
readiness.all_passed이후에만 “완료 메일” 발송할지 vsCompleted직후 발송할지. - 실패: 재시도 큐 + Plan B 이벤트
m_welcome_email_fail(사전에 사전에 추가).
6. 멀티레포 실행 순서
- CP: readiness 검증 + job API 필드.
- prego-ansible / Actions: 검증 스텝에서 CP 콜백.
- Zuplo: readiness의 zuplo 축 확인용 내부 API(또는 CP가 Zuplo Admin API 호출).
- admin-web: Completed + readiness 게이트 + 포털 블록.
- 메일 템플릿.
- Plan B 계측.
7. DoD
- 스테이징: DNS만 막은 경우 Completed여도 성공 애니메이션 미표시, 이유 표시.
- 메일 미리보기와 Step 6 URL 일치 검증.
8. 교차 참조 매트릭스
| A | B | C | |
|---|---|---|---|
| D | — | readiness·메일 이벤트 | 메일 내 trace |