Skip to content

Commit cf790be

Browse files
committed
fix(review-feedback-1241): address latest review comments
1 parent ec7028e commit cf790be

2 files changed

Lines changed: 43 additions & 3 deletions

File tree

src/market_analyzer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -771,9 +771,9 @@ def _format_news_source_cell(cls, item: Any) -> str:
771771
date_text = cls._compact_news_text(cls._get_news_field(item, "published_date"), limit=24)
772772
url = cls._compact_news_text(cls._get_news_field(item, "url"), limit=0)
773773
label_parts = [part for part in (source, date_text) if part]
774-
label = " / ".join(label_parts) or "source"
774+
label = " / ".join(label_parts)
775775
if url:
776-
return f"[{label}]({url})"
776+
return f"[{label or 'URL'}]({url})"
777777
return label
778778

779779
@staticmethod
@@ -878,7 +878,7 @@ def _build_review_prompt(self, overview: MarketOverview, news: List) -> str:
878878
snippet = self._compact_news_text(self._get_news_field(n, "snippet"), limit=220)
879879
source = self._compact_news_text(self._get_news_field(n, "source"), limit=60)
880880
published_date = self._compact_news_text(self._get_news_field(n, "published_date"), limit=30)
881-
url = self._get_news_field(n, "url")
881+
url = self._compact_news_text(self._get_news_field(n, "url"), limit=180)
882882
meta_parts = [part for part in (source, published_date) if part]
883883
meta = f" ({' / '.join(meta_parts)})" if meta_parts else ""
884884
url_line = f"\n URL: {url}" if url else ""

tests/test_market_analyzer_generate_text.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -866,6 +866,46 @@ def test_news_block_labels_snippets_and_preserves_source_url(self):
866866
assert "成交额放大" in result
867867
assert "[东方财富 / 2026-05-06](https://example.com/news/1)" in result
868868

869+
def test_news_block_uses_dash_when_source_metadata_missing(self):
870+
from src.market_analyzer import MarketAnalyzer
871+
872+
ma = MarketAnalyzer.__new__(MarketAnalyzer)
873+
ma.config = SimpleNamespace(report_language="zh")
874+
ma.region = "cn"
875+
876+
result = ma._build_news_block([
877+
{
878+
"title": "政策利好带动板块活跃",
879+
"snippet": "相关主题成交放大",
880+
}
881+
])
882+
883+
assert "| 1 | 政策利好带动板块活跃 | 相关主题成交放大 | - |" in result
884+
assert "| 1 | 政策利好带动板块活跃 | 相关主题成交放大 | source |" not in result
885+
886+
def test_review_prompt_caps_news_url_context(self):
887+
from src.market_analyzer import MarketOverview
888+
889+
ma = self._make_market_analyzer_with_mock_generate_text(return_value="review")
890+
long_url = "https://example.com/redirect?" + "utm_campaign=" + ("x" * 420)
891+
892+
prompt = ma._build_review_prompt(
893+
MarketOverview(date="2026-05-06"),
894+
[
895+
{
896+
"title": "A股收评:指数放量反弹",
897+
"snippet": "科技成长方向领涨",
898+
"source": "测试来源",
899+
"published_date": "2026-05-06",
900+
"url": long_url,
901+
}
902+
],
903+
)
904+
905+
assert long_url not in prompt
906+
assert "URL: https://example.com/redirect?" in prompt
907+
assert ("x" * 220) not in prompt
908+
869909
def test_market_light_snapshot_marks_defensive_market_red(self):
870910
from src.market_analyzer import MarketIndex, MarketOverview
871911

0 commit comments

Comments
 (0)