第 1 卷(人物主线):第 1–3 集 + 人物表
主角线:Guspu Frillyknots / Ral Fastenhatchets / Alath Blottedmine 由线索挖掘器自动选定,按因果链切集,经 5 维度自评闸门(≥12 分)后入库。
This commit is contained in:
+6
-22
@@ -19,19 +19,7 @@ category = score.category
|
||||
|
||||
def event_line(world: World, e: Event) -> str:
|
||||
"""把一条事件压成一行可读文字。"""
|
||||
chunks: list[str] = [e.type]
|
||||
for tag, kind in lg.ID_FIELDS.items():
|
||||
for i in e.ids(tag):
|
||||
if kind == "figure":
|
||||
name = world.figure_name(i)
|
||||
elif kind == "site":
|
||||
name = world.site_name(i)
|
||||
elif kind == "entity":
|
||||
name = world.entity_name(i)
|
||||
else:
|
||||
name = ""
|
||||
if name:
|
||||
chunks.append(f"{tag}={name}")
|
||||
chunks: list[str] = [e.type, *world.render_refs(e)]
|
||||
return f"- **{e.year}** [{category(e)}] " + " · ".join(chunks)
|
||||
|
||||
|
||||
@@ -51,8 +39,10 @@ def build_timeline(world: World, min_score: int = 70, per_decade: int = 14) -> s
|
||||
f"- 事件总数:{len(world.events)},其中重要事件 {len(important)}",
|
||||
f"- 历史人物 {len(world.figures)} 位 · 文明与组织 {len(world.entities)} 个 · 地点 {len(world.sites)} 处",
|
||||
"",
|
||||
"> 本表由 legends 导出数据自动生成,只收录叙事权重较高的事件;"
|
||||
"完整数据留在本地,不入库。",
|
||||
(
|
||||
"> 本表由 legends 导出数据自动生成,只收录叙事权重较高的事件;"
|
||||
"完整数据留在本地,不入库。"
|
||||
),
|
||||
"",
|
||||
]
|
||||
for decade in sorted(buckets):
|
||||
@@ -72,13 +62,7 @@ def build_figures(world: World, top: int = 120) -> str:
|
||||
"""人物索引:按参与事件数排序,给出身份与生卒。"""
|
||||
involvement: Counter[int] = Counter()
|
||||
for e in world.events:
|
||||
seen: set[int] = set()
|
||||
for tag, kind in lg.ID_FIELDS.items():
|
||||
if kind != "figure":
|
||||
continue
|
||||
for i in e.ids(tag):
|
||||
seen.add(i)
|
||||
involvement.update(seen)
|
||||
involvement.update(e.figure_ids())
|
||||
|
||||
lines = [
|
||||
f"# {world.name} · 人物索引",
|
||||
|
||||
Reference in New Issue
Block a user