문서

WBS (Work Breakdown Structure)

맑은메시지(가칭) — NHN Cloud Notification Hub 기반 멀티 테넌트 메시징 SaaS.

5단계(준비 → 정책 → 기획·설계 → 디자인 → 개발)를 가중치로 묶어 단일 사이클로 진행. 일별 변경은 doc/history/에 누적 기록.

마지막 현행화: 2026-06-04


진행률 스냅샷 (2026-06-04 기준)

Step가중치진행률핵심 진행 사항
Step 1 · 프로젝트 준비10%55%R&R·텔레그램·화면설계 정본·환경 셋팅 완료. 도메인·브랜딩·계약서·마케팅 진행 중
Step 2 · 주요 서비스 정책 이슈 정리15%55%회원 구조·결제·메시지 채널·주소록 정책 90% 합의. PG = 토스(TossPayments) 확정(6/4). 후불결제·캠페인 AB 테스트 미정
Step 3 · 서비스 기획 (화면설계)20%35%BackOffice 1차 5종 70%. 2차·통계·운영가이드 미진
Step 4 · 디자인 / 퍼블리싱10%20%사용자단 Relay-inspired DS 정본·디자인 가이드(/guide) 살아있는 카탈로그로 대체 운영. 정식 스타일 가이드·MD 산출물은 미작성
Step 5 · 서비스 개발45%55%UI(5-3A) 거의 완료(14✅) / API(5-2) 약 72%(13✅+2🟢+3⚪) — 6/4 신규 5-2-19 WBS R2 + 5-2-20 /me/email-change + 5-2-21 NHN Notification Hub 어댑터 / 연동(5-3C) 약 40%(10✅+2🟢+8⚪) — 6/4 5-3C-7(이메일·휴대폰 변경 OTP) + 5-3C-20(서비스 담당자 이메일 변경) 완료 / 관리자단(5-4) 핸드오프 17 페이지 화면 ✅ + dev=screen/partial/live 라벨 + 로고 통일 / 통합·배포(5-5) Hyperdrive Tunnel 전환 + NHN Email 실 발송 ✅. 가중평균 약 55%.

전체 가중평균: 약 47.5% (0.10×55 + 0.15×55 + 0.20×35 + 0.10×20 + 0.45×55 ≈ 47.5)

상태 범례: ✅ 완료 · 🟢 진행 중 · ⚪ 대기 · ⛔ 보류

김도형 담당 — 7/3 개발·테스트 완료 일정 (6/4 결정)

남은 task를 우선순위·블로커 의존 순으로 5주에 배분.

주차기간주요 마일스톤대상 task
W16/5~6/9잔작업·in_progress 마무리 + P0 backbone5-3C-2(로그아웃) · 5-3C-5(약관) · 5-3C-6(companyType) · 5-2-10(웹훅 전 채널)
W26/10~6/15사용자단 발송·NHN real 1차5-3C-3(비번 재설정 OTP) · 5-3-14(시스템 페이지) · 5-2-16(envelope) · 5-5-12(NHN SMS) · 5-3C-12(발송 6채널 실 API)
W36/16~6/22이력/통계/주소록/문의 + Flow 엔진5-3C-13·14·16 · 5-2-11(Export worker) · 5-2-12(Flow 엔진) · 5-5-5(push/rcs/kakao 어댑터)
W46/23~6/29캠페인·PG·관리자단 P05-2-13(캠페인) · 5-2-14(PG 토스) · 5-5-8(결제 연동) · 5-3C-15(크레딧·결제) · 5-3C-8·9·10(계정 부속) · 5-4-3·4·5·6·8(관리자 P0)
W56/30~7/3관리자단 잔여 + AI + 외부 의존 + 통합 테스트5-4-7·9·10·11·12·13 · 5-2-15(AI 게이트웨이) · 5-5-9(AI 연동) · 5-5-6(NICE 실 모드, 외부 의존)

운영성 task(5-5-1 사용자단 배포 카운터·5-5-3 API Workers 배포 카운터)는 단일 마감일이 없는 누적 지표이므로 일정 미설정.


단계별 가중치

단계비중
1. 프로젝트 준비10%
2. 주요 서비스 정책 이슈 정리15%
3. 서비스 기획 (화면설계)20%
4. 디자인 / 퍼블리싱10%
5. 서비스 개발45%

개발 비중이 큰 프로젝트라 Step 5를 45%로 가중. Step 1·2는 합의·문서 위주라 가볍게.


Step 1 — 프로젝트 준비 (10%)

1-1. R&R · 사업 기획

ID작업상태담당산출물 / 메모목표일완료일
1-1-1작업 R&R 분배김덕조메모 확인5/85/8
1-1-2경쟁 서비스 가격 분석컨설팅팀경쟁사 단가표
1-1-3당사 원가 확인 및 가격 정책 결정 (단가 결정)🟢컨설팅팀기본 단가 책정(고객 모수에 따른 할인률 정책 필요), MMS는 이미지 3장까지 비용설계, 단가표(기획안)

1-2. 사업 준비

ID작업상태담당산출물 / 메모목표일완료일
1-2-1특수한 유형의 메시징 사업자 신청컨설팅팀프로젝트 추진 중간평가 이후 진행
1-2-2통신판매사업자 신청컨설팅팀프로젝트 추진 중간평가 이후 진행
1-2-3자본 Up 방안프로젝트 추진 중간평가 이후 진행
1-2-4관련 계약서 작성🟢컨설팅팀가입신청서·이용약관·개인정보처리방침·요금신고내역 초안 / 1차 검토 완료 → 2차 수정본 진행 / 전무님 검토 필요

1-3. 커뮤니케이션

ID작업상태담당산출물 / 메모목표일완료일
1-3-1그룹 텔레그램 개설김도형맑은메시지 TF5/85/8
1-3-2화면설계 — 피그마 정본김경은피그마5/115/11
1-3-3문서 공유 폴더김덕조프로젝트 폴더

1-4. 서비스 메타 결정

ID작업상태담당산출물 / 메모
1-4-1서비스 도메인 결정김덕조
1-4-2브랜딩 (맑은메시지 외 함께 아이데이션)김덕조
1-4-3마케팅 기획 — 기존 고객군 & 메시징 only 고객군안병훈

1-5. 프로젝트 환경 셋팅

ID작업상태담당산출물 / 메모목표일완료일
1-5-1커뮤니케이션 문서 폴더 운영김덕조폴더 셋팅5/85/8
1-5-2GitHub(malgnsoft) · Cloudflare 셋팅김도형3 레포(malgn-noti·-admin·-api) + Cloudflare Pages 2 + Workers 15/115/11
1-5-3사용자단김도형https://malgn-noti.pages.dev/5/115/11
1-5-4관리자단김도형https://malgn-noti-admin.pages.dev/5/115/11
1-5-5API 서버김도형https://malgn-noti-api.malgnsoft.workers.dev/5/115/11

Step 2 — 주요 서비스 정책 이슈 정리 (15%)

2-1. 프로토타입 및 문서

ID작업상태담당산출물 / 메모
2-1-1Front 프로토타입🟢김덕조https://malgn-notifications.pages.dev/#/IA 정본(263 페이지)
2-1-2Front 메뉴 및 스펙/#/sitemap
2-1-3Front 페이지 리스트김덕조/#/pagelists
2-1-4BackOffice 프로토타입김경은프로토타입 만들지 말지 결정
2-1-5BackOffice 메뉴 및 스펙/#/backoffice + Google Sheets

2-2. 주요 서비스 참조

ID작업상태담당산출물 / 메모
2-2-1NHN Cloud Notification 서비스통합 대상
2-2-2비즈 뿌리오 서비스참조

2-3. 캠페인 서비스

ID작업상태담당산출물 / 메모
2-3-1벤치마킹 조사안병훈솔라피(CRM 결합) + 개별 문자 발송 사례

2-4. 회원·결제·계약 정책

ID작업상태담당산출물 / 메모목표일완료일
2-4-1회원가입·판매방식 — 후불 정산 / 개인 회원 추가🟢김덕조법인사업자/개인사업자/개인 3유형, 회원유형별 계약서 초안 단계별, 카드 충전식 vs 후불 결제, 계정관리>계약관리에 지급이행보증보험 첨부 인터페이스 추가5/125/12
2-4-2회원 구조 — 멀티 계정 (주계정·보조계정)🟢김덕조법인·개인사업자만 멀티계정 추가 탭 노출, 개인은 미노출5/125/12
2-4-3결제 — 자동충전김덕조크레딧 일정금액 이하일 때 n원 자동 충전 (향후 재논의)
2-4-4결제내역 — 결제 페이지 추가김덕조
2-4-5결제 — 후불 결제 고려김덕조후불결제 내부로직은 -크레딧, 후불시 사용 크레딧 표현, 다음 결제일 표현
2-4-6계약관리 정책법인·개인사업자 온라인 계약 절차 후 BackOffice 승인 → 로그인 가능 (후불시 통장사본). 개인은 계약관리 없음 → 즉시 사용

2-5. 메시지 채널 정책

ID작업상태담당산출물 / 메모목표일완료일
2-5-1AI 문장 다듬기 기능🟢김덕조발송창(알림톡 제외)에 AI검토(맞춤법·문장 다듬기). 문자·RCS·이메일에 AI 문장다듬기 기능 추가5/125/12
2-5-2광고용 선택 시 수신거부 전화번호 이슈김덕조광고 선택 시 수신거부 번호 입력창 분리(맨 마지막). 내용 재확인 후 인터페이스 설계 예정
2-5-3순차발송🟢김덕조알림톡 미수신 시 SMS/LMS 순차발송 기본세팅, RCS·복합·푸시는 상단 설명. 복합(플로우) 생성 관리 화면의 Default 알림톡→SMS→이메일 순 호출5/125/12
2-5-4랜딩페이지 만들기 추가🟢김덕조랜딩페이지 관리 페이지 + 기본형·확장형 화면 추가5/125/12
2-5-5발신번호 관리에 휴대폰번호 추가🟢김덕조유선(증명서 업로드) + 휴대폰(본인인증 PASS) 인터페이스5/125/12

2-6. 캠페인·주소록·브랜드

ID작업상태담당산출물 / 메모목표일완료일
2-6-1캠페인 관리 — AB 테스트 기능김덕조대상자에게 랜덤으로 A·B 메시지 발송 후 성과 비교. 캠페인 관리 기능 최종 정의 후 설계
2-6-2주소록 — CRM 기능 확대🟢김덕조이메일·전화번호 클릭 시 단건 발송 레이어 팝업. 연락처·그룹에 메시지채널 선택 후 바로가기. CRM 예제 화면 수집(안병훈)5/125/12
2-6-3브랜드 네임안병훈 외 전체

Step 3 — 서비스 기획 (화면설계 or 설계) (20%)

3-1. Front

ID작업상태담당산출물 / 메모목표일
3-1-1프로토타입으로 대체🟢김덕조·김경은https://malgn-notifications.pages.dev/#/
3-1-2서비스 메뉴 콘텐츠컨설팅팀·김경은
3-1-3운영가이드김덕조·김경은(사용자단 /help 라이브 — 컨텐츠 보강 필요)

3-2. BackOffice 1차

ID작업상태담당산출물 / 메모목표일
3-2-1공통 / 로그인 / 계정 관리🟢김경은바로가기5/22
3-2-2회원 / 고객사 관리🟢김경은회원 발송 이력 관리, 고객사 결제 상세, 환불신청 제외5/22
3-2-3시스템 관리🟢김경은운영자 계정 관리, 권한/역할 관리(RBAC), 감사 로그5/22
3-2-4요금 / 단가 관리🟢김경은바로가기5/29
3-2-5고객지원🟢김경은운영 가이드 관리 제외5/29
3-2-6발송 운영 모니터링김경은캠페인 제외, 회원/고객사 관리의 회원 발송 이력 포함6/12
3-2-7발신 정보 검수김경은6/12
3-2-8결제 / 크레딧 관리, 고객사 상세 결제 탭김경은6/19
3-2-9템플릿 검수 / 관리김경은샘플 템플릿 관리, AI 템플릿 정책 관리 제외6/24
3-2-10수신거부 (운영)김경은6/24

3-3. BackOffice 2차

ID작업상태담당산출물 / 메모
3-3-1통계 / 리포트김경은
3-3-2대시보드김경은
3-3-3템플릿 검수 / 관리 (AI 템플릿 정책 관리)김경은샘플 템플릿 관리, AI 템플릿 정책 관리
3-3-4발송 운영 모니터링 (캠페인)김경은캠페인 진행
3-3-5고객지원김경은운영 가이드 관리
3-3-6콘텐츠 / 사이트 관리김경은시스템 설정, 점검 모드 관리, 외부 연동 설정
3-3-7시스템 관리김경은
3-3-8API 관리김경은

Step 4 — 디자인 / 퍼블리싱 (10%)

ID작업상태담당산출물 / 메모
4-1디자인 스타일 가이드김양현(개발 측에서 doc/DESIGN.md Relay-inspired v1.0 정본 + /guide 라이브 카탈로그를 운영 — 디자인팀 정식 스타일 가이드 별도 필요)
4-2퍼블리싱 MD 파일김양현(개발 측에서 Nuxt 3 + Nuxt UI v3 + Tailwind v4로 직접 퍼블리싱 운영 중)

Step 5 — 서비스 개발 (45%)

⚠️ 2026-06-01 재구성 — 원본 WBS는 채널·도메인 단위로 묶여 있었으나, 실제 진행은 사용자단 화면이 6채널·전 도메인에 걸쳐 빠르게 완성된 반면 관리자단은 셸·기획 단계에 머무름. 진행 그래프가 더 잘 보이도록 산출물 단위로 재정렬.

5-1. 설계 및 준비

ID작업상태담당산출물 / 메모목표일완료일
5-1-1아키텍처 설계김도형malgn-noti/doc/STACK.md — 3 레포 책임 분리 + Cloudflare/AWS 혼합 토폴로지 + NHN 통합 모델5/145/14
5-1-2데이터 모델링김도형49 테이블 데이터 모델(TB_·company_id·status INT 1/0/-1 + *_state/*_yn/loginid+email 분리), Mermaid ERD 9종, 확장성 전략(월 RANGE 파티셔닝·Hot/Warm/Cold·R2 오프로드)5/275/27
5-1-3사용자단 디자인 시스템김도형Relay-inspired v1.0 (doc/DESIGN.md) — ink 11단 + 그린 액센트 #00DC82 + Inter + JetBrains Mono + Pretendard5/185/18
5-1-4사용자단 디자인 가이드 (살아있는 카탈로그)김도형/guide — 18+ 섹션 라이브 카탈로그5/195/19
5-1-5관리자단 부트스트랩 + 셸 레이아웃김도형Nuxt 3 + Nuxt UI v3 + LNB(256px·8그룹) + TopBar(64px) + 첫 배포5/275/27
5-1-6관리자단 디자인 가이드김도형admin /guide — 14 섹션 단일 페이지5/275/27
5-1-7관리자단 페이지 기획 MD김도형malgn-noti-admin/doc/pages/ 33개 MD (8 그룹 + 32 sub)5/275/27

5-2. API 서버 (malgn-noti-api)

ID작업상태담당산출물 / 메모목표일완료일
5-2-1Hono on Workers 부트스트랩 + Hyperdrive(Aurora) 연결김도형drizzle-orm/mysql2 + /health/db + wrangler dev --remote + 프로덕션 배포 #15/265/26
5-2-2DB 마이그레이션 — 49 테이블 + 파티션 5종김도형0000_initial.sql Aurora 적용 (49 테이블 + 75 파티션 라이브)5/265/26
5-2-3기초 도메인 CRUD (14 도메인)김도형/me /contacts /contact-groups 등 + 표준 errors/pagination/auth/Drizzle 스키마5/265/26
5-2-4OpenAPI 문서 (Scalar UI)김도형/doc — paths 37 / schemas 45+, 루트 //doc 3025/275/27
5-2-5인증 — signup/login/JWT/PBKDF2김도형Phase 1·2·3 — /auth/signup/me, JWT HS256, JWT_SECRET secret5/265/26
5-2-6발송 producer — 5채널 (SMS·Email·Kakao·Push·RCS)김도형발신정보 검증·옵트아웃 필터·크레딧 hold·트랜잭션. 채널 branching generic화5/275/27
5-2-7멱등성 — TB_IDEMPOTENCY + INSERT-then-conflict김도형0001_idempotency.sql race-free 패턴5/275/27
5-2-8NHN 어댑터 — 5채널 (mock/real)김도형src/adapters/nhn/{sms,email,kakao,push,rcs}.ts + types5/275/27
5-2-9Cloudflare Queues + Consumer Worker김도형malgn-noti-dispatch + dispatch_state 천이5/275/27
5-2-10NHN Webhook 핸들러 (SMS·RCS)🟢김도형POST /webhooks/nhn/{sms,rcs} — HMAC-SHA256 + dedup_key. Email/Kakao/Push 미6/9
5-2-11Export 잡 (다운로드 요청)🟢김도형TB_EXPORT_JOB ✅ DDL 적용 + /export-jobs CRUD ✅ 라이브 검증 (POST 201, GET 200). 처리 worker + R2 미6/17
5-2-12Flow 정의 (복합 발송)🟢김도형TB_FLOW_DEFINITION/RUN/STEP_RUN ✅ DDL 적용 (FK 6 포함) + /flow-definitions CRUD ✅ 라이브 검증 (POST 201, GET 200). 실행 엔진(POST /send/flow) 미6/22
5-2-13캠페인 API (스케줄러·시뮬레이션·테스트 발송)김도형6/25
5-2-14PG(결제) 어댑터 + 카드 등록·결제·취소김도형TossPayments 확정 (6/4). src/adapters/pg/toss.ts 신규 작성 + TOSS_CLIENT_KEY/TOSS_SECRET_KEY secret + 콜백 webhook 예정6/24
5-2-15AI 템플릿 게이트웨이 (LLM)김도형제공자 미정 (Anthropic / OpenAI)7/1
5-2-16NHN 실 모드 전환 + envelope 암호화🟢김도형6/4 §6. Notification Hub OAuth2(client_credentials → Bearer) 어댑터 재작성 완료. SMS·Email 라우트 활성화. envelope 암호화·테넌트별 자격증명은 후속6/12
5-2-17계약·서류 R2 라우트 (/contracts/*) + FILES 바인딩김도형5 라우트(list/sign/files list/upload/download/delete) + R2 bucket malgn-noti-files + TB_CONTRACT/TB_CONTRACT_FILE schema.ts + signup auto-create + reviewing 자동 전이 + lazy backfill (6/2 §11·§12·§13)6/26/2
5-2-18NICE 통합인증 인프라김도형6/1 §5 + 6/2 §16 + 6/4. mock 모드 — 자격증명 등록 후 콘솔 IP 정책 1007(Workers outbound IPv6 vs NICE 콘솔 IPv4) 미해결로 mock 유지6/16/1
5-2-19WBS 정본 R2 저장 + GET/PATCH 라우트김도형6/4 §5. DB 미사용 — R2 단일 JSON(wbs/wbs.json, FILES 바인딩) 시드 142 task. GET 공개 + PATCH 인증 2 라우트. last-write-wins6/46/4
5-2-20POST /me/email-change — 서비스 담당자 이메일 변경김도형6/4. 비밀번호 + OTP(purpose=change_email) + email-only UPDATE (loginid 가입 시 식별자로 고정 유지). 라이브 e2e 5 시나리오 통과6/46/4
5-2-21NHN Notification Hub 어댑터 신규 (OAuth + Bearer)김도형6/4 §6. adapters/nhn/oauth.ts(토큰 발급+캐시) + sms.ts/email.ts 재작성(POST /message/v1.0/{SMS|EMAIL}/free-form-messages/{purpose}). contactType=PHONE_NUMBER/EMAIL_ADDRESS, X-NC-APP-KEY + X-NHN-Authorization. NhnCredentials 확장(userAccessKey/secretAccessKey + legacy secretKey 옵셔널)6/46/4

5-3. 사용자단 (malgn-noti) — 3 트랙으로 분리

⚠️ 2026-06-02 재구성. 그동안 5-3은 화면(UI)만 완료된 상태도 ✅로 표기되어 "실제로는 안 했는데 완료처럼 보이는" 문제가 있었다. 이를 명확히 하기 위해 한 도메인을 세 트랙으로 나눈다:

  • A. 화면 UI 구성 (목업 데이터로 페이지 그리기) — 5-3A-*
  • B. 백엔드 API 엔드포인트5-2-*에 이미 정의됨 (5-2를 도메인 단위로 재정렬한 결과는 5-3M 매트릭스 참조)
  • C. 화면 ↔ API 연동 (실 데이터 흐름 + 상태 관리 + 에러 처리) — 5-3C-*

✅의 의미가 트랙마다 다르다는 점에 주의. 5-3A의 ✅는 "UI 화면이 목업으로 그려짐" 단계까지를 의미.

5-3A. 화면 UI 구성 (목업 데이터 기준)

ID작업UI담당산출물 / 메모
5-3A-1인증·계정 — 로그인 / 회원가입 5단계 / 비번 재설정 / 보안 인증김도형/login /login/security /reset-password /reset-password/new /signup
5-3A-2발송 — 6채널 (SMS/RCS/Kakao/Email/Push/Flow)김도형/send/* + PU 풀세트
5-3A-3이력 / 통계 (5채널 + 대시보드)김도형/history/{sms,rcs,kakao,email,push,stats} + 비동기 다운로드 요청 UI
5-3A-4주소록 — 연락처 / 그룹 / 수신거부김도형/contacts/{list,groups,optout}
5-3A-5발신 정보 — 6종김도형/sender/{numbers,brands,domains,push-cert,profiles,optout-080} + 등록 마법사
5-3A-6템플릿 관리 — 5채널 + 발송 상세 설정김도형/manage/{sms,rcs,kakao,email,push,settings}
5-3A-7캠페인 — 본안 + 변형 v3김도형/campaign /campaign3
5-3A-8크레딧 / 결제 — 충전·결과·내역·영수증·카드김도형/charge /charge/result /account/{credit,cards}
5-3A-9문의 — 작성 / 완료 / 내 문의 / 상세김도형/inquiry /inquiry/complete /account/inquiries(/detail)
5-3A-10나의 페이지 — 9 라우트김도형/account/* 9종 + AppMyPageShell
5-3A-11메시지 관리 랜딩페이지김도형목록 · 기본형/확장형 등록 폼 · 미리보기
5-3A-12공개 랜딩페이지 + 운영 가이드김도형/(공개) + /help
5-3A-13디자인 가이드 (라이브 카탈로그)김도형/guide — 18+ 섹션
5-3A-14시스템 페이지 — 404 / system error🟢김도형단독 일부 라이브. 점검 / 네트워크 / 인증 메일 템플릿 미
5-3A-15/wbs 페이지 — R2 정본 비동기 로드 + 인라인 편집 모달김도형6/4 §5. 임베디드 STAGES 제거 → top-level await api(/wbs). AppModal 편집 다이얼로그(owner·note·href·targetDate·completionDate). 비로그인 읽기 전용 + "로그인하면 편집 가능" 힌트

5-3M. 화면 ↔ API 연동 매트릭스 (3 트랙 한눈에)

각 도메인의 진척을 UI / API / 연동 3 트랙으로 분리해 한 행에. ✅=완료, 🟢=진행 중·부분, ⚪=미.

도메인UI (5-3A)API 엔드포인트 (5-2)연동 (5-3C)비고
인증·계정 (로그인/가입/me)✅ (/auth/signup·/auth/login·/me·/auth/email-code/*)6/1 §4·§5 완료. JWT 쿠키 + 부트스트랩 플러그인. signup OTP 인증 실 API 연동.
발송 SMS/LMS/MMS✅ (POST /send/sms)producer 라이브, 실 NHN 자격증명 미 → mock fallback
발송 RCS✅ (POST /send/rcs)
발송 알림톡/친구톡✅ (POST /send/kakao)
발송 Email✅ (POST /send/email)
발송 Push✅ (POST /send/push)
발송 Flow🟢 (POST /flow-definitions CRUD ✅, POST /send/flow 실행 엔진 미)
이력/통계🟢 (목록 라우트 부분, 통계 라우트 미)
다운로드 요청 (Export)🟢 (/export-jobs CRUD ✅, 처리 worker + R2 미)
주소록 (연락처/그룹/수신거부)✅ (/contacts·/contact-groups·/optout-entries)
발신 정보 (6종)✅ (/sender-phones·/rcs-brands·/email-domains·/push-certs·/kakao-sender-profiles·/optout-080-numbers)
템플릿 (5채널 + settings)✅ (/templates·/company-settings)
캠페인⚪ (스케줄러·시뮬레이션·테스트)
크레딧·결제🟢 (/credit-ledger 읽기, /payment-methods 일부, PG 어댑터 미)
문의✅ (/inquiries)
나의 페이지 — 회원 정보 변경✅ (GET /me · PATCH /me · PATCH /me/company · POST /me/email-change)6/2 §6 + 6/4. 서비스 담당자 이메일 변경(OTP + 비밀번호 검증, loginid 유지) 실 API 연동
나의 페이지 — 비밀번호 변경⚪ (POST /auth/password)
나의 페이지 — 보안로그인 (2FA)⚪ (PATCH /me/security)TB_VERIFICATION 재사용
나의 페이지 — 멀티 계정 (담당자 초대)⚪ (/manager-invites)
나의 페이지 — 계약 관리✅ (/contracts/* 5 라우트 + R2)6/2 §11~§15. 이용계약·서명·R2 업로드·미리보기·삭제·휴대폰 본인인증 모두 실 API. 운영자 승인 화면만 미
비밀번호 재설정⚪ (POST /auth/password/reset — OTP 인프라 재활용)
로그아웃(GNB 데모 토글)(클라이언트 쿠키 삭제만, TB_SESSION 미)GNB 미연동
약관 동의 적재(Step 3 화면용 체크박스)⚪ (POST /auth/agree-terms)TB_TERMS·TB_TERMS_AGREEMENT
사업자등록증 심사 승인 게이트✅ (배너 + 미들웨어)✅ (DB 4단계 + requireApproved 18 라우트 + reviewing 자동 전이)6/2 §7~§10·§12·§13·§14. 운영자단 승인 UI만 미
메시지 관리 랜딩페이지⚪ (/landing-pages 부분)
시스템 페이지🟢(정적)

진척 합계 (트랙별, 2026-06-04 기준):

  • UI(5-3A) — 14 ✅ + 1 🟢 = 거의 완료 (6/4 신규 5-3A-15 /wbs 페이지 R2 비동기 로드 + 인라인 편집)
  • API(5-2) — 13 ✅ + 2 🟢 + 3 ⚪ = 약 72% (6/4 신규 5-2-19 WBS R2 + 5-2-20 /me/email-change + 5-2-21 NHN Notification Hub 어댑터)
  • 연동(5-3C) — 10 ✅ + 2 🟢 + 8 ⚪ = 약 40% (인증·계정 / 이메일 OTP / login-by-email / companyType / 회원정보 / 계약 관리 / 승인 게이트 / 계약 서명 본인인증 / 사업자등록증 reviewing 자동전이 / 서비스 담당자 이메일 변경)

5-3C. 화면 ↔ API 연동 (개별 작업 항목, 진행 중)

ID작업상태담당산출물 / 메모
5-3C-1인증·계정 (/auth/* + /me)김도형6/1 §4 완료. JWT 쿠키 + 부트스트랩 플러그인 + last-company-id
5-3C-1a이메일 OTP (/auth/email-code/*)김도형6/1 §5 완료. signup.vue Step 3에서 실 API 호출
5-3C-2로그아웃 — GNB 실 연결김도형useAuthStore().logout() 호출로 GNB 데모 토글 교체
5-3C-3비밀번호 재설정 — OTP 인프라 재활용김도형purpose='reset_password' + POST /auth/password/reset 신설
5-3C-4POST /auth/login-by-email — companyId UX 개선김도형6/2 §2. 고객사 ID 필드 제거
5-3C-5약관 동의 적재 (POST /auth/agree-terms)김도형TB_TERMS_AGREEMENT
5-3C-6companyType 전달·저장 + 화면 분기🟢김도형6/2 §7. signup 전달·저장 ✅. 개인 메뉴 미노출 분기 미
5-3C-7PATCH /me + /account/settings (회원 정보 변경)김도형6/2 §6 + 6/4. PATCH /me·/me/company·POST /me/email-change. 서비스 담당자 이메일 변경(loginid 유지·email만)·결제 이메일 변경·광고수신 토글 모두 실 API. 비밀번호 변경은 5-3C-8 별도
5-3C-8POST /auth/password + /account/password (비밀번호 변경)김도형
5-3C-9/account/security (2FA) + PATCH /me/security김도형TB_VERIFICATION 재사용
5-3C-10/account/multi + /manager-invites김도형초대 토큰·수락 흐름
5-3C-11/account/contract + /contracts/*/files (R2 업로드)김도형6/2 §11~§15. /contracts/* 5 라우트 + R2 + 미리보기·삭제·휴대폰 본인인증 서명 + 사업자등록증 자동 reviewing 전이
5-3C-12발송 6채널 — UI에 실 API 호출 (Idempotency-Key 헤더 포함)김도형NHN Notification Hub 자격증명 + 어댑터 재작성 필요 (6/2 §16)
5-3C-13이력/통계 — 목록·통계 라우트 연동김도형API 일부 미구현이라 5-2 동시 진행 필요
5-3C-14주소록·발신 정보·템플릿 — CRUD 연동 (API 모두 ✅이므로 프런트 작업)김도형
5-3C-15크레딧·결제 — 충전 흐름은 PG 어댑터 미정 (블로커)김도형
5-3C-16문의 — /inquiries 연동김도형
5-3C-17사업자등록증 심사 승인 게이트 (DB + 미들웨어 + 배너 + 라우트 가드)김도형6/2 §7~§10·§12·§13·§14. 4단계 enum(pending/reviewing/approved/rejected) + requireApproved 18 라우트 + AppApprovalBanner 3분기 + lazy backfill
5-3C-18사업자등록증 첨부 시 reviewing 자동 전이 + 파일 행 배지 + 반려 시 삭제김도형6/2 §12·§14
5-3C-19계약서 전자서명 다이얼로그 — 휴대폰 본인인증 sub-step (phone-code purpose=contract_sign)김도형6/2 §15. 공인인증서 탭 제거 + dialog open 시 fetchMe 강제 hydrate
5-3C-20서비스 담당자 이메일 변경 — 실 OTP API 연동김도형6/4. AppEmailChangeDialog sendCode/confirmCode/auth/email-code/{send,verify}(purpose=change_email)로 교체. confirm payload {newEmail,code,password}. auth store changeEmail()POST /me/email-change. 결제 이메일 변경은 기존 흐름 유지

5-4. 관리자단 (malgn-noti-admin) 화면 개발

ID작업상태담당산출물 / 메모
5-4-1셸 + LNB(8 그룹) + TopBar + 디자인 가이드김도형부트스트랩·라이브
5-4-2페이지 기획 MD (33종)김도형doc/pages/ — P0: 14 / P1: 13 / P2: 5
5-4-3회원·고객사 관리 (P0)김도형회원 발송 이력 / 고객사 결제 상세 / 환불
5-4-4시스템 관리 (P0) — 운영자 계정 / RBAC / 감사 로그김도형
5-4-5요금 / 단가 관리 (P0)김도형
5-4-6고객지원 (P0)김도형운영 가이드 관리 제외
5-4-7발송 운영 모니터링 (P1)김도형캠페인 제외
5-4-8발신 정보 검수 (P0)김도형
5-4-9결제 / 크레딧 관리 + 고객사 상세 결제 탭 (P0)김도형
5-4-10템플릿 검수·관리 (P0)김도형샘플·AI 템플릿 정책 제외
5-4-11수신거부(운영) (P1)김도형
5-4-12통계 / 리포트 + 대시보드 (P2)김도형
5-4-13콘텐츠 / 사이트 관리 + 시스템 관리 + API 관리 (P2)김도형
5-4-14핸드오프 정본 17 페이지 풀세트 (화면만, API 연동 후속)김도형6/4 §3. handoff_noti_admin(3,129줄 jsx) → Vue 1:1 포팅. 셸 완전 재정비 + 공유 컴포넌트 14종 + 차트 4종 + 17 페이지(대시보드·고객사·고객사 상세·계정·모니터링·발신번호·발신프로필·템플릿검수·결제·채널단가·충전쿠폰·1:1문의·FAQ·공지·통계·운영자·권한그룹·API). 18 라우트 라이브 200
5-4-15페이지 진척 상태 라벨 (dev=screen/partial/live)김도형6/4. AppPageHeader prop dev 3단계. 화면(neutral·flask)·일부 연동(warning·construction)·연동(미표시). 17 페이지 모두 dev="screen"으로 명시
5-4-16로고/브랜드 — 사용자단 로고로 통일 + "관리자" 식별 태그김도형6/4. 기존 파랑 그라데이션 박스 폐기 → AppLogoMark(말풍선+스파클) + "맑은 message" + primary-50 배경 "관리자" 배지

5-5. 통합·배포

ID작업상태담당산출물 / 메모
5-5-1사용자단 Cloudflare Pages 배포 #1~#80+ alias 다수🟢김도형매 마일스톤 직후 배포 (6/4 누적 #80+ alias 다수)
5-5-2관리자단 Cloudflare Pages 첫 Nuxt 배포김도형정적 placeholder → 실 Nuxt 앱 (#1)
5-5-3API Workers 배포 #1~#25+🟢김도형6/4 최신 Version 1ca0446e-ed3f-4079-be5f-3407f4550ba7
5-5-4DDL — 0001~0005 라이브 적용김도형0001 idempotency / 0002 export_flow / 0003 loginid global unique / 0004 nice_auth / 0005 company_approval. TB_CONTRACT/TB_CONTRACT_FILE은 §11에서 schema.ts 정의(라이브에 이미 존재)
5-5-5NHN Notification Hub 실 자격증명 등록 + 어댑터 재작성🟢김도형6/4: SMS·Email 어댑터 Notification Hub로 재작성 완료 + Email real 발송 검증 통과. SMS는 NHN 콘솔 발신번호 등록 + SMS_FROM secret 대기. push/rcs/kakao 어댑터 마이그레이션 후속
5-5-6NICE 통합인증 실 모드 전환김도형6/4 재시도 → 여전히 1007 (Workers outbound IPv6 vs NICE 콘솔 IPv4 등록). 사용자 콘솔 IP 정책 해결 대기
5-5-7R2 bucket malgn-noti-files 신규 + FILES 바인딩김도형6/2 §11. 사업자등록증·대부업등록증·보험증권 첨부용. 6/4 §5에서 wbs/wbs.json 시드 추가
5-5-8PG 카드 결제 연동김도형TossPayments 확정(6/4). 미구현
5-5-9AI 템플릿 게이트웨이 연동김도형
5-5-10Hyperdrive Cloudflare Tunnel(Access) 전환김도형6/4 §2. id a2ba…439b… 신규 origin malgn-dev-db.apiserver.kr + access_client_id. Aurora SG egress IP 화이트리스트 운영 부담 해소. 정본 3개(API CLAUDE.md §3·§8·§12, SCALABILITY.md §6 신규 절, MIGRATION.md §1) 동기화. 라이브 검증 통과
5-5-11NHN Email 실 발송 활성화김도형6/4. message@malgnsoft.com 발신 도메인 NHN Notification Hub 콘솔 등록 + EMAIL_FROM/EMAIL_FROM_NAME secret 등록. NHN 직접 호출 SUCCESS · messageId 발급 확인
5-5-12NHN SMS 실 발송 활성화김도형어댑터·인증·페이로드 검증 완료. NHN 콘솔 발신번호 등록 + SMS_FROM secret 설정 + 라이브 e2e 1건 대기

알려진 한계 / 다음 단계

  • DDL 적용 보류 — 2026-06-01 라이브 적용 확인 + e2e 검증 완료. 라이브 정본이 더 정교한 인덱스/FK로 적용돼 있어 0002_export_flow.sql 파일도 정본에 맞춰 동기화 — 신규 환경에서도 동일 적용 가능.
  • wrangler dev --remote 의존성 다중화 — 1105 같은 dev/preview 장애가 또 일어나면 또 막힘. Cloudflare Tunnel·RDS Proxy·bastion 등 후보 중 하나 도입 검토 (CLAUDE.md §12 TODO).
  • Drizzle schema.ts 정합화src/db/schema.ts의 export/flow 테이블 정의는 인덱스/FK 미선언(컬럼만). 동작 영향은 없으나 위생적으로 명시화 후속.
  • 김도형 담당 마감 = 7/3 (개발·테스트 통합 완료 목표) — 남은 task는 위 W1~W5 일정에 분배.
  • 백엔드 연동 점진 진행 중 — 인증·계정·계약·승인 게이트·서비스 담당자 이메일 변경까지 실 API. 발송 6채널·이력/통계·주소록·발신정보·템플릿·캠페인은 여전히 목업.
  • 관리자단 화면 vs 연동 분리 — 6/4 핸드오프 17 페이지 화면(dev="screen")은 모두 완료. API 연동·관리자 인증/RBAC·실데이터 바인딩은 미. 대시보드 차트 4종은 더미 데이터.
  • NHN real 모드 — Email ✅ 라이브 발송. SMS는 발신번호 등록 대기. push/rcs/kakao 어댑터는 Notification Hub로 마이그레이션 미.
  • PG — TossPayments 확정. src/adapters/pg/toss.ts + 카드 등록/결제/취소/webhook 미구현. AI 템플릿 게이트웨이도 미.
  • 시스템 페이지 — 시안의 "쏠쏠 브랜드" 단독 404·점검·네트워크 페이지를 맑은 브랜드로 재작업 필요.
  • Step 4 정식 디자인 산출물 — 디자인팀 정식 스타일 가이드 + 퍼블리싱 MD는 미작성. 현재는 개발 측 DESIGN.md + /guide 카탈로그로 대체.
맑은노티(맑은 메시징) 프로젝트 문서·작업 이력