Add real digital_ads + digital_branding catalogs
Built from real D.intelligence docs (not the 견적 자료 folder, which has only GA4/GTM + education — confirmed): - digital_branding: TNS 유학원 디지털 브랜딩 진단 컨설팅 → ₩9,000,000 (5 fixed stages) - digital_ads: 디하이브 디지털 광고·퍼포먼스 마케팅 대행 계약 → ₩6,000,000/월 retainer (media-spend commission % is per-deal, kept as a parameter — not invented) effort method now supports fixed-amount tasks (Unit Cost) and monthly retainers (unit: monthly); render shows 고정/—//월 and retainer/commission notes. Validated: branding ₩9.0M, ads ₩6.0M/월; no regression (SEO 25.0M, coaching 1.57M). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -12,7 +12,9 @@ catalog and renders the 견적.
|
||||
## Costing methods (catalog entry declares its `method`)
|
||||
- **effort** — `role_rate × 청구율(0.70) × 표준 업무시간`, by module; auto-tier (smb/basic/treatment)
|
||||
by portfolio size + premium-vertical floor; On-page hours scale by sub-brands (cap ×2.0);
|
||||
제안가 = 합계 절사. Reproduces real SEO quotes (basic ₩10.5M / treatment ₩25.0M).
|
||||
제안가 = 합계 절사. Also supports **fixed-amount tasks** (`fixed:` Unit Cost — e.g. branding
|
||||
진단 stages) and **monthly retainers** (`unit: monthly` — e.g. ads 대행). Reproduces real
|
||||
SEO (10.5M/25.0M), branding (₩9.0M), ads (₩6.0M/월).
|
||||
- **coaching** — `Σ(lesson_type_price × hours)` over a lesson plan; student discount opt-in.
|
||||
Reproduces real GA4/GTM 코칭 (₩1,570,000). Base prices default; subject×level matrix optional.
|
||||
- **procurement** — `unit_cost × qty × (1 + 0.15)` for non-labor items.
|
||||
@@ -20,8 +22,10 @@ catalog and renders the 견적.
|
||||
## Files
|
||||
- `references/rate_card.yaml` — universal: role rates, billing, basis, terms, tiering, scaling,
|
||||
procurement, coaching prices/levels/discounts, tools. **Private.**
|
||||
- `catalog/<service>.yaml` — per-service: `service`, `method`, body. Real: `seo` (effort),
|
||||
`education` (coaching). Stubs: `digital_ads`, `digital_branding` (effort — `_stub: true`).
|
||||
- `catalog/<service>.yaml` — per-service: `service`, `method`, body. All real:
|
||||
`seo` (effort, role-hours tiers), `education` (coaching, incl. GA4/GTM course),
|
||||
`digital_branding` (effort, fixed 진단 stages → ₩9.0M), `digital_ads` (effort, ₩6.0M/월
|
||||
retainer; media commission % is per-deal, not in catalog).
|
||||
- `scripts/estimate.py` — CLI dispatcher; `scripts/methods/{effort,coaching,procurement}.py`;
|
||||
`scripts/render.py` (md/xlsx/json). `scope.schema.json` — input contract.
|
||||
|
||||
@@ -46,8 +50,8 @@ Example consumer: `ourdigital-presales-seo` (`findings_to_scope.py` → engine
|
||||
|
||||
## Adding / editing services
|
||||
- New real service: add `catalog/<service>.yaml` with `method` + body from a **real quote**.
|
||||
- Stubs (`digital_ads`, `digital_branding`) carry `_stub: true` and placeholder hours — replace
|
||||
with real quote data before client use (the 견적 prints a ⚠STUB banner).
|
||||
- Any new stub should carry `_stub: true` (the 견적 prints a ⚠STUB banner) until replaced with
|
||||
real quote data. All current catalogs are real.
|
||||
- Rates change in `rate_card.yaml` only (single source). Validate against a known real quote.
|
||||
|
||||
## Conventions
|
||||
|
||||
Reference in New Issue
Block a user