Merge pull request 'feat: 섹터 유니버스 월간 갱신 파이프라인 + 리포트 고도화' (#62) from codex/sector-universe-split-report-hardening into main
Merge PR #62: sector universe monthly refresh pipeline
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"formula_id": "AUDIT_REPOSITORY_ENTROPY_V2",
|
"formula_id": "AUDIT_REPOSITORY_ENTROPY_V2",
|
||||||
"gate": "PASS",
|
"gate": "PASS",
|
||||||
"total_file_count": 1697,
|
"total_file_count": 1703,
|
||||||
"package_script_count": 17,
|
"package_script_count": 17,
|
||||||
"temp_json_count": 159,
|
"temp_json_count": 160,
|
||||||
"budget": {
|
"budget": {
|
||||||
"schema_version": "repository_entropy_budget.v1",
|
"schema_version": "repository_entropy_budget.v1",
|
||||||
"max_total_files": 2200,
|
"max_total_files": 2200,
|
||||||
@@ -15,5 +15,5 @@
|
|||||||
"keep package scripts within release envelope"
|
"keep package scripts within release envelope"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"source_zip_sha256": "4de4a7b1217ef5d5375b3b1ea1209f738719e79c4c3c0954e9e96a9dc0d8607e"
|
"source_zip_sha256": "b992c6e54eae1b3b5ccf822d25a902dfcf10dc7a4fec93a902ff920d1cbd02b0"
|
||||||
}
|
}
|
||||||
@@ -115,7 +115,7 @@ def clean_scalar(value: Any) -> Any:
|
|||||||
return None
|
return None
|
||||||
if isinstance(value, float) and math.isnan(value):
|
if isinstance(value, float) and math.isnan(value):
|
||||||
return None
|
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()
|
return value.isoformat()
|
||||||
if hasattr(value, "item"):
|
if hasattr(value, "item"):
|
||||||
try:
|
try:
|
||||||
@@ -125,6 +125,17 @@ def clean_scalar(value: Any) -> Any:
|
|||||||
return value
|
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:
|
def normalize_code(value: Any) -> str:
|
||||||
value = clean_scalar(value)
|
value = clean_scalar(value)
|
||||||
if value in (None, ""):
|
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.
|
# Recompute checksum invariants after any blueprint mutation patch.
|
||||||
result["data"]["_harness_context"] = ensure_extended_harness_defaults(result["data"]["_harness_context"])
|
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}")
|
print(f"Conversion complete: {output_path}")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user