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

@ -142,6 +142,32 @@ def test_reject_not_found(client):
assert r.status_code == 404
def test_revise_task(client):
from core.db import init_db
from core import models
conn = init_db(api_module.DB_PATH)
models.update_task(conn, "P1-001", status="review")
conn.close()
r = client.post("/api/tasks/P1-001/revise", json={
"comment": "Доисследуй edge case с пустым массивом"
})
assert r.status_code == 200
assert r.json()["status"] == "in_progress"
# Verify task is in_progress with revise_comment stored
conn = init_db(api_module.DB_PATH)
row = conn.execute("SELECT status, revise_comment FROM tasks WHERE id = 'P1-001'").fetchone()
conn.close()
assert row["status"] == "in_progress"
assert row["revise_comment"] == "Доисследуй edge case с пустым массивом"
def test_revise_not_found(client):
r = client.post("/api/tasks/NOPE/revise", json={"comment": "fix it"})
assert r.status_code == 404
def test_task_pipeline_not_found(client):
r = client.get("/api/tasks/NOPE/pipeline")
assert r.status_code == 404