"""
flask_app.py — the Flask variant of the PoC ("Streamlit OR Flask" per the JD).

    pip install flask
    python flask_app.py        # then open http://localhost:5000

Same tested chat_logic layer, a minimal HTML form UI. Kept tiny on purpose —
Flask/Streamlit are for fast PoCs; the production API is FastAPI (Lab 05).
"""
from __future__ import annotations

from flask import Flask, redirect, request, url_for   # type: ignore

from chat_logic import ChatSession

app = Flask(__name__)
session = ChatSession()


def _page() -> str:
    rows = "".join(
        f"<p><b>{role}:</b> {text}</p>" for role, text in session.history)
    if session.awaiting_approval:
        controls = (
            '<form method="post" action="/approve">'
            '<button name="d" value="yes">Approve</button> '
            '<button name="d" value="no">Decline</button></form>')
    else:
        controls = ('<form method="post" action="/send">'
                    '<input name="msg" size="60" autofocus/>'
                    '<button>Send</button></form>')
    return f"<h2>🏦 Banking Assistant (PoC)</h2>{rows}{controls}"


@app.route("/")
def index() -> str:
    return _page()


@app.route("/send", methods=["POST"])
def send():
    session.send(request.form.get("msg", ""))
    return redirect(url_for("index"))


@app.route("/approve", methods=["POST"])
def approve():
    session.approve(request.form.get("d") == "yes")
    return redirect(url_for("index"))


if __name__ == "__main__":
    app.run(port=5000, debug=True)
