docs.membloc.com

membloc docs

제품, 플랫폼, 운영 문서를 한곳에서 읽는 Membloc 공식 문서 포털입니다.

Phase 3 QA Runbook

Scope: publisher portal, webhook delivery, API key management, analytics Last updated: 2026-04-12


목적

이 문서는 로컬 또는 staging 환경에서 Phase 3 핵심 흐름을 반복 검증하기 위한 seed + QA 시나리오를 정리한다.

검증 대상:

  • Publisher module metadata
  • API key issuance and revoke
  • Webhook creation and delivery logs
  • Analytics summary and daily chart

1. 준비

필수:

  • membloc-app-engine DB 마이그레이션 완료
  • membloc-developer-portal 로컬 환경값 설정 완료
  • DATABASE_URL 사용 가능

권장:

  • backend: http://localhost:8080
  • portal: http://localhost:3000

2. Seed 데이터 주입

다음 스크립트는 반복 실행 가능한 demo 데이터를 넣는다.

cd /Users/jeongmokhwang/jmcunst/project/homb-project/membloc-app-engine
DATABASE_URL=postgres://... ./scripts/seed_phase3_demo.sh

Seed 결과:

  • approved publisher 1개
  • family 1개
  • published server module 1개
  • screenshots / privacy / support metadata
  • API key 1개
  • webhook 2개
  • delivery log 샘플
  • 최근 14일 module_daily_stats

데모 기준 module key:

  • com.membloc.budget-pro

3. 수동 QA 시나리오

A. Dashboard analytics

확인 위치:

  • portal /dashboard

기대 결과:

  • publisher summary 카드 표시
  • installs / uninstalls 차트 표시
  • active installs, period installs, errors 숫자 표시

실패 시 확인:

  • /api/publisher/analytics/overview?days=14
  • module_daily_stats seed 여부

B. Module detail analytics

확인 위치:

  • portal /modules/com.membloc.budget-pro

기대 결과:

  • review readiness 패널 표시
  • uploaded assets 표시
  • API key 패널 표시
  • webhook 패널 표시
  • installs / uninstalls 차트 표시

실패 시 확인:

  • /api/publisher/modules/com.membloc.budget-pro/analytics
  • /api/publisher/modules/com.membloc.budget-pro/analytics/daily

C. API key flow

시나리오:

  1. module detail에서 issue api key
  2. plaintext key 1회 표시 확인
  3. 페이지 refresh 후 plaintext 재노출 안 되는지 확인
  4. revoke 버튼으로 제거

기대 결과:

  • DB에는 hash만 저장
  • UI에는 plaintext 재조회 불가
  • revoke 후 목록에서 제거

D. Webhook management

시나리오:

  1. module detail에서 webhook 생성
  2. secret 1회 표시 확인
  3. 기존 seeded webhook logs 확인
  4. delete 동작 확인

기대 결과:

  • newly created secret only once
  • existing logs 표시
  • delete 후 목록 제거

E. Runtime analytics increment

시나리오:

  1. runtime token 준비
  2. /api/runtime/:moduleKey/families/:familyId/data GET/POST/PUT/DELETE 실행
  3. 일부 호출은 의도적으로 실패시킴
    • invalid body
    • wrong permission
  4. analytics 재확인

기대 결과:

  • 모든 runtime endpoint hit는 api_calls 증가
  • 4xx/5xx는 errors 증가

4. 빠른 API 확인 쿼리

publisher analytics:

curl -H "Authorization: Bearer $TOKEN" \
  "http://localhost:8080/api/publisher/analytics/overview?days=14"

module analytics summary:

curl -H "Authorization: Bearer $TOKEN" \
  "http://localhost:8080/api/publisher/modules/com.membloc.budget-pro/analytics?days=14"

module analytics daily:

curl -H "Authorization: Bearer $TOKEN" \
  "http://localhost:8080/api/publisher/modules/com.membloc.budget-pro/analytics/daily?days=14"

module api keys:

curl -H "Authorization: Bearer $TOKEN" \
  "http://localhost:8080/api/publisher/modules/com.membloc.budget-pro/api-keys"

module webhooks:

curl -H "Authorization: Bearer $TOKEN" \
  "http://localhost:8080/api/publisher/modules/com.membloc.budget-pro/webhooks"

5. 테스트용 runtime 호출 예시

runtime list:

curl -H "Authorization: Bearer $MODULE_TOKEN" \
  "http://localhost:8080/api/runtime/com.membloc.budget-pro/families/fam-demo-membloc/data"

runtime set:

curl -X POST \
  -H "Authorization: Bearer $MODULE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key":"budget/monthly","value":{"month":"2026-04","budget":3200000}}' \
  "http://localhost:8080/api/runtime/com.membloc.budget-pro/families/fam-demo-membloc/data"

expected invalid request:

curl -X POST \
  -H "Authorization: Bearer $MODULE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}' \
  "http://localhost:8080/api/runtime/com.membloc.budget-pro/families/fam-demo-membloc/data"

6. QA 완료 기준

  • seed 스크립트 실행 후 portal dashboard/module detail이 비어 있지 않음
  • API key 발급/폐기 가능
  • webhook 생성/삭제 가능
  • webhook delivery logs 확인 가능
  • runtime endpoint hit 이후 analytics 숫자 변화 확인 가능

7. 남은 공백

현재 runbook은 다음을 아직 자동화하지 않는다.

  • Firebase login token 발급 자동화
  • webhook 실제 외부 endpoint mock server
  • scheduled retry completion 검증
  • analytics api_calls/errors에 대한 장기 부하 시나리오

다음 단계에서 고려:

  • local webhook mock receiver script
  • runtime token issue helper script
  • end-to-end smoke script