# -*- coding: utf-8 -*-
"""Chuẩn bị gói việc: AGY trích xuất PHIẾU ĐẶT HÀNG (PO) từ ảnh chụp email + PO.
- Ảnh: img_ba883fb81f2d.jpg (Anh Minh gửi 07/10/2026)
- Yêu cầu: TRÍCH XUẤT GỌN — email + bảng 10 dòng hàng + tổng tiền, không bình luận.
- Kết quả ghi dần ra TRICH_XUAT_PO.md trong thư mục này."""
import io, os, shutil, subprocess, time

GOC = r'C:\Users\admin\AppData\Local\hermes\cache\images\img_ba883fb81f2d.jpg'
DIR = r'C:\Claw 2\Bao cao - Hanh chinh\bao cao mua hang\Phieu-dat-hang-2026-10'
AGY = r'C:\Users\admin\AppData\Local\agy\bin\agy.exe'
os.makedirs(DIR, exist_ok=True)
shutil.copy2(GOC, os.path.join(DIR, '1_anh_po_MPO-PU338-9-26.jpg'))

BOI_CANH = u"""ẢNH CẦN ĐỌC: `1_anh_po_MPO-PU338-9-26.jpg` — ảnh chụp màn hình gồm 2 phần:
(1) phần trên là EMAIL trao đổi về việc điều chỉnh đơn hàng;
(2) phần dưới là PHIẾU ĐẶT HÀNG (Purchasing Order) dạng bảng có tiêu đề mã PO, ngày, bên bán/bên mua,
danh sách các dòng hàng (mã hàng, tên hàng, đơn vị, số lượng, đơn giá, thành tiền) và tổng tiền.

QUY TẮC:
- Chỉ ghi đúng những gì NHÌN THẤY. Số nào không đọc chắc thì ghi `không đọc chắc` — KHÔNG đoán, KHÔNG tự tính lại,
  KHÔNG tự sửa lỗi chính tả trong ảnh (giữ nguyên văn, kể cả viết hoa/viết sai).
- Giữ nguyên dấu phân cách nghìn/đơn vị tiền như trên ảnh (ví dụ 40, 1.234.567, 97.820.000 VND).
- Không thêm nhận xét, không thêm khuyến nghị, không thêm mục nào ngoài yêu cầu dưới đây.
"""

YEU_CAU = u"""Ghi kết quả ra file `TRICH_XUAT_PO.md` (ghi dần khi đọc xong từng phần), ĐÚNG 3 mục, NGẮN GỌN:

## 1. EMAIL
Ghi thành các dòng `- **Trường:** giá trị` cho: Người gửi · Người nhận · Chủ đề · Nội dung yêu cầu (nguyên văn),
và nếu có: ngày gửi, tệp đính kèm. Nếu ảnh không hiển thị trường nào thì ghi `không thấy`.

## 2. PHIẾU ĐẶT HÀNG
- Các trường: Số PO · Ngày · Bên bán (tên + địa chỉ nếu có) · Bên mua · Điều khoản/ghi chú (nguyên văn) · Người ký.
- Bảng dòng hàng — MỖI DÒNG HÀNG LÀ 1 DÒNG BẢNG với đúng các cột:
  `STT | Mã hàng | Tên hàng (nguyên văn) | Đơn vị | Số lượng | Đơn giá | Thành tiền | Ghi chú`
- Ghi rõ dòng nào đang được ĐÁNH DẤU trong ảnh (ô khoanh đỏ / highlight) nếu có.

## 3. TỔNG TIỀN & KIỂM TRA
- Ghi các dòng tổng nhìn thấy trên phiếu (Tổng tiền hàng, Thuế VAT, Tổng cộng… nguyên văn) và số tiền bằng chữ nếu có.
- Tự cộng các cột Thành tiền đã ghi ở mục 2 và ghi: `TỔNG TỰ CỘNG = …` · `KHỚP/ KHÔNG KHỚP với tổng trên phiếu`.
- Nếu có ô nào không đọc được thì liệt kê ngắn ở cuối.

Kết thúc file bằng dòng: HOAN TAT
"""

io.open(os.path.join(DIR, 'BOI_CANH.txt'), 'w', encoding='utf-8', newline='\r\n').write(BOI_CANH)
io.open(os.path.join(DIR, 'YEU_CAU.txt'), 'w', encoding='utf-8', newline='\r\n').write(YEU_CAU)

PROMPT = u"""Trong thư mục làm việc có `1_anh_po_MPO-PU338-9-26.jpg` (ảnh email + phiếu đặt hàng),
`BOI_CANH.txt` và `YEU_CAU.txt`.

Hãy đọc ảnh và làm ĐÚNG theo `YEU_CAU.txt`: trích xuất email và phiếu đặt hàng, ghi dần ra file thật
`TRICH_XUAT_PO.md`. Chỉ ghi điều nhìn thấy, giữ nguyên văn và nguyên số. NGẮN GỌN, không bình luận.
Kết thúc file bằng dòng: HOAN TAT
"""

t0 = time.time()
print('bắt đầu:', time.strftime('%H:%M:%S'))
r = subprocess.run([AGY, '-p', PROMPT, '--model', 'gemini-3.8-flash-high', '--add-dir', DIR,
                    '--dangerously-skip-permissions', '--output-format', 'json'],
                   capture_output=True, text=True, encoding='utf-8', errors='replace', timeout=3000)
dt = time.time() - t0
io.open(os.path.join(DIR, '_log_agy.txt'), 'w', encoding='utf-8').write(
    'thoi_gian=%.1f s\nexit=%s\n=== STDOUT ===\n%s\n=== STDERR ===\n%s\n' % (dt, r.returncode, r.stdout or '', r.stderr or ''))
print('agy xong sau %.1f s · exit=%s' % (dt, r.returncode))
try:
    import json as _j
    d = _j.loads(r.stdout)
    print('status =', d.get('status') or d.get('result', {}).get('status'))
    print('response:', str(d.get('response') or '')[:300])
    if 'usage' in d:
        print('usage =', _j.dumps(d['usage'], ensure_ascii=False))
except Exception as e:
    print('parse lỗi:', e, (r.stdout or '')[:300])
f = os.path.join(DIR, 'TRICH_XUAT_PO.md')
if os.path.exists(f):
    t = io.open(f, encoding='utf-8', errors='replace').read()
    print('FILE: %d byte · %d dòng | HOAN TAT: %s' % (len(t.encode('utf-8')), t.count('\n') + 1, 'HOAN TAT' in t))
else:
    print('⛔ CHƯA CÓ FILE')
