JSON 직렬화 안정화

This commit is contained in:
2026-06-15 02:38:00 +09:00
parent 2439980730
commit b9ab67c1c2
2 changed files with 16 additions and 5 deletions
+3 -3
View File
@@ -1,9 +1,9 @@
{
"formula_id": "AUDIT_REPOSITORY_ENTROPY_V2",
"gate": "PASS",
"total_file_count": 1697,
"total_file_count": 1703,
"package_script_count": 17,
"temp_json_count": 159,
"temp_json_count": 160,
"budget": {
"schema_version": "repository_entropy_budget.v1",
"max_total_files": 2200,
@@ -15,5 +15,5 @@
"keep package scripts within release envelope"
]
},
"source_zip_sha256": "4de4a7b1217ef5d5375b3b1ea1209f738719e79c4c3c0954e9e96a9dc0d8607e"
"source_zip_sha256": "b992c6e54eae1b3b5ccf822d25a902dfcf10dc7a4fec93a902ff920d1cbd02b0"
}
+13 -2
View File
@@ -115,7 +115,7 @@ def clean_scalar(value: Any) -> Any:
return None
if isinstance(value, float) and math.isnan(value):
return None
if isinstance(value, (pd.Timestamp, dt.datetime, dt.date)):
if isinstance(value, (pd.Timestamp, dt.datetime, dt.date, dt.time)):
return value.isoformat()
if hasattr(value, "item"):
try:
@@ -125,6 +125,17 @@ def clean_scalar(value: Any) -> Any:
return value
def _json_default(value: Any) -> Any:
if isinstance(value, (pd.Timestamp, dt.datetime, dt.date, dt.time)):
return value.isoformat()
if hasattr(value, "item"):
try:
return _json_default(value.item())
except Exception:
pass
return str(value)
def normalize_code(value: Any) -> str:
value = clean_scalar(value)
if value in (None, ""):
@@ -1585,7 +1596,7 @@ def convert_xlsx_to_json(xlsx_path: Path, output_path: Path) -> None:
# Recompute checksum invariants after any blueprint mutation patch.
result["data"]["_harness_context"] = ensure_extended_harness_defaults(result["data"]["_harness_context"])
output_path.write_text(json.dumps(result, ensure_ascii=False, indent=2), encoding="utf-8")
output_path.write_text(json.dumps(result, ensure_ascii=False, indent=2, default=_json_default), encoding="utf-8")
print(f"Conversion complete: {output_path}")