Rebuild estimate engine to effort-based SOW model

Replace flat per-service ranges with OurDigital's real quoting model
(role_rate × billing_rate 0.70 × standard hours), sourced from the
06_Working Template quotes:
- rate_card.yaml: role rate card, billing/basis/terms, tools, scaling bands
- sow_templates.yaml: basic + treatment task-hour templates
- estimate.py: assemble SOW from findings, scale Technical/On-page hours by
  properties_total, 제안가 = 합계 floored to 500k
- build_deck.py: estimate slide shows module 소계 + 제안가 (point)
- findings_to_service.md / SKILL.md / DESIGN.md: synced to new model

Validated: reproduces real Basic ₩10.5M and Treatment ₩25.0M exactly;
SHR (25 properties) scales to ₩71.5M, L'Escape (1) = ₩25.0M.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-28 00:51:52 +09:00
parent 01201ee4a2
commit 5f66f57a8e
7 changed files with 343 additions and 269 deletions

View File

@@ -70,6 +70,12 @@ Each stage appends to the shared **`findings.json`** data contract (§5), the in
## 5. Estimate logic
> **Superseded (2026-05-28):** the flat per-service ranges below were replaced by an
> **effort-based** engine (role-hours × billing_rate 0.70) loaded from OurDigital's real
> quotation templates. See `references/rate_card.yaml`, `references/sow_templates.yaml`,
> and `references/findings_to_service.md`. Validated to reproduce the real Basic (₩10.5M)
> and Treatment (₩25.0M) quotes exactly. The notes below are kept as historical context.
### 5.1 `rate_card.yaml` (from `ourdigital-backoffice`)
```yaml
quote_prefix: OD # OD-YYYY-NNN