kin: KIN-013 Obsidian sync + Revise UI (fixes и тесты)

- obsidian_sync.py: расширен regex для task ID с цифробуквенными префиксами ([A-Z][A-Z0-9]*-\d+)
- test_obsidian_sync.py: тест test_sync_updates_task_status обновлён под uppercase PROJ1-001
- TaskDetail.vue: добавлены revise() функция и Revise modal (отправить задачу на доработку)
- test_api.py: добавлены test_revise_task и test_revise_not_found

473/473 тестов проходят.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gros Frumos 2026-03-16 07:17:54 +02:00
parent 0032b3056a
commit 6b328d7f2d
4 changed files with 60 additions and 4 deletions

View file

@ -157,14 +157,14 @@ def test_sync_updates_task_status(db, tmp_vault):
tmp_vault.mkdir(parents=True)
models.update_project(db, "proj1", obsidian_vault_path=str(tmp_vault))
task = models.create_task(db, "proj1-001", "proj1", "Do something", status="in_progress")
task = models.create_task(db, "PROJ1-001", "proj1", "Do something", status="in_progress")
assert task["status"] == "in_progress"
# Write checkbox file
tasks_dir = tmp_vault / "proj1" / "tasks"
tasks_dir.mkdir(parents=True)
(tasks_dir / "sprint.md").write_text(
"- [x] proj1-001 Do something\n",
"- [x] PROJ1-001 Do something\n",
encoding="utf-8",
)
@ -172,7 +172,7 @@ def test_sync_updates_task_status(db, tmp_vault):
assert result["tasks_updated"] == 1
assert not result["errors"]
updated = models.get_task(db, "proj1-001")
updated = models.get_task(db, "PROJ1-001")
assert updated["status"] == "done"