"""
Phát lại một chuỗi câu khách trong CÙNG một phiên (gọi mô hình thật) để soi
câu trả lời lượt cuối. Nhật ký các phiên thử ghi vào khong_gian 'tradingauto'
(để tầng 1 dùng đúng kho), rồi chuyển sang 'thu_nghiem' cho khỏi lẫn số liệu.

    moitruong/bin/python thu/phat_lai.py "câu 1" "câu 2" ... "câu cuối"
"""
from __future__ import annotations

import os
import sys
import uuid

sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from congcu import csdl  # noqa: E402
from giao_uoc import NguCanh  # noqa: E402
from nao.tra_loi import tra_loi  # noqa: E402


def phat_lai(cac_cau, kenh='messenger'):
    phien = 'phatlai' + uuid.uuid4().hex[:8]
    try:
        for i, cau in enumerate(cac_cau, 1):
            kq = tra_loi(cau, NguCanh(phien=phien, khong_gian='tradingauto', kenh=kenh))
            cuoi = i == len(cac_cau)
            print(f'--- [{i}] KHÁCH: {cau}  | tầng {kq.tang}')
            print(kq.tra_loi if cuoi else kq.tra_loi[:160].replace('\n', ' ') + ' …')
    finally:
        conn = csdl.ket_noi()
        if conn is not None:
            with conn:
                with conn.cursor() as ct:
                    ct.execute("UPDATE chat_hoi_thoai SET khong_gian = 'thu_nghiem' WHERE phien = %s", (phien,))
                    ct.execute("UPDATE chat_phien SET khong_gian = 'thu_nghiem' WHERE phien = %s", (phien,))
                conn.commit()


if __name__ == '__main__':
    if len(sys.argv) < 2:
        raise SystemExit(__doc__)
    phat_lai(sys.argv[1:])
