124 lines
4.2 KiB
Python
124 lines
4.2 KiB
Python
import importlib.util
|
|
import json
|
|
import sys
|
|
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "skills" / "last30days" / "scripts"))
|
|
|
|
from lib import schema
|
|
|
|
|
|
SCRIPT_PATH = Path(__file__).resolve().parents[1] / "skills" / "last30days" / "scripts" / "generate-synthesis-inputs.py"
|
|
|
|
|
|
def load_module():
|
|
spec = importlib.util.spec_from_file_location("generate_synthesis_inputs", SCRIPT_PATH)
|
|
module = importlib.util.module_from_spec(spec)
|
|
assert spec and spec.loader
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
class GenerateSynthesisInputsV3Tests(unittest.TestCase):
|
|
def test_main_uses_v3_report_deserializer(self):
|
|
module = load_module()
|
|
report = schema.Report(
|
|
topic="test topic",
|
|
range_from="2026-02-14",
|
|
range_to="2026-03-16",
|
|
generated_at="2026-03-16T00:00:00+00:00",
|
|
provider_runtime=schema.ProviderRuntime(
|
|
reasoning_provider="gemini",
|
|
planner_model="gemini-3.1-flash-lite-preview",
|
|
rerank_model="gemini-3.1-flash-lite-preview",
|
|
),
|
|
query_plan=schema.QueryPlan(
|
|
intent="breaking_news",
|
|
freshness_mode="strict_recent",
|
|
cluster_mode="story",
|
|
raw_topic="test topic",
|
|
subqueries=[
|
|
schema.SubQuery(
|
|
label="primary",
|
|
search_query="test topic",
|
|
ranking_query="What happened with test topic?",
|
|
sources=["grounding"],
|
|
)
|
|
],
|
|
source_weights={"grounding": 1.0},
|
|
),
|
|
clusters=[
|
|
schema.Cluster(
|
|
cluster_id="cluster-1",
|
|
title="Title",
|
|
candidate_ids=["c1"],
|
|
representative_ids=["c1"],
|
|
sources=["grounding"],
|
|
score=90.0,
|
|
)
|
|
],
|
|
ranked_candidates=[
|
|
schema.Candidate(
|
|
candidate_id="c1",
|
|
item_id="i1",
|
|
source="grounding",
|
|
sources=["grounding"],
|
|
title="Title",
|
|
url="https://example.com",
|
|
snippet="Snippet",
|
|
subquery_labels=["primary"],
|
|
native_ranks={"primary:grounding": 1},
|
|
local_relevance=0.8,
|
|
freshness=90,
|
|
engagement=None,
|
|
source_quality=1.0,
|
|
rrf_score=0.02,
|
|
rerank_score=91.0,
|
|
final_score=90.0,
|
|
source_items=[
|
|
schema.SourceItem(
|
|
item_id="i1",
|
|
source="grounding",
|
|
title="Title",
|
|
body="Body",
|
|
url="https://example.com",
|
|
published_at="2026-03-16",
|
|
)
|
|
],
|
|
)
|
|
],
|
|
items_by_source={
|
|
"grounding": [
|
|
schema.SourceItem(
|
|
item_id="i1",
|
|
source="grounding",
|
|
title="Title",
|
|
body="Body",
|
|
url="https://example.com",
|
|
)
|
|
]
|
|
},
|
|
errors_by_source={},
|
|
)
|
|
|
|
with tempfile.TemporaryDirectory() as tmp:
|
|
json_dir = Path(tmp) / "json"
|
|
compact_dir = Path(tmp) / "compact"
|
|
json_dir.mkdir()
|
|
(json_dir / "sample.json").write_text(json.dumps(schema.to_dict(report)))
|
|
|
|
module.JSON_DIR = json_dir
|
|
module.COMPACT_DIR = compact_dir
|
|
|
|
result = module.main()
|
|
|
|
self.assertEqual(0, result)
|
|
output = (compact_dir / "sample.md").read_text()
|
|
self.assertIn("# last30days v3.0.0: test topic", output)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|