# -*- coding: utf-8 -*-
"""Sửa WORKER calib theo 3 yêu cầu của chủ nhân:
  1. Tỉ lệ nhập = % MÀU PHA TRONG BASE (không phải tỉ lệ phần của hỗn hợp).
  2. Điều kiện chuẩn mặc định: cùng thước kéo với mẫu · cùng base với mẫu · giấy trắng cùng loại.
  3. Bước C chỉ ĐỀ XUẤT hiệu chỉnh (chưa ghi vào CSDL B) + trạng thái 'cho_xac_nhan';
     việc ghi vào `mau` chỉ xảy ra sau khi nhập đúng mật khẩu (hàm ap_dung()).
"""
import ast

P = r'C:\Claw 2\Nghien cuu\Du-an-B-He-mau-Stain-Glaze\calib-app\worker_calib.py'
s = open(P, encoding='utf-8').read()

DK = ("ĐIỀU KIỆN CHUẨN (bắt buộc, đã cố định): mẫu được kéo bằng CÙNG thước kéo với màu mẫu, "
      "pha trong CÙNG loại base với mẫu, trên GIẤY TRẮNG cùng loại. ")

# --- 1. BƯỚC P: nêu rõ tỉ lệ là % màu trong base + điều kiện chuẩn ---
s = s.replace("""'- **%s** (mã %s, %s) — tỉ lệ **%s%%** · hệ số cường độ hiện tại: %s · số lần hiệu chỉnh: %s\\n'""",
              """'- **%s** (mã %s, %s) — **%s%% màu trong base** · hệ số cường độ hiện tại: %s · số lần hiệu chỉnh: %s\\n'""")
s = s.replace("""            'THÀNH PHẦN HỖN HỢP (tỉ lệ tính theo khối lượng bột màu, tổng %s%%):\\n%s\\n\\n'""",
              """            'THÀNH PHẦN: các màu pha trong base — mỗi dòng là **%% màu pha trong base** (KHÔNG cần cộng = 100%%; '
            'ví dụ: 4 nghĩa là 4%% màu đó trong base). Tổng %s%% chỉ là con số cộng lại để tham chiếu.\\n%s\\n\\n'
            '""" + DK + """\\n\\n'""")

# --- 2. BƯỚC C: nêu lại điều kiện + yêu cầu thêm lab_moi cho từng màu ---
s = s.replace("""    return ('Bạn là chuyên gia màu sắc sơn. Có MỘT HỖN HỢP ĐÃ PHA THỰC TẾ và ẢNH MÀU THỰC TẾ của nó.\\n\\n'
            'THÀNH PHẦN: tổng %s%%\\n%s\\n\\n'""",
              """    return ('Bạn là chuyên gia màu sắc sơn. Có MỘT HỖN HỢP ĐÃ PHA THỰC TẾ và ẢNH MÀU THỰC TẾ của nó.\\n\\n'
            '""" + DK + """\\n\\n'
            'THÀNH PHẦN (mỗi dòng là %% màu pha trong base; tổng %s%%):\\n%s\\n\\n'""")
s = s.replace("""' \"hieu_chinh\": [{\"ma\": \"MA_MÀU\", \"ti_le\": 60.0, \"he_so_cu\": 1.0, \"he_so_moi\": 1.12, \"ly_do\": \"…\"}]}\\n```\\n'""",
              """' \"hieu_chinh\": [{\"ma\": \"MA_MÀU\", \"ti_le\": 60.0, \"he_so_cu\": 1.0, \"he_so_moi\": 1.12,\\n'
            '                 \"lab_moi\": {\"L\": 0.0, \"a\": 0.0, \"b\": 0.0, \"hex\": \"#RRGGBB\"}, \"ly_do\": \"…\"}]}\\n```\\n'
            'Trong đó `he_so_moi` = hệ số cường độ MỚI của màu đó (1.0 = giữ nguyên; >1 = màu mạnh hơn giả định ⇒ lần sau dùng ít lại; '
            '<1 = yếu hơn ⇒ dùng nhiều hơn), và `lab_moi` = màu của CHÍNH màu đó sau khi hiệu chỉnh (để lưu vào CSDL B).\\n'""")

open(P, 'w', encoding='utf-8').write(s)
ast.parse(s)
print('bước 1+2: đã sửa prompt — cú pháp OK')
print('  có điều kiện chuẩn:', DK in s or 'ĐIỀU KIỆN CHUẨN' in s)
print('  có % màu trong base:', '% màu pha trong base' in s)
print('  có lab_moi trong JSON:', 'lab_moi' in s)
