feat: Phase 2 triage with keyboard shortcuts J/S/X

Implement /triage GET/POST routes in triage.py blueprint; render
phase2.html with day-grouped photo grid, Alpine.js keyboard tagging
(J=journal, S=story, X/Space=skip), and done-button gated on all-tagged.
Remove stub from albums.py; register triage.bp in __init__.py.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-21 16:26:53 +02:00
parent 7b7810cc59
commit a6a2b31c43
5 changed files with 206 additions and 20 deletions
@@ -70,22 +70,3 @@ def select():
save_state(state, current_app)
return redirect(f"/triage?album_id={primary_id}")
# TODO(task-6): replace this stub with the real triage route
@bp.get("/triage")
def triage():
album_id = request.args.get("album_id", "")
notes_content = ""
phase_stale = []
if album_id:
state = load_state(album_id, current_app)
if state:
notes_content = state.notes
phase_stale = state.phase_stale
return render_template(
"base.html",
current_phase="triage",
album_id=album_id,
notes_content=notes_content,
phase_stale=phase_stale,
)