# -*- coding: utf-8 -*-
"""Lượt AGY thứ 2: yêu cầu đọc HEX từng ô màu để ĐỐI CHIẾU với số đo pixel của mình."""
import io, os, subprocess, time

DIR = r'C:\Claw 2\Nghien cuu\Du-an-B-He-mau-Stain-Glaze\trang-mausac'
AGY = r'C:\Users\admin\AppData\Local\agy\bin\agy.exe'
MODEL = 'gemini-3.8-flash-high'

PROMPT = u"""Trong thư mục images\\ có 11 ảnh bảng màu (danh-sach-mau.jpg · danh-sach-mau-dye-bang-1..4.jpg ·
danh-sach-mau-pigment-bang-1..6.jpg). Đây là ảnh chụp bảng in: mỗi ô là một mẫu màu, dưới mỗi ô có dòng chữ in
tên/mã màu + nồng độ %.

NHIỆM VỤ: với MỖI ảnh, liệt kê từng ô màu có mẫu và ghi MÃ MÀU HEX xấp xỉ của ô đó.

GHI KẾT QUẢ DẦN RA FILE THẬT `_agy_hex_tung_o.md` trong thư mục này (ghi từng ảnh ngay khi xong).

Định dạng mỗi dòng (mỗi ô 1 dòng):
`<tên file ảnh> | <hàng>-<cột> | <nhãn in dưới ô, nguyên văn> | #RRGGBB | R,G,B`

Yêu cầu:
- Đọc màu của CHÍNH Ô MẪU (vùng màu), không lấy màu chữ hay màu giấy nền.
- Ước lượng hex sát nhất có thể; nếu ô trống (không có mẫu) thì ghi `(ô trống)` thay cho hex.
- Bỏ qua ảnh danh-sach-mau.jpg nếu chỉ là ảnh banner (ghi 1 dòng: `danh-sach-mau.jpg | - | ảnh banner | - | -`).
- 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', MODEL, '--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_hex.txt'), 'w', encoding='utf-8').write(
    'thoi_gian=%.1f s\n=== STDOUT ===\n%s\n=== STDERR ===\n%s\n' % (dt, 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('usage =', _j.dumps(d.get('usage', {}), ensure_ascii=False))
except Exception as e:
    print('parse lỗi:', e, (r.stdout or '')[:300])
f = os.path.join(DIR, '_agy_hex_tung_o.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')
