1. 修复安卓部分机型顶部安全区遮挡回忆录标题的问题; 2. 降低封面图生成阈值和展示逻辑,独立封面图未生成时,使用正文图; 3. 去掉“嗯。”生硬回答,去掉不合理段首承接词; 4. 新增章节封面所需最少插图数的配置项
58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
"""章节封面:无 cover_asset_id 时用正文首张 asset:// 作列表封面。"""
|
|
|
|
from unittest.mock import MagicMock
|
|
|
|
from app.features.memoir.helpers import chapter_cover_to_dict
|
|
|
|
|
|
def test_cover_falls_back_to_first_inline_asset_url() -> None:
|
|
ch = MagicMock(spec=[])
|
|
ch.canonical_markdown = "正文\n\n"
|
|
ch.cover_asset_id = None
|
|
ch.story_links = []
|
|
ch.images = []
|
|
m = chapter_cover_to_dict(
|
|
ch,
|
|
asset_url_map={"img-1": "https://cos.example.com/signed-1"},
|
|
markdown_for_response=None,
|
|
)
|
|
assert m is not None
|
|
assert m["url"] == "https://cos.example.com/signed-1"
|
|
assert m["status"] == "completed"
|
|
|
|
|
|
def test_cover_from_reading_segments_when_canonical_has_no_asset() -> None:
|
|
"""分段快照里有 asset://,章节 canonical 未带图时仍能出封面 URL。"""
|
|
ch = MagicMock(spec=[])
|
|
ch.canonical_markdown = "只有文字没有图" * 20
|
|
ch.cover_asset_id = None
|
|
ch.story_links = []
|
|
ch.images = []
|
|
ch.reading_segments_json = [
|
|
{"story_id": "s1", "body_markdown": ""}
|
|
]
|
|
m = chapter_cover_to_dict(
|
|
ch,
|
|
asset_url_map={"seg-1": "https://cos.example.com/seg"},
|
|
markdown_for_response=None,
|
|
)
|
|
assert m is not None
|
|
assert m["url"] == "https://cos.example.com/seg"
|
|
|
|
|
|
def test_cover_prefers_cover_asset_id_over_inline() -> None:
|
|
ch = MagicMock(spec=[])
|
|
ch.canonical_markdown = ""
|
|
ch.cover_asset_id = "cover-99"
|
|
ch.story_links = []
|
|
ch.images = []
|
|
m = chapter_cover_to_dict(
|
|
ch,
|
|
asset_url_map={
|
|
"inline-1": "https://cos.example.com/inline",
|
|
"cover-99": "https://cos.example.com/cover",
|
|
},
|
|
markdown_for_response=None,
|
|
)
|
|
assert m["url"] == "https://cos.example.com/cover"
|