fix(B08): 부대시설 개소를 [저장]으로도 넣을 수 있게 (사용자 확정 ⑬ 마무리)

⚠ 어제 넣은 `ancillary_counts` 를 **엔진은 읽는데 저장 요청 모양에는 없었음** — 화면에서
넣을 길이 없어 스크립트로만 넣히던 자리였음(`stone_supply` 가 레지스트리에 없어 저장이
거부되던 것과 같은 계열 — **읽는 자리와 넣는 자리가 안 맞는 것**).

`QuantitySettingsBody` 에 칸을 두고, 「통째로 갈아 끼우는 칸」 목록에 넣음 — 병합이면
개소를 **지울 수가 없음**(0 으로 되돌리려면 통째 교체라야 함).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-08 19:32:46 +09:00
co-authored by Claude Opus 5
parent bfd10b57f8
commit 594f2d5922
@@ -213,6 +213,10 @@ class QuantitySettingsBody(BaseModel):
concrete_placing_method: str | None = None
# 표토제거 두께(m). 품셈이 정하는 값이 아니라 설계 입력이다(9-15 [주]②).
topsoil_thickness_m: float | None = None
# 부대시설 개소 — `{항목키: 개소}`(2026-09-09 확정 ⑬).
# ⚠ 산식(연장÷500)으로 만들지 않는다 — 임도규정이 「필요시 거리를 조정」이라 하고
# 기점 포함·갈림길 중복을 원문이 정하지 않는다. **설계자가 넣는 값**이다.
ancillary_counts: dict[str, float] | None = None
#: `None` 이 「안 정함」을 뜻하는 칸 — 저장에서 **버리지 않고 그대로 덮어쓴다**.
@@ -262,7 +266,8 @@ async def save_quantity_settings(project_id: UUID, body: QuantitySettingsBody) -
_save_quantity,
root,
values,
("rock_methods", "material_supply", "concrete_placing_method") + NULLABLE_SETTING_KEYS,
("rock_methods", "material_supply", "concrete_placing_method", "ancillary_counts")
+ NULLABLE_SETTING_KEYS,
)
except Exception:
logger.exception("B08 설정 저장 실패(쓰기): project_id=%s", project_id)