fix(recall): notes file is '<имя> - наблюдения.md' so [[имя]] stays unambiguous

This commit is contained in:
hh
2026-09-01 16:22:06 +02:00
parent 7709da4489
commit 65bc32a1cf
2 changed files with 12 additions and 10 deletions
+7 -7
View File
@@ -2,11 +2,11 @@
Gateway путей не знает; здесь - что искать по тексту сообщения и куда писать Gateway путей не знает; здесь - что искать по тексту сообщения и куда писать
сказанное. ``Recall.block`` отдаёт указатели, не выводы: карточка упомянутого сказанное. ``Recall.block`` отдаёт указатели, не выводы: карточка упомянутого
человека, записки агента о нём (`мета/бобер/наблюдения/`), дни дневника, где человека, его записки о нём (`мета/бобер/наблюдения/<имя> - наблюдения.md`),
он встречался, и раз в день - подошедшие сроки из досок. ``ReplyLog.write`` дни дневника, где он встречался, и раз в день - подошедшие сроки из досок.
кладёт каждую реплику Бобра из мастера и веток в `мета/бобер/реплики/YYYY-MM.md` ``ReplyLog.write`` кладёт каждую реплику Бобра из мастера и веток в
- единственное место, где они grep-абельны: транскрипт живёт в Postgres, `мета/бобер/реплики/YYYY-MM.md` - единственное место, где они grep-абельны:
а глубокие чаты и так лежат файлами в `💬 чаты/`. транскрипт живёт в Postgres, а глубокие чаты и так лежат файлами в `💬 чаты/`.
""" """
from __future__ import annotations from __future__ import annotations
@@ -32,7 +32,7 @@ KINDS = {"master": "мастер", "branch": "ветка"}
@dataclass(frozen=True, slots=True) @dataclass(frozen=True, slots=True)
class Person: class Person:
name: str name: str
"""Имя файла карточки без `.md` - им же называется файл записок.""" """Имя файла карточки без `.md`; записки - `<имя> - наблюдения.md`."""
aliases: tuple[str, ...] aliases: tuple[str, ...]
path: str path: str
"""Путь карточки от корня vault.""" """Путь карточки от корня vault."""
@@ -188,7 +188,7 @@ class Recall:
def person_line(self, person: Person) -> str: def person_line(self, person: Person) -> str:
parts = [f"👤 {person.name} - карточка `{person.path}`"] parts = [f"👤 {person.name} - карточка `{person.path}`"]
notes = self.notes_dir / f"{person.name}.md" notes = self.notes_dir / f"{person.name} - наблюдения.md"
rel = notes.relative_to(self.vault) rel = notes.relative_to(self.vault)
if notes.exists(): if notes.exists():
entries = [ entries = [
+5 -3
View File
@@ -37,7 +37,7 @@ def _vault(tmp_path: Path) -> Recall:
(diary / "2026-08-01.md").write_text("[[Зина]] ещё раз\n", encoding="utf-8") (diary / "2026-08-01.md").write_text("[[Зина]] ещё раз\n", encoding="utf-8")
notes = tmp_path / "мета" / "бобер" / "наблюдения" notes = tmp_path / "мета" / "бобер" / "наблюдения"
notes.mkdir(parents=True) notes.mkdir(parents=True)
(notes / "Зина.md").write_text( (notes / "Зина - наблюдения.md").write_text(
"# Зина\n\n- 2026-08-26 · перенесла встречу на час · [[2026-08-26]]\n" "# Зина\n\n- 2026-08-26 · перенесла встречу на час · [[2026-08-26]]\n"
"- 2026-08-31 · прислала список покупок · транскрипт\n", "- 2026-08-31 · прислала список покупок · транскрипт\n",
encoding="utf-8", encoding="utf-8",
@@ -92,7 +92,7 @@ def test_block_points_to_card_notes_diary_and_deadlines_once(tmp_path: Path) ->
lines = block.splitlines() lines = block.splitlines()
assert lines[0] == LABEL assert lines[0] == LABEL
assert lines[1].startswith( assert lines[1].startswith(
"👤 Зина - карточка `👤 люди/личное/Зина.md`; записки `мета/бобер/наблюдения/Зина.md`: 2 стр., последняя: 2026-08-31 · четыре смягчения" "👤 Зина - карточка `👤 люди/личное/Зина.md`; записки `мета/бобер/наблюдения/Зина - наблюдения.md`: 2 стр., последняя: 2026-08-31 · четыре смягчения"
) )
assert lines[1].endswith("дневник: [[2026-08-31]], [[2026-08-26]], [[2026-08-13]]") assert lines[1].endswith("дневник: [[2026-08-31]], [[2026-08-26]], [[2026-08-13]]")
assert lines[2:] == [ assert lines[2:] == [
@@ -103,7 +103,9 @@ def test_block_points_to_card_notes_diary_and_deadlines_once(tmp_path: Path) ->
assert again is not None and "📆" not in again assert again is not None and "📆" not in again
branch = recall.block(RecallContext(text="Фёдор звонил", kind="branch", now=now)) branch = recall.block(RecallContext(text="Фёдор звонил", kind="branch", now=now))
assert branch is not None assert branch is not None
assert "записок нет (`мета/бобер/наблюдения/Фёдор Плюшкин.md`)" in branch assert (
"записок нет (`мета/бобер/наблюдения/Фёдор Плюшкин - наблюдения.md`)" in branch
)
assert "дневник: [[2026-08-26]]" in branch assert "дневник: [[2026-08-26]]" in branch
assert ( assert (
recall.block(RecallContext(text="просто привет", kind="branch", now=now)) recall.block(RecallContext(text="просто привет", kind="branch", now=now))