Initial SQL-only 1C adapter baseline
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import importlib.util
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
SCRIPT = ROOT / "scripts" / "discover_1c_moxel_schema.py"
|
||||
SPEC = importlib.util.spec_from_file_location("discover_1c_moxel_schema", SCRIPT)
|
||||
assert SPEC and SPEC.loader
|
||||
discovery = importlib.util.module_from_spec(SPEC)
|
||||
SPEC.loader.exec_module(discovery)
|
||||
|
||||
|
||||
def test_analyze_marker_matrix_infers_inline_text_column_from_last_preceding_scalar() -> None:
|
||||
payload = {
|
||||
"schema": "codex_1c_template_marker_matrix.v1",
|
||||
"rows": [
|
||||
{"text": "10-2", "expected_row": 10, "expected_col": 2, "decoded_row": 10, "decoded_col": 3, "preceding": ["9", "0", "3", "1"]},
|
||||
{"text": "10-3", "expected_row": 10, "expected_col": 3, "decoded_row": 10, "decoded_col": 4, "preceding": ["2"]},
|
||||
{"text": "10-4", "expected_row": 10, "expected_col": 4, "decoded_row": 10, "decoded_col": 11, "preceding": ["3"]},
|
||||
],
|
||||
}
|
||||
|
||||
analysis = discovery.analyze_marker_matrix([payload])
|
||||
rule = analysis["candidate_rules"][0]
|
||||
|
||||
assert analysis["current_decoder"]["row_accuracy"] == {"ok": 3, "total": 3}
|
||||
assert analysis["current_decoder"]["column_accuracy"] == {"ok": 0, "total": 3}
|
||||
assert rule["target"] == "moxel.inline_text_cell.column"
|
||||
assert rule["confidence"] == "high"
|
||||
assert rule["evidence"] == {"ok": 3, "total": 3}
|
||||
assert analysis["row_runs"][0]["sequence_ok"] is True
|
||||
|
||||
|
||||
def test_infer_named_range_rules_from_history_matrix_moves() -> None:
|
||||
history_matrix = {
|
||||
"transitions": [
|
||||
{
|
||||
"named_range_changes": {
|
||||
"one_based": {
|
||||
"before": {"row_start": 7, "row_end": 7, "column_start": 3, "column_end": 3},
|
||||
"after": {"row_start": 8, "row_end": 8, "column_start": 3, "column_end": 3},
|
||||
},
|
||||
"raw_scalars": {
|
||||
"before": ["1", "3", "2", "6", "2", "6", "00000000-0000-0000-0000-000000000000", "0"],
|
||||
"after": ["1", "3", "2", "7", "2", "7", "00000000-0000-0000-0000-000000000000", "0"],
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"named_range_changes": {
|
||||
"one_based": {
|
||||
"before": {"row_start": 8, "row_end": 8, "column_start": 3, "column_end": 3},
|
||||
"after": {"row_start": 8, "row_end": 8, "column_start": 4, "column_end": 4},
|
||||
},
|
||||
"raw_scalars": {
|
||||
"before": ["1", "3", "2", "7", "2", "7", "00000000-0000-0000-0000-000000000000", "0"],
|
||||
"after": ["1", "3", "3", "7", "3", "7", "00000000-0000-0000-0000-000000000000", "0"],
|
||||
},
|
||||
}
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
result = discovery.infer_named_range_rules(history_matrix, {})
|
||||
rules_by_target = {rule["target"]: rule for rule in result["rules"]}
|
||||
|
||||
assert rules_by_target["moxel.named_range.top"]["raw_scalar_indexes"] == [3, 5]
|
||||
assert rules_by_target["moxel.named_range.bottom"]["raw_scalar_indexes"] == [3, 5]
|
||||
assert rules_by_target["moxel.named_range.left"]["raw_scalar_indexes"] == [2, 4]
|
||||
assert rules_by_target["moxel.named_range.right"]["raw_scalar_indexes"] == [2, 4]
|
||||
Reference in New Issue
Block a user