feat(reports): generate card, jump to end, labelled export, TOC levels, table bands, export size; drop 字段 jargon (BUG-1092..1094)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
Jesse_Chen
2026-09-29 19:04:45 +08:00
co-authored by Claude Opus 5.5
parent 64aa0ec20c
commit d85ab9a2d2
21 changed files with 486 additions and 57 deletions
+24
View File
@@ -292,3 +292,27 @@ def test_reader_omits_missing_name_and_panchanga_machine_keys(reader_packet) ->
assert "| 综合性质 |" in reader
assert "| 吉性要素数量 |" in reader
assert "| 要素总数 |" in reader
def test_reader_headings_drop_field_jargon_and_dignity_is_one_name(reader_packet) -> None:
"""BUG-1092 / BUG-1093: no 「字段」 in what a reader sees, readable planet-lord
headers, and the bilingual engine dignity label printed once, not 「入旺(入旺)」."""
from scripts.pl9_reader_export import _dignity_label
reader = _pl9_export_markdown_for_edition(reader_packet, "reader_main")
assert "字段" not in reader
assert "#### 行星主星与状态" in reader
assert "| 行星 | 星座主 | 星宿主 | 分主 | 分分主 | 尊贵状态 | 力量比 |" in reader
assert "| Planet | RL | NL | SL | SS |" not in reader
assert "力量比:六维力量与所需力量之比" in reader
table = reader.split("#### 行星主星与状态", 1)[1].split("\n\n", 2)[1]
for row in table.splitlines()[2:]:
dignity = row.split("|")[6].strip()
assert "(" not in dignity and "(" not in dignity, row
assert not re.search(r"([一-鿿]+)\(\1\)", reader)
assert _dignity_label("入旺(Exalted)") == "入旺"
assert _dignity_label("落陷取消(Neecha Bhanga)") == "落陷取消"
assert _dignity_label("极敌(Great Enemy)") == "极敌"
assert _dignity_label("中性") == "中性"
assert _dignity_label(None) == ""
assert _leak_hits(reader) == []