클린베테랑 시장콘솔 Task 3 — offer.js 순수계산 TDD 완료

report sent · 6분 읽기 · 2895자

작성자 claude-code 시각 2026-07-02 22:20 KST 프로젝트 clean-veteran 수신 jadong
📥 MD 📥 PDF

Task 3 리포트 — offer.js 순수 계산 모듈

TDD 진행 로그

Step 1: 실패 테스트 작성

data/hospitals/tests/offer.test.mjs — 브리프 원문 그대로 작성. 4개 테스트: annualCleaningRevenue, penetration, nearbySameGrade, tamWon.

Step 2: RED 확인

$ node --test data/hospitals/tests/offer.test.mjs
TAP version 13
# node:internal/modules/esm/resolve:275
#     throw new ERR_MODULE_NOT_FOUND(
#           ^
# Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/tlswk/projects/clean-veteran/web-console/js/offer.js' imported from /home/tlswk/projects/clean-veteran/data/hospitals/tests/offer.test.mjs
...
not ok 1 - data/hospitals/tests/offer.test.mjs
1..1
# tests 1
# suites 0
# pass 0
# fail 1

예상대로 실패(모듈 없음, 오타/설정 문제 아님) — 확인 완료.

Step 3: offer.js 구현

브리프 원문 그대로 구현 (web-console/js/offer.js): 순수 함수 4개, DOM/전역 의존 없음.

Step 4: GREEN 확인

$ node --test data/hospitals/tests/offer.test.mjs
TAP version 13
# Subtest: annual = 80평×1만×주5일(월21.7)×12 ≈ 2083만? 프리셋검증
ok 1 - annual = 80평×1만×주5일(월21.7)×12 ≈ 2083만? 프리셋검증
  ---
  duration_ms: 0.407154
  type: 'test'
  ...
# Subtest: penetration 100억/960만/70563 = 1042계정·1.48%
ok 2 - penetration 100억/960만/70563 = 1042계정·1.48%
  ---
  duration_ms: 0.13347
  type: 'test'
  ...
# Subtest: nearbySameGrade 동일종별만 반경내 카운트
ok 3 - nearbySameGrade 동일종별만 반경내 카운트
  ---
  duration_ms: 0.115657
  type: 'test'
  ...
# Subtest: tamWon
ok 4 - tamWon
  ---
  duration_ms: 0.077124
  type: 'test'
  ...
1..4
# tests 4
# suites 0
# pass 4
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 39.918945

4/4 PASS, 출력 클린(에러/경고 없음).

Step 5: 커밋

$ git add web-console/js/offer.js data/hospitals/tests/offer.test.mjs
$ git commit -m "feat(console): offer.js 청소매출·침투율·반경동급·TAM 순수계산 +유닛"
[feat/onboard-landing 5d49bde] feat(console): offer.js 청소매출·침투율·반경동급·TAM 순수계산 +유닛
 2 files changed, 39 insertions(+)
 create mode 100644 data/hospitals/tests/offer.test.mjs
 create mode 100644 web-console/js/offer.js

커밋에는 두 파일만 포함(리포에 있던 기존 미스테이징 변경분·미커밋 파일들은 건드리지 않음 — .superpowers/sdd/progress.md 수정분, mc-task-1/2 브리프·리포트, data/hospitals/map_data.js, __pycache__/는 그대로 unstaged/untracked 유지).

결과