# -*- coding: utf-8 -*-
"""Viec 2 cho agy: doc PHIEU CONG THUC PHA GLAZE (viet tay) + ANH PHOI tho DL 16/19."""
import os, shutil, subprocess, json, time
from PIL import Image

CACHE = r"C:\Users\admin\AppData\Local\hermes\cache\images"
WS = r"C:\Claw 2\QC\_agy_tri_0310"
ANH = os.path.join(WS, "anh2")
os.makedirs(ANH, exist_ok=True)

ds = [("img_14a8f7b6eec8.jpg", "congthuc"), ("img_e7d957a8af58.jpg", "phoi")]
for src, tag in ds:
    p = os.path.join(CACHE, src)
    dst = os.path.join(ANH, tag + ".jpg")
    shutil.copy2(p, dst)
    im = Image.open(dst); w, h = im.size
    print("%s: %dx%d %.0f KB" % (tag, w, h, os.path.getsize(dst)/1024))
    if max(w, h) < 2400:
        f = 3 if max(w, h) < 1200 else 2
        im2 = im.resize((w*f, h*f), Image.LANCZOS)
        im2.save(os.path.join(ANH, tag + "_%dx.jpg" % f), quality=95)
        print("   -> ban %dx: %s" % (f, im2.size))

PROMPT = """Bạn là chuyên gia kỹ thuật sơn gỗ. Thư mục làm việc có 2 ảnh (bản gốc + bản phóng to) do nhân viên QC gửi hôm nay 03/10/2026, liên quan thẻ mẫu màu **DL 16/19** của CÔNG TY ĐĂNG LONG:
- `anh2/congthuc.jpg` (+ bản phóng `anh2/congthuc_2x.jpg` hoặc `_3x`): phiếu VIẾT TAY "Công thức pha glaze DL 16/19", đề ngày 3-10-2026.
- `anh2/phoi.jpg` (+ bản phóng): ảnh chụp các thanh phào chỉ đã sơn thử.

### NHIỆM VỤ 1 — TRÍCH XUẤT NGUYÊN VĂN PHIẾU CÔNG THỨC (ưu tiên số 1, đọc kỹ ảnh phóng to)
a) Phần ① "Tính màu": liệt kê TỪNG dòng nguyên văn gồm tên màu + mã + tỉ lệ trong ngoặc (ví dụ `(1-1)`, `(1-2)`) + khối lượng/đơn vị (g); nói rõ ký hiệu nhóm (ví dụ `(A)`) bao gồm những dòng nào.
b) Phần ② "Glaze màu": cho biết bảng có bao nhiêu cột (①, ②, ③, ④) và lập bảng markdown 5 cột `Hạng mục | ① | ② | ③ | ④` cho TỪNG dòng nguyên liệu (ví dụ `Glaze PU`, `Dầu lau OBT 0608`, `glaze tự nhiên`, `hỗn hợp phụ gia 08/22`, các dòng TM / dung môi). Ô trống ghi `—`; số không chắc đọc ghi `[số?]` kèm % tin cậy.
c) MỌI chữ khác trên phiếu: ngày tháng, tên/ký hiệu người lập, mũi tên, ghi chú ở lề, đơn vị đo — nguyên văn.
d) BẢNG TỔNG HỢP MỌI CON SỐ trên phiếu (kèm đơn vị và ý nghĩa cột/dòng), và liệt kê riêng những số đọc được theo 2 cách khác nhau + % tin cậy cho mỗi cách.

### NHIỆM VỤ 2 — ẢNH PHÔI SƠN THỬ: mô tả NGẮN, khách quan, chỉ nêu cái NHÌN THẤY: số thanh, hình dạng (phào chỉ khía dọc hay phẳng), màu sắc, mức bóng quan sát được (bóng / bán bóng / mờ), có lỗi bề mặt thấy rõ không (xước, chảy sơn, bụi, lệch màu giữa các thanh), đồ vật/dung dịch bên cạnh. Ghi rõ đây là ảnh chứng minh nên KHÔNG suy đoán thông số kỹ thuật.

### LUẬT BẮT BUỘC
1. GHI DẦN ra file `ket_qua_congthuc.md` trong thư mục làm việc: ghi ngay sau mỗi mục (Nhiệm vụ 1a, 1b, 1c, 1d, Nhiệm vụ 2) — không đợi tới cuối.
2. Chỉ ghi cái THỰC SỰ đọc được; tuyệt đối không bịa mã màu, tỉ lệ hay số gam. Chỗ mờ ghi `[không đọc được]`.
3. Với mỗi chỗ phân vân, ghi cả cách đọc khác + % tin cậy (ví dụ: "số này là 6 (90%) hay 8 (10%)").
4. Zoom/cắt vùng ảnh tối đa 3 lần cho mỗi vùng khó, không làm mãi.
5. Kết thúc in ra `XONG: <đường dẫn ket_qua_congthuc.md>` + tóm tắt 5 dòng."""

open(os.path.join(WS, "prompt2.txt"), "w", encoding="utf-8").write(PROMPT)

AGY = r"C:\Users\admin\AppData\Local\agy\bin\agy.exe"
t0 = time.time()
p = subprocess.run([AGY, "-p", PROMPT, "--model", "gemini-3.8-flash-high", "--add-dir", WS,
                    "--dangerously-skip-permissions", "--output-format", "json",
                    "--print-timeout", "0"], cwd=WS, timeout=1800,
                   capture_output=True, text=True, encoding="utf-8", errors="replace")
print("exit=%s  %.1f giay" % (p.returncode, time.time()-t0))
open(os.path.join(WS, "log_agy2.txt"), "w", encoding="utf-8").write((p.stdout or "") + "\n---STDERR---\n" + (p.stderr or ""))
try:
    j = json.loads(p.stdout or "{}"); print("status:", j.get("status"))
except Exception:
    print("stdout 400:", (p.stdout or "")[:400])
kq = os.path.join(WS, "ket_qua_congthuc.md")
print("ket_qua_congthuc.md:", os.path.getsize(kq) if os.path.exists(kq) else "CHUA CO")
