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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user