Loading packages/3gpp-ai/threegpp_ai/cli.py +7 −2 Original line number Diff line number Diff line Loading @@ -586,11 +586,16 @@ def ai_summarize( if normalized_mode == "wiki": console.print(f"## Wiki Summary for {document_id}") console.print("### Abstract") if not result.summary or not result.summary.strip(): console.print("[No summary content available — the document may have insufficient extractable text.]") else: console.print(result.summary) if result.keywords: console.print("### Keywords") if result.keywords: for keyword in result.keywords: console.print(f"- {keyword}") else: console.print("- none") extraction_status = result.metadata.get("extraction_status") if extraction_status: console.print("### Source Quality") Loading tests/ai/test_cli_summarize_modes.py +22 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,28 @@ def test_summarize_wiki_mode(monkeypatch) -> None: assert "### Source Quality" in result.stdout def test_summarize_wiki_mode_renders_empty_fallbacks(monkeypatch) -> None: runner = CliRunner() def _empty_stub(*_args: object, **_kwargs: object) -> SimpleNamespace: return SimpleNamespace( summary="", keywords=[], metadata={"extraction_status": "failed"}, ) monkeypatch.setattr("threegpp_ai.cli.summarize_document", _empty_stub) result = runner.invoke(app, ["summarize", "S4-260001", "--output-mode", "wiki"]) assert result.exit_code == 0 assert "### Abstract" in result.stdout assert "No summary content available" in result.stdout assert "### Keywords" in result.stdout assert "- none" in result.stdout assert "### Source Quality" in result.stdout def test_summarize_rejects_invalid_output_mode(monkeypatch) -> None: runner = CliRunner() monkeypatch.setattr("threegpp_ai.cli.summarize_document", _stub_result) Loading Loading
packages/3gpp-ai/threegpp_ai/cli.py +7 −2 Original line number Diff line number Diff line Loading @@ -586,11 +586,16 @@ def ai_summarize( if normalized_mode == "wiki": console.print(f"## Wiki Summary for {document_id}") console.print("### Abstract") if not result.summary or not result.summary.strip(): console.print("[No summary content available — the document may have insufficient extractable text.]") else: console.print(result.summary) if result.keywords: console.print("### Keywords") if result.keywords: for keyword in result.keywords: console.print(f"- {keyword}") else: console.print("- none") extraction_status = result.metadata.get("extraction_status") if extraction_status: console.print("### Source Quality") Loading
tests/ai/test_cli_summarize_modes.py +22 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,28 @@ def test_summarize_wiki_mode(monkeypatch) -> None: assert "### Source Quality" in result.stdout def test_summarize_wiki_mode_renders_empty_fallbacks(monkeypatch) -> None: runner = CliRunner() def _empty_stub(*_args: object, **_kwargs: object) -> SimpleNamespace: return SimpleNamespace( summary="", keywords=[], metadata={"extraction_status": "failed"}, ) monkeypatch.setattr("threegpp_ai.cli.summarize_document", _empty_stub) result = runner.invoke(app, ["summarize", "S4-260001", "--output-mode", "wiki"]) assert result.exit_code == 0 assert "### Abstract" in result.stdout assert "No summary content available" in result.stdout assert "### Keywords" in result.stdout assert "- none" in result.stdout assert "### Source Quality" in result.stdout def test_summarize_rejects_invalid_output_mode(monkeypatch) -> None: runner = CliRunner() monkeypatch.setattr("threegpp_ai.cli.summarize_document", _stub_result) Loading