fix: 预览按 draft-{id} 命名且重建全量同构 + C1 空台账改判数据待补 + 立项经费结余结论 + CLI 拆分 import-*/list-* + docx 占位黄底

This commit is contained in:
chenfuqiang
2026-09-27 21:47:56 +08:00
parent 7b24521b43
commit db11f22dc8
11 changed files with 508 additions and 107 deletions

View File

@@ -46,6 +46,11 @@ def upsert_project(fields: dict[str, Any]) -> dict[str, Any]:
values[key] = str(fields[key]).strip()
if values.get("status") and values["status"] not in _KNOWN_STATUS:
raise ValueError(f"status 只接受 {'、'.join(_KNOWN_STATUS)}:{values['status']}")
if fields.get("approved_budget") not in (None, ""):
approved = _to_float(fields.get("approved_budget"))
if approved is None or approved < 0:
raise ValueError(f"立项经费必须是非负数字(元):{fields.get('approved_budget')}")
values["approved_budget"] = round(approved, 2)
if fields.get("expected_json") not in (None, ""):
raw = fields["expected_json"]
try: