""" 回填审校结果到 bitable """ import json, subprocess APP_TOKEN = "CMHSbUUjka3TrUsaxxEc297ongf" SKILL_SCRIPT = "/root/.openclaw/workspace-xiaoyan/skills/lark_bitable_operate_as_bot/scripts/operate_bitable.sh" records = [ { "table_id": "tblCgfYDnnqwLfgH", "record_id": "recvjt0HzBBhYu", "sid": "032501", "text": """⚠️ 审校通过(0项错误) 题型:reading_matchInfo | 题组:first=6题 second=0题 📝 备注:只有一道题组(first),缺少second题组 🟡 能力标签映射建议(12处): - '信息定位与提取' → '扫读定位|信息匹配'(6处) - '细节理解' → '细节理解|事实信息提取'(6处) ✅ 题目内容、选项、答案、解析均无问题""" }, { "table_id": "tbl4q0ZUV3HB54t1", "record_id": "recvjug1hWz2oG", "sid": "032601", "text": """⚠️ 审校通过(0项错误) 题型:reading_choiceLong | 题组:first=5题 second=0题 📝 备注:只有一道题组(first),缺少second题组 🟡 能力标签映射建议(10处): - '信息定位' → '扫读定位|信息匹配'(4处) - '细节理解' → '细节理解|事实信息提取'(3处) - '主旨归纳' → '主旨理解|段落/文本大意'(1处) - '因果推断' → '推理判断|原因/结果'(1处) - '推理判断' → '推理判断|原因/结果'(1处) ✅ 题目内容、选项、答案、解析均无问题""" }, { "table_id": "tblzKVm1FEukPgnN", "record_id": "recvjueHm15HPu", "sid": "032701", "text": """⚠️ 审校通过(0项错误) 题型:reading_cloze | 题组:first=6题 second=0题 📝 备注:只有一道题组(first),缺少second题组 🟡 需补充内容(12项): - 全部6题的 ability 能力标签为空,需补充(建议:语法结构识别|完形填空) - 全部6题的 explanation 解析为空,需补充 - 选项与答案已填写,结构完整""" }, { "table_id": "tblzKVm1FEukPgnN", "record_id": "recvjueN5QT1c5", "sid": "032801", "text": """⚠️ 审校通过(0项错误) 题型:reading_cloze | 题组:first=6题 second=0题 📝 备注:只有一道题组(first),缺少second题组 🟡 需补充内容(12项): - 全部6题的 ability 能力标签为空,需补充(建议:语法结构识别|完形填空) - 全部6题的 explanation 解析为空,需补充 - 选项与答案已填写,结构完整""" }, { "table_id": "tblLmUxzzUDe0QAJ", "record_id": "recvjueULrufNg", "sid": "032901", "text": """⚠️ 审校通过(0项错误) 题型:reading_openCloze | 题组:first=8题 second=6题 🟡 需补充内容(28项): - 全部14题的 ability 能力标签为空,需补充(建议:语法结构识别|完形填空) - 全部14题的 explanation 解析为空,需补充 - 选项与答案已填写,题组完整(first+second均有)""" }, ] for r in records: # Escape the text for shell/JSON fields = json.dumps({"审校结果": r['text']}, ensure_ascii=False) cmd = f"bash {SKILL_SCRIPT} update_record {APP_TOKEN} {r['table_id']} {r['record_id']} '{fields}'" result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=30) try: resp = json.loads(result.stdout) if resp.get('code') == 0: print(f"✅ {r['sid']} ({r['table_id'][-8:]}): 回填成功") else: print(f"❌ {r['sid']}: {resp}") except: print(f"❌ {r['sid']}: parse error — {result.stdout[:200]}")