vibe.review.web.routes

Review Workbench Routes.

Flask blueprint providing the web interface for document compliance review. All routes return server-rendered HTML for htmx-driven interactivity.

strip_markdown_filter

strip_markdown_filter(text: str) -> str

Strip common markdown syntax for plain text display.

Removes: headings (#), bold/italic (*/_), links, code blocks.

download_document

download_document(template_id: str, session_id: int, doc_id: int) -> ResponseReturnValue

Download the original uploaded binary for a document.

Uses ReviewService as the storage boundary and enforces session/document ownership (cannot download documents from other sessions).

index

index() -> ResponseReturnValue

List recent review sessions and allow resuming.

template_sessions

template_sessions(template_id: str, db_session: Session, service: ReviewService, template_info: TemplateInfo) -> ResponseReturnValue

List review sessions for a specific template.

delete_session

delete_session(template_id: str, db_session: Session, service: ReviewService, session_id: int) -> Response

Delete a review session.

new_session_form

new_session_form(template_id: str, db_session: Session, service: ReviewService, template_info: TemplateInfo) -> ResponseReturnValue

Display form for creating a new review session for a specific template.

create_session

create_session(template_id: str) -> ResponseReturnValue

Create a new review session from uploaded document(s).

workbench

workbench(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> str

Render the main review workbench - three-pane layout with unified assessment stream.

questions_panel

questions_panel(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> str

Render the template questions panel (htmx partial).

save_question

save_question(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, question_id: str) -> Response

Persist a single review question answer into ReviewSessionModel.context.

suggest_question

suggest_question(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, question_id: str) -> Response

Get AI suggestion for a question and store it in QuestionReviewModel.

accept_suggestion

accept_suggestion(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, question_id: str) -> Response

Accept an AI suggestion and apply it to the session context.

ingest_session

ingest_session(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> str

Show ingestion progress UI (used for PDF/OCR ingestion).

ingest_stream

ingest_stream(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> Response

Stream ingestion progress via SSE.

start_review

start_review(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> ResponseReturnValue

Set session label, document order/labels, and redirect to workbench.

document_file

document_file(template_id: str, session_id: int, doc_id: int) -> Response

Download/serve the original uploaded file for a document (if available).

document_pdf_page_png

document_pdf_page_png(template_id: str, session_id: int, doc_id: int, page_number: int) -> Response

Render a single PDF page to PNG and serve it (cached on disk).

Supports: - PDFs (original uploaded PDF) - DOCX with derived PDF (layout-faithful view)

requirements_sidebar

requirements_sidebar(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> str

Render requirements sidebar (htmx partial).

assessment_sidebar

assessment_sidebar(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> str

Render unified assessment sidebar showing both questions and requirements.

requirement_detail

requirement_detail(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, req_id: str) -> ResponseReturnValue

Render requirement detail panel (htmx partial).

assessment_item_question

assessment_item_question(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, question_id: str) -> ResponseReturnValue

Render unified assessment item panel for a question (htmx partial).

assessment_item_requirement

assessment_item_requirement(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, requirement_id: str) -> ResponseReturnValue

Render unified assessment item panel for a requirement (htmx partial).

run_ai_classification

run_ai_classification(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, req_id: str) -> Response

Run AI classification for a single requirement (htmx partial + OOB swap).

ai_assessment_stream

ai_assessment_stream(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, item_type: str, item_id: str) -> Response

Unified SSE streaming endpoint for AI assessment.

Handles both questions and requirements through the same pipeline: search → rerank → assess.

URL: /review///assessment///ai-stream where item_type is "question" or "requirement"

remove_matched_part

remove_matched_part(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, item_type: str, item_id: str, part_db_id: int) -> Response

Remove a matched part from an assessment item.

Returns updated assessment_item.html partial for HTMX swap.

add_matched_part

add_matched_part(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, item_type: str, item_id: str) -> Response

Add a matched part to an assessment item.

Expects form data: part_db_id Returns HX-Trigger header for UI update.

promote_part_to_example

promote_part_to_example(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, item_type: str, item_id: str, part_db_id: int) -> ResponseReturnValue

Promote a document part to an example for few-shot learning.

GET: Returns form page pre-filled with part content POST: Creates ExampleModel and shows success page

debug_prompt

debug_prompt(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, req_id: str) -> ResponseReturnValue

Show the AI classification prompt for debugging (dev mode only).

used_examples

used_examples(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, req_id: str) -> ResponseReturnValue

Show examples used during AI classification (dev mode only).

debug_question_prompt

debug_question_prompt(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, question_id: str) -> ResponseReturnValue

Show the AI question answering prompt for debugging (dev mode only).

classify_requirement

classify_requirement(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, req_id: str) -> ResponseReturnValue

Save classification for a requirement (htmx partial + OOB swap).

save_example

save_example(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, req_id: str) -> ResponseReturnValue

Save a requirement classification as a canonical example for few-shot learning.

Creates an ExampleModel record linked back to the source review and document. Only works for requirements that have been classified (not PENDING).

examples_list

examples_list(template_id: str, db_session: Session, service: ReviewService) -> ResponseReturnValue

List examples for a template with optional filtering.

Query params

requirement_id: Filter by requirement ID classification: Filter by classification (yes/no/partial/not_applicable) min_quality: Minimum quality score (0.0-1.0) page: Page number (default 1)

example_detail

example_detail(template_id: str, db_session: Session, service: ReviewService, example_id: int) -> ResponseReturnValue

Get example detail/edit form (HTMX partial).

update_example

update_example(template_id: str, db_session: Session, service: ReviewService, example_id: int) -> ResponseReturnValue

Update an example.

delete_example

delete_example(template_id: str, db_session: Session, service: ReviewService, example_id: int) -> ResponseReturnValue

Delete an example (two-step confirmation).

document_viewer

document_viewer(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> ResponseReturnValue

Render full document viewer (htmx partial).

Query parameters

doc_id: Optional document ID to show a specific document. If not provided, shows the first document. highlight: Optional part ID to highlight.

document_part

document_part(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, part_id: str) -> Response

Render document viewer scrolled to specific part (htmx partial).

Finds the document containing the part, renders only that document, and triggers a tab switch via HX-Trigger header.

document_parts_map

document_parts_map(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel, doc_id: int) -> ResponseReturnValue

Return document parts for the dev mode document map dropdown.

Only available in dev mode. Returns a list of parts with their IDs and labels for navigation.

run_classification

run_classification(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> Response

Trigger batch AI classification with SSE progress updates.

progress_bar

progress_bar(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> str

Render progress bar with OOB swaps for progress text and assessment sidebar.

This endpoint consolidates multiple updates that trigger on the same events (classification-saved, context-saved) into a single response using htmx OOB swaps.

export_results

export_results(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> Response

Export review results as Excel file.

download_report

download_report(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> Response

Download the rendered compliance report.

Renders the template with the review context (classifications, questions) and returns the document for download.

Query parameters

type: Output format - "main" (markdown/html), "pdf" (future) draft: If "1", allow download even if not all requirements are classified

report_preview

report_preview(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> ResponseReturnValue

Render the compliance report preview.

Returns HTML content for display in the preview pane, allowing users to see how the final report will look as they work through classifications.

Unlike download_report, this always renders (no completion check) and returns inline HTML rather than a download attachment.

debug_session_context

debug_session_context(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> Response

Debug endpoint to inspect session context and question reviews.

Only available in dev mode.

debug_probe_requirements

debug_probe_requirements(template_id: str, session_id: int, db_session: Session, service: ReviewService, review_session: ReviewSessionModel) -> Response

Debug endpoint to test requirement probing.

Only available in dev mode.

parsing_visualizer

parsing_visualizer() -> ResponseReturnValue

Serve the parsing visualizer UI (dev mode only).

parsing_visualizer_upload

parsing_visualizer_upload() -> Response

Handle parsing visualizer uploads (dev mode only).

parsing_visualizer_page_png

parsing_visualizer_page_png(digest: str, page_number: int) -> Response

Serve a rendered PDF page PNG for the parsing visualizer (dev mode only).

parsing_visualizer_overlay

parsing_visualizer_overlay() -> Response

Serve parsing overlay data for the visualizer (dev mode only).

parsing_visualizer_watch

parsing_visualizer_watch() -> Response

Stream parsing visualizer updates (dev mode only).