#!/usr/bin/env python3
"""Update 图片描述 field for reading_pic_qa records."""
import json, requests, time

CRED_FILE = "/root/.openclaw/credentials/xiaoyan/config.json"
APP_TOKEN = "CMHSbUUjka3TrUsaxxEc297ongf"
TABLE_ID = "tblweY65jGBiwSdt"

IMAGE_DESCRIPTIONS = {
    "recvjhhtWLApoW": """1.

风格: 卡通，简单线条
场景：儿童卧室早晨，阳光从窗户照进来
穿睡衣的小男孩 - 站在窗前往外看，窗外有树和小鸟 ；
同一个穿睡衣的小男孩 - 跪在床前地板上，从床底下伸手找到一只红色皮球，脸上表情惊喜 ；
同一个男孩 - 从地板上弯腰捡起一只蓝白条纹袜子 ；
穿好外出衣服的小男孩 - 坐在床边正穿一只蓝色运动鞋，另一只已穿好 ；
背书包的小男孩 - 在房间门口停下脚步回头看向房间，面带微笑。

2.

风格: 卡通，简单线条
场景：户外游乐场攀爬区，有彩色攀爬架、滑梯、秋千
戴蓝色头盔的小男孩 - 双手系紧头盔下巴带子，站在攀爬架旁 ；
扎马尾穿粉色运动服的女孩 - 在攀爬架高处双手解开安全绳 ；
攀爬架旁立着黄色安全警示牌（感叹号标志），地面铺彩色防护软垫 ；
穿红色外套的女教练 - 蹲在攀爬架旁指导男孩攀爬 ；
戴海盗帽和黑色眼罩的男孩 - 举着玩具剑站在攀爬架平台，做夸张海盗表情。""",

    "recvjhhurtvJRc": """1.

风格: 卡通，简单线条
场景：温馨餐厅内，靠窗的餐桌，阳光明媚
桌上白色盘子里 - 放着一块金黄烤鸡肉 ；
扎双马尾的小女孩 - 坐在餐桌旁，双手捧着一本打开的菜单在看 ；
戴白色高厨师帽的厨师 - 在开放式厨房灶台前翻动平底锅里的牛排，穿着白色围裙 ；
同一张餐桌上 - 另一个盘子里放着一块煎好的牛排，旁边配蔬菜 ；
戴白色高厨师帽的厨师 - 头戴白色厨师帽，面带微笑。

2.

风格: 卡通，简单线条
场景：菜市场蔬菜摊位，木制摊位上摆满各种蔬菜
白色洋葱 - 放在摊位左侧的木篮里 ；
黄色咖喱 - 盛在摊位前的小碗里，旁边有标签 ；
棕白色蘑菇 - 整齐摆放在摊位的竹篮中 ；
白色大蒜 - 串成一串挂在摊位上方 ；
红色辣椒 - 堆放在摊位右侧的红色小筐里。""",

    "recvjhhv24p2Pu": """1.

风格: 卡通，简单线条
场景：儿童游戏室，地板上铺着彩色地毯，墙上有时钟和画
银灰色卡通机器人 - 站在房间中央，有大大的方脑袋，两只圆圆的眼睛，两条手臂，两条腿 ；
同一机器人 - 脑袋特别大，占据了身体三分之一的高度 ；
同一机器人 - 两条银色金属腿，每条腿有三个关节 ；
同一机器人 - 两条手臂可以弯曲，末端是钳子状抓手 ；
同一机器人 - 身体是银灰色的长方体，胸前有闪烁的小灯。

2.

风格: 卡通，简单线条
场景：教室布告栏，绿色布告板挂在墙上，旁边有老师的讲台和学生的课桌
墙上布告栏 - 贴着一篇手写的故事，标题彩色大字 ；
布告栏上 - 贴着一张彩色大海报，上面画着动物图案 ；
教师讲台上 - 放着一份装订好的报告，封面写着"Report" ；
墙上布告栏下方 - 贴着一张打印的校园新闻，标题可见"School News" ；
布告栏中央 - 贴着一张彩色图画，画的是太阳花。""",

    "recvjhhvB36ro1": """1.

风格: 卡通，简单线条
场景：动物园/野生动物园，有草地、树木、水池
一头雄狮 - 金色鬃毛浓密蓬松，站在草地上 ；
同一头狮子 - 站在草地中央，周围有其他小动物 ；
一棵大树 - 树洞里探出一只棕熊的头和爪子 ；
黄色和黑色的蝴蝶 - 停在花丛中的一朵红花上 ；
蓝色水池里 - 一条橙色金鱼在游动，水面有波纹。

2.

风格: 卡通，简单线条
场景：自然风景区，有游泳池、湖泊、草地、远处森林
蓝色游泳池 - 池水清澈蔚蓝，池边有躺椅和遮阳伞 ；
天空晴朗 - 几朵白云，大太阳，空中没有乌云和闪电 ；
湖泊 - 在游泳池后方，湖面宽阔，远处有小船 ；
大片绿色草地 - 从游泳池边延伸到湖边，草地上有几朵小野花 ；
远景 - 大片深绿色森林，树木茂密成片。""",

    "recvjhhwbepReL": """1.

风格: 卡通，简单线条
场景：美术教室，桌上和墙上展示着各种色彩鲜艳的物品
桌上放着一顶紫色帽子 - 帽子上有彩色波点装饰 ；
桌上花瓶里 - 插着一朵粉色大花，花瓣层层叠叠 ；
墙上贴着一幅画 - 画面色彩非常丰富，有红黄蓝绿紫多种颜色 ；
桌边放着几把勺子 - 其中一把是木色/米色的，旁边是彩色笔筒 ；
桌子中央 - 放着一个装饰特别的生日蛋糕，插着蜡烛，蛋糕上有彩色糖粒。

2.

风格: 卡通，简单线条
场景：果汁店/厨房操作台，桌上摆满各种水果
桌上 - 放着一个黄色柠檬，旁边有切开的半个柠檬 ；
黄色芒果 - 放在水果篮里，表皮光滑 ；
紫色葡萄 - 一串放在白色盘子里 ；
同一个柠檬 - 旁边贴着"酸"的标签/符号 ；
玻璃杯里 - 装着紫色葡萄汁，不是橙色橙汁，旁边有榨汁机。""",

    "recvjhhwIKni7F": """1.

风格: 卡通，简单线条
场景：公司办公室前台区域，玻璃大门，接待台
墙上挂着公司名称牌 - 上面印着公司logo和名称 ；
办公桌上 - 放着一张访客登记卡片 ；
女性前台接待员 - 坐在接待台后，穿着职业装，戴着耳麦，微笑面对访客 ；
小小的单间办公室 - 里面有一张办公桌和电脑，门半开 ；
办公室里的会议室 - 椭圆长桌周围坐满了人，有人在白板前讲解。

2.

风格: 卡通，简单线条
场景：现代家庭/公寓内部，多个房间
干净整洁的卫生间 - 白色瓷砖墙面，洗手台和镜子 ；
墙上 - 靠着一个大书柜，上面整齐排列着各种颜色的书 ；
白色马桶 - 在卫生间角落里，旁边有卫生纸架 ；
书桌上 - 放着一盏亮着的台灯，灯光照在桌面上 ；
书桌上 - 放着一台打开的笔记本电脑，屏幕亮着，鼠标在旁，不是在床上。""",

    "recvjhhxe6QPYd": """1.

风格: 卡通，简单线条
场景：考古挖掘现场/自然博物馆，沙土地面，有围栏
一块大石头 - 埋在沙土里半露在外面，上面有纹理 ；
巨大的恐龙骨架化石 - 立在场地中央，骨骼巨大清晰可见 ；
蔚蓝的天空 - 有几朵白云，阳光明媚，不是阴天灰色 ；
一块巨大的岩石 - 竖立在挖掘坑旁边，比人还高 ；
沙土地面 - 到处是石头和化石碎片，没有鲜花和绿色植物。

2.

风格: 卡通，简单线条
场景：科学实验室/探险研究基地，墙上贴满图表
实验桌上 - 放着扳手、螺丝刀等工具 ；
穿白色实验服的科学家 - 戴着护目镜，站在实验台前做实验 ；
透明玻璃罐里 - 浸泡着一个大脑模型，放在架子上 ；
墙上贴着潜水海报 - 海报里有人在海里潜水，实验室里的男孩指着海报看，男孩本人不在海里 ；
实验室内 - 地上放着探险设备（背包、绳索、指南针等），没有电视，实验室门上有"Adventure Lab"标志。""",
}

with open(CRED_FILE) as f:
    cred = json.load(f)
app_id = cred["apps"][0]["appId"]
app_secret = cred["apps"][0]["appSecret"]

token_resp = requests.post(
    "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal",
    json={"app_id": app_id, "app_secret": app_secret},
)
token = token_resp.json()["tenant_access_token"]

results = {}
for record_id, desc in IMAGE_DESCRIPTIONS.items():
    print(f"Updating {record_id}...")
    resp = requests.put(
        f"https://open.feishu.cn/open-apis/bitable/v1/apps/{APP_TOKEN}/tables/{TABLE_ID}/records/{record_id}",
        headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
        json={"fields": {"图片描述": desc}},
    )
    code = resp.json().get("code")
    print(f"  code={code}")
    results[record_id] = code
    time.sleep(0.5)

# Verify
print("\n=== Verification ===")
for record_id in IMAGE_DESCRIPTIONS:
    resp = requests.get(
        f"https://open.feishu.cn/open-apis/bitable/v1/apps/{APP_TOKEN}/tables/{TABLE_ID}/records/{record_id}",
        headers={"Authorization": f"Bearer {token}"},
    )
    img_desc = resp.json()["data"]["record"]["fields"].get("图片描述", "")
    print(f"  {record_id}: 图片描述={len(img_desc)} chars {'✅' if len(img_desc) > 100 else '❌ EMPTY'}")

print("\nDone.")
