diff --git a/8095-lines.txt b/8095-lines.txt deleted file mode 100644 index 58bd893..0000000 --- a/8095-lines.txt +++ /dev/null @@ -1,2054 +0,0 @@ -aiimage-backend.log.2026-05-12.3:101:2026-05-12 09:15:22.102 [coze-task-2109] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638807590373277722 -aiimage-backend.log.2026-05-12.3:102:2026-05-12 09:15:22.110 [coze-task-2109] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31054 -aiimage-backend.log.2026-05-12.3:211:2026-05-12 09:15:32.710 [coze-task-2111] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53054 taskId=8095 executeId=7638807590373277722 -aiimage-backend.log.2026-05-12.3:212:2026-05-12 09:15:32.717 [coze-task-2111] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53054 executeId=7638807590373277722 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:214:2026-05-12 09:15:32.918 [coze-task-2111] INFO c.n.a.m.a.c.AppearancePatentCozeClient - [appearance-patent] coze history response executeId=7638807590373277722 status=200 OK body={"code":0,"msg":"","data":[{"bot_id":"0","is_output_trimmed":false,"execute_status":"Running","run_mode":2,"usage":{"token_count":0,"output_count":0,"input_count":0},"connector_id":"1024","create_time":1778548492,"token":"0","logid":"202605120914516BA35B4A7482F36C803C","execute_id":"7638807590373277722","update_time":1778548492,"error_code":"","connector_uid":"2939430754097600","debug_url":"https://www.coze.cn/work_flow?execute_id=7638807590373277722&space_id=7519005192466022436&workflow_id=7632683471312355338&execute_mode=2","output":"{\"node_status\":\"{}\",\"Output\":\"\"}","node_execute_status":{}}],"detail":{"logid":"202605120915321DCAD22B81CA5685C4CC"}} -aiimage-backend.log.2026-05-12.3:215:2026-05-12 09:15:32.918 [coze-task-2111] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53054 executeId=7638807590373277722 status=RUNNING -aiimage-backend.log.2026-05-12.3:539:2026-05-12 09:16:02.711 [coze-task-2112] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53054 taskId=8095 executeId=7638807590373277722 -aiimage-backend.log.2026-05-12.3:540:2026-05-12 09:16:02.713 [coze-task-2112] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53054 executeId=7638807590373277722 lastPolledAt=2026-05-12T09:15:33 -aiimage-backend.log.2026-05-12.3:857:2026-05-12 09:16:32.713 [coze-task-2113] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53054 taskId=8095 executeId=7638807590373277722 -aiimage-backend.log.2026-05-12.3:858:2026-05-12 09:16:32.720 [coze-task-2113] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53054 executeId=7638807590373277722 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:863:2026-05-12 09:16:33.019 [coze-task-2113] INFO c.n.a.m.a.c.AppearancePatentCozeClient - [appearance-patent] coze history response executeId=7638807590373277722 status=200 OK body={"code":0,"msg":"","data":[{"error_code":"0","execute_status":"Success","connector_uid":"2939430754097600","node_execute_status":{},"error_message":"","execute_id":"7638807590373277722","connector_id":"1024","is_output_trimmed":false,"run_mode":2,"create_time":1778548492,"logid":"202605120914516BA35B4A7482F36C803C","debug_url":"https://www.coze.cn/work_flow?execute_id=7638807590373277722&space_id=7519005192466022436&workflow_id=7632683471312355338&execute_mode=2","usage":{"token_count":0,"output_count":0,"input_count":0},"bot_id":"0","update_time":1778548551,"token":"0","output":"{\"node_status\":\"{}\",\"Output\":\"{\\\"data\\\":[{\\\"appearance\\\":\\\"高风险,外观极度相似\\\",\\\"appearance_reason\\\":\\\"该产品不仅包含了标志性的钥匙包(Clochette),还配套了特定的金属锁头,这套视觉组合是奢侈品牌(如Hermès)极其经典的标志性设计,极易被判定为外观设计专利侵权。\\\",\\\"asin\\\":\\\"B0CZJ3ZLTS\\\",\\\"patent\\\":\\\"高风险\\\",\\\"patent_reason\\\":\\\"该产品的核心设计旨在模仿特定奢华包袋的配件,在英国及欧盟市场,此类标志性配饰的结构与外观受到严格的知识产权保护,非授权生产的替代品面临极高的法律诉讼风险。\\\",\\\"result\\\":\\\"侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"中等风险\\\",\\\"title_reason\\\":\\\"标题使用了‘Clochette’及‘Handbag Accessories’等描述性词汇,虽未直接使用Hermès等大牌商标,但此类产品通常作为奢侈品配件售卖,存在诱导消费者产生品牌联想的关联侵权风险。\\\"},{\\\"appearance\\\":\\\"高风险,外观极度相似\\\",\\\"appearance_reason\\\":\\\"产品图片显示的钥匙皮套(Clochette)与锁头(Padlock)的组合,是国际知名奢侈品牌(如爱马仕)标志性的设计元素,在欧洲和英国地区受严密的知识产权保护,该产品属于典型的仿冒设计,极易触犯外观设计专利或版权法律。\\\",\\\"asin\\\":\\\"B0DBTDLXXG\\\",\\\"patent\\\":\\\"存在极高侵权风险\\\",\\\"patent_reason\\\":\\\"此类配件的物理结构和造型设计是知名奢侈品牌的经典设计语言,在欧洲及英国被视作核心知识产权受法律保护。销售此类模仿奢侈品标志性外观的产品,极易招致权利人的起诉或平台的下架处罚。\\\",\\\"result\\\":\\\"侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"高风险,关联性强\\\",\\\"title_reason\\\":\\\"虽然标题未直接使用爱马仕等奢侈品牌词,但‘Clochette’、‘Padlock’及‘Bag Charm’的关键词组合直接指向特定奢侈品包具的标志性配件,极易被认定为通过蹭名牌热度进行仿冒,存在侵犯商品外装(Trade Dress)权益的法律风险。\\\"},{\\\"appearance\\\":\\\"高风险,外观高度相似\\\",\\\"appearance_reason\\\":\\\"该产品形状与爱马仕经典包袋的配饰(钥匙套及挂锁)设计高度重合,在英国及欧盟地区,此类标志性外观受到严格的外观设计专利保护,直接销售此类仿制品存在极高的侵权风险。\\\",\\\"asin\\\":\\\"B0DBT8RPRJ\\\",\\\"patent\\\":\\\"高风险,存在外观设计专利侵权隐患\\\",\\\"patent_reason\\\":\\\"该产品核心在于其标志性的外形设计,而非功能性结构。该造型属于奢侈品牌的核心商业设计范畴,受国际及英国/欧盟外观专利法的广泛保护,未经授权生产销售存在严重的合规风险。\\\",\\\"result\\\":\\\"侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"高风险,具有侵权嫌疑\\\",\\\"title_reason\\\":\\\"标题中涉及“Clochette”、“Bag Charm”及“Padlock”等词汇,描述的是爱马仕(Hermès)品牌标志性的包袋配件,直接使用此类描述性关键词极易被判定为仿造知名品牌元素。\\\"},{\\\"appearance\\\":\\\"高风险,外观设计专利/贸易外观侵权\\\",\\\"appearance_reason\\\":\\\"该产品外观复刻了著名奢侈品牌(Hermès)的经典挂件(Clochette)与锁扣(Padlock)设计,该设计在欧洲及英国受外观设计权及贸易外观(Trade Dress)保护,极易引发侵权诉讼。\\\",\\\"asin\\\":\\\"B0CZJ597C9\\\",\\\"patent\\\":\\\"存在外观设计专利风险\\\",\\\"patent_reason\\\":\\\"此类标志性配件设计在欧洲已有大量相关外观专利布局。尽管不涉及复杂的发明专利,但其结构与外观表现形式与已受保护的设计高度重合,属于典型的仿冒款式。\\\",\\\"result\\\":\\\"侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"高风险,具有品牌联想侵权可能\\\",\\\"title_reason\\\":\\\"标题使用了“Clochette”等词汇,该词汇在皮具领域与特定奢侈品牌(Hermès)的设计语言高度关联,虽未直接使用品牌名,但在欧洲市场常被判定为利用品牌影响力进行搭售,存在侵权风险。\\\"},{\\\"appearance\\\":\\\"高风险,外观高度相似\\\",\\\"appearance_reason\\\":\\\"该产品设计为典型的钟形钥匙套(Clochette),其外观造型与奢侈品牌Hermès的经典包袋配件设计高度重合,在英国及欧洲地区极易触发外观设计专利侵权投诉。\\\",\\\"asin\\\":\\\"B0CZJ57NYZ\\\",\\\"patent\\\":\\\"高风险,存在外观/包装设计专利风险\\\",\\\"patent_reason\\\":\\\"该结构不仅作为功能性配件,更作为特定品牌包袋的标志性外观组成部分,受到相关的工业设计专利保护,未经授权生产销售此类仿制品存在较高的法律风险。\\\",\\\"result\\\":\\\"侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"高风险,含有侵权关联词汇\\\",\\\"title_reason\\\":\\\"标题中包含“Clochette”等与奢侈品牌(Hermès)标志性包袋配件紧密相关的词汇,在未经授权的情况下销售此类产品易被认定为利用品牌影响力进行侵权或混淆。\\\"},{\\\"appearance\\\":\\\"高风险,外观极度相似\\\",\\\"appearance_reason\\\":\\\"该产品外观设计明显模仿了Hermès(爱马仕)标志性的“钥匙皮套”(Clochette)款式,其独特的梯形结构、缝线工艺和配套挂锁样式在欧洲市场具有极高的品牌辨识度,极易被判定为外观设计专利侵权或仿冒知名品牌设计。\\\",\\\"asin\\\":\\\"B0DBTQMF3T\\\",\\\"patent\\\":\\\"存在较高侵权风险\\\",\\\"patent_reason\\\":\\\"该结构属于典型的奢侈品配件模仿品,虽然功能简单,但其独特的外观结构设计已构成知名品牌的特有设计语言,极易陷入外观专利侵权纠纷。\\\",\\\"result\\\":\\\"侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"含有侵权风险\\\",\\\"title_reason\\\":\\\"标题中虽未直接列出品牌名,但“Clochette”常与爱马仕(Hermès)的经典挂锁包配件关联,属于高风险敏感词汇,易被系统判定为仿冒或侵犯相关商标权的关联产品。\\\"},{\\\"appearance\\\":\\\"高风险,外观设计专利极高风险\\\",\\\"appearance_reason\\\":\\\"该产品外观是对爱马仕经典包袋配件“Clochette(钥匙皮套)”的直接模仿。该外观设计与爱马仕受保护的标志性配件高度相似。根据欧盟及英国知识产权法,对于此类具备高度辨识度且具有深厚品牌关联的外观设计,即便没有使用品牌Logo,也存在被指控为侵犯“外观设计权(Design Rights)”或“不正当竞争”的严重风险。\\\",\\\"asin\\\":\\\"B0CZJ4DQSQ\\\",\\\"patent\\\":\\\"存在结构专利侵权可能\\\",\\\"patent_reason\\\":\\\"该产品不仅模仿了皮套外观,还配套了挂锁和钥匙结构。爱马仕在全球范围内对其标志性的锁头及配套硬件设计持有大量知识产权,包括立体商标(3D Trade Mark)和设计专利。该产品的结构组合在欧洲市场极易被认定为模仿爱马仕产品的整体外观设计,存在被视为专利侵权的风险。\\\",\\\"result\\\":\\\"侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"高风险,含有侵权敏感词汇\\\",\\\"title_reason\\\":\\\"标题中包含“Clochette”一词,该词是奢侈品牌爱马仕(Hermès)标志性手袋(如Birkin/Kelly)配件的专用术语。在欧洲及英国市场,爱马仕对该特定外观设计、相关术语及锁头设计拥有极高的品牌认知度和知识产权保护力度,直接使用此类术语作为商品关键词极易触发商标侵权投诉。\\\"},{\\\"appearance\\\":\\\"高风险,外观与知名品牌设计高度相似\\\",\\\"appearance_reason\\\":\\\"该产品展示的是典型的“Clochette”(钟形钥匙套)外观,这是Hermès经典包袋配饰的标志性设计,在欧盟及英国拥有严密的外观设计保护,极易被判定为外观设计侵权。\\\",\\\"asin\\\":\\\"B0CZJ3VS5R\\\",\\\"patent\\\":\\\"中等风险,涉及特定风格的保护\\\",\\\"patent_reason\\\":\\\"虽然该类基础结构的物理功能单一,但由于其外观与奢侈品品牌的设计高度绑定,其作为配件的销售行为经常面临品牌方基于外观专利或不正当竞争的法律追诉。\\\",\\\"result\\\":\\\"侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"高风险,含有侵权关联词汇\\\",\\\"title_reason\\\":\\\"标题虽然未直接使用品牌名称,但此类产品常被关联至Hermès(爱马仕)的Kelly或Birkin包袋配饰。若在营销中使用暗示性词汇或作为相关配件销售,极易触碰品牌方的商标保护范围。\\\"},{\\\"appearance\\\":\\\"高风险,外观设计与奢侈品牌标志性设计高度相似\\\",\\\"appearance_reason\\\":\\\"产品图片展示的皮革钟形套(Clochette)配合金属小挂锁,在造型、结构及视觉特征上,与爱马仕受法律保护的“Birkin/Kelly”包袋标志性闭合系统及配件外观几乎完全一致。欧洲法院已多次判决确认爱马仕对该包袋形状及特定配件外观拥有注册的三维商标权及版权,即便未直接标注品牌名称,这种“高度相似”的视觉呈现亦足以构成侵权。\\\",\\\"asin\\\":\\\"B0DBTKL4RH\\\",\\\"patent\\\":\\\"高风险,存在三维外观专利保护风险\\\",\\\"patent_reason\\\":\\\"爱马仕在英国及欧洲地区针对其标志性配件(特别是钟形套与锁具组合)申请了严密的知识产权保护。该产品模仿了其标志性的物理结构与外观布局,不仅受商标法保护,还涉及在特定司法管辖区内的三维外观专利或设计权保护,通过结构模仿进行销售极易引发法律维权行动。\\\",\\\"result\\\":\\\"侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"高风险,包含极易引起混淆的敏感关键词\\\",\\\"title_reason\\\":\\\"标题中使用的“Clochette”及产品描述组合(钟形皮革挂饰+挂锁)是奢侈品牌爱马仕(Hermès)Birkin/Kelly包款标志性配件的统称。此类词汇与爱马仕的品牌形象紧密关联,在亚马逊欧洲及英国市场销售此类仿造其标志性配件设计的商品,极易被视为试图利用品牌声誉进行误导性销售,存在极高的商标与版权侵权风险。\\\"},{\\\"appearance\\\":\\\"高风险,外观设计高度疑似侵权\\\",\\\"appearance_reason\\\":\\\"该产品设计与奢侈品牌Hermès标志性的Clochette(钥匙套)及挂锁(Padlock)配件外观高度相似,在欧洲及英国,该类经典设计受品牌方严格的外观专利和商标权保护,直接销售此类复刻或高仿配件极易触发外观专利侵权指控。\\\",\\\"asin\\\":\\\"B0CZJ4GMP3\\\",\\\"patent\\\":\\\"存在较高结构专利与商标保护风险\\\",\\\"patent_reason\\\":\\\"虽然此类产品结构简单,但其作为特定奢侈品牌的视觉延伸产品,不仅涉及外观专利,更涉及商标权与不正当竞争的法律风险。品牌方通常对该类标志性配饰申请外观设计权,销售此类仿制配件属于高风险行为。\\\",\\\"result\\\":\\\"侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"高风险,含有侵权暗示\\\",\\\"title_reason\\\":\\\"标题虽然未直接使用Hermès品牌词,但使用了“Clochette”并搭配标志性的“Padlock”描述,极易联想到爱马仕凯莉包(Kelly Bag)或铂金包(Birkin Bag)的经典配件设计,存在误导消费者及侵犯品牌形象的嫌疑。\\\"},{\\\"appearance\\\":\\\"高风险,外观高度疑似侵权\\\",\\\"appearance_reason\\\":\\\"产品设计直接仿制了国际奢侈品牌(如Hermès)标志性的钥匙套(Clochette)及挂锁组合,在英国及欧洲地区该设计通常受到严格的外观设计权及反不正当竞争法保护。\\\",\\\"asin\\\":\\\"B0CZJ5K717\\\",\\\"patent\\\":\\\"存在侵权风险\\\",\\\"patent_reason\\\":\\\"该商品的核心在于对经典奢侈品配饰外观的还原,在欧洲市场该设计类型普遍存在有效的外观专利保护,未经授权生产或销售此类仿品极易触发专利维权。\\\",\\\"result\\\":\\\"侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"高风险\\\",\\\"title_reason\\\":\\\"标题虽然未直接使用品牌名称,但‘Clochette’、‘Bag Charm’等词汇配合图片中的特定造型,具有明显的意图模仿奢侈品设计意图,易因构成商标混淆或不正当竞争被品牌方投诉。\\\"},{\\\"appearance\\\":\\\"未发现明显侵权风险\\\",\\\"appearance_reason\\\":\\\"该产品采用行业内常见的“免挂钩”结构与几何图案设计,属于通用样式。经初步排查,未发现其外观与英国/欧洲现行登记的独家外观设计专利存在直接冲突。\\\",\\\"asin\\\":\\\"B0BQRSZYHP\\\",\\\"patent\\\":\\\"未发现明显侵权风险\\\",\\\"patent_reason\\\":\\\"该淋浴帘使用的“免挂钩”功能性结构在欧洲市场已是成熟的公开技术,相关早期核心专利多已过期。只要未非法复制特定的专利挂钩构造,风险较低。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"未发现明显侵权风险\\\",\\\"title_reason\\\":\\\"标题中的“Yiatn”为品牌名,其余均为“No Hook”、“Shower Curtain”、“Waterproof”等通用描述性词汇,未包含大型知名品牌商标或受版权保护的特定用语。\\\"},{\\\"appearance\\\":\\\"高风险\\\",\\\"appearance_reason\\\":\\\"该产品采用了极具辨识度的“Intrecciato”编织纹理(Woven pattern),这与奢侈品牌Bottega Veneta的标志性外观高度相似。在欧洲及英国市场,此类设计极易被认定为侵犯该品牌的外观设计权或造成不正当竞争。\\\",\\\"asin\\\":\\\"B0CP7D4MKW\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"纸巾盒的物理结构属于常规家居用品设计,未发现特殊的技术创新或复杂的专利结构,不涉及发明或实用新型专利风险。\\\",\\\"result\\\":\\\"有侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题描述为通用产品描述,包含常见关键词如“Tissue Box Cover”、“PU Leather”,未发现涉及特定知名品牌的商标侵权或版权敏感词汇。\\\"},{\\\"appearance\\\":\\\"有侵权风险\\\",\\\"appearance_reason\\\":\\\"该产品外观采用了类似于奢侈品牌(如Bottega Veneta)标志性的编织(Intrecciato)设计元素。在英国及欧盟地区,此类具有辨识度的纹理外观若被注册为外观设计专利或被视为特定品牌的商业外观(Trade Dress),存在被投诉侵权的潜在风险。\\\",\\\"asin\\\":\\\"B0BZXYKNKV\\\",\\\"patent\\\":\\\"未发现明显侵权风险\\\",\\\"patent_reason\\\":\\\"该产品属于成熟的家居收纳类目,结构简单,主要体现为材料拼接,未发现涉及复杂机械结构、特定功能性技术发明或实用新型专利的风险。\\\",\\\"result\\\":\\\"有侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"未发现明显侵权风险\\\",\\\"title_reason\\\":\\\"标题均为描述性的通用词汇(如Tissue Box Cover, PU Leather等),未包含特定品牌的商标词、版权保护词或容易引起混淆的敏感关键词。\\\"},{\\\"appearance\\\":\\\"高风险\\\",\\\"appearance_reason\\\":\\\"产品外观使用了明显的皮革编织纹理(Intrecciato),该设计特征与奢侈品牌博特加·威尼塔(Bottega Veneta)的标志性外观高度相似,在欧洲及英国市场存在极高的外观设计专利或商业外观(Trade Dress)侵权风险。\\\",\\\"asin\\\":\\\"B0BZPSH2ZD\\\",\\\"patent\\\":\\\"没有侵权风险\\\",\\\"patent_reason\\\":\\\"该产品为结构简单的纸巾盒套,未发现涉及独特功能性或结构性的发明/实用新型专利风险。\\\",\\\"result\\\":\\\"有侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题仅由通用产品描述词汇组成(如Tissue Box Cover, PU Leather等),未发现知名品牌名称、注册商标或版权词汇。\\\"},{\\\"appearance\\\":\\\"未发现明显侵权风险\\\",\\\"appearance_reason\\\":\\\"该产品采用的编织纹路虽具有一定的商业美学风格,但此类编织纹路在生活家居装饰品类中属于行业通用设计语言,且未发现针对该特定形状尺寸申请的有效外观专利,在英国/欧洲市场属于常见的通货款式。\\\",\\\"asin\\\":\\\"B09ZPMLSTT\\\",\\\"patent\\\":\\\"未发现明显侵权风险\\\",\\\"patent_reason\\\":\\\"该产品为常见的PU皮革折叠式纸巾盒套,其结构设计简洁,功能上属于行业公知技术,未发现涉及复杂发明或新型结构的侵权可能。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题中使用的“Tissue Box Cover”、“PU Leather”等均为通用描述性词汇,未发现指向特定知名品牌的违规商标或敏感词,不存在明显的商标侵权风险。\\\"},{\\\"appearance\\\":\\\"中等风险\\\",\\\"appearance_reason\\\":\\\"该产品采用常见的编织(Woven)纹理设计,属于家居收纳领域的通用工艺风格。虽然市面上存在此类外观产品,但因其设计元素较为普遍且基础,未见具有极高识别度、指向特定品牌的独创性外观专利风险。\\\",\\\"asin\\\":\\\"B0CP7D63H9\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"该纸巾盒结构为传统的底部或侧边开口式套筒,属于成熟的现有技术(Prior Art),不涉及复杂的功能性机械结构或发明专利保护点。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题描述为通用产品描述(Tissue Box Cover, PU Leather, etc.),未发现特定品牌词、侵权词汇或受版权保护的专有名词,风险较低。\\\"},{\\\"appearance\\\":\\\"中等风险\\\",\\\"appearance_reason\\\":\\\"产品外观设计采用了经典的编织纹理(Woven Pattern),此类设计在家具及家居装饰领域非常普遍,属于常见工艺,虽有外观相似的通用产品,但未构成对特定设计专利的单一直接侵权。\\\",\\\"asin\\\":\\\"B09ZPN6CQX\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"纸巾盒为基础生活用品,其物理结构(四面围挡+顶部开口)属于公共领域的设计,不涉及复杂的独创性功能技术,因此不存在发明或实用新型专利侵权风险。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题描述为“Tissue Box Cover PU Leather”,属于通用描述词汇,未发现任何特定大牌商标、受限敏感词或受版权保护的专有词汇。\\\"},{\\\"appearance\\\":\\\"未发现明显侵权风险\\\",\\\"appearance_reason\\\":\\\"该产品属于圆柱形布艺收纳篮,外观结构通用且简约;表面图案由基础的心形与彩虹元素排列组成,属于常见的装饰性设计,未见明显的独特外观专利侵权特征。\\\",\\\"asin\\\":\\\"B0DB89QV28\\\",\\\"patent\\\":\\\"未发现明显侵权风险\\\",\\\"patent_reason\\\":\\\"产品属于普通家庭储物用品,其物理结构(布面材质及手提带设计)属行业成熟工艺,不涉及复杂的功能性发明或受保护的独家结构专利。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题中的“MAIZMZ”为通用品牌名,未检测到涉及知名大牌商标、敏感侵权词或受版权保护的特定角色名称。\\\"},{\\\"appearance\\\":\\\"未发现明显侵权风险\\\",\\\"appearance_reason\\\":\\\"产品外观设计属于常见的花卉纹样与闪光视觉效果组合,属于通用装饰风格,未发现与欧洲或英国市场上受保护的特定注册外观设计专利存在高度雷同情况。\\\",\\\"asin\\\":\\\"B0DJ89HKTT\\\",\\\"patent\\\":\\\"未发现明显侵权风险\\\",\\\"patent_reason\\\":\\\"淋浴帘属于传统的家居纺织品,结构简单,不涉及复杂的机械结构或独特的功能性创新,该类型产品在英国及欧洲地区极少存在被发明或实用新型专利覆盖的风险。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"未发现明显侵权风险\\\",\\\"title_reason\\\":\\\"标题中包含的均为“Pink Rose”、“Shower Curtain”、“Floral”等通用描述性词汇,未发现指向任何知名大牌的商标侵权使用,亦不包含受版权保护的特定文学艺术作品名称。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品为常见的粉色玫瑰花卉印花浴帘,属于通用装饰类目。虽然图案设计精美,但花卉印花图案通常难以获取独占性的外观设计专利,除非涉及特定艺术家的受版权保护作品,目前未发现高度雷同的垄断性外观设计。\\\",\\\"asin\\\":\\\"B0DJ893788\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"该产品属于结构简单的家居布艺用品,浴帘通过挂钩悬挂属于行业基础技术,不涉及复杂的核心功能性结构或具备专利保护的创新机械原理,未发现存在发明或实用新型专利侵权风险。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题描述为通用描述性词汇,如“Pink Roses Shower Curtain”、“Valentine's Day”、“Wedding Floral”,未检测到特定品牌名、知名IP或敏感商标词汇。但在欧洲销售时,需注意此类通用装饰词汇不能注册为排他性商标。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该类装饰性图案属于常见的家居设计,只要非直接盗用特定已注册版权的知名画作,其外观设计本身不具备侵犯外观专利的高风险属性。\\\",\\\"asin\\\":\\\"B0D1YK4PWZ\\\",\\\"patent\\\":\\\"没有侵权风险\\\",\\\"patent_reason\\\":\\\"产品为普通的纺织品日用品,不涉及复杂的机械结构或技术创新,不存在发明或实用新型专利风险。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题描述词均为通用商品描述及品种名称(Highland Cattle),不涉及特定注册品牌词,亦无明显侵权敏感词。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品属于艺术印花类家居产品,图案设计为常见的趣味性装饰画,未检索到与英国/欧洲市场上已注册的特定外观设计专利高度雷同的记录。但建议核实该印花图案是否涉及未授权使用他人的原创艺术作品版权。\\\",\\\"asin\\\":\\\"B0D1YKSZNH\\\",\\\"patent\\\":\\\"没有侵权风险\\\",\\\"patent_reason\\\":\\\"浴帘作为成熟的日用品,其基本结构(织物悬挂式)属于公共领域技术,该产品本身不涉及复杂的机械结构或技术发明,不存在发明或实用新型专利侵权风险。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题使用了通用描述词(如Shower Curtain, Lion, Toilet等),未包含国际知名品牌商标或受法律保护的特定版权词汇,不构成商标侵权。\\\"},{\\\"appearance\\\":\\\"高风险\\\",\\\"appearance_reason\\\":\\\"该产品属于装饰类用品,图案版权是核心风险点。若该“猴子在浴缸”的黑白图片未经原摄影师或艺术家合法授权,在英国及欧盟极易遭遇版权(著作权)投诉。\\\",\\\"asin\\\":\\\"B0CZ3FVXSC\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"产品属于结构简单的常规日用品,浴帘及挂钩组合未涉及复杂的发明或实用新型专利保护领域。\\\",\\\"result\\\":\\\"有侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题由描述性词汇组成,未检测到指向知名品牌或受保护商标的侵权词汇。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品属于创意类家居装饰,图案设计为狮子如厕的幽默插画。此类图案设计通常具有较强的独特性,在亚马逊常见外观设计专利库中未发现高度雷同的注册设计,属于原创或公共领域素材应用的概率较高。\\\",\\\"asin\\\":\\\"B0D1YJRL2F\\\",\\\"patent\\\":\\\"没有侵权风险\\\",\\\"patent_reason\\\":\\\"该产品为普通淋浴帘,属于成熟的纺织品类目,不存在特殊的功能性物理结构或复杂技术方案,无需担心发明或实用新型专利侵权。\\\",\\\"result\\\":\\\"没有侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题中包含的“Funny Lion”、“Shower Curtain”等词汇均为通用描述性词汇,未发现指向特定知名品牌的商标侵权风险或受版权保护的特定角色名称。\\\"},{\\\"appearance\\\":\\\"中等风险,存在版权隐患\\\",\\\"appearance_reason\\\":\\\"该产品核心在于其印刷图案设计。此类风格强烈的节日插画极易涉及第三方原创画作的版权(Copyright),若图案是从图库购买或自行AI生成且未经过版权查重,存在被权利人投诉图片侵权的风险,虽不构成外观设计专利侵权,但版权合规性需核实。\\\",\\\"asin\\\":\\\"B0FHKG5SGT\\\",\\\"patent\\\":\\\"没有侵权风险\\\",\\\"patent_reason\\\":\\\"该产品属于常规家居纺织品,结构简单,主要由浴帘及配套地垫组成,不涉及任何创新性的发明或特殊的物理结构,不存在技术性专利侵权风险。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题描述为节日类通用品名,未包含知名大牌商标或特定文学艺术作品的受版权保护名称,无明显敏感词汇。\\\"},{\\\"appearance\\\":\\\"未发现明显侵权风险\\\",\\\"appearance_reason\\\":\\\"图案设计采用万圣节常见的幽灵、南瓜和蝙蝠素材,属于公共领域内的装饰性设计,未发现其与已知受保护的特定外观设计专利雷同。\\\",\\\"asin\\\":\\\"B0FHJ1LM8T\\\",\\\"patent\\\":\\\"未发现明显侵权风险\\\",\\\"patent_reason\\\":\\\"该产品属于结构简单的日用家居品,不涉及独特的功能性发明或复杂的机械结构,无相关发明专利或实用新型专利侵权隐患。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"未发现明显侵权风险\\\",\\\"title_reason\\\":\\\"标题由万圣节节日描述词及产品通用属性词构成,不含特定品牌名称或受版权保护的文字作品,符合亚马逊合规规则。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"图案为常见的万圣节主题元素设计,属于通用的节庆装饰风格,未发现与特定已公开的外观设计专利有高度相似的特征。\\\",\\\"asin\\\":\\\"B0FHKJ11WD\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"该产品为普通浴帘,属于成熟的商品品类,不存在涉及核心功能或复杂结构的专利保护风险。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题由通用描述词组成,如“Halloween”、“Shower Curtain”、“Horror”等,不包含特定大牌商标或受限词汇,未发现商标侵权风险。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品属于通用款浴帘,采用常见的抽象大理石纹路印花,属于行业通用的装饰图案,未发现指向单一特定外观设计专利的高辨识度结构特征。\\\",\\\"asin\\\":\\\"B09TXDQKJF\\\",\\\"patent\\\":\\\"没有侵权风险\\\",\\\"patent_reason\\\":\\\"该产品为常规家纺类目,未涉及任何复杂的功能性结构或物理发明,属于成熟的通用工艺品,不存在核心技术专利侵权风险。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题主要包含“Luxury”、“Marble”、“Shower Curtain”等通用描述性词汇,未发现指向特定知名品牌的注册商标或具有版权争议的关键词。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"产品外观为常见的几何色块拼接设计,属于大众化的家纺纹样,缺乏特定品牌辨识度或独特的设计专利特征,被认定为外观侵权的风险极低。\\\",\\\"asin\\\":\\\"B09TXCXC68\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"该产品为常规浴室纺织套装(浴帘+地垫),不涉及复杂或独特的物理结构,核心功能为日常家用,未发现存在发明或实用新型专利侵权隐患。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题主要由描述性词汇组成(如:几何、深蓝色、浴帘套装),未发现包含知名品牌名称或受版权保护的特定专有名词。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品为几何图形设计(黑白灰橙色块组合),属于通用现代简约风格。此类图案在纺织品行业非常普遍,且未发现具有显著独创性或特定品牌标识的保护性外观设计专利。\\\",\\\"asin\\\":\\\"B09TXD6W5P\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"该淋浴帘及配套地垫属于常规家居用品,不存在复杂的技术结构或创新的物理功能组件,因此触发发明或实用新型专利侵权的可能性极低。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题描述为“Orange Geometric Shower Curtain Set”,属于常规产品描述词汇,未发现涉及特定知名品牌商标、版权词或敏感侵权词汇。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品图案为基础的几何色块设计,属于通用的装饰风格,未发现涉及特定外观设计专利侵权的独创性图形限制。\\\",\\\"asin\\\":\\\"B09TXD4GGM\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"该商品为普通家用纺织品组合,结构简单且无特殊功能性机械结构,不存在涉及发明或实用新型专利的侵权隐患。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题由描述性词汇组成,不包含任何大牌商标、品牌词或特定的版权受保护词汇,符合亚马逊标题命名规范。\\\"},{\\\"appearance\\\":\\\"未发现明显侵权风险\\\",\\\"appearance_reason\\\":\\\"该产品外观为通用的类大理石纹理搭配金色流线设计,属于家居装饰类目中极为常见的审美风格,此类通用纹样通常无法申请或获得排他性的外观设计专利保护。\\\",\\\"asin\\\":\\\"B0CY7QHGLQ\\\",\\\"patent\\\":\\\"没有侵权风险\\\",\\\"patent_reason\\\":\\\"记忆棉厨房地垫属于成熟的产品类别,所展示的材质与结构均为行业通用标准技术,不存在独特的核心技术或物理结构专利,因此不存在专利侵权风险。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题主要由防疲劳、记忆棉、防水等描述性通用词汇组成,不包含任何特定品牌的商标词或受版权保护的用语,不存在明显的商标侵权风险。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品为典型的抽象几何纹理PVC地垫,属于市场上非常通用的家纺设计风格,无显著的独特性外观特征,难以被认定侵犯特定外观设计专利。\\\",\\\"asin\\\":\\\"B0CWD7KGZ2\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"该产品属于厨房防疲劳地垫的成熟品类,其防滑垫结构及材料(PVC)为行业通用技术方案,未涉及具备发明创造性的独特功能专利。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题中包含“Anti-Fatigue”、“Kitchen Rug”、“Ergonomic”等功能性描述词,未发现指向特定知名大牌的商标词汇或侵权高风险敏感词。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品外观为常见的长方形PVC防疲劳地垫,采用基础的抽象几何配色设计,属于市场上常见的通用款式,未发现显著的侵权独特性外观设计。\\\",\\\"asin\\\":\\\"B0D478LK2L\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"该产品属于基于材料性能(PVC发泡)的常规防疲劳地垫,其物理结构和功能在行业内较为通用,未涉及独特的技术创新或受保护的结构性专利。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题包含大量通用描述词(如Anti-Fatigue, Kitchen Rug, Waterproof等),未发现涉及大牌商标、敏感词或特定版权用语。品牌名“Arttown”为常见装饰类品牌,暂无直接侵权嫌疑。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品外观为常见的长方形厨房防疲劳地垫,大理石纹路属于公有领域的装饰设计,未发现其外形设计具有极高辨识度的独创性外观设计专利特征。\\\",\\\"asin\\\":\\\"B0C5XK63V4\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"产品采用常规的PVC防疲劳泡沫结构,属于成熟的地垫制造工艺,目前未在该基础产品结构上发现具有垄断性的发明或实用新型专利风险。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题中的词汇如“Marble”、“Anti-Fatigue”、“Kitchen Rug”、“Waterproof”、“Non-Slip”等均为描述产品材质和功能的通用行业术语;“Arttown”为疑似品牌词,未发现与知名大牌产生混淆的敏感词或版权侵权词汇。\\\"},{\\\"appearance\\\":\\\"未发现明显侵权风险\\\",\\\"appearance_reason\\\":\\\"该产品为常见的矩形防疲劳地垫,其抽象橘灰色调设计属于行业内常见的装饰风格,未见高度独创性或特定注册的外观设计保护特征,通常此类通用外观设计难以获得排他性的外观专利权。\\\",\\\"asin\\\":\\\"B0D4785BKT\\\",\\\"patent\\\":\\\"未发现明显侵权风险\\\",\\\"patent_reason\\\":\\\"该产品属于成熟的居家消费品,采用常规的PVC发泡减震结构,未体现出具有独占性的核心发明或特殊物理结构,此类技术已在市场上普及,不存在显著的结构性专利侵权风险。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"未发现明显侵权风险\\\",\\\"title_reason\\\":\\\"标题中包含的“Anti-Fatigue Kitchen Rug”、“Waterproof”、“Non-Slip”等均为行业通用描述词汇,未发现涉及知名品牌商标或侵犯版权的特定词汇,“Arttown”虽作为品牌名,但在英国/欧盟商标数据库中不属于高风险大牌冲突词。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品为常见的PVC防疲劳地垫,外观设计采用通用的抽象几何图案与长方形结构,属于市场通用设计风格,未发现与欧洲/英国现有注册外观专利高度相似的特征。\\\",\\\"asin\\\":\\\"B0D477P8TN\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"该产品属于成熟的厨用地垫品类,其防滑、防水及人体工学泡沫结构是此类产品的行业标准工艺,未涉及独特的新型结构或核心技术发明专利侵权风险。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题主要包含描述性词汇(如Anti-Fatigue, Kitchen Rug等),未发现针对特定知名品牌的侵权词汇或受版权保护的特定术语,Arttown为常见品牌词,合规性较高。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"产品属于常规厨房地垫款式,采用了通用的红酒与葡萄印花图案。此类装饰性图案具有高度随机性和普遍性,未发现特定且具垄断性的外观设计专利保护。\\\",\\\"asin\\\":\\\"B0CWCYFYH8\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"该产品属于普通的PVC防疲劳地垫,其物理结构和材质应用属于行业内的成熟工艺,未涉及独特的新型技术发明或结构专利。\\\",\\\"result\\\":\\\"没有侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题描述为通用产品属性词(如anti-fatigue, kitchen rug, foam mat),未发现知名品牌词汇或特定受保护的版权词汇。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品采用常见的牛皮纹路印花,属于行业内广泛使用的通用外观设计,不存在特定的外观专利垄断性。\\\",\\\"asin\\\":\\\"B0DYV4J49M\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"PVC抗疲劳地垫属于成熟的民用产品,其材质与物理结构属于通用工艺,未涉及复杂的发明专利壁垒。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题主要包含产品属性描述词(如Anti-Fatigue, Kitchen Rug, PVC, Waterproof等),未见知名大牌商标,品牌名“Arttown”未发现明显侵权风险。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"产品外观采用常见的农舍木纹风格及地垫通用装饰图案,属于家纺领域常规视觉表达,未发现与欧洲/英国市场特定外观设计专利高度雷同的证据。\\\",\\\"asin\\\":\\\"B0F5V3RZJZ\\\",\\\"patent\\\":\\\"没有侵权风险\\\",\\\"patent_reason\\\":\\\"该产品属于成熟的PVC抗疲劳地垫产品,无复杂的机械结构或技术专利,未发现涉及核心功能性发明或实用新型专利的侵权风险。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题由通用描述词组成,未发现引用知名第三方商标或受版权保护的特定品牌名称,侵权风险较低。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品属于市面上极度常见的圆柱形折叠储物篮,其外形结构不具备突出的原创性设计特征。所展示的卡通猫爪、猫头鹰等图案属于装饰性元素,在市场上极为通用,不构成单一外观设计专利侵权。\\\",\\\"asin\\\":\\\"B071YJWSP1\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"折叠储物篮采用的是行业内非常成熟的布艺结构,该物理功能及结构设计已处于公有领域,未发现针对此类基础折叠结构存在有效且具有垄断性的发明或实用新型专利。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题中使用的“Merdes”为品牌词,“Laundry Hamper”等均为行业通用名词,未发现标题中包含知名大牌商标或受版权保护的敏感词汇。需确保“Merdes”在英国及欧盟知识产权局无商标侵权争议。\\\"},{\\\"appearance\\\":\\\"未发现明显侵权风险\\\",\\\"appearance_reason\\\":\\\"该产品属于通用结构的家居纺织品套件,虽然使用了特定的排版和装饰图形(如蝴蝶和心形),但此类风格在欧洲家居市场十分普遍,且未发现具有独创性且已受外观设计专利保护的特定视觉设计。\\\",\\\"asin\\\":\\\"B0F38BL4X1\\\",\\\"patent\\\":\\\"未发现明显侵权风险\\\",\\\"patent_reason\\\":\\\"该淋浴帘及配套地垫结构属于行业内成熟、基础的工艺设计,不涉及任何复杂的功能结构创新或发明专利保护。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"未发现明显侵权风险\\\",\\\"title_reason\\\":\\\"标题中的“Family”、“Bless this home”等词汇均为家居装饰类产品中极为常见的励志短语或描述性用语,不属于特定品牌的注册商标或具有排他性的版权词汇。\\\"},{\\\"appearance\\\":\\\"未发现明显侵权风险\\\",\\\"appearance_reason\\\":\\\"产品属于基础圆柱形收纳篮,外观设计通用且无独创性外观特征;篮球印刷图案为常规商业艺术风格,未发现相关图案的注册外观设计专利纠纷。\\\",\\\"asin\\\":\\\"B0D1FVR9HG\\\",\\\"patent\\\":\\\"未发现明显侵权风险\\\",\\\"patent_reason\\\":\\\"该产品结构为行业内通用的可折叠收纳篮结构,不涉及核心技术或创新物理结构,属于成熟的市场公有领域产品,无明显发明专利侵权风险。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"未发现明显侵权风险\\\",\\\"title_reason\\\":\\\"标题由“3D Basketball”及“Laundry Basket”等功能性描述词组成,未提及NBA、Nike等受保护的体育品牌词汇或特定受版权保护的用语。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"U型卫浴地垫属于市场上的通用基础款式,该产品的外观设计(形状、材质)属于行业内常规设计,未发现针对此类常见设计的特定受保护外观专利冲突。\\\",\\\"asin\\\":\\\"B09YHHHNHY\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"产品结构为标准的雪尼尔/超细纤维地垫,属于成熟的基础消费品,不涉及特定核心发明专利或复杂的物理结构创新。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题中包含的词汇均为描述性词汇(如U-Shaped, Shaggy, Non-Slip等),品牌名'FLOLEOPA'未见与欧洲大型卫浴品牌存在冲突,且无大牌敏感词或版权保护词汇。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品属于市场上常见的雪尼尔(Chenille)长绒防滑地垫,外观设计具有广泛的通用性,不属于特定设计创新的独有专利产品,未发现显著的侵权风险。\\\",\\\"asin\\\":\\\"B09V23QQZB\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"该类产品的防滑底部与吸水长绒结构属于成熟的公有领域技术,未见具有独特发明创造性的专利壁垒。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题中使用的是通用描述词(如Soft, Plush, Microfiber, Bath Rugs等),未发现针对特定知名品牌或受保护商标的侵权使用。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品属于市面上通用的长条纹理雪尼尔地垫,设计属于行业基础款式,在欧洲及英国市场已存在大量同类竞品,未发现显著的独特性外观专利风险。\\\",\\\"asin\\\":\\\"B0C6925935\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"雪尼尔地垫的织造结构及背部热熔胶防滑处理均为行业成熟的通用技术,不涉及独特的功能性结构发明,未发现明显的发明或实用新型专利侵权隐患。\\\",\\\"result\\\":\\\"结论:未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题均由描述性词汇组成,如“Non Slip”、“Shaggy Chenille”、“Bathroom Rug”,未包含任何特定的品牌商标、知名IP或敏感版权词汇。\\\"},{\\\"appearance\\\":\\\"未发现明显侵权风险\\\",\\\"appearance_reason\\\":\\\"该产品属于典型的雪尼尔(Chenille)超细纤维地垫,外形为行业通用设计,未发现针对此类基础地垫造型的独占性外观设计专利。\\\",\\\"asin\\\":\\\"B09V22SLGR\\\",\\\"patent\\\":\\\"未发现明显侵权风险\\\",\\\"patent_reason\\\":\\\"产品结构为常规的绒毛层与防滑底布复合工艺,属于成熟的公共领域生产技术,不涉及具备专利壁垒的核心结构或发明技术。\\\",\\\"result\\\":\\\"未发现明显侵权风险\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"未发现明显侵权风险\\\",\\\"title_reason\\\":\\\"标题中使用的FLOLEOPA为常规品牌名称,经排查未发现其涉及知名国际大牌商标或侵犯版权的敏感词汇。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品属于市场上广泛通用的陈尼尔(Chenille)材质条纹地垫,外观设计属于常规行业基础款式,未发现针对此类通用外观的特定外观设计专利垄断。\\\",\\\"asin\\\":\\\"B0CJPYC317\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"产品的物理结构(纤维绒面+热熔橡胶底)为行业通用工艺,未涉及复杂的创新结构或独特的技术发明,专利侵权风险较低。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题由描述性词汇组成(如Non Slip, Chenille, Bath Rugs等),未包含任何知名第三方商标或受版权保护的特定词汇,不构成商标侵权。\\\"},{\\\"appearance\\\":\\\"低风险\\\",\\\"appearance_reason\\\":\\\"该产品属于极度通用的长绒防滑地垫,外观设计高度普遍且属于基础类家居用品,未见独创性的外观专利保护特征。\\\",\\\"asin\\\":\\\"B0CJPXG8NT\\\",\\\"patent\\\":\\\"低风险\\\",\\\"patent_reason\\\":\\\"产品结构简单,属于常规的纺织品复合与防滑工艺,未涉及特殊功能结构或发明专利保护。\\\",\\\"result\\\":\\\"没有侵权\\\",\\\"status\\\":\\\"成功\\\",\\\"title\\\":\\\"低风险\\\",\\\"title_reason\\\":\\\"标题仅包含产品的通用描述词,如材质、功能与用途,未发现违规使用大牌商标或敏感侵权词汇。\\\"}]}\"}"}],"detail":{"logid":"20260512091632BC58254C01C905A6464B"}} -aiimage-backend.log.2026-05-12.3:864:2026-05-12 09:16:33.204 [coze-task-2113] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53054 executeId=7638807590373277722 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:4186:2026-05-12 09:21:09.705 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:4187:2026-05-12 09:21:09.710 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:4188:2026-05-12 09:21:09.728 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:4189:2026-05-12 09:21:09.728 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:4198:2026-05-12 09:21:10.293 [coze-task-2122] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=34 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:4199:2026-05-12 09:21:10.299 [coze-task-2122] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=567 -aiimage-backend.log.2026-05-12.3:7337:2026-05-12 09:27:17.932 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:7338:2026-05-12 09:27:17.937 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:7339:2026-05-12 09:27:17.955 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:7340:2026-05-12 09:27:17.955 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:7536:2026-05-12 09:27:48.493 [coze-task-2131] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638810793543155763 -aiimage-backend.log.2026-05-12.3:7537:2026-05-12 09:27:48.500 [coze-task-2131] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=30542 -aiimage-backend.log.2026-05-12.3:7607:2026-05-12 09:28:02.746 [coze-task-2133] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53057 taskId=8095 executeId=7638810793543155763 -aiimage-backend.log.2026-05-12.3:7608:2026-05-12 09:28:02.752 [coze-task-2133] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53057 executeId=7638810793543155763 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:7610:2026-05-12 09:28:02.889 [coze-task-2133] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53057 executeId=7638810793543155763 status=RUNNING -aiimage-backend.log.2026-05-12.3:7793:2026-05-12 09:28:32.747 [coze-task-2135] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53057 taskId=8095 executeId=7638810793543155763 -aiimage-backend.log.2026-05-12.3:7794:2026-05-12 09:28:32.749 [coze-task-2135] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53057 executeId=7638810793543155763 lastPolledAt=2026-05-12T09:28:03 -aiimage-backend.log.2026-05-12.3:7961:2026-05-12 09:29:02.749 [coze-task-2137] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53057 taskId=8095 executeId=7638810793543155763 -aiimage-backend.log.2026-05-12.3:7963:2026-05-12 09:29:02.755 [coze-task-2137] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53057 executeId=7638810793543155763 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:7967:2026-05-12 09:29:03.052 [coze-task-2137] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53057 executeId=7638810793543155763 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:11494:2026-05-12 09:33:25.726 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:11495:2026-05-12 09:33:25.731 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:11496:2026-05-12 09:33:25.748 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:11497:2026-05-12 09:33:25.748 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:11501:2026-05-12 09:33:26.603 [coze-task-2147] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=26 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:11502:2026-05-12 09:33:26.613 [coze-task-2147] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=862 -aiimage-backend.log.2026-05-12.3:13796:2026-05-12 09:39:40.051 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:13797:2026-05-12 09:39:40.057 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:13798:2026-05-12 09:39:40.075 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:13799:2026-05-12 09:39:40.075 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:13801:2026-05-12 09:39:40.356 [coze-task-2158] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=47 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:13802:2026-05-12 09:39:40.362 [coze-task-2158] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=284 -aiimage-backend.log.2026-05-12.3:18271:2026-05-12 09:45:58.848 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:18272:2026-05-12 09:45:58.853 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:18273:2026-05-12 09:45:58.870 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:18274:2026-05-12 09:45:58.870 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:18470:2026-05-12 09:46:29.618 [coze-task-2171] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638815613062053888 -aiimage-backend.log.2026-05-12.3:18471:2026-05-12 09:46:29.625 [coze-task-2171] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=30752 -aiimage-backend.log.2026-05-12.3:18489:2026-05-12 09:46:32.795 [coze-task-2173] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53066 taskId=8095 executeId=7638815613062053888 -aiimage-backend.log.2026-05-12.3:18492:2026-05-12 09:46:32.801 [coze-task-2173] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53066 executeId=7638815613062053888 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:18494:2026-05-12 09:46:32.953 [coze-task-2173] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53066 executeId=7638815613062053888 status=RUNNING -aiimage-backend.log.2026-05-12.3:18675:2026-05-12 09:47:02.796 [coze-task-2175] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53066 taskId=8095 executeId=7638815613062053888 -aiimage-backend.log.2026-05-12.3:18677:2026-05-12 09:47:02.797 [coze-task-2175] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53066 executeId=7638815613062053888 lastPolledAt=2026-05-12T09:46:33 -aiimage-backend.log.2026-05-12.3:18862:2026-05-12 09:47:32.798 [coze-task-2177] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53066 taskId=8095 executeId=7638815613062053888 -aiimage-backend.log.2026-05-12.3:18863:2026-05-12 09:47:32.804 [coze-task-2177] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53066 executeId=7638815613062053888 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:18867:2026-05-12 09:47:33.139 [coze-task-2177] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53066 executeId=7638815613062053888 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:22148:2026-05-12 09:52:19.755 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:22149:2026-05-12 09:52:19.759 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:22150:2026-05-12 09:52:19.777 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:22151:2026-05-12 09:52:19.777 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:22154:2026-05-12 09:52:20.276 [coze-task-2189] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=39 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:22155:2026-05-12 09:52:20.281 [coze-task-2189] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=501 -aiimage-backend.log.2026-05-12.3:24714:2026-05-12 09:58:35.231 [http-nio-18080-exec-3] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:24715:2026-05-12 09:58:35.236 [http-nio-18080-exec-3] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:24716:2026-05-12 09:58:35.255 [http-nio-18080-exec-3] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:24717:2026-05-12 09:58:35.255 [http-nio-18080-exec-3] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:24905:2026-05-12 09:59:05.890 [coze-task-2224] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638818853016109066 -aiimage-backend.log.2026-05-12.3:24906:2026-05-12 09:59:05.897 [coze-task-2224] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=30639 -aiimage-backend.log.2026-05-12.3:25069:2026-05-12 09:59:32.829 [coze-task-2227] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53076 taskId=8095 executeId=7638818853016109066 -aiimage-backend.log.2026-05-12.3:25071:2026-05-12 09:59:32.837 [coze-task-2227] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53076 executeId=7638818853016109066 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:25074:2026-05-12 09:59:32.981 [coze-task-2227] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53076 executeId=7638818853016109066 status=RUNNING -aiimage-backend.log.2026-05-12.3:25250:2026-05-12 10:00:02.830 [coze-task-2229] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53076 taskId=8095 executeId=7638818853016109066 -aiimage-backend.log.2026-05-12.3:25251:2026-05-12 10:00:02.831 [coze-task-2229] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53076 executeId=7638818853016109066 lastPolledAt=2026-05-12T09:59:33 -aiimage-backend.log.2026-05-12.3:25678:2026-05-12 10:00:32.832 [coze-task-2231] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53076 taskId=8095 executeId=7638818853016109066 -aiimage-backend.log.2026-05-12.3:25679:2026-05-12 10:00:32.838 [coze-task-2231] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53076 executeId=7638818853016109066 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:25683:2026-05-12 10:00:33.159 [coze-task-2231] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53076 executeId=7638818853016109066 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:28398:2026-05-12 10:04:56.434 [http-nio-18080-exec-6] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:28399:2026-05-12 10:04:56.439 [http-nio-18080-exec-6] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:28404:2026-05-12 10:04:56.666 [http-nio-18080-exec-6] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:28405:2026-05-12 10:04:56.666 [http-nio-18080-exec-6] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:28410:2026-05-12 10:04:58.118 [coze-task-2241] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=31 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:28411:2026-05-12 10:04:58.129 [coze-task-2241] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=1459 -aiimage-backend.log.2026-05-12.3:31394:2026-05-12 10:11:18.028 [http-nio-18080-exec-3] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:31395:2026-05-12 10:11:18.033 [http-nio-18080-exec-3] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:31396:2026-05-12 10:11:18.052 [http-nio-18080-exec-3] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:31397:2026-05-12 10:11:18.052 [http-nio-18080-exec-3] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:31797:2026-05-12 10:11:48.923 [coze-task-2254] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638822134429532223 -aiimage-backend.log.2026-05-12.3:31798:2026-05-12 10:11:48.930 [coze-task-2254] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=30875 -aiimage-backend.log.2026-05-12.3:31947:2026-05-12 10:12:02.864 [coze-task-2255] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53081 taskId=8095 executeId=7638822134429532223 -aiimage-backend.log.2026-05-12.3:31948:2026-05-12 10:12:02.871 [coze-task-2255] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53081 executeId=7638822134429532223 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:31950:2026-05-12 10:12:03.022 [coze-task-2255] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53081 executeId=7638822134429532223 status=RUNNING -aiimage-backend.log.2026-05-12.3:32353:2026-05-12 10:12:32.865 [coze-task-2256] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53081 taskId=8095 executeId=7638822134429532223 -aiimage-backend.log.2026-05-12.3:32354:2026-05-12 10:12:32.866 [coze-task-2256] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53081 executeId=7638822134429532223 lastPolledAt=2026-05-12T10:12:03 -aiimage-backend.log.2026-05-12.3:33358:2026-05-12 10:13:02.867 [coze-task-2258] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53081 taskId=8095 executeId=7638822134429532223 -aiimage-backend.log.2026-05-12.3:33362:2026-05-12 10:13:02.874 [coze-task-2258] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53081 executeId=7638822134429532223 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:33365:2026-05-12 10:13:03.347 [coze-task-2258] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53081 executeId=7638822134429532223 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:34980:2026-05-12 10:17:35.654 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:34981:2026-05-12 10:17:35.660 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:34982:2026-05-12 10:17:35.680 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:34983:2026-05-12 10:17:35.680 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:34990:2026-05-12 10:17:36.534 [coze-task-2271] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=23 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:34991:2026-05-12 10:17:36.544 [coze-task-2271] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=860 -aiimage-backend.log.2026-05-12.3:38659:2026-05-12 10:23:55.915 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:38660:2026-05-12 10:23:55.922 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:38661:2026-05-12 10:23:55.946 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:38662:2026-05-12 10:23:55.946 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:38664:2026-05-12 10:23:56.620 [coze-task-2288] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=44 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:38665:2026-05-12 10:23:56.634 [coze-task-2288] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=684 -aiimage-backend.log.2026-05-12.3:40950:2026-05-12 10:30:18.376 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:40951:2026-05-12 10:30:18.383 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:40952:2026-05-12 10:30:18.406 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:40953:2026-05-12 10:30:18.406 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:41354:2026-05-12 10:30:49.558 [coze-task-2305] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638827033095258147 -aiimage-backend.log.2026-05-12.3:41355:2026-05-12 10:30:49.569 [coze-task-2305] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31160 -aiimage-backend.log.2026-05-12.3:41506:2026-05-12 10:31:02.922 [coze-task-2307] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53092 taskId=8095 executeId=7638827033095258147 -aiimage-backend.log.2026-05-12.3:41508:2026-05-12 10:31:02.931 [coze-task-2307] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53092 executeId=7638827033095258147 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:41513:2026-05-12 10:31:03.056 [coze-task-2307] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53092 executeId=7638827033095258147 status=RUNNING -aiimage-backend.log.2026-05-12.3:41916:2026-05-12 10:31:32.923 [coze-task-2310] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53092 taskId=8095 executeId=7638827033095258147 -aiimage-backend.log.2026-05-12.3:41917:2026-05-12 10:31:32.926 [coze-task-2310] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53092 executeId=7638827033095258147 lastPolledAt=2026-05-12T10:31:03 -aiimage-backend.log.2026-05-12.3:42958:2026-05-12 10:32:02.925 [coze-task-2312] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53092 taskId=8095 executeId=7638827033095258147 -aiimage-backend.log.2026-05-12.3:42960:2026-05-12 10:32:02.934 [coze-task-2312] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53092 executeId=7638827033095258147 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:42966:2026-05-12 10:32:03.653 [coze-task-2312] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53092 executeId=7638827033095258147 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:44470:2026-05-12 10:36:35.085 [http-nio-18080-exec-3] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:44471:2026-05-12 10:36:35.092 [http-nio-18080-exec-3] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:44472:2026-05-12 10:36:35.116 [http-nio-18080-exec-3] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:44473:2026-05-12 10:36:35.116 [http-nio-18080-exec-3] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:44475:2026-05-12 10:36:36.093 [coze-task-2322] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=36 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:44476:2026-05-12 10:36:36.109 [coze-task-2322] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=988 -aiimage-backend.log.2026-05-12.3:48050:2026-05-12 10:42:41.522 [http-nio-18080-exec-3] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:48051:2026-05-12 10:42:41.528 [http-nio-18080-exec-3] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:48052:2026-05-12 10:42:41.548 [http-nio-18080-exec-3] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:48053:2026-05-12 10:42:41.548 [http-nio-18080-exec-3] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:48227:2026-05-12 10:43:12.756 [coze-task-2333] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638830228207042560 -aiimage-backend.log.2026-05-12.3:48228:2026-05-12 10:43:12.763 [coze-task-2333] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31211 -aiimage-backend.log.2026-05-12.3:48337:2026-05-12 10:43:32.963 [coze-task-2334] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53096 taskId=8095 executeId=7638830228207042560 -aiimage-backend.log.2026-05-12.3:48338:2026-05-12 10:43:32.970 [coze-task-2334] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53096 executeId=7638830228207042560 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:48345:2026-05-12 10:43:33.122 [coze-task-2334] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53096 executeId=7638830228207042560 status=RUNNING -aiimage-backend.log.2026-05-12.3:48515:2026-05-12 10:44:02.964 [coze-task-2336] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53096 taskId=8095 executeId=7638830228207042560 -aiimage-backend.log.2026-05-12.3:48516:2026-05-12 10:44:02.965 [coze-task-2336] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53096 executeId=7638830228207042560 lastPolledAt=2026-05-12T10:43:33 -aiimage-backend.log.2026-05-12.3:48688:2026-05-12 10:44:32.966 [coze-task-2337] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53096 taskId=8095 executeId=7638830228207042560 -aiimage-backend.log.2026-05-12.3:48689:2026-05-12 10:44:32.972 [coze-task-2337] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53096 executeId=7638830228207042560 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:48691:2026-05-12 10:44:33.392 [coze-task-2337] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53096 executeId=7638830228207042560 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:50178:2026-05-12 10:48:44.935 [http-nio-18080-exec-1] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:50179:2026-05-12 10:48:44.940 [http-nio-18080-exec-1] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:50182:2026-05-12 10:48:44.960 [http-nio-18080-exec-1] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:50183:2026-05-12 10:48:44.960 [http-nio-18080-exec-1] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:50185:2026-05-12 10:48:45.594 [coze-task-2348] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=28 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:50186:2026-05-12 10:48:45.605 [coze-task-2348] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=641 -aiimage-backend.log.2026-05-12.3:54774:2026-05-12 10:55:39.891 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:54775:2026-05-12 10:55:39.896 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:54776:2026-05-12 10:55:39.914 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:54777:2026-05-12 10:55:39.914 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:54781:2026-05-12 10:55:40.359 [coze-task-2365] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=48 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:54782:2026-05-12 10:55:40.365 [coze-task-2365] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=448 -aiimage-backend.log.2026-05-12.3:58219:2026-05-12 11:01:44.880 [http-nio-18080-exec-1] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:58220:2026-05-12 11:01:44.886 [http-nio-18080-exec-1] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:58221:2026-05-12 11:01:44.906 [http-nio-18080-exec-1] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:58222:2026-05-12 11:01:44.906 [http-nio-18080-exec-1] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:58393:2026-05-12 11:02:15.926 [coze-task-2377] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638835140785045545 -aiimage-backend.log.2026-05-12.3:58394:2026-05-12 11:02:15.937 [coze-task-2377] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31028 -aiimage-backend.log.2026-05-12.3:58504:2026-05-12 11:02:33.023 [coze-task-2379] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53106 taskId=8095 executeId=7638835140785045545 -aiimage-backend.log.2026-05-12.3:58505:2026-05-12 11:02:33.032 [coze-task-2379] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53106 executeId=7638835140785045545 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:58507:2026-05-12 11:02:33.142 [coze-task-2379] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53106 executeId=7638835140785045545 status=RUNNING -aiimage-backend.log.2026-05-12.3:58653:2026-05-12 11:03:03.024 [coze-task-2381] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53106 taskId=8095 executeId=7638835140785045545 -aiimage-backend.log.2026-05-12.3:58655:2026-05-12 11:03:03.034 [coze-task-2381] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53106 executeId=7638835140785045545 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:58659:2026-05-12 11:03:03.488 [coze-task-2381] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53106 executeId=7638835140785045545 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:60190:2026-05-12 11:07:52.308 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:60191:2026-05-12 11:07:52.314 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:60192:2026-05-12 11:07:52.338 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:60193:2026-05-12 11:07:52.339 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:60195:2026-05-12 11:07:53.006 [coze-task-2391] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=40 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:60196:2026-05-12 11:07:53.021 [coze-task-2391] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=679 -aiimage-backend.log.2026-05-12.3:63638:2026-05-12 11:13:58.811 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:63639:2026-05-12 11:13:58.816 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:63640:2026-05-12 11:13:58.835 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:63641:2026-05-12 11:13:58.835 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:63810:2026-05-12 11:14:29.656 [coze-task-2401] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638838281279930377 -aiimage-backend.log.2026-05-12.3:63813:2026-05-12 11:14:29.664 [coze-task-2401] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=30825 -aiimage-backend.log.2026-05-12.3:63854:2026-05-12 11:14:33.061 [coze-task-2404] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53113 taskId=8095 executeId=7638838281279930377 -aiimage-backend.log.2026-05-12.3:63857:2026-05-12 11:14:33.070 [coze-task-2404] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53113 executeId=7638838281279930377 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:63861:2026-05-12 11:14:33.290 [coze-task-2404] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53113 executeId=7638838281279930377 status=RUNNING -aiimage-backend.log.2026-05-12.3:64007:2026-05-12 11:15:03.063 [coze-task-2408] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53113 taskId=8095 executeId=7638838281279930377 -aiimage-backend.log.2026-05-12.3:64009:2026-05-12 11:15:03.071 [coze-task-2408] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53113 executeId=7638838281279930377 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:64018:2026-05-12 11:15:04.008 [coze-task-2408] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53113 executeId=7638838281279930377 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:65868:2026-05-12 11:20:10.527 [http-nio-18080-exec-3] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:65869:2026-05-12 11:20:10.533 [http-nio-18080-exec-3] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:65870:2026-05-12 11:20:10.555 [http-nio-18080-exec-3] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:65871:2026-05-12 11:20:10.555 [http-nio-18080-exec-3] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:65879:2026-05-12 11:20:11.105 [coze-task-2416] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=32 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:65880:2026-05-12 11:20:11.111 [coze-task-2416] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=553 -aiimage-backend.log.2026-05-12.3:69236:2026-05-12 11:26:29.345 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:69237:2026-05-12 11:26:29.352 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:69238:2026-05-12 11:26:29.376 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:69239:2026-05-12 11:26:29.377 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:69446:2026-05-12 11:27:00.334 [coze-task-2424] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638841508490575923 -aiimage-backend.log.2026-05-12.3:69447:2026-05-12 11:27:00.345 [coze-task-2424] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=30965 -aiimage-backend.log.2026-05-12.3:69464:2026-05-12 11:27:03.099 [coze-task-2427] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53117 taskId=8095 executeId=7638841508490575923 -aiimage-backend.log.2026-05-12.3:69465:2026-05-12 11:27:03.106 [coze-task-2427] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53117 executeId=7638841508490575923 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:69469:2026-05-12 11:27:03.255 [coze-task-2427] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53117 executeId=7638841508490575923 status=RUNNING -aiimage-backend.log.2026-05-12.3:69631:2026-05-12 11:27:33.101 [coze-task-2428] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53117 taskId=8095 executeId=7638841508490575923 -aiimage-backend.log.2026-05-12.3:69632:2026-05-12 11:27:33.109 [coze-task-2428] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53117 executeId=7638841508490575923 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:69634:2026-05-12 11:27:33.841 [coze-task-2428] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53117 executeId=7638841508490575923 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:72616:2026-05-12 11:32:36.890 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:72617:2026-05-12 11:32:36.895 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:72618:2026-05-12 11:32:36.915 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:72619:2026-05-12 11:32:36.915 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:72632:2026-05-12 11:32:37.695 [coze-task-2436] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=24 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:72633:2026-05-12 11:32:37.707 [coze-task-2436] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=788 -aiimage-backend.log.2026-05-12.3:75614:2026-05-12 11:38:48.974 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:75615:2026-05-12 11:38:48.980 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:75616:2026-05-12 11:38:48.999 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:75617:2026-05-12 11:38:48.999 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:75622:2026-05-12 11:38:49.950 [coze-task-2451] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=45 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:75623:2026-05-12 11:38:49.961 [coze-task-2451] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=958 -aiimage-backend.log.2026-05-12.3:79118:2026-05-12 11:44:59.437 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:79119:2026-05-12 11:44:59.443 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:79120:2026-05-12 11:44:59.464 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:79121:2026-05-12 11:44:59.464 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:79354:2026-05-12 11:45:30.856 [coze-task-2460] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638846278085034047 -aiimage-backend.log.2026-05-12.3:79355:2026-05-12 11:45:30.864 [coze-task-2460] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31395 -aiimage-backend.log.2026-05-12.3:79368:2026-05-12 11:45:33.154 [coze-task-2465] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53126 taskId=8095 executeId=7638846278085034047 -aiimage-backend.log.2026-05-12.3:79369:2026-05-12 11:45:33.161 [coze-task-2465] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53126 executeId=7638846278085034047 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:79372:2026-05-12 11:45:33.270 [coze-task-2465] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53126 executeId=7638846278085034047 status=RUNNING -aiimage-backend.log.2026-05-12.3:79535:2026-05-12 11:46:03.155 [coze-task-2468] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53126 taskId=8095 executeId=7638846278085034047 -aiimage-backend.log.2026-05-12.3:79538:2026-05-12 11:46:03.164 [coze-task-2468] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53126 executeId=7638846278085034047 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:79542:2026-05-12 11:46:03.293 [coze-task-2468] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53126 executeId=7638846278085034047 status=RUNNING -aiimage-backend.log.2026-05-12.3:79691:2026-05-12 11:46:33.157 [coze-task-2470] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53126 taskId=8095 executeId=7638846278085034047 -aiimage-backend.log.2026-05-12.3:79694:2026-05-12 11:46:33.164 [coze-task-2470] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53126 executeId=7638846278085034047 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:79701:2026-05-12 11:46:33.580 [coze-task-2470] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53126 executeId=7638846278085034047 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:81607:2026-05-12 11:51:02.500 [http-nio-18080-exec-1] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:81608:2026-05-12 11:51:02.507 [http-nio-18080-exec-1] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:81609:2026-05-12 11:51:02.530 [http-nio-18080-exec-1] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:81610:2026-05-12 11:51:02.530 [http-nio-18080-exec-1] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:81631:2026-05-12 11:51:03.989 [coze-task-2478] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=37 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:81632:2026-05-12 11:51:04.002 [coze-task-2478] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=1468 -aiimage-backend.log.2026-05-12.3:84613:2026-05-12 11:57:11.998 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:84614:2026-05-12 11:57:12.005 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:84615:2026-05-12 11:57:12.028 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:84616:2026-05-12 11:57:12.028 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:84813:2026-05-12 11:57:43.487 [coze-task-2489] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638849428451033140 -aiimage-backend.log.2026-05-12.3:84814:2026-05-12 11:57:43.495 [coze-task-2489] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31464 -aiimage-backend.log.2026-05-12.3:84923:2026-05-12 11:58:03.192 [coze-task-2493] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53132 taskId=8095 executeId=7638849428451033140 -aiimage-backend.log.2026-05-12.3:84926:2026-05-12 11:58:03.200 [coze-task-2493] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53132 executeId=7638849428451033140 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:84931:2026-05-12 11:58:03.354 [coze-task-2493] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53132 executeId=7638849428451033140 status=RUNNING -aiimage-backend.log.2026-05-12.3:85106:2026-05-12 11:58:33.194 [coze-task-2497] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53132 taskId=8095 executeId=7638849428451033140 -aiimage-backend.log.2026-05-12.3:85108:2026-05-12 11:58:33.201 [coze-task-2497] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53132 executeId=7638849428451033140 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:85112:2026-05-12 11:58:33.298 [coze-task-2497] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53132 executeId=7638849428451033140 status=RUNNING -aiimage-backend.log.2026-05-12.3:85258:2026-05-12 11:59:03.195 [coze-task-2498] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53132 taskId=8095 executeId=7638849428451033140 -aiimage-backend.log.2026-05-12.3:85261:2026-05-12 11:59:03.203 [coze-task-2498] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53132 executeId=7638849428451033140 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:85265:2026-05-12 11:59:03.555 [coze-task-2498] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53132 executeId=7638849428451033140 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:88111:2026-05-12 12:03:26.091 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:88112:2026-05-12 12:03:26.095 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:88113:2026-05-12 12:03:26.114 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:88114:2026-05-12 12:03:26.114 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:88119:2026-05-12 12:03:27.073 [coze-task-2505] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=29 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:88120:2026-05-12 12:03:27.085 [coze-task-2505] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=967 -aiimage-backend.log.2026-05-12.3:90317:2026-05-12 12:09:39.781 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:90318:2026-05-12 12:09:39.788 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:90319:2026-05-12 12:09:39.812 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:90320:2026-05-12 12:09:39.812 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:90594:2026-05-12 12:10:11.136 [coze-task-2526] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638852632124358690 -aiimage-backend.log.2026-05-12.3:90595:2026-05-12 12:10:11.143 [coze-task-2526] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31328 -aiimage-backend.log.2026-05-12.3:90845:2026-05-12 12:10:33.229 [coze-task-2529] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53138 taskId=8095 executeId=7638852632124358690 -aiimage-backend.log.2026-05-12.3:90848:2026-05-12 12:10:33.238 [coze-task-2529] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53138 executeId=7638852632124358690 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:90855:2026-05-12 12:10:33.361 [coze-task-2529] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53138 executeId=7638852632124358690 status=RUNNING -aiimage-backend.log.2026-05-12.3:91237:2026-05-12 12:11:03.230 [coze-task-2533] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53138 taskId=8095 executeId=7638852632124358690 -aiimage-backend.log.2026-05-12.3:91239:2026-05-12 12:11:03.238 [coze-task-2533] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53138 executeId=7638852632124358690 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:91244:2026-05-12 12:11:03.371 [coze-task-2533] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53138 executeId=7638852632124358690 status=RUNNING -aiimage-backend.log.2026-05-12.3:91613:2026-05-12 12:11:33.231 [coze-task-2535] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53138 taskId=8095 executeId=7638852632124358690 -aiimage-backend.log.2026-05-12.3:91615:2026-05-12 12:11:33.240 [coze-task-2535] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53138 executeId=7638852632124358690 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:91632:2026-05-12 12:11:33.904 [coze-task-2535] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53138 executeId=7638852632124358690 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:94285:2026-05-12 12:15:55.172 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:94286:2026-05-12 12:15:55.177 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:94287:2026-05-12 12:15:55.196 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:94288:2026-05-12 12:15:55.196 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:94295:2026-05-12 12:15:56.162 [coze-task-2541] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=21 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:94296:2026-05-12 12:15:56.173 [coze-task-2541] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=974 -aiimage-backend.log.2026-05-12.3:97926:2026-05-12 12:22:07.126 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:97927:2026-05-12 12:22:07.131 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:97928:2026-05-12 12:22:07.150 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:97929:2026-05-12 12:22:07.150 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:97933:2026-05-12 12:22:08.258 [coze-task-2562] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=42 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:97934:2026-05-12 12:22:08.269 [coze-task-2562] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=1116 -aiimage-backend.log.2026-05-12.3:99932:2026-05-12 12:28:22.003 [http-nio-18080-exec-6] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:99933:2026-05-12 12:28:22.010 [http-nio-18080-exec-6] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:99934:2026-05-12 12:28:22.034 [http-nio-18080-exec-6] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:99935:2026-05-12 12:28:22.034 [http-nio-18080-exec-6] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:100096:2026-05-12 12:28:53.051 [coze-task-2578] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638857452797149193 -aiimage-backend.log.2026-05-12.3:100097:2026-05-12 12:28:53.060 [coze-task-2578] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31022 -aiimage-backend.log.2026-05-12.3:100148:2026-05-12 12:29:03.286 [coze-task-2579] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53146 taskId=8095 executeId=7638857452797149193 -aiimage-backend.log.2026-05-12.3:100149:2026-05-12 12:29:03.294 [coze-task-2579] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53146 executeId=7638857452797149193 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:100151:2026-05-12 12:29:03.499 [coze-task-2579] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53146 executeId=7638857452797149193 status=RUNNING -aiimage-backend.log.2026-05-12.3:100298:2026-05-12 12:29:33.288 [coze-task-2580] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53146 taskId=8095 executeId=7638857452797149193 -aiimage-backend.log.2026-05-12.3:100299:2026-05-12 12:29:33.296 [coze-task-2580] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53146 executeId=7638857452797149193 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:100301:2026-05-12 12:29:33.424 [coze-task-2580] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53146 executeId=7638857452797149193 status=RUNNING -aiimage-backend.log.2026-05-12.3:100476:2026-05-12 12:30:03.290 [coze-task-2582] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53146 taskId=8095 executeId=7638857452797149193 -aiimage-backend.log.2026-05-12.3:100477:2026-05-12 12:30:03.296 [coze-task-2582] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53146 executeId=7638857452797149193 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:100486:2026-05-12 12:30:03.505 [coze-task-2582] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53146 executeId=7638857452797149193 status=RUNNING -aiimage-backend.log.2026-05-12.3:100880:2026-05-12 12:30:33.291 [coze-task-2585] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53146 taskId=8095 executeId=7638857452797149193 -aiimage-backend.log.2026-05-12.3:100881:2026-05-12 12:30:33.293 [coze-task-2585] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53146 executeId=7638857452797149193 lastPolledAt=2026-05-12T12:30:04 -aiimage-backend.log.2026-05-12.3:101277:2026-05-12 12:31:03.293 [coze-task-2589] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53146 taskId=8095 executeId=7638857452797149193 -aiimage-backend.log.2026-05-12.3:101280:2026-05-12 12:31:03.300 [coze-task-2589] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53146 executeId=7638857452797149193 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:101288:2026-05-12 12:31:03.790 [coze-task-2589] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53146 executeId=7638857452797149193 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:103485:2026-05-12 12:34:35.624 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:103486:2026-05-12 12:34:35.631 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:103487:2026-05-12 12:34:35.655 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:103488:2026-05-12 12:34:35.655 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:103490:2026-05-12 12:34:36.509 [coze-task-2606] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=34 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:103491:2026-05-12 12:34:36.522 [coze-task-2606] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=864 -aiimage-backend.log.2026-05-12.3:107463:2026-05-12 12:41:36.533 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:107464:2026-05-12 12:41:36.538 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:107465:2026-05-12 12:41:36.556 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:107466:2026-05-12 12:41:36.556 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:107621:2026-05-12 12:42:08.231 [coze-task-2619] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638860874304323624 -aiimage-backend.log.2026-05-12.3:107622:2026-05-12 12:42:08.241 [coze-task-2619] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31681 -aiimage-backend.log.2026-05-12.3:107774:2026-05-12 12:42:33.327 [coze-task-2621] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53152 taskId=8095 executeId=7638860874304323624 -aiimage-backend.log.2026-05-12.3:107775:2026-05-12 12:42:33.333 [coze-task-2621] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53152 executeId=7638860874304323624 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:107777:2026-05-12 12:42:33.461 [coze-task-2621] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53152 executeId=7638860874304323624 status=RUNNING -aiimage-backend.log.2026-05-12.3:107922:2026-05-12 12:43:03.328 [coze-task-2622] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53152 taskId=8095 executeId=7638860874304323624 -aiimage-backend.log.2026-05-12.3:107923:2026-05-12 12:43:03.335 [coze-task-2622] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53152 executeId=7638860874304323624 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:107925:2026-05-12 12:43:03.492 [coze-task-2622] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53152 executeId=7638860874304323624 status=RUNNING -aiimage-backend.log.2026-05-12.3:108101:2026-05-12 12:43:33.330 [coze-task-2625] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53152 taskId=8095 executeId=7638860874304323624 -aiimage-backend.log.2026-05-12.3:108102:2026-05-12 12:43:33.337 [coze-task-2625] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53152 executeId=7638860874304323624 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:108104:2026-05-12 12:43:33.457 [coze-task-2625] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53152 executeId=7638860874304323624 status=RUNNING -aiimage-backend.log.2026-05-12.3:108262:2026-05-12 12:44:03.332 [coze-task-2626] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53152 taskId=8095 executeId=7638860874304323624 -aiimage-backend.log.2026-05-12.3:108263:2026-05-12 12:44:03.339 [coze-task-2626] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53152 executeId=7638860874304323624 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:108265:2026-05-12 12:44:03.486 [coze-task-2626] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53152 executeId=7638860874304323624 status=RUNNING -aiimage-backend.log.2026-05-12.3:108429:2026-05-12 12:44:33.333 [coze-task-2628] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53152 taskId=8095 executeId=7638860874304323624 -aiimage-backend.log.2026-05-12.3:108430:2026-05-12 12:44:33.341 [coze-task-2628] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53152 executeId=7638860874304323624 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:108432:2026-05-12 12:44:33.469 [coze-task-2628] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53152 executeId=7638860874304323624 status=RUNNING -aiimage-backend.log.2026-05-12.3:108581:2026-05-12 12:45:03.335 [coze-task-2629] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53152 taskId=8095 executeId=7638860874304323624 -aiimage-backend.log.2026-05-12.3:108582:2026-05-12 12:45:03.342 [coze-task-2629] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53152 executeId=7638860874304323624 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:108584:2026-05-12 12:45:03.567 [coze-task-2629] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53152 executeId=7638860874304323624 status=RUNNING -aiimage-backend.log.2026-05-12.3:108760:2026-05-12 12:45:33.337 [coze-task-2631] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53152 taskId=8095 executeId=7638860874304323624 -aiimage-backend.log.2026-05-12.3:108761:2026-05-12 12:45:33.338 [coze-task-2631] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53152 executeId=7638860874304323624 lastPolledAt=2026-05-12T12:45:04 -aiimage-backend.log.2026-05-12.3:108915:2026-05-12 12:46:03.338 [coze-task-2633] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53152 taskId=8095 executeId=7638860874304323624 -aiimage-backend.log.2026-05-12.3:108917:2026-05-12 12:46:03.347 [coze-task-2633] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53152 executeId=7638860874304323624 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:108919:2026-05-12 12:46:03.479 [coze-task-2633] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53152 executeId=7638860874304323624 status=RUNNING -aiimage-backend.log.2026-05-12.3:109080:2026-05-12 12:46:33.340 [coze-task-2634] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53152 taskId=8095 executeId=7638860874304323624 -aiimage-backend.log.2026-05-12.3:109083:2026-05-12 12:46:33.348 [coze-task-2634] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53152 executeId=7638860874304323624 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:109087:2026-05-12 12:46:33.741 [coze-task-2634] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53152 executeId=7638860874304323624 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:109430:2026-05-12 12:47:40.742 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:109431:2026-05-12 12:47:40.747 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:109432:2026-05-12 12:47:40.765 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:109433:2026-05-12 12:47:40.765 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:109461:2026-05-12 12:47:41.826 [coze-task-2638] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=25 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:109462:2026-05-12 12:47:41.836 [coze-task-2638] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=1067 -aiimage-backend.log.2026-05-12.3:113370:2026-05-12 12:53:47.681 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:113371:2026-05-12 12:53:47.687 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:113372:2026-05-12 12:53:47.706 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:113373:2026-05-12 12:53:47.706 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:113379:2026-05-12 12:53:48.463 [coze-task-2661] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=46 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:113380:2026-05-12 12:53:48.469 [coze-task-2661] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=759 -aiimage-backend.log.2026-05-12.3:115368:2026-05-12 12:59:53.795 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:115369:2026-05-12 12:59:53.802 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:115370:2026-05-12 12:59:53.826 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:115371:2026-05-12 12:59:53.826 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:115696:2026-05-12 13:00:25.348 [coze-task-2681] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638865587648774144 -aiimage-backend.log.2026-05-12.3:115697:2026-05-12 13:00:25.358 [coze-task-2681] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31529 -aiimage-backend.log.2026-05-12.3:115828:2026-05-12 13:00:33.380 [coze-task-2683] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53160 taskId=8095 executeId=7638865587648774144 -aiimage-backend.log.2026-05-12.3:115830:2026-05-12 13:00:33.388 [coze-task-2683] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53160 executeId=7638865587648774144 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:115832:2026-05-12 13:00:33.519 [coze-task-2683] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53160 executeId=7638865587648774144 status=RUNNING -aiimage-backend.log.2026-05-12.3:116209:2026-05-12 13:01:03.382 [coze-task-2685] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53160 taskId=8095 executeId=7638865587648774144 -aiimage-backend.log.2026-05-12.3:116211:2026-05-12 13:01:03.385 [coze-task-2685] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53160 executeId=7638865587648774144 lastPolledAt=2026-05-12T13:00:34 -aiimage-backend.log.2026-05-12.3:116750:2026-05-12 13:01:33.384 [coze-task-2689] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53160 taskId=8095 executeId=7638865587648774144 -aiimage-backend.log.2026-05-12.3:116752:2026-05-12 13:01:33.390 [coze-task-2689] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53160 executeId=7638865587648774144 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:116754:2026-05-12 13:01:33.512 [coze-task-2689] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53160 executeId=7638865587648774144 status=RUNNING -aiimage-backend.log.2026-05-12.3:117714:2026-05-12 13:02:03.386 [coze-task-2691] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53160 taskId=8095 executeId=7638865587648774144 -aiimage-backend.log.2026-05-12.3:117716:2026-05-12 13:02:03.387 [coze-task-2691] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53160 executeId=7638865587648774144 lastPolledAt=2026-05-12T13:01:34 -aiimage-backend.log.2026-05-12.3:117912:2026-05-12 13:02:33.387 [coze-task-2696] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53160 taskId=8095 executeId=7638865587648774144 -aiimage-backend.log.2026-05-12.3:117916:2026-05-12 13:02:33.395 [coze-task-2696] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53160 executeId=7638865587648774144 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:117918:2026-05-12 13:02:33.533 [coze-task-2696] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53160 executeId=7638865587648774144 status=RUNNING -aiimage-backend.log.2026-05-12.3:118081:2026-05-12 13:03:03.388 [coze-task-2698] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53160 taskId=8095 executeId=7638865587648774144 -aiimage-backend.log.2026-05-12.3:118084:2026-05-12 13:03:03.389 [coze-task-2698] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53160 executeId=7638865587648774144 lastPolledAt=2026-05-12T13:02:34 -aiimage-backend.log.2026-05-12.3:118280:2026-05-12 13:03:33.389 [coze-task-2703] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53160 taskId=8095 executeId=7638865587648774144 -aiimage-backend.log.2026-05-12.3:118282:2026-05-12 13:03:33.397 [coze-task-2703] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53160 executeId=7638865587648774144 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:118288:2026-05-12 13:03:33.883 [coze-task-2703] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53160 executeId=7638865587648774144 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:119073:2026-05-12 13:05:59.459 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:119074:2026-05-12 13:05:59.465 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:119075:2026-05-12 13:05:59.488 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:119076:2026-05-12 13:05:59.488 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:119117:2026-05-12 13:06:01.316 [coze-task-2711] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=38 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:119118:2026-05-12 13:06:01.327 [coze-task-2711] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=1835 -aiimage-backend.log.2026-05-12.3:122601:2026-05-12 13:12:03.623 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:122602:2026-05-12 13:12:03.628 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:122603:2026-05-12 13:12:03.648 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:122604:2026-05-12 13:12:03.648 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:122759:2026-05-12 13:12:35.112 [coze-task-2726] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638868716852002831 -aiimage-backend.log.2026-05-12.3:122760:2026-05-12 13:12:35.122 [coze-task-2726] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31471 -aiimage-backend.log.2026-05-12.3:122917:2026-05-12 13:13:03.418 [coze-task-2728] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53167 taskId=8095 executeId=7638868716852002831 -aiimage-backend.log.2026-05-12.3:122918:2026-05-12 13:13:03.425 [coze-task-2728] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53167 executeId=7638868716852002831 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:122920:2026-05-12 13:13:03.556 [coze-task-2728] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53167 executeId=7638868716852002831 status=RUNNING -aiimage-backend.log.2026-05-12.3:123077:2026-05-12 13:13:33.419 [coze-task-2729] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53167 taskId=8095 executeId=7638868716852002831 -aiimage-backend.log.2026-05-12.3:123078:2026-05-12 13:13:33.420 [coze-task-2729] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53167 executeId=7638868716852002831 lastPolledAt=2026-05-12T13:13:04 -aiimage-backend.log.2026-05-12.3:123232:2026-05-12 13:14:03.421 [coze-task-2730] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53167 taskId=8095 executeId=7638868716852002831 -aiimage-backend.log.2026-05-12.3:123233:2026-05-12 13:14:03.428 [coze-task-2730] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53167 executeId=7638868716852002831 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:123242:2026-05-12 13:14:04.717 [coze-task-2730] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53167 executeId=7638868716852002831 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:124558:2026-05-12 13:18:09.814 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:124559:2026-05-12 13:18:09.820 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:124560:2026-05-12 13:18:09.842 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:124561:2026-05-12 13:18:09.842 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:124563:2026-05-12 13:18:10.477 [coze-task-2738] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=30 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:124564:2026-05-12 13:18:10.485 [coze-task-2738] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=640 -aiimage-backend.log.2026-05-12.3:128396:2026-05-12 13:25:10.414 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:128397:2026-05-12 13:25:10.419 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:128398:2026-05-12 13:25:10.438 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:128399:2026-05-12 13:25:10.438 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:128591:2026-05-12 13:25:41.993 [coze-task-2755] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638872096462716962 -aiimage-backend.log.2026-05-12.3:128592:2026-05-12 13:25:42.003 [coze-task-2755] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31561 -aiimage-backend.log.2026-05-12.3:128707:2026-05-12 13:26:03.459 [coze-task-2756] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53173 taskId=8095 executeId=7638872096462716962 -aiimage-backend.log.2026-05-12.3:128708:2026-05-12 13:26:03.466 [coze-task-2756] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53173 executeId=7638872096462716962 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:128711:2026-05-12 13:26:03.571 [coze-task-2756] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53173 executeId=7638872096462716962 status=RUNNING -aiimage-backend.log.2026-05-12.3:128879:2026-05-12 13:26:33.461 [coze-task-2757] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53173 taskId=8095 executeId=7638872096462716962 -aiimage-backend.log.2026-05-12.3:128880:2026-05-12 13:26:33.463 [coze-task-2757] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53173 executeId=7638872096462716962 lastPolledAt=2026-05-12T13:26:04 -aiimage-backend.log.2026-05-12.3:129091:2026-05-12 13:27:03.462 [coze-task-2760] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53173 taskId=8095 executeId=7638872096462716962 -aiimage-backend.log.2026-05-12.3:129092:2026-05-12 13:27:03.471 [coze-task-2760] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53173 executeId=7638872096462716962 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:129094:2026-05-12 13:27:03.607 [coze-task-2760] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53173 executeId=7638872096462716962 status=RUNNING -aiimage-backend.log.2026-05-12.3:129260:2026-05-12 13:27:33.464 [coze-task-2761] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53173 taskId=8095 executeId=7638872096462716962 -aiimage-backend.log.2026-05-12.3:129261:2026-05-12 13:27:33.466 [coze-task-2761] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53173 executeId=7638872096462716962 lastPolledAt=2026-05-12T13:27:04 -aiimage-backend.log.2026-05-12.3:129427:2026-05-12 13:28:03.465 [coze-task-2763] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53173 taskId=8095 executeId=7638872096462716962 -aiimage-backend.log.2026-05-12.3:129428:2026-05-12 13:28:03.473 [coze-task-2763] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53173 executeId=7638872096462716962 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:129431:2026-05-12 13:28:03.575 [coze-task-2763] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53173 executeId=7638872096462716962 status=RUNNING -aiimage-backend.log.2026-05-12.3:129626:2026-05-12 13:28:33.467 [coze-task-2765] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53173 taskId=8095 executeId=7638872096462716962 -aiimage-backend.log.2026-05-12.3:129627:2026-05-12 13:28:33.469 [coze-task-2765] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53173 executeId=7638872096462716962 lastPolledAt=2026-05-12T13:28:04 -aiimage-backend.log.2026-05-12.3:129793:2026-05-12 13:29:03.469 [coze-task-2767] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53173 taskId=8095 executeId=7638872096462716962 -aiimage-backend.log.2026-05-12.3:129795:2026-05-12 13:29:03.477 [coze-task-2767] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53173 executeId=7638872096462716962 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:129799:2026-05-12 13:29:04.035 [coze-task-2767] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53173 executeId=7638872096462716962 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:131205:2026-05-12 13:31:26.234 [http-nio-18080-exec-6] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:131206:2026-05-12 13:31:26.240 [http-nio-18080-exec-6] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:131207:2026-05-12 13:31:26.264 [http-nio-18080-exec-6] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:131208:2026-05-12 13:31:26.264 [http-nio-18080-exec-6] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:131218:2026-05-12 13:31:27.479 [coze-task-2772] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=21 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:131219:2026-05-12 13:31:27.494 [coze-task-2772] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=1226 -aiimage-backend.log.2026-05-12.3:134682:2026-05-12 13:37:31.326 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:134683:2026-05-12 13:37:31.332 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:134684:2026-05-12 13:37:31.353 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:134685:2026-05-12 13:37:31.353 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:134715:2026-05-12 13:37:32.842 [coze-task-2796] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=42 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:134716:2026-05-12 13:37:32.855 [coze-task-2796] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=1498 -aiimage-backend.log.2026-05-12.3:138440:2026-05-12 13:43:37.710 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:138441:2026-05-12 13:43:37.716 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:138442:2026-05-12 13:43:37.737 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:138443:2026-05-12 13:43:37.737 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:138652:2026-05-12 13:44:09.172 [coze-task-2829] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638876851931414580 -aiimage-backend.log.2026-05-12.3:138653:2026-05-12 13:44:09.182 [coze-task-2829] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31442 -aiimage-backend.log.2026-05-12.3:138804:2026-05-12 13:44:33.517 [coze-task-2831] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53183 taskId=8095 executeId=7638876851931414580 -aiimage-backend.log.2026-05-12.3:138805:2026-05-12 13:44:33.524 [coze-task-2831] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53183 executeId=7638876851931414580 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:138807:2026-05-12 13:44:33.644 [coze-task-2831] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53183 executeId=7638876851931414580 status=RUNNING -aiimage-backend.log.2026-05-12.3:138983:2026-05-12 13:45:03.518 [coze-task-2833] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53183 taskId=8095 executeId=7638876851931414580 -aiimage-backend.log.2026-05-12.3:138984:2026-05-12 13:45:03.520 [coze-task-2833] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53183 executeId=7638876851931414580 lastPolledAt=2026-05-12T13:44:34 -aiimage-backend.log.2026-05-12.3:139170:2026-05-12 13:45:33.520 [coze-task-2835] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53183 taskId=8095 executeId=7638876851931414580 -aiimage-backend.log.2026-05-12.3:139171:2026-05-12 13:45:33.527 [coze-task-2835] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53183 executeId=7638876851931414580 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:139176:2026-05-12 13:45:33.646 [coze-task-2835] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53183 executeId=7638876851931414580 status=RUNNING -aiimage-backend.log.2026-05-12.3:139347:2026-05-12 13:46:03.522 [coze-task-2836] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53183 taskId=8095 executeId=7638876851931414580 -aiimage-backend.log.2026-05-12.3:139348:2026-05-12 13:46:03.523 [coze-task-2836] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53183 executeId=7638876851931414580 lastPolledAt=2026-05-12T13:45:34 -aiimage-backend.log.2026-05-12.3:139536:2026-05-12 13:46:33.524 [coze-task-2839] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53183 taskId=8095 executeId=7638876851931414580 -aiimage-backend.log.2026-05-12.3:139537:2026-05-12 13:46:33.530 [coze-task-2839] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53183 executeId=7638876851931414580 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:139541:2026-05-12 13:46:34.002 [coze-task-2839] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53183 executeId=7638876851931414580 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:140689:2026-05-12 13:50:04.684 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:140690:2026-05-12 13:50:04.689 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:140691:2026-05-12 13:50:04.708 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:140692:2026-05-12 13:50:04.708 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:140710:2026-05-12 13:50:06.629 [coze-task-2850] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=34 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:140711:2026-05-12 13:50:06.639 [coze-task-2850] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=1927 -aiimage-backend.log.2026-05-12.3:143751:2026-05-12 13:56:09.390 [http-nio-18080-exec-1] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:143752:2026-05-12 13:56:09.396 [http-nio-18080-exec-1] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:143753:2026-05-12 13:56:09.418 [http-nio-18080-exec-1] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:143754:2026-05-12 13:56:09.418 [http-nio-18080-exec-1] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:143888:2026-05-12 13:56:40.849 [coze-task-2886] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638880086539812864 -aiimage-backend.log.2026-05-12.3:143889:2026-05-12 13:56:40.858 [coze-task-2886] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31436 -aiimage-backend.log.2026-05-12.3:143996:2026-05-12 13:57:03.559 [coze-task-2892] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53190 taskId=8095 executeId=7638880086539812864 -aiimage-backend.log.2026-05-12.3:144002:2026-05-12 13:57:03.567 [coze-task-2892] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53190 executeId=7638880086539812864 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:144005:2026-05-12 13:57:03.695 [coze-task-2892] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53190 executeId=7638880086539812864 status=RUNNING -aiimage-backend.log.2026-05-12.3:144122:2026-05-12 13:57:33.562 [coze-task-2897] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53190 taskId=8095 executeId=7638880086539812864 -aiimage-backend.log.2026-05-12.3:144126:2026-05-12 13:57:33.564 [coze-task-2897] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53190 executeId=7638880086539812864 lastPolledAt=2026-05-12T13:57:04 -aiimage-backend.log.2026-05-12.3:144392:2026-05-12 13:58:03.563 [coze-task-2905] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53190 taskId=8095 executeId=7638880086539812864 -aiimage-backend.log.2026-05-12.3:144396:2026-05-12 13:58:03.570 [coze-task-2905] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53190 executeId=7638880086539812864 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:144401:2026-05-12 13:58:03.691 [coze-task-2905] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53190 executeId=7638880086539812864 status=RUNNING -aiimage-backend.log.2026-05-12.3:144519:2026-05-12 13:58:33.565 [coze-task-2908] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53190 taskId=8095 executeId=7638880086539812864 -aiimage-backend.log.2026-05-12.3:144523:2026-05-12 13:58:33.566 [coze-task-2908] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53190 executeId=7638880086539812864 lastPolledAt=2026-05-12T13:58:04 -aiimage-backend.log.2026-05-12.3:144661:2026-05-12 13:59:03.567 [coze-task-2917] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53190 taskId=8095 executeId=7638880086539812864 -aiimage-backend.log.2026-05-12.3:144666:2026-05-12 13:59:03.574 [coze-task-2917] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53190 executeId=7638880086539812864 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:144671:2026-05-12 13:59:03.716 [coze-task-2917] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53190 executeId=7638880086539812864 status=RUNNING -aiimage-backend.log.2026-05-12.3:144791:2026-05-12 13:59:33.568 [coze-task-2920] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53190 taskId=8095 executeId=7638880086539812864 -aiimage-backend.log.2026-05-12.3:144796:2026-05-12 13:59:33.570 [coze-task-2920] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53190 executeId=7638880086539812864 lastPolledAt=2026-05-12T13:59:04 -aiimage-backend.log.2026-05-12.3:144987:2026-05-12 14:00:03.571 [coze-task-2931] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53190 taskId=8095 executeId=7638880086539812864 -aiimage-backend.log.2026-05-12.3:144996:2026-05-12 14:00:03.578 [coze-task-2931] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53190 executeId=7638880086539812864 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:145004:2026-05-12 14:00:03.725 [coze-task-2931] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53190 executeId=7638880086539812864 status=RUNNING -aiimage-backend.log.2026-05-12.3:145369:2026-05-12 14:00:33.572 [coze-task-2933] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53190 taskId=8095 executeId=7638880086539812864 -aiimage-backend.log.2026-05-12.3:145373:2026-05-12 14:00:33.574 [coze-task-2933] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53190 executeId=7638880086539812864 lastPolledAt=2026-05-12T14:00:04 -aiimage-backend.log.2026-05-12.3:145729:2026-05-12 14:01:03.574 [coze-task-2944] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53190 taskId=8095 executeId=7638880086539812864 -aiimage-backend.log.2026-05-12.3:145738:2026-05-12 14:01:03.584 [coze-task-2944] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53190 executeId=7638880086539812864 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:145743:2026-05-12 14:01:03.728 [coze-task-2944] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53190 executeId=7638880086539812864 status=RUNNING -aiimage-backend.log.2026-05-12.3:146098:2026-05-12 14:01:33.575 [coze-task-2947] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53190 taskId=8095 executeId=7638880086539812864 -aiimage-backend.log.2026-05-12.3:146103:2026-05-12 14:01:33.577 [coze-task-2947] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53190 executeId=7638880086539812864 lastPolledAt=2026-05-12T14:01:04 -aiimage-backend.log.2026-05-12.3:147035:2026-05-12 14:02:03.577 [coze-task-2959] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53190 taskId=8095 executeId=7638880086539812864 -aiimage-backend.log.2026-05-12.3:147043:2026-05-12 14:02:03.584 [coze-task-2959] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53190 executeId=7638880086539812864 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:147050:2026-05-12 14:02:03.804 [coze-task-2959] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53190 executeId=7638880086539812864 status=RUNNING -aiimage-backend.log.2026-05-12.3:147094:2026-05-12 14:02:17.159 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:147095:2026-05-12 14:02:17.165 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:147096:2026-05-12 14:02:17.185 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:147097:2026-05-12 14:02:17.186 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:147101:2026-05-12 14:02:17.429 [coze-task-2961] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=239 -aiimage-backend.log.2026-05-12.3:147177:2026-05-12 14:02:33.579 [coze-task-2962] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53190 taskId=8095 executeId=7638880086539812864 -aiimage-backend.log.2026-05-12.3:147187:2026-05-12 14:02:33.580 [coze-task-2962] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53190 executeId=7638880086539812864 lastPolledAt=2026-05-12T14:02:04 -aiimage-backend.log.2026-05-12.3:147343:2026-05-12 14:03:03.581 [coze-task-2978] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53190 taskId=8095 executeId=7638880086539812864 -aiimage-backend.log.2026-05-12.3:147352:2026-05-12 14:03:03.590 [coze-task-2978] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53190 executeId=7638880086539812864 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:147360:2026-05-12 14:03:04.638 [coze-task-2978] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53190 executeId=7638880086539812864 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.3:148858:2026-05-12 14:08:27.868 [http-nio-18080-exec-1] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:148859:2026-05-12 14:08:27.872 [http-nio-18080-exec-1] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:148860:2026-05-12 14:08:27.890 [http-nio-18080-exec-1] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:148861:2026-05-12 14:08:27.890 [http-nio-18080-exec-1] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:148868:2026-05-12 14:08:29.222 [coze-task-3030] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=47 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.3:148869:2026-05-12 14:08:29.232 [coze-task-3030] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=1338 -aiimage-backend.log.2026-05-12.3:152797:2026-05-12 14:15:26.775 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:152798:2026-05-12 14:15:26.780 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.3:152799:2026-05-12 14:15:26.801 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:152800:2026-05-12 14:15:26.801 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.3:153230:2026-05-12 14:16:56.641 [coze-task-3113] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.3:153231:2026-05-12 14:16:56.650 [coze-task-3113] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=89846 -aiimage-backend.log.2026-05-12.3:153283:2026-05-12 14:17:03.626 [coze-task-3138] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.3:153296:2026-05-12 14:17:03.633 [coze-task-3138] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53213 executeId=7638885308012085274 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:153306:2026-05-12 14:17:03.780 [coze-task-3138] INFO c.n.a.m.a.c.AppearancePatentCozeClient - [appearance-patent] coze history response executeId=7638885308012085274 status=200 OK body={"code":0,"msg":"","data":[{"logid":"2026051214162662F3A773535CDEBC9DB8","output":"{\"node_status\":\"{}\",\"Output\":\"\"}","connector_id":"1024","update_time":1778566587,"is_output_trimmed":false,"token":"0","run_mode":2,"usage":{"token_count":0,"output_count":0,"input_count":0},"execute_id":"7638885308012085274","execute_status":"Running","node_execute_status":{},"bot_id":"0","create_time":1778566587,"connector_uid":"2939430754097600","error_code":"","debug_url":"https://www.coze.cn/work_flow?execute_id=7638885308012085274&space_id=7519005192466022436&workflow_id=7632683471312355338&execute_mode=2"}],"detail":{"logid":"202605121417037D9A08381FC57DADE5FB"}} -aiimage-backend.log.2026-05-12.3:153307:2026-05-12 14:17:03.780 [coze-task-3138] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53213 executeId=7638885308012085274 status=RUNNING -aiimage-backend.log.2026-05-12.3:153441:2026-05-12 14:17:33.628 [coze-task-3152] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.3:153449:2026-05-12 14:17:33.630 [coze-task-3152] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53213 executeId=7638885308012085274 lastPolledAt=2026-05-12T14:17:04 -aiimage-backend.log.2026-05-12.3:153610:2026-05-12 14:18:03.630 [coze-task-3166] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.3:153618:2026-05-12 14:18:03.640 [coze-task-3166] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53213 executeId=7638885308012085274 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.3:153620:2026-05-12 14:18:03.756 [coze-task-3166] INFO c.n.a.m.a.c.AppearancePatentCozeClient - [appearance-patent] coze history response executeId=7638885308012085274 status=200 OK body={"detail":{"logid":"20260512141803F811D537EF7B04BF2578"},"code":0,"msg":"","data":[{"is_output_trimmed":false,"run_mode":2,"debug_url":"https://www.coze.cn/work_flow?execute_id=7638885308012085274&space_id=7519005192466022436&workflow_id=7632683471312355338&execute_mode=2","create_time":1778566587,"execute_status":"Running","output":"{\"node_status\":\"{}\",\"Output\":\"\"}","usage":{"input_count":0,"token_count":0,"output_count":0},"error_code":"","execute_id":"7638885308012085274","bot_id":"0","connector_id":"1024","logid":"2026051214162662F3A773535CDEBC9DB8","node_execute_status":{},"update_time":1778566587,"token":"0","connector_uid":"2939430754097600"}]} -aiimage-backend.log.2026-05-12.3:153621:2026-05-12 14:18:03.756 [coze-task-3166] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53213 executeId=7638885308012085274 status=RUNNING -aiimage-backend.log.2026-05-12.3:153747:2026-05-12 14:18:33.631 [coze-task-3170] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.3:153754:2026-05-12 14:18:33.633 [coze-task-3170] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53213 executeId=7638885308012085274 lastPolledAt=2026-05-12T14:18:04 -aiimage-backend.log.2026-05-12.4:79:2026-05-12 14:19:03.633 [coze-task-3182] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:88:2026-05-12 14:19:03.642 [coze-task-3182] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53213 executeId=7638885308012085274 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:92:2026-05-12 14:19:03.768 [coze-task-3182] INFO c.n.a.m.a.c.AppearancePatentCozeClient - [appearance-patent] coze history response executeId=7638885308012085274 status=200 OK body={"code":0,"msg":"","data":[{"execute_id":"7638885308012085274","bot_id":"0","update_time":1778566587,"is_output_trimmed":false,"execute_status":"Running","logid":"2026051214162662F3A773535CDEBC9DB8","create_time":1778566587,"connector_id":"1024","run_mode":2,"usage":{"token_count":0,"output_count":0,"input_count":0},"error_code":"","token":"0","connector_uid":"2939430754097600","debug_url":"https://www.coze.cn/work_flow?execute_id=7638885308012085274&space_id=7519005192466022436&workflow_id=7632683471312355338&execute_mode=2","output":"{\"Output\":\"\",\"node_status\":\"{}\"}","node_execute_status":{}}],"detail":{"logid":"20260512141903E8BBE79D0821A2D93585"}} -aiimage-backend.log.2026-05-12.4:93:2026-05-12 14:19:03.768 [coze-task-3182] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53213 executeId=7638885308012085274 status=RUNNING -aiimage-backend.log.2026-05-12.4:228:2026-05-12 14:19:33.635 [coze-task-3187] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:235:2026-05-12 14:19:33.637 [coze-task-3187] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53213 executeId=7638885308012085274 lastPolledAt=2026-05-12T14:19:04 -aiimage-backend.log.2026-05-12.4:399:2026-05-12 14:20:03.636 [coze-task-3198] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:404:2026-05-12 14:20:03.644 [coze-task-3198] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53213 executeId=7638885308012085274 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:412:2026-05-12 14:20:03.754 [coze-task-3198] INFO c.n.a.m.a.c.AppearancePatentCozeClient - [appearance-patent] coze history response executeId=7638885308012085274 status=200 OK body={"code":0,"msg":"","data":[{"debug_url":"https://www.coze.cn/work_flow?execute_id=7638885308012085274&space_id=7519005192466022436&workflow_id=7632683471312355338&execute_mode=2","error_code":"","execute_status":"Running","connector_uid":"2939430754097600","run_mode":2,"node_execute_status":{},"bot_id":"0","connector_id":"1024","create_time":1778566587,"output":"{\"node_status\":\"{}\",\"Output\":\"\"}","execute_id":"7638885308012085274","is_output_trimmed":false,"token":"0","logid":"2026051214162662F3A773535CDEBC9DB8","usage":{"input_count":0,"token_count":0,"output_count":0},"update_time":1778566587}],"detail":{"logid":"2026051214200330D91EC9CEE929D77E81"}} -aiimage-backend.log.2026-05-12.4:413:2026-05-12 14:20:03.754 [coze-task-3198] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53213 executeId=7638885308012085274 status=RUNNING -aiimage-backend.log.2026-05-12.4:777:2026-05-12 14:20:33.638 [coze-task-3203] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:785:2026-05-12 14:20:33.640 [coze-task-3203] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53213 executeId=7638885308012085274 lastPolledAt=2026-05-12T14:20:04 -aiimage-backend.log.2026-05-12.4:1150:2026-05-12 14:21:03.640 [coze-task-3215] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:1162:2026-05-12 14:21:03.649 [coze-task-3215] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53213 executeId=7638885308012085274 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:1170:2026-05-12 14:21:03.773 [coze-task-3215] INFO c.n.a.m.a.c.AppearancePatentCozeClient - [appearance-patent] coze history response executeId=7638885308012085274 status=200 OK body={"msg":"","data":[{"execute_id":"7638885308012085274","logid":"2026051214162662F3A773535CDEBC9DB8","node_execute_status":{},"error_code":"","create_time":1778566587,"is_output_trimmed":false,"usage":{"token_count":0,"output_count":0,"input_count":0},"connector_id":"1024","execute_status":"Running","connector_uid":"2939430754097600","debug_url":"https://www.coze.cn/work_flow?execute_id=7638885308012085274&space_id=7519005192466022436&workflow_id=7632683471312355338&execute_mode=2","bot_id":"0","update_time":1778566587,"token":"0","run_mode":2,"output":"{\"node_status\":\"{}\",\"Output\":\"\"}"}],"detail":{"logid":"20260512142103F981FB89CDFF99AA0C57"},"code":0} -aiimage-backend.log.2026-05-12.4:1171:2026-05-12 14:21:03.773 [coze-task-3215] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53213 executeId=7638885308012085274 status=RUNNING -aiimage-backend.log.2026-05-12.4:2239:2026-05-12 14:21:33.641 [coze-task-3226] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:2250:2026-05-12 14:21:33.643 [coze-task-3226] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53213 executeId=7638885308012085274 lastPolledAt=2026-05-12T14:21:04 -aiimage-backend.log.2026-05-12.4:2529:2026-05-12 14:21:46.767 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:2530:2026-05-12 14:21:46.772 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:2531:2026-05-12 14:21:46.791 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:2532:2026-05-12 14:21:46.792 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:2534:2026-05-12 14:21:47.042 [coze-task-3234] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=247 -aiimage-backend.log.2026-05-12.4:2624:2026-05-12 14:22:03.643 [coze-task-3243] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:2634:2026-05-12 14:22:03.651 [coze-task-3243] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53213 executeId=7638885308012085274 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:2640:2026-05-12 14:22:03.873 [coze-task-3243] INFO c.n.a.m.a.c.AppearancePatentCozeClient - [appearance-patent] coze history response executeId=7638885308012085274 status=200 OK body={"data":[{"token":"0","logid":"2026051214162662F3A773535CDEBC9DB8","node_execute_status":{},"execute_id":"7638885308012085274","update_time":1778566587,"is_output_trimmed":false,"connector_uid":"2939430754097600","debug_url":"https://www.coze.cn/work_flow?execute_id=7638885308012085274&space_id=7519005192466022436&workflow_id=7632683471312355338&execute_mode=2","bot_id":"0","run_mode":2,"output":"{\"node_status\":\"{}\",\"Output\":\"\"}","usage":{"token_count":0,"output_count":0,"input_count":0},"connector_id":"1024","create_time":1778566587,"execute_status":"Running","error_code":""}],"detail":{"logid":"202605121422035A9F40175D253ED1AA21"},"code":0,"msg":""} -aiimage-backend.log.2026-05-12.4:2641:2026-05-12 14:22:03.873 [coze-task-3243] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53213 executeId=7638885308012085274 status=RUNNING -aiimage-backend.log.2026-05-12.4:2775:2026-05-12 14:22:33.645 [coze-task-3251] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:2787:2026-05-12 14:22:33.646 [coze-task-3251] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53213 executeId=7638885308012085274 lastPolledAt=2026-05-12T14:22:04 -aiimage-backend.log.2026-05-12.4:2934:2026-05-12 14:23:03.647 [coze-task-3268] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:2946:2026-05-12 14:23:03.658 [coze-task-3268] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53213 executeId=7638885308012085274 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:2954:2026-05-12 14:23:03.810 [coze-task-3268] INFO c.n.a.m.a.c.AppearancePatentCozeClient - [appearance-patent] coze history response executeId=7638885308012085274 status=200 OK body={"data":[{"execute_id":"7638885308012085274","connector_uid":"2939430754097600","debug_url":"https://www.coze.cn/work_flow?execute_id=7638885308012085274&space_id=7519005192466022436&workflow_id=7632683471312355338&execute_mode=2","output":"{\"node_status\":\"{}\",\"Output\":\"\"}","usage":{"token_count":0,"output_count":0,"input_count":0},"update_time":1778566587,"token":"0","logid":"2026051214162662F3A773535CDEBC9DB8","bot_id":"0","create_time":1778566587,"node_execute_status":{},"error_code":"","connector_id":"1024","is_output_trimmed":false,"execute_status":"Running","run_mode":2}],"detail":{"logid":"20260512142303F2752B6857A427C79F33"},"code":0,"msg":""} -aiimage-backend.log.2026-05-12.4:2955:2026-05-12 14:23:03.810 [coze-task-3268] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53213 executeId=7638885308012085274 status=RUNNING -aiimage-backend.log.2026-05-12.4:3094:2026-05-12 14:23:33.649 [coze-task-3279] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:3107:2026-05-12 14:23:33.651 [coze-task-3279] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53213 executeId=7638885308012085274 lastPolledAt=2026-05-12T14:23:04 -aiimage-backend.log.2026-05-12.4:3254:2026-05-12 14:24:03.650 [coze-task-3297] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:3270:2026-05-12 14:24:03.659 [coze-task-3297] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53213 executeId=7638885308012085274 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:3273:2026-05-12 14:24:03.770 [coze-task-3297] INFO c.n.a.m.a.c.AppearancePatentCozeClient - [appearance-patent] coze history response executeId=7638885308012085274 status=200 OK body={"code":0,"msg":"","data":[{"token":"0","execute_status":"Running","update_time":1778566587,"logid":"2026051214162662F3A773535CDEBC9DB8","output":"{\"Output\":\"\",\"node_status\":\"{}\"}","error_code":"","bot_id":"0","connector_id":"1024","connector_uid":"2939430754097600","execute_id":"7638885308012085274","create_time":1778566587,"run_mode":2,"debug_url":"https://www.coze.cn/work_flow?execute_id=7638885308012085274&space_id=7519005192466022436&workflow_id=7632683471312355338&execute_mode=2","node_execute_status":{},"usage":{"token_count":0,"output_count":0,"input_count":0},"is_output_trimmed":false}],"detail":{"logid":"20260512142403F2FA39C10AE910ABAFCF"}} -aiimage-backend.log.2026-05-12.4:3274:2026-05-12 14:24:03.770 [coze-task-3297] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53213 executeId=7638885308012085274 status=RUNNING -aiimage-backend.log.2026-05-12.4:3428:2026-05-12 14:24:33.652 [coze-task-3311] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:3446:2026-05-12 14:24:33.653 [coze-task-3311] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53213 executeId=7638885308012085274 lastPolledAt=2026-05-12T14:24:04 -aiimage-backend.log.2026-05-12.4:3615:2026-05-12 14:25:03.653 [coze-task-3328] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:3630:2026-05-12 14:25:03.663 [coze-task-3328] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53213 executeId=7638885308012085274 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:3635:2026-05-12 14:25:03.800 [coze-task-3328] INFO c.n.a.m.a.c.AppearancePatentCozeClient - [appearance-patent] coze history response executeId=7638885308012085274 status=200 OK body={"detail":{"logid":"202605121425033B107D547F9911CA7454"},"code":0,"msg":"","data":[{"execute_status":"Running","connector_uid":"2939430754097600","output":"{\"node_status\":\"{}\",\"Output\":\"\"}","node_execute_status":{},"error_code":"","create_time":1778566587,"run_mode":2,"debug_url":"https://www.coze.cn/work_flow?execute_id=7638885308012085274&space_id=7519005192466022436&workflow_id=7632683471312355338&execute_mode=2","bot_id":"0","connector_id":"1024","logid":"2026051214162662F3A773535CDEBC9DB8","usage":{"token_count":0,"output_count":0,"input_count":0},"execute_id":"7638885308012085274","update_time":1778566587,"is_output_trimmed":false,"token":"0"}]} -aiimage-backend.log.2026-05-12.4:3636:2026-05-12 14:25:03.800 [coze-task-3328] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53213 executeId=7638885308012085274 status=RUNNING -aiimage-backend.log.2026-05-12.4:3825:2026-05-12 14:25:33.655 [coze-task-3337] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:3836:2026-05-12 14:25:33.656 [coze-task-3337] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53213 executeId=7638885308012085274 lastPolledAt=2026-05-12T14:25:04 -aiimage-backend.log.2026-05-12.4:3981:2026-05-12 14:26:03.657 [coze-task-3351] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:3996:2026-05-12 14:26:03.667 [coze-task-3351] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53213 executeId=7638885308012085274 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:3999:2026-05-12 14:26:03.797 [coze-task-3351] INFO c.n.a.m.a.c.AppearancePatentCozeClient - [appearance-patent] coze history response executeId=7638885308012085274 status=200 OK body={"code":0,"msg":"","data":[{"logid":"2026051214162662F3A773535CDEBC9DB8","execute_id":"7638885308012085274","debug_url":"https://www.coze.cn/work_flow?execute_id=7638885308012085274&space_id=7519005192466022436&workflow_id=7632683471312355338&execute_mode=2","output":"{\"node_status\":\"{}\",\"Output\":\"\"}","update_time":1778566587,"token":"0","connector_uid":"2939430754097600","bot_id":"0","connector_id":"1024","create_time":1778566587,"is_output_trimmed":false,"execute_status":"Running","node_execute_status":{},"usage":{"token_count":0,"output_count":0,"input_count":0},"error_code":"","run_mode":2}],"detail":{"logid":"202605121426030E28FF60952041C972B8"}} -aiimage-backend.log.2026-05-12.4:4000:2026-05-12 14:26:03.797 [coze-task-3351] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53213 executeId=7638885308012085274 status=RUNNING -aiimage-backend.log.2026-05-12.4:4127:2026-05-12 14:26:33.658 [coze-task-3358] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:4140:2026-05-12 14:26:33.660 [coze-task-3358] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53213 executeId=7638885308012085274 lastPolledAt=2026-05-12T14:26:04 -aiimage-backend.log.2026-05-12.4:4271:2026-05-12 14:27:03.660 [coze-task-3370] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:4283:2026-05-12 14:27:03.667 [coze-task-3370] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53213 executeId=7638885308012085274 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:4293:2026-05-12 14:27:03.853 [coze-task-3370] INFO c.n.a.m.a.c.AppearancePatentCozeClient - [appearance-patent] coze history response executeId=7638885308012085274 status=200 OK body={"msg":"","data":[{"connector_uid":"2939430754097600","output":"{\"Output\":\"\",\"node_status\":\"{}\"}","execute_id":"7638885308012085274","bot_id":"0","connector_id":"1024","update_time":1778566587,"token":"0","run_mode":2,"create_time":1778566587,"execute_status":"Running","debug_url":"https://www.coze.cn/work_flow?execute_id=7638885308012085274&space_id=7519005192466022436&workflow_id=7632683471312355338&execute_mode=2","node_execute_status":{},"is_output_trimmed":false,"logid":"2026051214162662F3A773535CDEBC9DB8","usage":{"token_count":0,"output_count":0,"input_count":0},"error_code":""}],"detail":{"logid":"20260512142703504E0A4BCD37CEAF2872"},"code":0} -aiimage-backend.log.2026-05-12.4:4416:2026-05-12 14:27:33.661 [coze-task-3377] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:4425:2026-05-12 14:27:33.662 [coze-task-3377] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53213 -aiimage-backend.log.2026-05-12.4:4615:2026-05-12 14:28:03.663 [coze-task-3389] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:4620:2026-05-12 14:28:03.663 [coze-task-3390] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53213 taskId=8095 executeId=7638885308012085274 -aiimage-backend.log.2026-05-12.4:4622:2026-05-12 14:28:03.664 [coze-task-3389] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:4625:2026-05-12 14:28:03.664 [coze-task-3390] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53213 -aiimage-backend.log.2026-05-12.4:4642:2026-05-12 14:28:04.334 [coze-task-3370] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze split retry submitted taskId=8095 stateId=53213 chunk=null batch=1/1 parts=2 retry=1/5 failure=Coze async workflow poll timeout -aiimage-backend.log.2026-05-12.4:4648:2026-05-12 14:28:09.015 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:4649:2026-05-12 14:28:09.022 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:4650:2026-05-12 14:28:09.046 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:4651:2026-05-12 14:28:09.046 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:4654:2026-05-12 14:28:09.295 [coze-task-3396] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=244 -aiimage-backend.log.2026-05-12.4:4768:2026-05-12 14:28:33.664 [coze-task-3400] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:4769:2026-05-12 14:28:33.664 [coze-task-3403] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:4775:2026-05-12 14:28:33.665 [coze-task-3400] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53229 -aiimage-backend.log.2026-05-12.4:4781:2026-05-12 14:28:33.671 [coze-task-3403] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53228 executeId=7638888038387646479 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:4787:2026-05-12 14:28:33.788 [coze-task-3403] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53228 executeId=7638888038387646479 status=RUNNING -aiimage-backend.log.2026-05-12.4:4925:2026-05-12 14:29:03.666 [coze-task-3414] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:4928:2026-05-12 14:29:03.666 [coze-task-3410] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:4935:2026-05-12 14:29:03.668 [coze-task-3410] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:4940:2026-05-12 14:29:03.676 [coze-task-3414] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53229 executeId=7638888176475570227 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:4946:2026-05-12 14:29:03.803 [coze-task-3414] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53229 executeId=7638888176475570227 status=RUNNING -aiimage-backend.log.2026-05-12.4:5076:2026-05-12 14:29:33.667 [coze-task-3421] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:5080:2026-05-12 14:29:33.667 [coze-task-3425] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:5086:2026-05-12 14:29:33.669 [coze-task-3421] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53229 executeId=7638888176475570227 lastPolledAt=2026-05-12T14:29:04 -aiimage-backend.log.2026-05-12.4:5089:2026-05-12 14:29:33.669 [coze-task-3425] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:5257:2026-05-12 14:30:03.669 [coze-task-3434] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:5259:2026-05-12 14:30:03.669 [coze-task-3437] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:5263:2026-05-12 14:30:03.670 [coze-task-3437] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:5269:2026-05-12 14:30:03.679 [coze-task-3434] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53229 executeId=7638888176475570227 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:5276:2026-05-12 14:30:03.789 [coze-task-3434] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53229 executeId=7638888176475570227 status=RUNNING -aiimage-backend.log.2026-05-12.4:5653:2026-05-12 14:30:33.670 [coze-task-3450] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:5659:2026-05-12 14:30:33.670 [coze-task-3445] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:5670:2026-05-12 14:30:33.672 [coze-task-3445] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53229 executeId=7638888176475570227 lastPolledAt=2026-05-12T14:30:04 -aiimage-backend.log.2026-05-12.4:5671:2026-05-12 14:30:33.672 [coze-task-3450] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:6013:2026-05-12 14:31:03.672 [coze-task-3457] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:6020:2026-05-12 14:31:03.672 [coze-task-3461] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:6025:2026-05-12 14:31:03.673 [coze-task-3461] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:6032:2026-05-12 14:31:03.682 [coze-task-3457] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53229 executeId=7638888176475570227 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:6037:2026-05-12 14:31:03.790 [coze-task-3457] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53229 executeId=7638888176475570227 status=RUNNING -aiimage-backend.log.2026-05-12.4:6421:2026-05-12 14:31:33.673 [coze-task-3467] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:6427:2026-05-12 14:31:33.674 [coze-task-3474] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:6434:2026-05-12 14:31:33.674 [coze-task-3467] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53229 executeId=7638888176475570227 lastPolledAt=2026-05-12T14:31:04 -aiimage-backend.log.2026-05-12.4:6436:2026-05-12 14:31:33.675 [coze-task-3474] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:7350:2026-05-12 14:32:03.674 [coze-task-3480] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:7359:2026-05-12 14:32:03.674 [coze-task-3486] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:7364:2026-05-12 14:32:03.676 [coze-task-3486] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:7370:2026-05-12 14:32:03.685 [coze-task-3480] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53229 executeId=7638888176475570227 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:7386:2026-05-12 14:32:03.830 [coze-task-3480] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53229 executeId=7638888176475570227 status=RUNNING -aiimage-backend.log.2026-05-12.4:7508:2026-05-12 14:32:33.676 [coze-task-3499] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:7510:2026-05-12 14:32:33.676 [coze-task-3491] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:7518:2026-05-12 14:32:33.677 [coze-task-3499] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:7523:2026-05-12 14:32:33.677 [coze-task-3491] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53229 executeId=7638888176475570227 lastPolledAt=2026-05-12T14:32:04 -aiimage-backend.log.2026-05-12.4:8038:2026-05-12 14:33:03.678 [coze-task-3505] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:8047:2026-05-12 14:33:03.679 [coze-task-3513] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:8053:2026-05-12 14:33:03.679 [coze-task-3513] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:8057:2026-05-12 14:33:03.688 [coze-task-3505] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53229 executeId=7638888176475570227 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:8061:2026-05-12 14:33:03.805 [coze-task-3505] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53229 executeId=7638888176475570227 status=RUNNING -aiimage-backend.log.2026-05-12.4:8190:2026-05-12 14:33:33.679 [coze-task-3516] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:8200:2026-05-12 14:33:33.680 [coze-task-3527] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:8208:2026-05-12 14:33:33.681 [coze-task-3516] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53229 executeId=7638888176475570227 lastPolledAt=2026-05-12T14:33:04 -aiimage-backend.log.2026-05-12.4:8211:2026-05-12 14:33:33.681 [coze-task-3527] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:8347:2026-05-12 14:34:03.681 [coze-task-3533] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:8348:2026-05-12 14:34:03.681 [coze-task-3542] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:8355:2026-05-12 14:34:03.683 [coze-task-3542] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:8360:2026-05-12 14:34:03.691 [coze-task-3533] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53229 executeId=7638888176475570227 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:8377:2026-05-12 14:34:03.842 [coze-task-3533] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53229 executeId=7638888176475570227 status=RUNNING -aiimage-backend.log.2026-05-12.4:8451:2026-05-12 14:34:25.708 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:8452:2026-05-12 14:34:25.714 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:8453:2026-05-12 14:34:25.735 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:8454:2026-05-12 14:34:25.735 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:8457:2026-05-12 14:34:25.993 [coze-task-3543] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=254 -aiimage-backend.log.2026-05-12.4:8498:2026-05-12 14:34:33.683 [coze-task-3546] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:8508:2026-05-12 14:34:33.683 [coze-task-3557] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:8516:2026-05-12 14:34:33.684 [coze-task-3557] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:8517:2026-05-12 14:34:33.684 [coze-task-3546] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53229 executeId=7638888176475570227 lastPolledAt=2026-05-12T14:34:04 -aiimage-backend.log.2026-05-12.4:8677:2026-05-12 14:35:03.685 [coze-task-3563] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:8681:2026-05-12 14:35:03.685 [coze-task-3572] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:8690:2026-05-12 14:35:03.686 [coze-task-3572] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:8694:2026-05-12 14:35:03.695 [coze-task-3563] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53229 executeId=7638888176475570227 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:8701:2026-05-12 14:35:03.833 [coze-task-3563] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53229 executeId=7638888176475570227 status=RUNNING -aiimage-backend.log.2026-05-12.4:8822:2026-05-12 14:35:33.686 [coze-task-3574] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:8831:2026-05-12 14:35:33.687 [coze-task-3586] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:8835:2026-05-12 14:35:33.688 [coze-task-3574] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53229 executeId=7638888176475570227 lastPolledAt=2026-05-12T14:35:04 -aiimage-backend.log.2026-05-12.4:8840:2026-05-12 14:35:33.688 [coze-task-3586] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:8976:2026-05-12 14:36:03.688 [coze-task-3592] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:8983:2026-05-12 14:36:03.688 [coze-task-3601] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:8991:2026-05-12 14:36:03.690 [coze-task-3601] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:8993:2026-05-12 14:36:03.696 [coze-task-3592] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53229 executeId=7638888176475570227 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:9001:2026-05-12 14:36:03.905 [coze-task-3592] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53229 executeId=7638888176475570227 status=RUNNING -aiimage-backend.log.2026-05-12.4:9124:2026-05-12 14:36:33.690 [coze-task-3603] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:9136:2026-05-12 14:36:33.690 [coze-task-3615] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:9143:2026-05-12 14:36:33.692 [coze-task-3603] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53229 executeId=7638888176475570227 lastPolledAt=2026-05-12T14:36:04 -aiimage-backend.log.2026-05-12.4:9144:2026-05-12 14:36:33.692 [coze-task-3615] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:9405:2026-05-12 14:37:03.691 [coze-task-3621] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:9414:2026-05-12 14:37:03.692 [coze-task-3628] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:9422:2026-05-12 14:37:03.693 [coze-task-3628] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:9423:2026-05-12 14:37:03.699 [coze-task-3621] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53229 executeId=7638888176475570227 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:9435:2026-05-12 14:37:03.841 [coze-task-3621] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53229 executeId=7638888176475570227 status=RUNNING -aiimage-backend.log.2026-05-12.4:9556:2026-05-12 14:37:33.693 [coze-task-3630] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:9557:2026-05-12 14:37:33.693 [coze-task-3641] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:9568:2026-05-12 14:37:33.694 [coze-task-3630] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53229 executeId=7638888176475570227 lastPolledAt=2026-05-12T14:37:04 -aiimage-backend.log.2026-05-12.4:9569:2026-05-12 14:37:33.694 [coze-task-3641] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:9707:2026-05-12 14:38:03.695 [coze-task-3653] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:9708:2026-05-12 14:38:03.695 [coze-task-3645] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:9715:2026-05-12 14:38:03.696 [coze-task-3653] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:9722:2026-05-12 14:38:03.705 [coze-task-3645] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53229 executeId=7638888176475570227 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:9727:2026-05-12 14:38:03.836 [coze-task-3645] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53229 executeId=7638888176475570227 status=RUNNING -aiimage-backend.log.2026-05-12.4:9846:2026-05-12 14:38:33.696 [coze-task-3655] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:9848:2026-05-12 14:38:33.696 [coze-task-3664] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:9856:2026-05-12 14:38:33.697 [coze-task-3664] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:9859:2026-05-12 14:38:33.698 [coze-task-3655] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53229 executeId=7638888176475570227 lastPolledAt=2026-05-12T14:38:04 -aiimage-backend.log.2026-05-12.4:9993:2026-05-12 14:39:03.698 [coze-task-3670] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53229 taskId=8095 executeId=7638888176475570227 -aiimage-backend.log.2026-05-12.4:9998:2026-05-12 14:39:03.698 [coze-task-3676] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:10004:2026-05-12 14:39:03.700 [coze-task-3676] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:10006:2026-05-12 14:39:03.707 [coze-task-3670] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53229 executeId=7638888176475570227 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:10019:2026-05-12 14:39:04.224 [coze-task-3670] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53229 executeId=7638888176475570227 status=DONE batchRows=25 mergedRows=25 failure=- -aiimage-backend.log.2026-05-12.4:10141:2026-05-12 14:39:33.701 [coze-task-3686] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:10147:2026-05-12 14:39:33.708 [coze-task-3686] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53228 executeId=7638888038387646479 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:10313:2026-05-12 14:40:03.702 [coze-task-3688] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:10318:2026-05-12 14:40:03.703 [coze-task-3688] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:10699:2026-05-12 14:40:33.703 [coze-task-3700] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:10706:2026-05-12 14:40:33.704 [coze-task-3700] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:11075:2026-05-12 14:41:03.705 [coze-task-3705] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53251 taskId=8095 executeId=7638891459924246568 -aiimage-backend.log.2026-05-12.4:11078:2026-05-12 14:41:03.705 [coze-task-3711] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53228 taskId=8095 executeId=7638888038387646479 -aiimage-backend.log.2026-05-12.4:11079:2026-05-12 14:41:03.706 [coze-task-3705] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53251 -aiimage-backend.log.2026-05-12.4:11080:2026-05-12 14:41:03.706 [coze-task-3711] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53228 -aiimage-backend.log.2026-05-12.4:11306:2026-05-12 14:41:21.491 [coze-task-3686] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze split retry submitted taskId=8095 stateId=53228 chunk=null batch=1/2 parts=2 retry=2/5 failure=Coze async workflow poll timeout -aiimage-backend.log.2026-05-12.4:11308:2026-05-12 14:41:21.579 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:11309:2026-05-12 14:41:21.584 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:11310:2026-05-12 14:41:21.602 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:11311:2026-05-12 14:41:21.602 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:11316:2026-05-12 14:41:21.849 [coze-task-3714] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=244 -aiimage-backend.log.2026-05-12.4:11317:2026-05-12 14:41:22.003 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] duplicate chunk ignored taskId=8095 scope=8095 chunk=2856 -aiimage-backend.log.2026-05-12.4:11318:2026-05-12 14:41:22.005 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:11319:2026-05-12 14:41:22.008 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:11320:2026-05-12 14:41:22.028 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:11321:2026-05-12 14:41:22.028 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:11350:2026-05-12 14:41:22.492 [coze-task-3715] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=460 -aiimage-backend.log.2026-05-12.4:12238:2026-05-12 14:41:33.707 [coze-task-3716] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53252 taskId=8095 executeId=7638891597505183796 -aiimage-backend.log.2026-05-12.4:12243:2026-05-12 14:41:33.707 [coze-task-3718] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53251 taskId=8095 executeId=7638891459924246568 -aiimage-backend.log.2026-05-12.4:12248:2026-05-12 14:41:33.708 [coze-task-3716] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53252 -aiimage-backend.log.2026-05-12.4:12253:2026-05-12 14:41:33.716 [coze-task-3718] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53251 executeId=7638891459924246568 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:12260:2026-05-12 14:41:33.873 [coze-task-3718] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53251 executeId=7638891459924246568 status=RUNNING -aiimage-backend.log.2026-05-12.4:12370:2026-05-12 14:42:03.709 [coze-task-3727] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53252 taskId=8095 executeId=7638891597505183796 -aiimage-backend.log.2026-05-12.4:12375:2026-05-12 14:42:03.709 [coze-task-3726] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53251 taskId=8095 executeId=7638891459924246568 -aiimage-backend.log.2026-05-12.4:12377:2026-05-12 14:42:03.710 [coze-task-3726] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53251 -aiimage-backend.log.2026-05-12.4:12381:2026-05-12 14:42:03.716 [coze-task-3727] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53252 executeId=7638891597505183796 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:12390:2026-05-12 14:42:03.854 [coze-task-3727] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53252 executeId=7638891597505183796 status=RUNNING -aiimage-backend.log.2026-05-12.4:12506:2026-05-12 14:42:33.710 [coze-task-3735] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53252 taskId=8095 executeId=7638891597505183796 -aiimage-backend.log.2026-05-12.4:12509:2026-05-12 14:42:33.711 [coze-task-3738] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53251 taskId=8095 executeId=7638891459924246568 -aiimage-backend.log.2026-05-12.4:12514:2026-05-12 14:42:33.712 [coze-task-3738] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53251 -aiimage-backend.log.2026-05-12.4:12515:2026-05-12 14:42:33.712 [coze-task-3735] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53252 executeId=7638891597505183796 lastPolledAt=2026-05-12T14:42:04 -aiimage-backend.log.2026-05-12.4:12638:2026-05-12 14:43:03.712 [coze-task-3747] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53251 taskId=8095 executeId=7638891459924246568 -aiimage-backend.log.2026-05-12.4:12642:2026-05-12 14:43:03.712 [coze-task-3745] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53252 taskId=8095 executeId=7638891597505183796 -aiimage-backend.log.2026-05-12.4:12644:2026-05-12 14:43:03.713 [coze-task-3745] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53252 -aiimage-backend.log.2026-05-12.4:12648:2026-05-12 14:43:03.720 [coze-task-3747] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53251 executeId=7638891459924246568 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:12658:2026-05-12 14:43:04.296 [coze-task-3747] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53251 executeId=7638891459924246568 status=DONE batchRows=12 mergedRows=12 failure=- -aiimage-backend.log.2026-05-12.4:12779:2026-05-12 14:43:33.714 [coze-task-3755] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53252 taskId=8095 executeId=7638891597505183796 -aiimage-backend.log.2026-05-12.4:12786:2026-05-12 14:43:33.723 [coze-task-3755] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53252 executeId=7638891597505183796 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:12791:2026-05-12 14:43:33.873 [coze-task-3755] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53252 executeId=7638891597505183796 status=RUNNING -aiimage-backend.log.2026-05-12.4:12911:2026-05-12 14:44:03.716 [coze-task-3757] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53252 taskId=8095 executeId=7638891597505183796 -aiimage-backend.log.2026-05-12.4:12919:2026-05-12 14:44:03.717 [coze-task-3757] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53252 executeId=7638891597505183796 lastPolledAt=2026-05-12T14:43:34 -aiimage-backend.log.2026-05-12.4:13052:2026-05-12 14:44:33.717 [coze-task-3769] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53252 taskId=8095 executeId=7638891597505183796 -aiimage-backend.log.2026-05-12.4:13061:2026-05-12 14:44:33.729 [coze-task-3769] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53252 executeId=7638891597505183796 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:13069:2026-05-12 14:44:34.392 [coze-task-3769] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53252 executeId=7638891597505183796 status=DONE batchRows=13 mergedRows=13 failure=- -aiimage-backend.log.2026-05-12.4:13778:2026-05-12 14:47:25.844 [http-nio-18080-exec-6] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:13779:2026-05-12 14:47:25.849 [http-nio-18080-exec-6] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:13780:2026-05-12 14:47:25.869 [http-nio-18080-exec-6] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:13781:2026-05-12 14:47:25.869 [http-nio-18080-exec-6] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:14096:2026-05-12 14:48:34.709 [coze-task-3808] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/2 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:14234:2026-05-12 14:49:03.733 [coze-task-3833] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:14242:2026-05-12 14:49:03.734 [coze-task-3833] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53261 -aiimage-backend.log.2026-05-12.4:14250:2026-05-12 14:49:04.968 [coze-task-3808] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=2/2 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:14251:2026-05-12 14:49:04.976 [coze-task-3808] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=99104 -aiimage-backend.log.2026-05-12.4:14357:2026-05-12 14:49:33.735 [coze-task-3839] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:14359:2026-05-12 14:49:33.735 [coze-task-3841] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:14366:2026-05-12 14:49:33.736 [coze-task-3841] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53261 -aiimage-backend.log.2026-05-12.4:14369:2026-05-12 14:49:33.744 [coze-task-3839] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53262 executeId=7638893580417957894 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:14374:2026-05-12 14:49:33.875 [coze-task-3839] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53262 executeId=7638893580417957894 status=RUNNING -aiimage-backend.log.2026-05-12.4:14518:2026-05-12 14:50:03.736 [coze-task-3848] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:14521:2026-05-12 14:50:03.736 [coze-task-3850] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:14525:2026-05-12 14:50:03.737 [coze-task-3850] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53261 -aiimage-backend.log.2026-05-12.4:14526:2026-05-12 14:50:03.738 [coze-task-3848] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53262 executeId=7638893580417957894 lastPolledAt=2026-05-12T14:49:34 -aiimage-backend.log.2026-05-12.4:14852:2026-05-12 14:50:33.738 [coze-task-3857] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:14853:2026-05-12 14:50:33.738 [coze-task-3858] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:14857:2026-05-12 14:50:33.739 [coze-task-3857] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:14862:2026-05-12 14:50:33.748 [coze-task-3858] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53261 executeId=7638893455112732691 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:14868:2026-05-12 14:50:33.895 [coze-task-3858] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53261 executeId=7638893455112732691 status=RUNNING -aiimage-backend.log.2026-05-12.4:15199:2026-05-12 14:51:03.739 [coze-task-3864] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:15204:2026-05-12 14:51:03.739 [coze-task-3867] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:15208:2026-05-12 14:51:03.741 [coze-task-3867] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:15209:2026-05-12 14:51:03.741 [coze-task-3864] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53261 executeId=7638893455112732691 lastPolledAt=2026-05-12T14:50:34 -aiimage-backend.log.2026-05-12.4:15554:2026-05-12 14:51:33.741 [coze-task-3875] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:15557:2026-05-12 14:51:33.741 [coze-task-3877] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:15560:2026-05-12 14:51:33.742 [coze-task-3877] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:15565:2026-05-12 14:51:33.750 [coze-task-3875] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53261 executeId=7638893455112732691 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:15570:2026-05-12 14:51:33.969 [coze-task-3875] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53261 executeId=7638893455112732691 status=RUNNING -aiimage-backend.log.2026-05-12.4:15890:2026-05-12 14:52:03.743 [coze-task-3880] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:15891:2026-05-12 14:52:03.743 [coze-task-3886] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:15896:2026-05-12 14:52:03.744 [coze-task-3880] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53261 -aiimage-backend.log.2026-05-12.4:15902:2026-05-12 14:52:03.752 [coze-task-3886] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53262 executeId=7638893580417957894 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:15911:2026-05-12 14:52:03.981 [coze-task-3886] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53262 executeId=7638893580417957894 status=RUNNING -aiimage-backend.log.2026-05-12.4:16256:2026-05-12 14:52:33.745 [coze-task-3889] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:16257:2026-05-12 14:52:33.745 [coze-task-3892] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:16262:2026-05-12 14:52:33.746 [coze-task-3889] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:16268:2026-05-12 14:52:33.752 [coze-task-3892] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53261 executeId=7638893455112732691 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:16275:2026-05-12 14:52:33.971 [coze-task-3892] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53261 executeId=7638893455112732691 status=RUNNING -aiimage-backend.log.2026-05-12.4:17211:2026-05-12 14:53:03.747 [coze-task-3899] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:17212:2026-05-12 14:53:03.747 [coze-task-3896] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:17218:2026-05-12 14:53:03.748 [coze-task-3896] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53261 -aiimage-backend.log.2026-05-12.4:17220:2026-05-12 14:53:03.754 [coze-task-3899] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53262 executeId=7638893580417957894 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:17234:2026-05-12 14:53:03.946 [coze-task-3899] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53262 executeId=7638893580417957894 status=RUNNING -aiimage-backend.log.2026-05-12.4:17321:2026-05-12 14:53:31.439 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:17322:2026-05-12 14:53:31.444 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:17323:2026-05-12 14:53:31.465 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:17324:2026-05-12 14:53:31.465 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:17327:2026-05-12 14:53:31.753 [coze-task-3903] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=284 -aiimage-backend.log.2026-05-12.4:17356:2026-05-12 14:53:33.749 [coze-task-3910] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:17357:2026-05-12 14:53:33.749 [coze-task-3907] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:17362:2026-05-12 14:53:33.750 [coze-task-3910] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53261 -aiimage-backend.log.2026-05-12.4:17366:2026-05-12 14:53:33.750 [coze-task-3907] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53262 executeId=7638893580417957894 lastPolledAt=2026-05-12T14:53:04 -aiimage-backend.log.2026-05-12.4:17616:2026-05-12 14:54:03.750 [coze-task-3919] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:17617:2026-05-12 14:54:03.750 [coze-task-3917] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:17621:2026-05-12 14:54:03.751 [coze-task-3919] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53261 -aiimage-backend.log.2026-05-12.4:17625:2026-05-12 14:54:03.759 [coze-task-3917] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53262 executeId=7638893580417957894 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:17630:2026-05-12 14:54:03.883 [coze-task-3917] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53262 executeId=7638893580417957894 status=RUNNING -aiimage-backend.log.2026-05-12.4:17753:2026-05-12 14:54:33.752 [coze-task-3929] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:17755:2026-05-12 14:54:33.752 [coze-task-3925] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:17760:2026-05-12 14:54:33.753 [coze-task-3925] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:17765:2026-05-12 14:54:33.761 [coze-task-3929] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53261 executeId=7638893455112732691 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:17770:2026-05-12 14:54:33.909 [coze-task-3929] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53261 executeId=7638893455112732691 status=RUNNING -aiimage-backend.log.2026-05-12.4:18145:2026-05-12 14:55:03.754 [coze-task-3938] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:18148:2026-05-12 14:55:03.754 [coze-task-3933] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:18156:2026-05-12 14:55:03.755 [coze-task-3933] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53261 -aiimage-backend.log.2026-05-12.4:18160:2026-05-12 14:55:03.763 [coze-task-3938] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53262 executeId=7638893580417957894 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:18172:2026-05-12 14:55:03.987 [coze-task-3938] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53262 executeId=7638893580417957894 status=RUNNING -aiimage-backend.log.2026-05-12.4:18292:2026-05-12 14:55:33.755 [coze-task-3943] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:18293:2026-05-12 14:55:33.755 [coze-task-3948] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:18299:2026-05-12 14:55:33.756 [coze-task-3943] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:18302:2026-05-12 14:55:33.763 [coze-task-3948] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53261 executeId=7638893455112732691 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:18308:2026-05-12 14:55:33.972 [coze-task-3948] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53261 executeId=7638893455112732691 status=RUNNING -aiimage-backend.log.2026-05-12.4:18435:2026-05-12 14:56:03.756 [coze-task-3956] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:18441:2026-05-12 14:56:03.756 [coze-task-3960] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:18445:2026-05-12 14:56:03.757 [coze-task-3960] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:18449:2026-05-12 14:56:03.757 [coze-task-3956] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53261 executeId=7638893455112732691 lastPolledAt=2026-05-12T14:55:34 -aiimage-backend.log.2026-05-12.4:18576:2026-05-12 14:56:33.758 [coze-task-3972] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:18579:2026-05-12 14:56:33.758 [coze-task-3969] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:18585:2026-05-12 14:56:33.759 [coze-task-3972] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:18591:2026-05-12 14:56:33.767 [coze-task-3969] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53261 executeId=7638893455112732691 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:18594:2026-05-12 14:56:33.874 [coze-task-3969] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53261 executeId=7638893455112732691 status=RUNNING -aiimage-backend.log.2026-05-12.4:18837:2026-05-12 14:57:03.759 [coze-task-3975] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:18840:2026-05-12 14:57:03.759 [coze-task-3982] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:18849:2026-05-12 14:57:03.760 [coze-task-3982] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:18851:2026-05-12 14:57:03.760 [coze-task-3975] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53261 executeId=7638893455112732691 lastPolledAt=2026-05-12T14:56:34 -aiimage-backend.log.2026-05-12.4:18974:2026-05-12 14:57:33.761 [coze-task-3988] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:18976:2026-05-12 14:57:33.761 [coze-task-3992] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:18983:2026-05-12 14:57:33.762 [coze-task-3988] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53261 -aiimage-backend.log.2026-05-12.4:18988:2026-05-12 14:57:33.769 [coze-task-3992] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53262 executeId=7638893580417957894 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:18991:2026-05-12 14:57:33.901 [coze-task-3992] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53262 executeId=7638893580417957894 status=RUNNING -aiimage-backend.log.2026-05-12.4:19104:2026-05-12 14:58:03.763 [coze-task-3995] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:19108:2026-05-12 14:58:03.763 [coze-task-4000] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:19117:2026-05-12 14:58:03.764 [coze-task-4000] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53261 -aiimage-backend.log.2026-05-12.4:19119:2026-05-12 14:58:03.764 [coze-task-3995] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53262 executeId=7638893580417957894 lastPolledAt=2026-05-12T14:57:34 -aiimage-backend.log.2026-05-12.4:19242:2026-05-12 14:58:33.764 [coze-task-4008] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:19245:2026-05-12 14:58:33.764 [coze-task-4011] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:19252:2026-05-12 14:58:33.766 [coze-task-4011] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53261 -aiimage-backend.log.2026-05-12.4:19258:2026-05-12 14:58:33.772 [coze-task-4008] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53262 executeId=7638893580417957894 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:19264:2026-05-12 14:58:33.882 [coze-task-4008] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53262 executeId=7638893580417957894 status=RUNNING -aiimage-backend.log.2026-05-12.4:19375:2026-05-12 14:59:03.766 [coze-task-4016] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:19383:2026-05-12 14:59:03.766 [coze-task-4022] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:19386:2026-05-12 14:59:03.768 [coze-task-4022] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53261 -aiimage-backend.log.2026-05-12.4:19390:2026-05-12 14:59:03.768 [coze-task-4016] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53262 executeId=7638893580417957894 lastPolledAt=2026-05-12T14:58:34 -aiimage-backend.log.2026-05-12.4:19509:2026-05-12 14:59:33.768 [coze-task-4032] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:19517:2026-05-12 14:59:33.768 [coze-task-4028] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:19522:2026-05-12 14:59:33.769 [coze-task-4028] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:19526:2026-05-12 14:59:33.775 [coze-task-4032] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53261 executeId=7638893455112732691 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:19670:2026-05-12 15:00:03.770 [coze-task-4036] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:19672:2026-05-12 15:00:03.770 [coze-task-4041] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:19680:2026-05-12 15:00:03.771 [coze-task-4036] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53261 -aiimage-backend.log.2026-05-12.4:19682:2026-05-12 15:00:03.771 [coze-task-4041] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:20024:2026-05-12 15:00:33.771 [coze-task-4051] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53261 taskId=8095 executeId=7638893455112732691 -aiimage-backend.log.2026-05-12.4:20025:2026-05-12 15:00:33.771 [coze-task-4050] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53273 taskId=8095 executeId=7638896417260339206 -aiimage-backend.log.2026-05-12.4:20032:2026-05-12 15:00:33.771 [coze-task-4055] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:20033:2026-05-12 15:00:33.772 [coze-task-4051] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53261 -aiimage-backend.log.2026-05-12.4:20034:2026-05-12 15:00:33.772 [coze-task-4050] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53273 -aiimage-backend.log.2026-05-12.4:20039:2026-05-12 15:00:33.773 [coze-task-4055] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:20055:2026-05-12 15:00:34.522 [coze-task-4032] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze split retry submitted taskId=8095 stateId=53261 chunk=null batch=1/2 parts=2 retry=1/5 failure=Coze async workflow poll timeout -aiimage-backend.log.2026-05-12.4:20056:2026-05-12 15:00:34.683 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:20057:2026-05-12 15:00:34.688 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:20058:2026-05-12 15:00:34.709 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:20059:2026-05-12 15:00:34.709 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:20064:2026-05-12 15:00:34.919 [coze-task-4058] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=207 -aiimage-backend.log.2026-05-12.4:20065:2026-05-12 15:00:35.116 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] duplicate chunk ignored taskId=8095 scope=8095 chunk=2919 -aiimage-backend.log.2026-05-12.4:20066:2026-05-12 15:00:35.118 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:20067:2026-05-12 15:00:35.121 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:20068:2026-05-12 15:00:35.140 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:20069:2026-05-12 15:00:35.140 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:20076:2026-05-12 15:00:35.362 [coze-task-4059] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=219 -aiimage-backend.log.2026-05-12.4:20388:2026-05-12 15:01:03.773 [coze-task-4061] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53274 taskId=8095 executeId=7638896544385744911 -aiimage-backend.log.2026-05-12.4:20391:2026-05-12 15:01:03.773 [coze-task-4069] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:20394:2026-05-12 15:01:03.773 [coze-task-4067] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53273 taskId=8095 executeId=7638896417260339206 -aiimage-backend.log.2026-05-12.4:20399:2026-05-12 15:01:03.775 [coze-task-4061] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53274 -aiimage-backend.log.2026-05-12.4:20400:2026-05-12 15:01:03.775 [coze-task-4069] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:20409:2026-05-12 15:01:03.783 [coze-task-4067] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53273 executeId=7638896417260339206 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:20413:2026-05-12 15:01:03.936 [coze-task-4067] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53273 executeId=7638896417260339206 status=RUNNING -aiimage-backend.log.2026-05-12.4:20756:2026-05-12 15:01:33.775 [coze-task-4075] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53273 taskId=8095 executeId=7638896417260339206 -aiimage-backend.log.2026-05-12.4:20757:2026-05-12 15:01:33.775 [coze-task-4081] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:20759:2026-05-12 15:01:33.775 [coze-task-4076] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53274 taskId=8095 executeId=7638896544385744911 -aiimage-backend.log.2026-05-12.4:20762:2026-05-12 15:01:33.776 [coze-task-4075] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53273 -aiimage-backend.log.2026-05-12.4:20767:2026-05-12 15:01:33.777 [coze-task-4076] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53274 -aiimage-backend.log.2026-05-12.4:20771:2026-05-12 15:01:33.784 [coze-task-4081] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53262 executeId=7638893580417957894 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:21855:2026-05-12 15:02:03.777 [coze-task-4085] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:21857:2026-05-12 15:02:03.777 [coze-task-4093] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53274 taskId=8095 executeId=7638896544385744911 -aiimage-backend.log.2026-05-12.4:21864:2026-05-12 15:02:03.777 [coze-task-4092] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53273 taskId=8095 executeId=7638896417260339206 -aiimage-backend.log.2026-05-12.4:21865:2026-05-12 15:02:03.778 [coze-task-4085] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:21867:2026-05-12 15:02:03.778 [coze-task-4093] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53274 -aiimage-backend.log.2026-05-12.4:21875:2026-05-12 15:02:03.778 [coze-task-4092] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53273 -aiimage-backend.log.2026-05-12.4:22025:2026-05-12 15:02:33.779 [coze-task-4099] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:22027:2026-05-12 15:02:33.779 [coze-task-4107] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53274 taskId=8095 executeId=7638896544385744911 -aiimage-backend.log.2026-05-12.4:22028:2026-05-12 15:02:33.779 [coze-task-4106] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53273 taskId=8095 executeId=7638896417260339206 -aiimage-backend.log.2026-05-12.4:22033:2026-05-12 15:02:33.780 [coze-task-4107] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53274 -aiimage-backend.log.2026-05-12.4:22037:2026-05-12 15:02:33.780 [coze-task-4106] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53273 -aiimage-backend.log.2026-05-12.4:22039:2026-05-12 15:02:33.781 [coze-task-4099] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:22167:2026-05-12 15:03:03.781 [coze-task-4120] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53273 taskId=8095 executeId=7638896417260339206 -aiimage-backend.log.2026-05-12.4:22169:2026-05-12 15:03:03.781 [coze-task-4121] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53274 taskId=8095 executeId=7638896544385744911 -aiimage-backend.log.2026-05-12.4:22171:2026-05-12 15:03:03.781 [coze-task-4116] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53262 taskId=8095 executeId=7638893580417957894 -aiimage-backend.log.2026-05-12.4:22175:2026-05-12 15:03:03.781 [coze-task-4110] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53278 taskId=8095 executeId=7638897179176157218 -aiimage-backend.log.2026-05-12.4:22176:2026-05-12 15:03:03.782 [coze-task-4121] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53274 -aiimage-backend.log.2026-05-12.4:22178:2026-05-12 15:03:03.782 [coze-task-4120] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53273 -aiimage-backend.log.2026-05-12.4:22179:2026-05-12 15:03:03.782 [coze-task-4116] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53262 -aiimage-backend.log.2026-05-12.4:22183:2026-05-12 15:03:03.782 [coze-task-4110] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53278 -aiimage-backend.log.2026-05-12.4:22276:2026-05-12 15:03:31.556 [coze-task-4081] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze split retry submitted taskId=8095 stateId=53262 chunk=null batch=2/2 parts=2 retry=1/5 failure=Coze async workflow poll timeout -aiimage-backend.log.2026-05-12.4:22305:2026-05-12 15:03:33.783 [coze-task-4124] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53279 taskId=8095 executeId=7638897305106317346 -aiimage-backend.log.2026-05-12.4:22306:2026-05-12 15:03:33.783 [coze-task-4127] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53278 taskId=8095 executeId=7638897179176157218 -aiimage-backend.log.2026-05-12.4:22312:2026-05-12 15:03:33.783 [coze-task-4136] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53274 taskId=8095 executeId=7638896544385744911 -aiimage-backend.log.2026-05-12.4:22318:2026-05-12 15:03:33.783 [coze-task-4135] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53273 taskId=8095 executeId=7638896417260339206 -aiimage-backend.log.2026-05-12.4:22321:2026-05-12 15:03:33.784 [coze-task-4127] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53278 -aiimage-backend.log.2026-05-12.4:22322:2026-05-12 15:03:33.784 [coze-task-4124] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53279 -aiimage-backend.log.2026-05-12.4:22326:2026-05-12 15:03:33.784 [coze-task-4135] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53273 -aiimage-backend.log.2026-05-12.4:22331:2026-05-12 15:03:33.793 [coze-task-4136] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53274 executeId=7638896544385744911 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:22340:2026-05-12 15:03:33.924 [coze-task-4136] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53274 executeId=7638896544385744911 status=RUNNING -aiimage-backend.log.2026-05-12.4:22451:2026-05-12 15:04:03.785 [coze-task-4141] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53274 taskId=8095 executeId=7638896544385744911 -aiimage-backend.log.2026-05-12.4:22452:2026-05-12 15:04:03.785 [coze-task-4143] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53279 taskId=8095 executeId=7638897305106317346 -aiimage-backend.log.2026-05-12.4:22456:2026-05-12 15:04:03.785 [coze-task-4146] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53278 taskId=8095 executeId=7638897179176157218 -aiimage-backend.log.2026-05-12.4:22462:2026-05-12 15:04:03.786 [coze-task-4151] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53273 taskId=8095 executeId=7638896417260339206 -aiimage-backend.log.2026-05-12.4:22465:2026-05-12 15:04:03.786 [coze-task-4143] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53279 -aiimage-backend.log.2026-05-12.4:22466:2026-05-12 15:04:03.786 [coze-task-4141] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53274 -aiimage-backend.log.2026-05-12.4:22469:2026-05-12 15:04:03.787 [coze-task-4151] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53273 -aiimage-backend.log.2026-05-12.4:22474:2026-05-12 15:04:03.792 [coze-task-4146] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53278 executeId=7638897179176157218 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:22481:2026-05-12 15:04:03.918 [coze-task-4146] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53278 executeId=7638897179176157218 status=RUNNING -aiimage-backend.log.2026-05-12.4:22596:2026-05-12 15:04:33.787 [coze-task-4154] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53278 taskId=8095 executeId=7638897179176157218 -aiimage-backend.log.2026-05-12.4:22604:2026-05-12 15:04:33.787 [coze-task-4158] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53274 taskId=8095 executeId=7638896544385744911 -aiimage-backend.log.2026-05-12.4:22605:2026-05-12 15:04:33.787 [coze-task-4160] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53279 taskId=8095 executeId=7638897305106317346 -aiimage-backend.log.2026-05-12.4:22608:2026-05-12 15:04:33.787 [coze-task-4165] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53273 taskId=8095 executeId=7638896417260339206 -aiimage-backend.log.2026-05-12.4:22612:2026-05-12 15:04:33.789 [coze-task-4160] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53279 -aiimage-backend.log.2026-05-12.4:22613:2026-05-12 15:04:33.789 [coze-task-4158] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53274 -aiimage-backend.log.2026-05-12.4:22614:2026-05-12 15:04:33.789 [coze-task-4165] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53273 -aiimage-backend.log.2026-05-12.4:22617:2026-05-12 15:04:33.789 [coze-task-4154] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53278 executeId=7638897179176157218 lastPolledAt=2026-05-12T15:04:04 -aiimage-backend.log.2026-05-12.4:22747:2026-05-12 15:05:03.789 [coze-task-4177] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53279 taskId=8095 executeId=7638897305106317346 -aiimage-backend.log.2026-05-12.4:22748:2026-05-12 15:05:03.789 [coze-task-4180] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53273 taskId=8095 executeId=7638896417260339206 -aiimage-backend.log.2026-05-12.4:22756:2026-05-12 15:05:03.789 [coze-task-4172] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53278 taskId=8095 executeId=7638897179176157218 -aiimage-backend.log.2026-05-12.4:22759:2026-05-12 15:05:03.789 [coze-task-4175] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53274 taskId=8095 executeId=7638896544385744911 -aiimage-backend.log.2026-05-12.4:22760:2026-05-12 15:05:03.790 [coze-task-4177] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53279 -aiimage-backend.log.2026-05-12.4:22766:2026-05-12 15:05:03.791 [coze-task-4175] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53274 -aiimage-backend.log.2026-05-12.4:22768:2026-05-12 15:05:03.791 [coze-task-4172] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53278 -aiimage-backend.log.2026-05-12.4:22772:2026-05-12 15:05:03.798 [coze-task-4180] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53273 executeId=7638896417260339206 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:22776:2026-05-12 15:05:03.939 [coze-task-4180] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53273 executeId=7638896417260339206 status=RUNNING -aiimage-backend.log.2026-05-12.4:22914:2026-05-12 15:05:33.791 [coze-task-4181] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53273 taskId=8095 executeId=7638896417260339206 -aiimage-backend.log.2026-05-12.4:22922:2026-05-12 15:05:33.791 [coze-task-4189] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53278 taskId=8095 executeId=7638897179176157218 -aiimage-backend.log.2026-05-12.4:22924:2026-05-12 15:05:33.791 [coze-task-4191] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53274 taskId=8095 executeId=7638896544385744911 -aiimage-backend.log.2026-05-12.4:22926:2026-05-12 15:05:33.791 [coze-task-4193] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53279 taskId=8095 executeId=7638897305106317346 -aiimage-backend.log.2026-05-12.4:22930:2026-05-12 15:05:33.792 [coze-task-4189] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53278 -aiimage-backend.log.2026-05-12.4:22932:2026-05-12 15:05:33.792 [coze-task-4193] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53279 -aiimage-backend.log.2026-05-12.4:22936:2026-05-12 15:05:33.792 [coze-task-4191] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53274 -aiimage-backend.log.2026-05-12.4:22938:2026-05-12 15:05:33.792 [coze-task-4181] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53273 executeId=7638896417260339206 lastPolledAt=2026-05-12T15:05:04 -aiimage-backend.log.2026-05-12.4:23064:2026-05-12 15:06:03.792 [coze-task-4197] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53273 taskId=8095 executeId=7638896417260339206 -aiimage-backend.log.2026-05-12.4:23069:2026-05-12 15:06:03.792 [coze-task-4202] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53278 taskId=8095 executeId=7638897179176157218 -aiimage-backend.log.2026-05-12.4:23071:2026-05-12 15:06:03.793 [coze-task-4204] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53274 taskId=8095 executeId=7638896544385744911 -aiimage-backend.log.2026-05-12.4:23072:2026-05-12 15:06:03.793 [coze-task-4206] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53279 taskId=8095 executeId=7638897305106317346 -aiimage-backend.log.2026-05-12.4:23077:2026-05-12 15:06:03.794 [coze-task-4202] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53278 -aiimage-backend.log.2026-05-12.4:23078:2026-05-12 15:06:03.794 [coze-task-4204] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53274 -aiimage-backend.log.2026-05-12.4:23079:2026-05-12 15:06:03.794 [coze-task-4206] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53279 -aiimage-backend.log.2026-05-12.4:23086:2026-05-12 15:06:03.802 [coze-task-4197] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53273 executeId=7638896417260339206 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:23100:2026-05-12 15:06:04.249 [coze-task-4197] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53273 executeId=7638896417260339206 status=DONE batchRows=25 mergedRows=25 failure=- -aiimage-backend.log.2026-05-12.4:23221:2026-05-12 15:06:33.795 [coze-task-4215] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53274 taskId=8095 executeId=7638896544385744911 -aiimage-backend.log.2026-05-12.4:23223:2026-05-12 15:06:33.795 [coze-task-4217] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53279 taskId=8095 executeId=7638897305106317346 -aiimage-backend.log.2026-05-12.4:23225:2026-05-12 15:06:33.795 [coze-task-4214] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53278 taskId=8095 executeId=7638897179176157218 -aiimage-backend.log.2026-05-12.4:23228:2026-05-12 15:06:33.796 [coze-task-4217] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53279 -aiimage-backend.log.2026-05-12.4:23231:2026-05-12 15:06:33.796 [coze-task-4214] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53278 -aiimage-backend.log.2026-05-12.4:23234:2026-05-12 15:06:33.802 [coze-task-4215] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53274 executeId=7638896544385744911 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:23240:2026-05-12 15:06:35.393 [coze-task-4215] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53274 executeId=7638896544385744911 status=DONE batchRows=25 mergedRows=25 failure=- -aiimage-backend.log.2026-05-12.4:23279:2026-05-12 15:06:51.137 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:23280:2026-05-12 15:06:51.142 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:23281:2026-05-12 15:06:51.162 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:23282:2026-05-12 15:06:51.162 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:23284:2026-05-12 15:06:51.450 [coze-task-4220] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=284 -aiimage-backend.log.2026-05-12.4:23357:2026-05-12 15:07:03.796 [coze-task-4224] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53278 taskId=8095 executeId=7638897179176157218 -aiimage-backend.log.2026-05-12.4:23361:2026-05-12 15:07:03.796 [coze-task-4226] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53279 taskId=8095 executeId=7638897305106317346 -aiimage-backend.log.2026-05-12.4:23363:2026-05-12 15:07:03.798 [coze-task-4226] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53279 -aiimage-backend.log.2026-05-12.4:23367:2026-05-12 15:07:03.805 [coze-task-4224] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53278 executeId=7638897179176157218 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:23378:2026-05-12 15:07:04.868 [coze-task-4224] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53278 executeId=7638897179176157218 status=DONE batchRows=25 mergedRows=25 failure=- -aiimage-backend.log.2026-05-12.4:23490:2026-05-12 15:07:33.798 [coze-task-4233] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53279 taskId=8095 executeId=7638897305106317346 -aiimage-backend.log.2026-05-12.4:23498:2026-05-12 15:07:33.805 [coze-task-4233] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53279 executeId=7638897305106317346 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:23503:2026-05-12 15:07:35.104 [coze-task-4233] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53279 executeId=7638897305106317346 status=DONE batchRows=25 mergedRows=25 failure=- -aiimage-backend.log.2026-05-12.4:26280:2026-05-12 15:13:05.580 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:26281:2026-05-12 15:13:05.585 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:26282:2026-05-12 15:13:05.611 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:26283:2026-05-12 15:13:05.611 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:26472:2026-05-12 15:14:01.858 [coze-task-4260] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/2 executeId=7638900007257931811 -aiimage-backend.log.2026-05-12.4:26499:2026-05-12 15:14:03.819 [coze-task-4264] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53289 taskId=8095 executeId=7638900007257931811 -aiimage-backend.log.2026-05-12.4:26502:2026-05-12 15:14:03.820 [coze-task-4264] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53289 -aiimage-backend.log.2026-05-12.4:26584:2026-05-12 15:14:32.122 [coze-task-4260] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=2/2 executeId=7638900142922153990 -aiimage-backend.log.2026-05-12.4:26585:2026-05-12 15:14:32.129 [coze-task-4260] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=86514 -aiimage-backend.log.2026-05-12.4:26610:2026-05-12 15:14:33.821 [coze-task-4267] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53290 taskId=8095 executeId=7638900142922153990 -aiimage-backend.log.2026-05-12.4:26611:2026-05-12 15:14:33.821 [coze-task-4268] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53289 taskId=8095 executeId=7638900007257931811 -aiimage-backend.log.2026-05-12.4:26613:2026-05-12 15:14:33.822 [coze-task-4267] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53290 -aiimage-backend.log.2026-05-12.4:26614:2026-05-12 15:14:33.827 [coze-task-4268] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53289 executeId=7638900007257931811 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:26617:2026-05-12 15:14:33.970 [coze-task-4268] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53289 executeId=7638900007257931811 status=RUNNING -aiimage-backend.log.2026-05-12.4:26721:2026-05-12 15:15:03.822 [coze-task-4270] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53289 taskId=8095 executeId=7638900007257931811 -aiimage-backend.log.2026-05-12.4:26722:2026-05-12 15:15:03.822 [coze-task-4271] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53290 taskId=8095 executeId=7638900142922153990 -aiimage-backend.log.2026-05-12.4:26723:2026-05-12 15:15:03.824 [coze-task-4270] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53289 -aiimage-backend.log.2026-05-12.4:26724:2026-05-12 15:15:03.830 [coze-task-4271] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53290 executeId=7638900142922153990 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:26726:2026-05-12 15:15:03.987 [coze-task-4271] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53290 executeId=7638900142922153990 status=RUNNING -aiimage-backend.log.2026-05-12.4:26834:2026-05-12 15:15:33.824 [coze-task-4273] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53290 taskId=8095 executeId=7638900142922153990 -aiimage-backend.log.2026-05-12.4:26835:2026-05-12 15:15:33.824 [coze-task-4274] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53289 taskId=8095 executeId=7638900007257931811 -aiimage-backend.log.2026-05-12.4:26836:2026-05-12 15:15:33.825 [coze-task-4273] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53290 -aiimage-backend.log.2026-05-12.4:26837:2026-05-12 15:15:33.831 [coze-task-4274] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53289 executeId=7638900007257931811 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:26840:2026-05-12 15:15:34.340 [coze-task-4274] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53289 executeId=7638900007257931811 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.4:26944:2026-05-12 15:16:03.825 [coze-task-4276] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53290 taskId=8095 executeId=7638900142922153990 -aiimage-backend.log.2026-05-12.4:26945:2026-05-12 15:16:03.833 [coze-task-4276] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53290 executeId=7638900142922153990 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:26951:2026-05-12 15:16:04.566 [coze-task-4276] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53290 executeId=7638900142922153990 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.4:27931:2026-05-12 15:19:35.393 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:27932:2026-05-12 15:19:35.398 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:27933:2026-05-12 15:19:35.417 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:27934:2026-05-12 15:19:35.418 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:27940:2026-05-12 15:19:36.979 [coze-task-4281] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=27 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.4:27941:2026-05-12 15:19:36.990 [coze-task-4281] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=1569 -aiimage-backend.log.2026-05-12.4:30817:2026-05-12 15:26:09.974 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:30818:2026-05-12 15:26:09.979 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:30819:2026-05-12 15:26:09.998 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:30820:2026-05-12 15:26:09.998 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:30823:2026-05-12 15:26:11.283 [coze-task-4293] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=48 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.4:30824:2026-05-12 15:26:11.294 [coze-task-4293] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=1293 -aiimage-backend.log.2026-05-12.4:34234:2026-05-12 15:32:43.061 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:34235:2026-05-12 15:32:43.066 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:34236:2026-05-12 15:32:43.086 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:34237:2026-05-12 15:32:43.086 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:35140:2026-05-12 15:33:14.911 [coze-task-4304] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638904966128320554 -aiimage-backend.log.2026-05-12.4:35141:2026-05-12 15:33:14.921 [coze-task-4304] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31832 -aiimage-backend.log.2026-05-12.4:35212:2026-05-12 15:33:33.882 [coze-task-4306] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53294 taskId=8095 executeId=7638904966128320554 -aiimage-backend.log.2026-05-12.4:35213:2026-05-12 15:33:33.889 [coze-task-4306] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53294 executeId=7638904966128320554 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:35215:2026-05-12 15:33:34.105 [coze-task-4306] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53294 executeId=7638904966128320554 status=RUNNING -aiimage-backend.log.2026-05-12.4:35319:2026-05-12 15:34:03.884 [coze-task-4307] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53294 taskId=8095 executeId=7638904966128320554 -aiimage-backend.log.2026-05-12.4:35320:2026-05-12 15:34:03.885 [coze-task-4307] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53294 executeId=7638904966128320554 lastPolledAt=2026-05-12T15:33:34 -aiimage-backend.log.2026-05-12.4:35422:2026-05-12 15:34:33.885 [coze-task-4308] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53294 taskId=8095 executeId=7638904966128320554 -aiimage-backend.log.2026-05-12.4:35423:2026-05-12 15:34:33.893 [coze-task-4308] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53294 executeId=7638904966128320554 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:35426:2026-05-12 15:34:34.440 [coze-task-4308] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53294 executeId=7638904966128320554 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.4:36499:2026-05-12 15:39:04.724 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:36500:2026-05-12 15:39:04.731 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:36501:2026-05-12 15:39:04.755 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:36502:2026-05-12 15:39:04.755 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:36506:2026-05-12 15:39:06.357 [coze-task-4312] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=40 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.4:36507:2026-05-12 15:39:06.367 [coze-task-4312] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=1609 -aiimage-backend.log.2026-05-12.4:39443:2026-05-12 15:45:24.155 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:39444:2026-05-12 15:45:24.160 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:39445:2026-05-12 15:45:24.179 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:39446:2026-05-12 15:45:24.179 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:39566:2026-05-12 15:45:55.991 [coze-task-4317] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:39567:2026-05-12 15:45:56.000 [coze-task-4317] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31817 -aiimage-backend.log.2026-05-12.4:39609:2026-05-12 15:46:03.919 [coze-task-4318] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:39610:2026-05-12 15:46:03.926 [coze-task-4318] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53298 executeId=7638908231767883786 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:39612:2026-05-12 15:46:04.065 [coze-task-4318] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53298 executeId=7638908231767883786 status=RUNNING -aiimage-backend.log.2026-05-12.4:39723:2026-05-12 15:46:33.921 [coze-task-4319] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:39724:2026-05-12 15:46:33.922 [coze-task-4319] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53298 executeId=7638908231767883786 lastPolledAt=2026-05-12T15:46:04 -aiimage-backend.log.2026-05-12.4:39835:2026-05-12 15:47:03.922 [coze-task-4320] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:39836:2026-05-12 15:47:03.929 [coze-task-4320] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53298 executeId=7638908231767883786 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:39838:2026-05-12 15:47:04.080 [coze-task-4320] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53298 executeId=7638908231767883786 status=RUNNING -aiimage-backend.log.2026-05-12.4:39955:2026-05-12 15:47:33.923 [coze-task-4321] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:39956:2026-05-12 15:47:33.925 [coze-task-4321] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53298 executeId=7638908231767883786 lastPolledAt=2026-05-12T15:47:04 -aiimage-backend.log.2026-05-12.4:40066:2026-05-12 15:48:03.925 [coze-task-4322] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:40067:2026-05-12 15:48:03.931 [coze-task-4322] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53298 executeId=7638908231767883786 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:40069:2026-05-12 15:48:04.068 [coze-task-4322] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53298 executeId=7638908231767883786 status=RUNNING -aiimage-backend.log.2026-05-12.4:40185:2026-05-12 15:48:33.926 [coze-task-4324] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:40186:2026-05-12 15:48:33.928 [coze-task-4324] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53298 executeId=7638908231767883786 lastPolledAt=2026-05-12T15:48:04 -aiimage-backend.log.2026-05-12.4:40296:2026-05-12 15:49:03.928 [coze-task-4326] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:40298:2026-05-12 15:49:03.936 [coze-task-4326] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53298 executeId=7638908231767883786 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:40304:2026-05-12 15:49:04.083 [coze-task-4326] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53298 executeId=7638908231767883786 status=RUNNING -aiimage-backend.log.2026-05-12.4:40430:2026-05-12 15:49:33.929 [coze-task-4328] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:40432:2026-05-12 15:49:33.931 [coze-task-4328] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53298 executeId=7638908231767883786 lastPolledAt=2026-05-12T15:49:04 -aiimage-backend.log.2026-05-12.4:40577:2026-05-12 15:50:03.931 [coze-task-4330] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:40579:2026-05-12 15:50:03.938 [coze-task-4330] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53298 executeId=7638908231767883786 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:40582:2026-05-12 15:50:04.075 [coze-task-4330] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53298 executeId=7638908231767883786 status=RUNNING -aiimage-backend.log.2026-05-12.4:40940:2026-05-12 15:50:33.933 [coze-task-4332] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:40943:2026-05-12 15:50:33.935 [coze-task-4332] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53298 executeId=7638908231767883786 lastPolledAt=2026-05-12T15:50:04 -aiimage-backend.log.2026-05-12.4:41292:2026-05-12 15:51:03.934 [coze-task-4335] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:41294:2026-05-12 15:51:03.941 [coze-task-4335] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53298 executeId=7638908231767883786 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:41297:2026-05-12 15:51:04.078 [coze-task-4335] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53298 executeId=7638908231767883786 status=RUNNING -aiimage-backend.log.2026-05-12.4:42121:2026-05-12 15:51:33.935 [coze-task-4337] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:42124:2026-05-12 15:51:33.937 [coze-task-4337] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53298 executeId=7638908231767883786 lastPolledAt=2026-05-12T15:51:04 -aiimage-backend.log.2026-05-12.4:42437:2026-05-12 15:51:41.969 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:42438:2026-05-12 15:51:41.974 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:42439:2026-05-12 15:51:41.993 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:42440:2026-05-12 15:51:41.993 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:42442:2026-05-12 15:51:42.318 [coze-task-4339] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=321 -aiimage-backend.log.2026-05-12.4:42552:2026-05-12 15:52:03.937 [coze-task-4340] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:42553:2026-05-12 15:52:03.944 [coze-task-4340] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53298 executeId=7638908231767883786 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:42560:2026-05-12 15:52:04.116 [coze-task-4340] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53298 executeId=7638908231767883786 status=RUNNING -aiimage-backend.log.2026-05-12.4:42686:2026-05-12 15:52:33.939 [coze-task-4343] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:42687:2026-05-12 15:52:33.940 [coze-task-4343] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53298 executeId=7638908231767883786 lastPolledAt=2026-05-12T15:52:04 -aiimage-backend.log.2026-05-12.4:42806:2026-05-12 15:53:03.941 [coze-task-4345] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:42807:2026-05-12 15:53:03.948 [coze-task-4345] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53298 executeId=7638908231767883786 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:42810:2026-05-12 15:53:04.075 [coze-task-4345] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53298 executeId=7638908231767883786 status=RUNNING -aiimage-backend.log.2026-05-12.4:42942:2026-05-12 15:53:33.942 [coze-task-4347] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:42944:2026-05-12 15:53:33.944 [coze-task-4347] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53298 executeId=7638908231767883786 lastPolledAt=2026-05-12T15:53:04 -aiimage-backend.log.2026-05-12.4:43063:2026-05-12 15:54:03.944 [coze-task-4349] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:43066:2026-05-12 15:54:03.952 [coze-task-4349] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53298 executeId=7638908231767883786 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:43069:2026-05-12 15:54:04.111 [coze-task-4349] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53298 executeId=7638908231767883786 status=RUNNING -aiimage-backend.log.2026-05-12.4:43214:2026-05-12 15:54:33.946 [coze-task-4354] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:43216:2026-05-12 15:54:33.948 [coze-task-4354] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53298 executeId=7638908231767883786 lastPolledAt=2026-05-12T15:54:04 -aiimage-backend.log.2026-05-12.4:43337:2026-05-12 15:55:03.948 [coze-task-4356] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:43338:2026-05-12 15:55:03.955 [coze-task-4356] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53298 executeId=7638908231767883786 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:43341:2026-05-12 15:55:04.189 [coze-task-4356] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53298 executeId=7638908231767883786 status=RUNNING -aiimage-backend.log.2026-05-12.4:43472:2026-05-12 15:55:33.949 [coze-task-4358] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:43475:2026-05-12 15:55:33.951 [coze-task-4358] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53298 executeId=7638908231767883786 lastPolledAt=2026-05-12T15:55:04 -aiimage-backend.log.2026-05-12.4:43638:2026-05-12 15:56:03.951 [coze-task-4362] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:43641:2026-05-12 15:56:03.959 [coze-task-4362] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53298 executeId=7638908231767883786 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:43773:2026-05-12 15:56:33.953 [coze-task-4364] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:43774:2026-05-12 15:56:33.954 [coze-task-4364] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53298 -aiimage-backend.log.2026-05-12.4:43943:2026-05-12 15:57:03.954 [coze-task-4367] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:43945:2026-05-12 15:57:03.954 [coze-task-4368] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53298 taskId=8095 executeId=7638908231767883786 -aiimage-backend.log.2026-05-12.4:43946:2026-05-12 15:57:03.956 [coze-task-4368] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53298 -aiimage-backend.log.2026-05-12.4:43947:2026-05-12 15:57:03.956 [coze-task-4367] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53310 -aiimage-backend.log.2026-05-12.4:43951:2026-05-12 15:57:04.613 [coze-task-4362] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze split retry submitted taskId=8095 stateId=53298 chunk=null batch=1/1 parts=2 retry=1/5 failure=Coze async workflow poll timeout -aiimage-backend.log.2026-05-12.4:44076:2026-05-12 15:57:33.956 [coze-task-4370] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:44078:2026-05-12 15:57:33.956 [coze-task-4372] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:44079:2026-05-12 15:57:33.957 [coze-task-4372] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53310 -aiimage-backend.log.2026-05-12.4:44081:2026-05-12 15:57:33.962 [coze-task-4370] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53313 executeId=7638911109181325346 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:44084:2026-05-12 15:57:34.094 [coze-task-4370] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53313 executeId=7638911109181325346 status=RUNNING -aiimage-backend.log.2026-05-12.4:44179:2026-05-12 15:58:00.453 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:44180:2026-05-12 15:58:00.458 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:44181:2026-05-12 15:58:00.476 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:44182:2026-05-12 15:58:00.476 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:44184:2026-05-12 15:58:00.693 [coze-task-4373] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=213 -aiimage-backend.log.2026-05-12.4:44213:2026-05-12 15:58:03.958 [coze-task-4374] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:44214:2026-05-12 15:58:03.958 [coze-task-4376] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:44215:2026-05-12 15:58:03.959 [coze-task-4376] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53310 -aiimage-backend.log.2026-05-12.4:44216:2026-05-12 15:58:03.959 [coze-task-4374] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53313 executeId=7638911109181325346 lastPolledAt=2026-05-12T15:57:34 -aiimage-backend.log.2026-05-12.4:44347:2026-05-12 15:58:33.959 [coze-task-4378] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:44348:2026-05-12 15:58:33.959 [coze-task-4379] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:44349:2026-05-12 15:58:33.960 [coze-task-4378] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:44351:2026-05-12 15:58:33.966 [coze-task-4379] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53310 executeId=7638910982386958363 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:44353:2026-05-12 15:58:34.105 [coze-task-4379] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53310 executeId=7638910982386958363 status=RUNNING -aiimage-backend.log.2026-05-12.4:44493:2026-05-12 15:59:03.961 [coze-task-4382] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:44495:2026-05-12 15:59:03.961 [coze-task-4384] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:44496:2026-05-12 15:59:03.962 [coze-task-4384] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:44497:2026-05-12 15:59:03.962 [coze-task-4382] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53310 executeId=7638910982386958363 lastPolledAt=2026-05-12T15:58:34 -aiimage-backend.log.2026-05-12.4:44626:2026-05-12 15:59:33.962 [coze-task-4386] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:44627:2026-05-12 15:59:33.962 [coze-task-4387] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:44629:2026-05-12 15:59:33.964 [coze-task-4386] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53310 -aiimage-backend.log.2026-05-12.4:44630:2026-05-12 15:59:33.969 [coze-task-4387] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53313 executeId=7638911109181325346 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:44632:2026-05-12 15:59:34.205 [coze-task-4387] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53313 executeId=7638911109181325346 status=RUNNING -aiimage-backend.log.2026-05-12.4:44794:2026-05-12 16:00:03.964 [coze-task-4389] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:44796:2026-05-12 16:00:03.964 [coze-task-4392] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:44799:2026-05-12 16:00:03.965 [coze-task-4392] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53310 -aiimage-backend.log.2026-05-12.4:44801:2026-05-12 16:00:03.965 [coze-task-4389] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53313 executeId=7638911109181325346 lastPolledAt=2026-05-12T15:59:34 -aiimage-backend.log.2026-05-12.4:45168:2026-05-12 16:00:33.965 [coze-task-4394] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:45169:2026-05-12 16:00:33.965 [coze-task-4396] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:45171:2026-05-12 16:00:33.966 [coze-task-4394] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:45173:2026-05-12 16:00:33.972 [coze-task-4396] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53310 executeId=7638910982386958363 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:45180:2026-05-12 16:00:34.115 [coze-task-4396] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53310 executeId=7638910982386958363 status=RUNNING -aiimage-backend.log.2026-05-12.4:45548:2026-05-12 16:01:03.966 [coze-task-4399] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:45551:2026-05-12 16:01:03.966 [coze-task-4402] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:45552:2026-05-12 16:01:03.967 [coze-task-4402] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:45553:2026-05-12 16:01:03.967 [coze-task-4399] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53310 executeId=7638910982386958363 lastPolledAt=2026-05-12T16:00:34 -aiimage-backend.log.2026-05-12.4:45928:2026-05-12 16:01:33.967 [coze-task-4404] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:45929:2026-05-12 16:01:33.967 [coze-task-4406] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:45933:2026-05-12 16:01:33.968 [coze-task-4404] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53310 -aiimage-backend.log.2026-05-12.4:45934:2026-05-12 16:01:33.974 [coze-task-4406] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53313 executeId=7638911109181325346 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:45979:2026-05-12 16:01:34.125 [coze-task-4406] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53313 executeId=7638911109181325346 status=RUNNING -aiimage-backend.log.2026-05-12.4:46860:2026-05-12 16:02:03.969 [coze-task-4410] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:46863:2026-05-12 16:02:03.969 [coze-task-4412] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:46864:2026-05-12 16:02:03.970 [coze-task-4410] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:46867:2026-05-12 16:02:03.976 [coze-task-4412] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53310 executeId=7638910982386958363 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:46869:2026-05-12 16:02:04.119 [coze-task-4412] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53310 executeId=7638910982386958363 status=RUNNING -aiimage-backend.log.2026-05-12.4:46995:2026-05-12 16:02:33.970 [coze-task-4416] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:46996:2026-05-12 16:02:33.970 [coze-task-4414] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:46998:2026-05-12 16:02:33.971 [coze-task-4414] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53310 -aiimage-backend.log.2026-05-12.4:47001:2026-05-12 16:02:33.977 [coze-task-4416] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53313 executeId=7638911109181325346 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:47003:2026-05-12 16:02:34.092 [coze-task-4416] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53313 executeId=7638911109181325346 status=RUNNING -aiimage-backend.log.2026-05-12.4:47134:2026-05-12 16:03:03.972 [coze-task-4419] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:47135:2026-05-12 16:03:03.972 [coze-task-4420] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:47139:2026-05-12 16:03:03.973 [coze-task-4420] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53310 -aiimage-backend.log.2026-05-12.4:47140:2026-05-12 16:03:03.974 [coze-task-4419] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53313 executeId=7638911109181325346 lastPolledAt=2026-05-12T16:02:34 -aiimage-backend.log.2026-05-12.4:47316:2026-05-12 16:03:33.973 [coze-task-4428] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:47318:2026-05-12 16:03:33.973 [coze-task-4429] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:47322:2026-05-12 16:03:33.975 [coze-task-4429] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53310 -aiimage-backend.log.2026-05-12.4:47324:2026-05-12 16:03:33.982 [coze-task-4428] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53313 executeId=7638911109181325346 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:47328:2026-05-12 16:03:34.168 [coze-task-4428] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53313 executeId=7638911109181325346 status=RUNNING -aiimage-backend.log.2026-05-12.4:47490:2026-05-12 16:04:03.975 [coze-task-4432] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:47491:2026-05-12 16:04:03.975 [coze-task-4435] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:47495:2026-05-12 16:04:03.976 [coze-task-4435] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53310 -aiimage-backend.log.2026-05-12.4:47496:2026-05-12 16:04:03.976 [coze-task-4432] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53313 executeId=7638911109181325346 lastPolledAt=2026-05-12T16:03:34 -aiimage-backend.log.2026-05-12.4:47559:2026-05-12 16:04:21.225 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:47560:2026-05-12 16:04:21.230 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:47561:2026-05-12 16:04:21.250 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:47562:2026-05-12 16:04:21.250 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:47565:2026-05-12 16:04:21.780 [coze-task-4437] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=527 -aiimage-backend.log.2026-05-12.4:47649:2026-05-12 16:04:33.977 [coze-task-4442] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:47651:2026-05-12 16:04:33.977 [coze-task-4440] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:47654:2026-05-12 16:04:33.978 [coze-task-4440] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:47658:2026-05-12 16:04:33.986 [coze-task-4442] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53310 executeId=7638910982386958363 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:47662:2026-05-12 16:04:34.145 [coze-task-4442] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53310 executeId=7638910982386958363 status=RUNNING -aiimage-backend.log.2026-05-12.4:47797:2026-05-12 16:05:03.978 [coze-task-4444] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:47800:2026-05-12 16:05:03.978 [coze-task-4448] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:47802:2026-05-12 16:05:03.980 [coze-task-4448] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:47805:2026-05-12 16:05:03.980 [coze-task-4444] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53310 executeId=7638910982386958363 lastPolledAt=2026-05-12T16:04:34 -aiimage-backend.log.2026-05-12.4:47947:2026-05-12 16:05:33.980 [coze-task-4453] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:47950:2026-05-12 16:05:33.980 [coze-task-4456] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:47954:2026-05-12 16:05:33.982 [coze-task-4456] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:47957:2026-05-12 16:05:33.989 [coze-task-4453] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53310 executeId=7638910982386958363 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:47960:2026-05-12 16:05:34.113 [coze-task-4453] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53310 executeId=7638910982386958363 status=RUNNING -aiimage-backend.log.2026-05-12.4:48101:2026-05-12 16:06:03.981 [coze-task-4458] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:48106:2026-05-12 16:06:03.981 [coze-task-4463] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:48107:2026-05-12 16:06:03.982 [coze-task-4463] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:48109:2026-05-12 16:06:03.982 [coze-task-4458] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53310 executeId=7638910982386958363 lastPolledAt=2026-05-12T16:05:34 -aiimage-backend.log.2026-05-12.4:48250:2026-05-12 16:06:33.983 [coze-task-4467] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:48252:2026-05-12 16:06:33.983 [coze-task-4470] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:48254:2026-05-12 16:06:33.984 [coze-task-4470] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:48257:2026-05-12 16:06:33.991 [coze-task-4467] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53310 executeId=7638910982386958363 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:48439:2026-05-12 16:07:03.985 [coze-task-4473] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:48442:2026-05-12 16:07:03.985 [coze-task-4479] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:48444:2026-05-12 16:07:03.986 [coze-task-4479] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:48446:2026-05-12 16:07:03.986 [coze-task-4473] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53310 -aiimage-backend.log.2026-05-12.4:48629:2026-05-12 16:07:33.987 [coze-task-4484] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53310 taskId=8095 executeId=7638910982386958363 -aiimage-backend.log.2026-05-12.4:48631:2026-05-12 16:07:33.987 [coze-task-4483] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:48633:2026-05-12 16:07:33.987 [coze-task-4488] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:48635:2026-05-12 16:07:33.988 [coze-task-4483] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53325 -aiimage-backend.log.2026-05-12.4:48636:2026-05-12 16:07:33.988 [coze-task-4488] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:48638:2026-05-12 16:07:33.989 [coze-task-4484] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53310 -aiimage-backend.log.2026-05-12.4:48647:2026-05-12 16:07:34.558 [coze-task-4467] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze split retry submitted taskId=8095 stateId=53310 chunk=null batch=1/2 parts=2 retry=2/5 failure=Coze async workflow poll timeout -aiimage-backend.log.2026-05-12.4:48815:2026-05-12 16:08:03.989 [coze-task-4489] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:48817:2026-05-12 16:08:03.989 [coze-task-4494] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:48821:2026-05-12 16:08:03.989 [coze-task-4496] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:48824:2026-05-12 16:08:03.990 [coze-task-4494] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53325 -aiimage-backend.log.2026-05-12.4:48825:2026-05-12 16:08:03.990 [coze-task-4496] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:48830:2026-05-12 16:08:03.998 [coze-task-4489] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53327 executeId=7638913817128435753 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:48834:2026-05-12 16:08:04.197 [coze-task-4489] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53327 executeId=7638913817128435753 status=RUNNING -aiimage-backend.log.2026-05-12.4:48982:2026-05-12 16:08:33.990 [coze-task-4501] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:48987:2026-05-12 16:08:33.990 [coze-task-4506] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:48988:2026-05-12 16:08:33.990 [coze-task-4505] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:48989:2026-05-12 16:08:33.992 [coze-task-4506] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:48990:2026-05-12 16:08:33.992 [coze-task-4501] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:48996:2026-05-12 16:08:34.000 [coze-task-4505] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53325 executeId=7638913676486049844 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:49001:2026-05-12 16:08:34.130 [coze-task-4505] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53325 executeId=7638913676486049844 status=RUNNING -aiimage-backend.log.2026-05-12.4:49153:2026-05-12 16:09:03.992 [coze-task-4516] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:49156:2026-05-12 16:09:03.992 [coze-task-4511] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:49159:2026-05-12 16:09:03.992 [coze-task-4515] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:49160:2026-05-12 16:09:03.993 [coze-task-4516] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:49163:2026-05-12 16:09:03.994 [coze-task-4515] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:49164:2026-05-12 16:09:03.994 [coze-task-4511] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53325 executeId=7638913676486049844 lastPolledAt=2026-05-12T16:08:34 -aiimage-backend.log.2026-05-12.4:49334:2026-05-12 16:09:33.994 [coze-task-4528] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:49337:2026-05-12 16:09:33.994 [coze-task-4525] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:49341:2026-05-12 16:09:33.994 [coze-task-4529] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:49342:2026-05-12 16:09:33.995 [coze-task-4528] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:49346:2026-05-12 16:09:33.995 [coze-task-4529] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:49351:2026-05-12 16:09:34.003 [coze-task-4525] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53325 executeId=7638913676486049844 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:49355:2026-05-12 16:09:34.122 [coze-task-4525] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53325 executeId=7638913676486049844 status=RUNNING -aiimage-backend.log.2026-05-12.4:49677:2026-05-12 16:10:03.995 [coze-task-4533] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:49678:2026-05-12 16:10:03.995 [coze-task-4538] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:49679:2026-05-12 16:10:03.995 [coze-task-4539] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:49681:2026-05-12 16:10:03.996 [coze-task-4538] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:49682:2026-05-12 16:10:03.996 [coze-task-4539] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:49684:2026-05-12 16:10:03.997 [coze-task-4533] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53325 executeId=7638913676486049844 lastPolledAt=2026-05-12T16:09:34 -aiimage-backend.log.2026-05-12.4:50055:2026-05-12 16:10:33.997 [coze-task-4547] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:50056:2026-05-12 16:10:33.997 [coze-task-4545] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:50057:2026-05-12 16:10:33.997 [coze-task-4548] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:50058:2026-05-12 16:10:33.998 [coze-task-4547] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:50059:2026-05-12 16:10:33.998 [coze-task-4548] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:50064:2026-05-12 16:10:34.006 [coze-task-4545] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53325 executeId=7638913676486049844 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:50068:2026-05-12 16:10:34.133 [coze-task-4545] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53325 executeId=7638913676486049844 status=RUNNING -aiimage-backend.log.2026-05-12.4:50442:2026-05-12 16:11:03.998 [coze-task-4552] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:50443:2026-05-12 16:11:03.998 [coze-task-4556] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:50445:2026-05-12 16:11:03.998 [coze-task-4557] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:50448:2026-05-12 16:11:03.999 [coze-task-4556] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:50449:2026-05-12 16:11:03.999 [coze-task-4557] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:50454:2026-05-12 16:11:04.008 [coze-task-4552] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53325 executeId=7638913676486049844 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:50463:2026-05-12 16:11:04.141 [coze-task-4552] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53325 executeId=7638913676486049844 status=RUNNING -aiimage-backend.log.2026-05-12.4:50466:2026-05-12 16:11:04.600 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:50467:2026-05-12 16:11:04.605 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:50468:2026-05-12 16:11:04.623 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:50469:2026-05-12 16:11:04.623 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:50474:2026-05-12 16:11:04.798 [coze-task-4558] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=172 -aiimage-backend.log.2026-05-12.4:50840:2026-05-12 16:11:34.000 [coze-task-4562] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:50842:2026-05-12 16:11:34.000 [coze-task-4568] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:50846:2026-05-12 16:11:34.000 [coze-task-4567] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:50847:2026-05-12 16:11:34.001 [coze-task-4567] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:50848:2026-05-12 16:11:34.001 [coze-task-4568] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:50849:2026-05-12 16:11:34.006 [coze-task-4562] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53325 executeId=7638913676486049844 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:50856:2026-05-12 16:11:34.118 [coze-task-4562] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53325 executeId=7638913676486049844 status=RUNNING -aiimage-backend.log.2026-05-12.4:51243:2026-05-12 16:12:04.001 [coze-task-4577] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:51244:2026-05-12 16:12:04.001 [coze-task-4573] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:51247:2026-05-12 16:12:04.001 [coze-task-4576] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:51248:2026-05-12 16:12:04.002 [coze-task-4576] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:51249:2026-05-12 16:12:04.002 [coze-task-4577] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:51254:2026-05-12 16:12:04.011 [coze-task-4573] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53325 executeId=7638913676486049844 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:51270:2026-05-12 16:12:04.142 [coze-task-4573] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53325 executeId=7638913676486049844 status=RUNNING -aiimage-backend.log.2026-05-12.4:51675:2026-05-12 16:12:34.003 [coze-task-4583] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:51680:2026-05-12 16:12:34.003 [coze-task-4587] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:51681:2026-05-12 16:12:34.003 [coze-task-4588] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:51682:2026-05-12 16:12:34.004 [coze-task-4587] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:51683:2026-05-12 16:12:34.004 [coze-task-4588] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:51684:2026-05-12 16:12:34.010 [coze-task-4583] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53325 executeId=7638913676486049844 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:51704:2026-05-12 16:12:34.177 [coze-task-4583] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53325 executeId=7638913676486049844 status=RUNNING -aiimage-backend.log.2026-05-12.4:52753:2026-05-12 16:13:04.005 [coze-task-4597] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:52754:2026-05-12 16:13:04.005 [coze-task-4598] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:52755:2026-05-12 16:13:04.005 [coze-task-4592] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:52761:2026-05-12 16:13:04.006 [coze-task-4592] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53325 -aiimage-backend.log.2026-05-12.4:52762:2026-05-12 16:13:04.006 [coze-task-4597] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:52764:2026-05-12 16:13:04.013 [coze-task-4598] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53313 executeId=7638911109181325346 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:52976:2026-05-12 16:13:34.006 [coze-task-4601] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:52979:2026-05-12 16:13:34.006 [coze-task-4608] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:52980:2026-05-12 16:13:34.006 [coze-task-4609] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:52982:2026-05-12 16:13:34.007 [coze-task-4601] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:52983:2026-05-12 16:13:34.007 [coze-task-4609] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:52984:2026-05-12 16:13:34.007 [coze-task-4608] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53325 -aiimage-backend.log.2026-05-12.4:53165:2026-05-12 16:14:04.008 [coze-task-4617] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53339 taskId=8095 executeId=7638915363518431272 -aiimage-backend.log.2026-05-12.4:53168:2026-05-12 16:14:04.008 [coze-task-4618] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53313 taskId=8095 executeId=7638911109181325346 -aiimage-backend.log.2026-05-12.4:53170:2026-05-12 16:14:04.008 [coze-task-4619] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:53171:2026-05-12 16:14:04.008 [coze-task-4620] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:53172:2026-05-12 16:14:04.008 [coze-task-4617] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53339 -aiimage-backend.log.2026-05-12.4:53173:2026-05-12 16:14:04.008 [coze-task-4618] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53313 -aiimage-backend.log.2026-05-12.4:53174:2026-05-12 16:14:04.009 [coze-task-4620] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:53175:2026-05-12 16:14:04.009 [coze-task-4619] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53325 -aiimage-backend.log.2026-05-12.4:53191:2026-05-12 16:14:04.560 [coze-task-4598] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze split retry submitted taskId=8095 stateId=53313 chunk=null batch=2/2 parts=2 retry=2/5 failure=Coze async workflow poll timeout -aiimage-backend.log.2026-05-12.4:53337:2026-05-12 16:14:34.009 [coze-task-4622] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53341 taskId=8095 executeId=7638915493130207270 -aiimage-backend.log.2026-05-12.4:53338:2026-05-12 16:14:34.009 [coze-task-4627] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53339 taskId=8095 executeId=7638915363518431272 -aiimage-backend.log.2026-05-12.4:53343:2026-05-12 16:14:34.009 [coze-task-4629] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:53344:2026-05-12 16:14:34.009 [coze-task-4628] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:53345:2026-05-12 16:14:34.010 [coze-task-4622] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53341 -aiimage-backend.log.2026-05-12.4:53346:2026-05-12 16:14:34.010 [coze-task-4628] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53325 -aiimage-backend.log.2026-05-12.4:53347:2026-05-12 16:14:34.010 [coze-task-4629] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:53348:2026-05-12 16:14:34.016 [coze-task-4627] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53339 executeId=7638915363518431272 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:53362:2026-05-12 16:14:34.421 [coze-task-4627] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53339 executeId=7638915363518431272 status=DONE batchRows=12 mergedRows=12 failure=- -aiimage-backend.log.2026-05-12.4:53509:2026-05-12 16:15:04.010 [coze-task-4635] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53341 taskId=8095 executeId=7638915493130207270 -aiimage-backend.log.2026-05-12.4:53510:2026-05-12 16:15:04.010 [coze-task-4636] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:53513:2026-05-12 16:15:04.010 [coze-task-4637] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:53515:2026-05-12 16:15:04.011 [coze-task-4635] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53341 -aiimage-backend.log.2026-05-12.4:53516:2026-05-12 16:15:04.011 [coze-task-4636] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53325 -aiimage-backend.log.2026-05-12.4:53519:2026-05-12 16:15:04.021 [coze-task-4637] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53327 executeId=7638913817128435753 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:53525:2026-05-12 16:15:04.179 [coze-task-4637] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53327 executeId=7638913817128435753 status=RUNNING -aiimage-backend.log.2026-05-12.4:53677:2026-05-12 16:15:34.012 [coze-task-4646] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:53679:2026-05-12 16:15:34.012 [coze-task-4640] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:53681:2026-05-12 16:15:34.012 [coze-task-4645] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53341 taskId=8095 executeId=7638915493130207270 -aiimage-backend.log.2026-05-12.4:53683:2026-05-12 16:15:34.013 [coze-task-4646] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53325 -aiimage-backend.log.2026-05-12.4:53685:2026-05-12 16:15:34.013 [coze-task-4640] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:53687:2026-05-12 16:15:34.020 [coze-task-4645] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53341 executeId=7638915493130207270 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:53703:2026-05-12 16:15:34.661 [coze-task-4645] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53341 executeId=7638915493130207270 status=DONE batchRows=13 mergedRows=13 failure=- -aiimage-backend.log.2026-05-12.4:53927:2026-05-12 16:16:04.013 [coze-task-4657] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:53929:2026-05-12 16:16:04.013 [coze-task-4659] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:53931:2026-05-12 16:16:04.014 [coze-task-4659] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53325 -aiimage-backend.log.2026-05-12.4:53933:2026-05-12 16:16:04.020 [coze-task-4657] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53327 executeId=7638913817128435753 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:53949:2026-05-12 16:16:04.302 [coze-task-4657] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53327 executeId=7638913817128435753 status=RUNNING -aiimage-backend.log.2026-05-12.4:54109:2026-05-12 16:16:34.015 [coze-task-4663] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:54113:2026-05-12 16:16:34.015 [coze-task-4670] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:54117:2026-05-12 16:16:34.024 [coze-task-4670] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53325 -aiimage-backend.log.2026-05-12.4:54123:2026-05-12 16:16:34.024 [coze-task-4663] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53327 executeId=7638913817128435753 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:54133:2026-05-12 16:16:34.163 [coze-task-4663] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53327 executeId=7638913817128435753 status=RUNNING -aiimage-backend.log.2026-05-12.4:54294:2026-05-12 16:17:04.017 [coze-task-4681] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:54301:2026-05-12 16:17:04.017 [coze-task-4673] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:54308:2026-05-12 16:17:04.025 [coze-task-4673] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:54309:2026-05-12 16:17:04.026 [coze-task-4681] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53325 executeId=7638913676486049844 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:54566:2026-05-12 16:17:34.018 [coze-task-4684] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:54574:2026-05-12 16:17:34.019 [coze-task-4693] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:54577:2026-05-12 16:17:34.019 [coze-task-4684] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53325 -aiimage-backend.log.2026-05-12.4:54579:2026-05-12 16:17:34.020 [coze-task-4693] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:54759:2026-05-12 16:18:04.020 [coze-task-4696] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:54762:2026-05-12 16:18:04.020 [coze-task-4705] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53325 taskId=8095 executeId=7638913676486049844 -aiimage-backend.log.2026-05-12.4:54764:2026-05-12 16:18:04.020 [coze-task-4707] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:54768:2026-05-12 16:18:04.021 [coze-task-4696] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:54773:2026-05-12 16:18:04.021 [coze-task-4707] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:54775:2026-05-12 16:18:04.022 [coze-task-4705] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53325 -aiimage-backend.log.2026-05-12.4:54881:2026-05-12 16:18:15.221 [coze-task-4681] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze split retry submitted taskId=8095 stateId=53325 chunk=null batch=1/2 parts=2 retry=3/5 failure=Coze async workflow poll timeout -aiimage-backend.log.2026-05-12.4:54882:2026-05-12 16:18:15.335 [http-nio-18080-exec-6] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:54883:2026-05-12 16:18:15.340 [http-nio-18080-exec-6] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:54884:2026-05-12 16:18:15.360 [http-nio-18080-exec-6] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:54885:2026-05-12 16:18:15.360 [http-nio-18080-exec-6] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:54887:2026-05-12 16:18:15.736 [coze-task-4710] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=371 -aiimage-backend.log.2026-05-12.4:54985:2026-05-12 16:18:34.022 [coze-task-4711] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:54993:2026-05-12 16:18:34.022 [coze-task-4719] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:54995:2026-05-12 16:18:34.023 [coze-task-4722] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:54997:2026-05-12 16:18:34.023 [coze-task-4719] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:55002:2026-05-12 16:18:34.032 [coze-task-4722] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:55007:2026-05-12 16:18:34.032 [coze-task-4711] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53352 executeId=7638916560778756096 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:55012:2026-05-12 16:18:34.148 [coze-task-4711] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53352 executeId=7638916560778756096 status=RUNNING -aiimage-backend.log.2026-05-12.4:55182:2026-05-12 16:19:04.024 [coze-task-4732] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:55184:2026-05-12 16:19:04.024 [coze-task-4733] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:55185:2026-05-12 16:19:04.024 [coze-task-4735] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:55191:2026-05-12 16:19:04.033 [coze-task-4733] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:55193:2026-05-12 16:19:04.033 [coze-task-4735] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:55196:2026-05-12 16:19:04.034 [coze-task-4732] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53352 executeId=7638916560778756096 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:55201:2026-05-12 16:19:04.147 [coze-task-4732] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53352 executeId=7638916560778756096 status=RUNNING -aiimage-backend.log.2026-05-12.4:55387:2026-05-12 16:19:34.025 [coze-task-4747] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:55390:2026-05-12 16:19:34.025 [coze-task-4750] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:55393:2026-05-12 16:19:34.026 [coze-task-4751] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:55397:2026-05-12 16:19:34.026 [coze-task-4750] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:55399:2026-05-12 16:19:34.027 [coze-task-4751] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:55406:2026-05-12 16:19:34.035 [coze-task-4747] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53352 executeId=7638916560778756096 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:55416:2026-05-12 16:19:34.172 [coze-task-4747] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53352 executeId=7638916560778756096 status=RUNNING -aiimage-backend.log.2026-05-12.4:55655:2026-05-12 16:20:04.028 [coze-task-4767] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:55656:2026-05-12 16:20:04.028 [coze-task-4768] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:55658:2026-05-12 16:20:04.027 [coze-task-4762] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:55663:2026-05-12 16:20:04.028 [coze-task-4768] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:55664:2026-05-12 16:20:04.028 [coze-task-4762] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:55668:2026-05-12 16:20:04.036 [coze-task-4767] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53351 executeId=7638916423692582963 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:55676:2026-05-12 16:20:04.168 [coze-task-4767] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53351 executeId=7638916423692582963 status=RUNNING -aiimage-backend.log.2026-05-12.4:56109:2026-05-12 16:20:34.029 [coze-task-4778] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:56114:2026-05-12 16:20:34.029 [coze-task-4781] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:56117:2026-05-12 16:20:34.029 [coze-task-4784] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:56124:2026-05-12 16:20:34.030 [coze-task-4781] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:56125:2026-05-12 16:20:34.030 [coze-task-4784] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:56127:2026-05-12 16:20:34.038 [coze-task-4778] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53351 executeId=7638916423692582963 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:56152:2026-05-12 16:20:34.270 [coze-task-4778] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53351 executeId=7638916423692582963 status=RUNNING -aiimage-backend.log.2026-05-12.4:56548:2026-05-12 16:21:04.030 [coze-task-4794] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:56552:2026-05-12 16:21:04.031 [coze-task-4798] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:56555:2026-05-12 16:21:04.031 [coze-task-4801] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:56560:2026-05-12 16:21:04.039 [coze-task-4801] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:56561:2026-05-12 16:21:04.039 [coze-task-4798] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:56566:2026-05-12 16:21:04.041 [coze-task-4794] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53351 executeId=7638916423692582963 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:56585:2026-05-12 16:21:04.184 [coze-task-4794] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53351 executeId=7638916423692582963 status=RUNNING -aiimage-backend.log.2026-05-12.4:57488:2026-05-12 16:21:34.032 [coze-task-4812] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:57490:2026-05-12 16:21:34.032 [coze-task-4817] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:57492:2026-05-12 16:21:34.032 [coze-task-4819] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:57498:2026-05-12 16:21:34.033 [coze-task-4817] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:57501:2026-05-12 16:21:34.040 [coze-task-4819] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:57506:2026-05-12 16:21:34.042 [coze-task-4812] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53351 executeId=7638916423692582963 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:57543:2026-05-12 16:21:34.167 [coze-task-4812] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53351 executeId=7638916423692582963 status=RUNNING -aiimage-backend.log.2026-05-12.4:58306:2026-05-12 16:22:04.034 [coze-task-4827] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:58309:2026-05-12 16:22:04.034 [coze-task-4834] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:58311:2026-05-12 16:22:04.034 [coze-task-4835] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:58318:2026-05-12 16:22:04.044 [coze-task-4834] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:58321:2026-05-12 16:22:04.044 [coze-task-4835] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:58329:2026-05-12 16:22:04.051 [coze-task-4827] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53351 executeId=7638916423692582963 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:58338:2026-05-12 16:22:04.164 [coze-task-4827] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53351 executeId=7638916423692582963 status=RUNNING -aiimage-backend.log.2026-05-12.4:58512:2026-05-12 16:22:34.035 [coze-task-4844] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:58514:2026-05-12 16:22:34.035 [coze-task-4853] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:58524:2026-05-12 16:22:34.035 [coze-task-4852] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:58526:2026-05-12 16:22:34.037 [coze-task-4853] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:58531:2026-05-12 16:22:34.044 [coze-task-4844] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53351 executeId=7638916423692582963 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:58535:2026-05-12 16:22:34.049 [coze-task-4852] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:58551:2026-05-12 16:22:34.177 [coze-task-4844] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53351 executeId=7638916423692582963 status=RUNNING -aiimage-backend.log.2026-05-12.4:58849:2026-05-12 16:23:04.037 [coze-task-4861] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:58857:2026-05-12 16:23:04.037 [coze-task-4869] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:58861:2026-05-12 16:23:04.037 [coze-task-4870] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:58862:2026-05-12 16:23:04.046 [coze-task-4861] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53351 executeId=7638916423692582963 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:58872:2026-05-12 16:23:04.050 [coze-task-4869] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:58874:2026-05-12 16:23:04.050 [coze-task-4870] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:58894:2026-05-12 16:23:04.207 [coze-task-4861] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53351 executeId=7638916423692582963 status=RUNNING -aiimage-backend.log.2026-05-12.4:59084:2026-05-12 16:23:34.039 [coze-task-4879] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:59096:2026-05-12 16:23:34.040 [coze-task-4889] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:59097:2026-05-12 16:23:34.040 [coze-task-4888] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:59104:2026-05-12 16:23:34.049 [coze-task-4879] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53351 executeId=7638916423692582963 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:59111:2026-05-12 16:23:34.052 [coze-task-4889] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:59112:2026-05-12 16:23:34.052 [coze-task-4888] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:59120:2026-05-12 16:23:34.163 [coze-task-4879] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53351 executeId=7638916423692582963 status=RUNNING -aiimage-backend.log.2026-05-12.4:59325:2026-05-12 16:24:04.042 [coze-task-4906] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:59326:2026-05-12 16:24:04.042 [coze-task-4907] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:59328:2026-05-12 16:24:04.041 [coze-task-4897] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:59342:2026-05-12 16:24:04.053 [coze-task-4906] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:59343:2026-05-12 16:24:04.054 [coze-task-4897] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:59345:2026-05-12 16:24:04.059 [coze-task-4907] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53327 executeId=7638913817128435753 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:59537:2026-05-12 16:24:34.043 [coze-task-4920] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:59539:2026-05-12 16:24:34.043 [coze-task-4922] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:59543:2026-05-12 16:24:34.043 [coze-task-4926] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:59551:2026-05-12 16:24:34.053 [coze-task-4922] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:59553:2026-05-12 16:24:34.055 [coze-task-4926] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:59555:2026-05-12 16:24:34.055 [coze-task-4920] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:59760:2026-05-12 16:25:04.045 [coze-task-4928] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53366 taskId=8095 executeId=7638918189733511203 -aiimage-backend.log.2026-05-12.4:59770:2026-05-12 16:25:04.046 [coze-task-4940] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53327 taskId=8095 executeId=7638913817128435753 -aiimage-backend.log.2026-05-12.4:59771:2026-05-12 16:25:04.046 [coze-task-4941] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:59774:2026-05-12 16:25:04.046 [coze-task-4928] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53366 -aiimage-backend.log.2026-05-12.4:59778:2026-05-12 16:25:04.046 [coze-task-4945] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:59779:2026-05-12 16:25:04.047 [coze-task-4940] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53327 -aiimage-backend.log.2026-05-12.4:59780:2026-05-12 16:25:04.047 [coze-task-4941] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:59792:2026-05-12 16:25:04.056 [coze-task-4945] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:59821:2026-05-12 16:25:05.642 [coze-task-4907] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze split retry submitted taskId=8095 stateId=53327 chunk=null batch=2/2 parts=2 retry=3/5 failure=Coze async workflow poll timeout -aiimage-backend.log.2026-05-12.4:59823:2026-05-12 16:25:05.788 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:59824:2026-05-12 16:25:05.793 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:59825:2026-05-12 16:25:05.812 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:59826:2026-05-12 16:25:05.812 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:59829:2026-05-12 16:25:06.186 [coze-task-4946] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=370 -aiimage-backend.log.2026-05-12.4:59977:2026-05-12 16:25:34.047 [coze-task-4948] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53367 taskId=8095 executeId=7638918322369642511 -aiimage-backend.log.2026-05-12.4:59992:2026-05-12 16:25:34.048 [coze-task-4965] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:59993:2026-05-12 16:25:34.048 [coze-task-4960] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53366 taskId=8095 executeId=7638918189733511203 -aiimage-backend.log.2026-05-12.4:59994:2026-05-12 16:25:34.048 [coze-task-4961] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:59999:2026-05-12 16:25:34.058 [coze-task-4948] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53367 executeId=7638918322369642511 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:60003:2026-05-12 16:25:34.058 [coze-task-4961] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:60007:2026-05-12 16:25:34.058 [coze-task-4960] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53366 -aiimage-backend.log.2026-05-12.4:60008:2026-05-12 16:25:34.058 [coze-task-4965] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:60026:2026-05-12 16:25:34.197 [coze-task-4948] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53367 executeId=7638918322369642511 status=RUNNING -aiimage-backend.log.2026-05-12.4:60221:2026-05-12 16:26:04.049 [coze-task-4969] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53367 taskId=8095 executeId=7638918322369642511 -aiimage-backend.log.2026-05-12.4:60234:2026-05-12 16:26:04.050 [coze-task-4984] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:60236:2026-05-12 16:26:04.049 [coze-task-4979] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53366 taskId=8095 executeId=7638918189733511203 -aiimage-backend.log.2026-05-12.4:60237:2026-05-12 16:26:04.049 [coze-task-4980] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:60246:2026-05-12 16:26:04.061 [coze-task-4984] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:60248:2026-05-12 16:26:04.061 [coze-task-4980] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:60249:2026-05-12 16:26:04.061 [coze-task-4979] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53366 -aiimage-backend.log.2026-05-12.4:60251:2026-05-12 16:26:04.060 [coze-task-4969] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53367 executeId=7638918322369642511 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:60275:2026-05-12 16:26:04.212 [coze-task-4969] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53367 executeId=7638918322369642511 status=RUNNING -aiimage-backend.log.2026-05-12.4:60496:2026-05-12 16:26:34.050 [coze-task-4991] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53367 taskId=8095 executeId=7638918322369642511 -aiimage-backend.log.2026-05-12.4:60503:2026-05-12 16:26:34.051 [coze-task-4999] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53366 taskId=8095 executeId=7638918189733511203 -aiimage-backend.log.2026-05-12.4:60504:2026-05-12 16:26:34.051 [coze-task-5000] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:60508:2026-05-12 16:26:34.051 [coze-task-5004] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:60512:2026-05-12 16:26:34.060 [coze-task-5000] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:60513:2026-05-12 16:26:34.060 [coze-task-5004] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:60517:2026-05-12 16:26:34.061 [coze-task-4991] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53367 executeId=7638918322369642511 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:60521:2026-05-12 16:26:34.060 [coze-task-4999] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53366 -aiimage-backend.log.2026-05-12.4:60537:2026-05-12 16:26:34.198 [coze-task-4991] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53367 executeId=7638918322369642511 status=RUNNING -aiimage-backend.log.2026-05-12.4:60725:2026-05-12 16:27:04.051 [coze-task-5009] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53367 taskId=8095 executeId=7638918322369642511 -aiimage-backend.log.2026-05-12.4:60731:2026-05-12 16:27:04.052 [coze-task-5017] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53366 taskId=8095 executeId=7638918189733511203 -aiimage-backend.log.2026-05-12.4:60733:2026-05-12 16:27:04.052 [coze-task-5018] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:60736:2026-05-12 16:27:04.052 [coze-task-5022] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:60744:2026-05-12 16:27:04.062 [coze-task-5018] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:60746:2026-05-12 16:27:04.062 [coze-task-5017] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53366 -aiimage-backend.log.2026-05-12.4:60747:2026-05-12 16:27:04.062 [coze-task-5022] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:60752:2026-05-12 16:27:04.062 [coze-task-5009] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53367 executeId=7638918322369642511 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:60768:2026-05-12 16:27:04.204 [coze-task-5009] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53367 executeId=7638918322369642511 status=RUNNING -aiimage-backend.log.2026-05-12.4:60964:2026-05-12 16:27:34.053 [coze-task-5030] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53367 taskId=8095 executeId=7638918322369642511 -aiimage-backend.log.2026-05-12.4:60972:2026-05-12 16:27:34.053 [coze-task-5038] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53366 taskId=8095 executeId=7638918189733511203 -aiimage-backend.log.2026-05-12.4:60973:2026-05-12 16:27:34.053 [coze-task-5039] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:60978:2026-05-12 16:27:34.053 [coze-task-5043] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:60984:2026-05-12 16:27:34.064 [coze-task-5030] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53367 executeId=7638918322369642511 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:60989:2026-05-12 16:27:34.067 [coze-task-5039] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:60990:2026-05-12 16:27:34.067 [coze-task-5038] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53366 -aiimage-backend.log.2026-05-12.4:60994:2026-05-12 16:27:34.067 [coze-task-5043] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:61013:2026-05-12 16:27:34.227 [coze-task-5030] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53367 executeId=7638918322369642511 status=RUNNING -aiimage-backend.log.2026-05-12.4:61233:2026-05-12 16:28:04.054 [coze-task-5053] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53367 taskId=8095 executeId=7638918322369642511 -aiimage-backend.log.2026-05-12.4:61236:2026-05-12 16:28:04.054 [coze-task-5061] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53366 taskId=8095 executeId=7638918189733511203 -aiimage-backend.log.2026-05-12.4:61237:2026-05-12 16:28:04.054 [coze-task-5062] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:61240:2026-05-12 16:28:04.054 [coze-task-5066] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:61246:2026-05-12 16:28:04.062 [coze-task-5061] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53366 -aiimage-backend.log.2026-05-12.4:61247:2026-05-12 16:28:04.062 [coze-task-5062] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:61251:2026-05-12 16:28:04.062 [coze-task-5066] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:61256:2026-05-12 16:28:04.064 [coze-task-5053] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53367 executeId=7638918322369642511 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:61272:2026-05-12 16:28:04.231 [coze-task-5053] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53367 executeId=7638918322369642511 status=RUNNING -aiimage-backend.log.2026-05-12.4:61459:2026-05-12 16:28:34.056 [coze-task-5080] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53366 taskId=8095 executeId=7638918189733511203 -aiimage-backend.log.2026-05-12.4:61461:2026-05-12 16:28:34.056 [coze-task-5081] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:61464:2026-05-12 16:28:34.056 [coze-task-5084] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:61465:2026-05-12 16:28:34.055 [coze-task-5072] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53367 taskId=8095 executeId=7638918322369642511 -aiimage-backend.log.2026-05-12.4:61472:2026-05-12 16:28:34.057 [coze-task-5081] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:61473:2026-05-12 16:28:34.057 [coze-task-5084] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:61476:2026-05-12 16:28:34.065 [coze-task-5072] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53367 -aiimage-backend.log.2026-05-12.4:61478:2026-05-12 16:28:34.065 [coze-task-5080] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53366 executeId=7638918189733511203 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:61503:2026-05-12 16:28:34.609 [coze-task-5080] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53366 executeId=7638918189733511203 status=DONE batchRows=6 mergedRows=6 failure=- -aiimage-backend.log.2026-05-12.4:61715:2026-05-12 16:29:04.057 [coze-task-5091] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53367 taskId=8095 executeId=7638918322369642511 -aiimage-backend.log.2026-05-12.4:61719:2026-05-12 16:29:04.058 [coze-task-5096] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:61722:2026-05-12 16:29:04.058 [coze-task-5099] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:61729:2026-05-12 16:29:04.067 [coze-task-5096] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53351 -aiimage-backend.log.2026-05-12.4:61733:2026-05-12 16:29:04.067 [coze-task-5099] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:61735:2026-05-12 16:29:04.067 [coze-task-5091] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53367 executeId=7638918322369642511 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:61743:2026-05-12 16:29:04.208 [coze-task-5091] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53367 executeId=7638918322369642511 status=RUNNING -aiimage-backend.log.2026-05-12.4:61943:2026-05-12 16:29:34.059 [coze-task-5113] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53351 taskId=8095 executeId=7638916423692582963 -aiimage-backend.log.2026-05-12.4:61944:2026-05-12 16:29:34.058 [coze-task-5105] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53367 taskId=8095 executeId=7638918322369642511 -aiimage-backend.log.2026-05-12.4:61945:2026-05-12 16:29:34.059 [coze-task-5116] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:61954:2026-05-12 16:29:34.060 [coze-task-5105] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53367 -aiimage-backend.log.2026-05-12.4:61955:2026-05-12 16:29:34.060 [coze-task-5116] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:61962:2026-05-12 16:29:34.069 [coze-task-5113] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53351 executeId=7638916423692582963 jobId=2713 chunk=null batch=1/2 -aiimage-backend.log.2026-05-12.4:61984:2026-05-12 16:29:34.581 [coze-task-5113] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53351 executeId=7638916423692582963 status=DONE batchRows=6 mergedRows=6 failure=- -aiimage-backend.log.2026-05-12.4:62230:2026-05-12 16:30:04.060 [coze-task-5127] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53367 taskId=8095 executeId=7638918322369642511 -aiimage-backend.log.2026-05-12.4:62240:2026-05-12 16:30:04.060 [coze-task-5133] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:62247:2026-05-12 16:30:04.062 [coze-task-5133] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:62256:2026-05-12 16:30:04.071 [coze-task-5127] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53367 executeId=7638918322369642511 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:62261:2026-05-12 16:30:04.182 [coze-task-5127] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53367 executeId=7638918322369642511 status=RUNNING -aiimage-backend.log.2026-05-12.4:62661:2026-05-12 16:30:34.061 [coze-task-5138] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53367 taskId=8095 executeId=7638918322369642511 -aiimage-backend.log.2026-05-12.4:62672:2026-05-12 16:30:34.062 [coze-task-5149] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:62684:2026-05-12 16:30:34.072 [coze-task-5149] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:62685:2026-05-12 16:30:34.072 [coze-task-5138] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53367 executeId=7638918322369642511 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:62694:2026-05-12 16:30:34.199 [coze-task-5138] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53367 executeId=7638918322369642511 status=RUNNING -aiimage-backend.log.2026-05-12.4:63144:2026-05-12 16:31:04.063 [coze-task-5154] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53367 taskId=8095 executeId=7638918322369642511 -aiimage-backend.log.2026-05-12.4:63154:2026-05-12 16:31:04.064 [coze-task-5165] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:63161:2026-05-12 16:31:04.065 [coze-task-5165] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53352 -aiimage-backend.log.2026-05-12.4:63168:2026-05-12 16:31:04.071 [coze-task-5154] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53367 executeId=7638918322369642511 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:63188:2026-05-12 16:31:04.628 [coze-task-5154] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53367 executeId=7638918322369642511 status=DONE batchRows=7 mergedRows=7 failure=- -aiimage-backend.log.2026-05-12.4:63635:2026-05-12 16:31:34.065 [coze-task-5182] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53352 taskId=8095 executeId=7638916560778756096 -aiimage-backend.log.2026-05-12.4:63649:2026-05-12 16:31:34.075 [coze-task-5182] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53352 executeId=7638916560778756096 jobId=2713 chunk=null batch=2/2 -aiimage-backend.log.2026-05-12.4:63669:2026-05-12 16:31:34.590 [coze-task-5182] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53352 executeId=7638916560778756096 status=DONE batchRows=6 mergedRows=6 failure=- -aiimage-backend.log.2026-05-12.4:63693:2026-05-12 16:31:36.414 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:63694:2026-05-12 16:31:36.423 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:63695:2026-05-12 16:31:36.446 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:63696:2026-05-12 16:31:36.446 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:65695:2026-05-12 16:32:44.951 [coze-task-5183] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/3 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:65846:2026-05-12 16:33:04.068 [coze-task-5219] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:65859:2026-05-12 16:33:04.070 [coze-task-5219] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53385 -aiimage-backend.log.2026-05-12.4:65942:2026-05-12 16:33:15.164 [coze-task-5183] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=2/3 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:66047:2026-05-12 16:33:34.070 [coze-task-5233] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:66054:2026-05-12 16:33:34.070 [coze-task-5240] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:66062:2026-05-12 16:33:34.071 [coze-task-5233] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53387 -aiimage-backend.log.2026-05-12.4:66064:2026-05-12 16:33:34.072 [coze-task-5240] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53385 -aiimage-backend.log.2026-05-12.4:66147:2026-05-12 16:33:45.427 [coze-task-5183] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=3/3 executeId=7638920553479503898 -aiimage-backend.log.2026-05-12.4:66148:2026-05-12 16:33:45.436 [coze-task-5183] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=128986 -aiimage-backend.log.2026-05-12.4:66289:2026-05-12 16:34:04.071 [coze-task-5249] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53388 taskId=8095 executeId=7638920553479503898 -aiimage-backend.log.2026-05-12.4:66296:2026-05-12 16:34:04.072 [coze-task-5256] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:66297:2026-05-12 16:34:04.072 [coze-task-5257] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:66305:2026-05-12 16:34:04.073 [coze-task-5256] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53387 -aiimage-backend.log.2026-05-12.4:66306:2026-05-12 16:34:04.073 [coze-task-5257] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53385 -aiimage-backend.log.2026-05-12.4:66318:2026-05-12 16:34:04.082 [coze-task-5249] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53388 executeId=7638920553479503898 jobId=2713 chunk=null batch=3/3 -aiimage-backend.log.2026-05-12.4:66323:2026-05-12 16:34:04.189 [coze-task-5249] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53388 executeId=7638920553479503898 status=RUNNING -aiimage-backend.log.2026-05-12.4:66521:2026-05-12 16:34:34.073 [coze-task-5270] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53388 taskId=8095 executeId=7638920553479503898 -aiimage-backend.log.2026-05-12.4:66527:2026-05-12 16:34:34.074 [coze-task-5276] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:66528:2026-05-12 16:34:34.074 [coze-task-5277] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:66537:2026-05-12 16:34:34.080 [coze-task-5276] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53387 -aiimage-backend.log.2026-05-12.4:66538:2026-05-12 16:34:34.080 [coze-task-5277] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53385 -aiimage-backend.log.2026-05-12.4:66546:2026-05-12 16:34:34.087 [coze-task-5270] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53388 executeId=7638920553479503898 jobId=2713 chunk=null batch=3/3 -aiimage-backend.log.2026-05-12.4:66569:2026-05-12 16:34:34.783 [coze-task-5270] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53388 executeId=7638920553479503898 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.4:66768:2026-05-12 16:35:04.075 [coze-task-5294] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:66771:2026-05-12 16:35:04.075 [coze-task-5295] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:66780:2026-05-12 16:35:04.084 [coze-task-5295] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53385 -aiimage-backend.log.2026-05-12.4:66783:2026-05-12 16:35:04.084 [coze-task-5294] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53387 executeId=7638920422151618610 jobId=2713 chunk=null batch=2/3 -aiimage-backend.log.2026-05-12.4:66805:2026-05-12 16:35:04.232 [coze-task-5294] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53387 executeId=7638920422151618610 status=RUNNING -aiimage-backend.log.2026-05-12.4:67040:2026-05-12 16:35:34.076 [coze-task-5308] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:67051:2026-05-12 16:35:34.076 [coze-task-5314] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:67060:2026-05-12 16:35:34.086 [coze-task-5314] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53385 -aiimage-backend.log.2026-05-12.4:67062:2026-05-12 16:35:34.087 [coze-task-5308] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53387 executeId=7638920422151618610 jobId=2713 chunk=null batch=2/3 -aiimage-backend.log.2026-05-12.4:67083:2026-05-12 16:35:34.302 [coze-task-5308] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53387 executeId=7638920422151618610 status=RUNNING -aiimage-backend.log.2026-05-12.4:67501:2026-05-12 16:36:04.077 [coze-task-5332] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:67502:2026-05-12 16:36:04.077 [coze-task-5338] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:67511:2026-05-12 16:36:04.088 [coze-task-5338] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53385 -aiimage-backend.log.2026-05-12.4:67514:2026-05-12 16:36:04.088 [coze-task-5332] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53387 executeId=7638920422151618610 jobId=2713 chunk=null batch=2/3 -aiimage-backend.log.2026-05-12.4:67533:2026-05-12 16:36:04.314 [coze-task-5332] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53387 executeId=7638920422151618610 status=RUNNING -aiimage-backend.log.2026-05-12.4:67902:2026-05-12 16:36:34.080 [coze-task-5352] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:67907:2026-05-12 16:36:34.080 [coze-task-5357] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:67914:2026-05-12 16:36:34.088 [coze-task-5357] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53385 -aiimage-backend.log.2026-05-12.4:67920:2026-05-12 16:36:34.090 [coze-task-5352] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53387 executeId=7638920422151618610 jobId=2713 chunk=null batch=2/3 -aiimage-backend.log.2026-05-12.4:67941:2026-05-12 16:36:34.344 [coze-task-5352] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53387 executeId=7638920422151618610 status=RUNNING -aiimage-backend.log.2026-05-12.4:68137:2026-05-12 16:37:04.081 [coze-task-5366] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:68144:2026-05-12 16:37:04.081 [coze-task-5373] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:68155:2026-05-12 16:37:04.091 [coze-task-5373] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53385 -aiimage-backend.log.2026-05-12.4:68159:2026-05-12 16:37:04.092 [coze-task-5366] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53387 executeId=7638920422151618610 jobId=2713 chunk=null batch=2/3 -aiimage-backend.log.2026-05-12.4:68173:2026-05-12 16:37:04.326 [coze-task-5366] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53387 executeId=7638920422151618610 status=RUNNING -aiimage-backend.log.2026-05-12.4:68370:2026-05-12 16:37:34.082 [coze-task-5382] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:68373:2026-05-12 16:37:34.083 [coze-task-5388] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:68381:2026-05-12 16:37:34.084 [coze-task-5388] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53385 -aiimage-backend.log.2026-05-12.4:68387:2026-05-12 16:37:34.093 [coze-task-5382] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53387 executeId=7638920422151618610 jobId=2713 chunk=null batch=2/3 -aiimage-backend.log.2026-05-12.4:68394:2026-05-12 16:37:34.219 [coze-task-5382] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53387 executeId=7638920422151618610 status=RUNNING -aiimage-backend.log.2026-05-12.4:68543:2026-05-12 16:38:00.547 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:68544:2026-05-12 16:38:00.554 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:68545:2026-05-12 16:38:00.575 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:68546:2026-05-12 16:38:00.575 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:68549:2026-05-12 16:38:00.963 [coze-task-5390] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=384 -aiimage-backend.log.2026-05-12.4:68586:2026-05-12 16:38:04.084 [coze-task-5396] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:68594:2026-05-12 16:38:04.085 [coze-task-5404] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:68601:2026-05-12 16:38:04.085 [coze-task-5404] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53385 -aiimage-backend.log.2026-05-12.4:68609:2026-05-12 16:38:04.094 [coze-task-5396] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53387 executeId=7638920422151618610 jobId=2713 chunk=null batch=2/3 -aiimage-backend.log.2026-05-12.4:68619:2026-05-12 16:38:04.233 [coze-task-5396] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53387 executeId=7638920422151618610 status=RUNNING -aiimage-backend.log.2026-05-12.4:68850:2026-05-12 16:38:34.084 [coze-task-5414] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:68859:2026-05-12 16:38:34.085 [coze-task-5421] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:68865:2026-05-12 16:38:34.094 [coze-task-5421] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53385 -aiimage-backend.log.2026-05-12.4:68871:2026-05-12 16:38:34.096 [coze-task-5414] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53387 executeId=7638920422151618610 jobId=2713 chunk=null batch=2/3 -aiimage-backend.log.2026-05-12.4:68886:2026-05-12 16:38:34.239 [coze-task-5414] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53387 executeId=7638920422151618610 status=RUNNING -aiimage-backend.log.2026-05-12.4:69149:2026-05-12 16:39:04.086 [coze-task-5429] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:69155:2026-05-12 16:39:04.086 [coze-task-5436] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:69163:2026-05-12 16:39:04.087 [coze-task-5436] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53385 -aiimage-backend.log.2026-05-12.4:69166:2026-05-12 16:39:04.096 [coze-task-5429] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53387 executeId=7638920422151618610 jobId=2713 chunk=null batch=2/3 -aiimage-backend.log.2026-05-12.4:69187:2026-05-12 16:39:04.325 [coze-task-5429] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53387 executeId=7638920422151618610 status=RUNNING -aiimage-backend.log.2026-05-12.4:69387:2026-05-12 16:39:34.088 [coze-task-5444] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:69394:2026-05-12 16:39:34.088 [coze-task-5450] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:69398:2026-05-12 16:39:34.089 [coze-task-5450] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53385 -aiimage-backend.log.2026-05-12.4:69400:2026-05-12 16:39:34.095 [coze-task-5444] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53387 executeId=7638920422151618610 jobId=2713 chunk=null batch=2/3 -aiimage-backend.log.2026-05-12.4:69411:2026-05-12 16:39:34.239 [coze-task-5444] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53387 executeId=7638920422151618610 status=RUNNING -aiimage-backend.log.2026-05-12.4:69673:2026-05-12 16:40:04.089 [coze-task-5456] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:69674:2026-05-12 16:40:04.089 [coze-task-5463] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53385 taskId=8095 executeId=7638920296989098047 -aiimage-backend.log.2026-05-12.4:69683:2026-05-12 16:40:04.090 [coze-task-5456] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped because task is locked taskId=8095 stateId=53387 -aiimage-backend.log.2026-05-12.4:69687:2026-05-12 16:40:04.096 [coze-task-5463] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53385 executeId=7638920296989098047 jobId=2713 chunk=null batch=1/3 -aiimage-backend.log.2026-05-12.4:69709:2026-05-12 16:40:04.724 [coze-task-5463] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53385 executeId=7638920296989098047 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.4:70360:2026-05-12 16:40:34.090 [coze-task-5472] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53387 taskId=8095 executeId=7638920422151618610 -aiimage-backend.log.2026-05-12.4:70371:2026-05-12 16:40:34.099 [coze-task-5472] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53387 executeId=7638920422151618610 jobId=2713 chunk=null batch=2/3 -aiimage-backend.log.2026-05-12.4:70382:2026-05-12 16:40:34.698 [coze-task-5472] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53387 executeId=7638920422151618610 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.4:73663:2026-05-12 16:44:20.481 [http-nio-18080-exec-1] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:73664:2026-05-12 16:44:20.486 [http-nio-18080-exec-1] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:73665:2026-05-12 16:44:20.505 [http-nio-18080-exec-1] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:73666:2026-05-12 16:44:20.505 [http-nio-18080-exec-1] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:74672:2026-05-12 16:45:23.283 [coze-task-5532] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638923553069547571 -aiimage-backend.log.2026-05-12.4:74673:2026-05-12 16:45:23.290 [coze-task-5532] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=62780 -aiimage-backend.log.2026-05-12.4:74800:2026-05-12 16:45:34.105 [coze-task-5555] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53421 taskId=8095 executeId=7638923553069547571 -aiimage-backend.log.2026-05-12.4:74805:2026-05-12 16:45:34.114 [coze-task-5555] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53421 executeId=7638923553069547571 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:74816:2026-05-12 16:45:34.239 [coze-task-5555] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53421 executeId=7638923553069547571 status=RUNNING -aiimage-backend.log.2026-05-12.4:75015:2026-05-12 16:46:04.106 [coze-task-5564] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53421 taskId=8095 executeId=7638923553069547571 -aiimage-backend.log.2026-05-12.4:75018:2026-05-12 16:46:04.115 [coze-task-5564] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53421 executeId=7638923553069547571 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:75023:2026-05-12 16:46:04.254 [coze-task-5564] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53421 executeId=7638923553069547571 status=RUNNING -aiimage-backend.log.2026-05-12.4:75234:2026-05-12 16:46:34.108 [coze-task-5570] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53421 taskId=8095 executeId=7638923553069547571 -aiimage-backend.log.2026-05-12.4:75240:2026-05-12 16:46:34.117 [coze-task-5570] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53421 executeId=7638923553069547571 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:75244:2026-05-12 16:46:34.232 [coze-task-5570] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53421 executeId=7638923553069547571 status=RUNNING -aiimage-backend.log.2026-05-12.4:75452:2026-05-12 16:47:04.109 [coze-task-5575] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53421 taskId=8095 executeId=7638923553069547571 -aiimage-backend.log.2026-05-12.4:75454:2026-05-12 16:47:04.117 [coze-task-5575] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53421 executeId=7638923553069547571 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.4:75465:2026-05-12 16:47:04.780 [coze-task-5575] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53421 executeId=7638923553069547571 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.4:77524:2026-05-12 16:50:36.640 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:77525:2026-05-12 16:50:36.646 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.4:77526:2026-05-12 16:50:36.665 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:77527:2026-05-12 16:50:36.665 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:77534:2026-05-12 16:50:37.364 [coze-task-5612] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=21 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.4:77535:2026-05-12 16:50:37.371 [coze-task-5612] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=703 -aiimage-backend.log.2026-05-12.4:80628:2026-05-12 16:53:35.676 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=true cozeDone=false -aiimage-backend.log.2026-05-12.4:80629:2026-05-12 16:53:35.681 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=true cozeDone=false -aiimage-backend.log.2026-05-12.4:80632:2026-05-12 16:53:36.124 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:80633:2026-05-12 16:53:36.124 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:80634:2026-05-12 16:53:36.143 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:80635:2026-05-12 16:53:36.143 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:80700:2026-05-12 16:53:46.150 [coze-task-5643] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:80701:2026-05-12 16:53:46.150 [coze-task-5643] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:80702:2026-05-12 16:53:46.150 [coze-task-5643] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:80763:2026-05-12 16:53:56.180 [coze-task-5646] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:80764:2026-05-12 16:53:56.180 [coze-task-5646] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:80765:2026-05-12 16:53:56.180 [coze-task-5646] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:80852:2026-05-12 16:54:06.209 [coze-task-5647] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:80853:2026-05-12 16:54:06.209 [coze-task-5647] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:80854:2026-05-12 16:54:06.210 [coze-task-5647] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:80913:2026-05-12 16:54:16.240 [coze-task-5651] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:80914:2026-05-12 16:54:16.241 [coze-task-5651] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:80915:2026-05-12 16:54:16.241 [coze-task-5651] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:80992:2026-05-12 16:54:26.271 [coze-task-5652] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:80993:2026-05-12 16:54:26.271 [coze-task-5652] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:80994:2026-05-12 16:54:26.272 [coze-task-5652] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:81112:2026-05-12 16:54:36.304 [coze-task-5656] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81113:2026-05-12 16:54:36.304 [coze-task-5656] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81114:2026-05-12 16:54:36.305 [coze-task-5656] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:81232:2026-05-12 16:54:46.335 [coze-task-5661] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81233:2026-05-12 16:54:46.335 [coze-task-5661] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81234:2026-05-12 16:54:46.335 [coze-task-5661] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:81300:2026-05-12 16:54:56.358 [coze-task-5664] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81301:2026-05-12 16:54:56.358 [coze-task-5664] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81302:2026-05-12 16:54:56.358 [coze-task-5664] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:81388:2026-05-12 16:55:06.383 [coze-task-5665] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81389:2026-05-12 16:55:06.383 [coze-task-5665] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81390:2026-05-12 16:55:06.383 [coze-task-5665] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:81454:2026-05-12 16:55:16.411 [coze-task-5669] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81455:2026-05-12 16:55:16.411 [coze-task-5669] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81456:2026-05-12 16:55:16.412 [coze-task-5669] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:81522:2026-05-12 16:55:26.441 [coze-task-5671] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81523:2026-05-12 16:55:26.441 [coze-task-5671] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81524:2026-05-12 16:55:26.441 [coze-task-5671] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:81625:2026-05-12 16:55:36.468 [coze-task-5673] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81626:2026-05-12 16:55:36.468 [coze-task-5673] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81627:2026-05-12 16:55:36.468 [coze-task-5673] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:81690:2026-05-12 16:55:46.497 [coze-task-5678] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81691:2026-05-12 16:55:46.497 [coze-task-5678] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81692:2026-05-12 16:55:46.497 [coze-task-5678] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:81761:2026-05-12 16:55:56.520 [coze-task-5679] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81762:2026-05-12 16:55:56.520 [coze-task-5679] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81763:2026-05-12 16:55:56.521 [coze-task-5679] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:81863:2026-05-12 16:56:06.549 [coze-task-5680] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81864:2026-05-12 16:56:06.549 [coze-task-5680] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81865:2026-05-12 16:56:06.549 [coze-task-5680] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:81957:2026-05-12 16:56:16.574 [coze-task-5685] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81958:2026-05-12 16:56:16.574 [coze-task-5685] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:81959:2026-05-12 16:56:16.574 [coze-task-5685] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:82019:2026-05-12 16:56:26.599 [coze-task-5687] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:82020:2026-05-12 16:56:26.599 [coze-task-5687] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:82021:2026-05-12 16:56:26.599 [coze-task-5687] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:82107:2026-05-12 16:56:36.626 [coze-task-5688] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:82108:2026-05-12 16:56:36.626 [coze-task-5688] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.4:82109:2026-05-12 16:56:36.626 [coze-task-5688] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process requeued because task lock is busy jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 -aiimage-backend.log.2026-05-12.4:82123:2026-05-12 16:56:38.964 [coze-task-5644] WARN c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submit failed taskId=8095 jobId=2713 rows=31 batch=1/1 err=Coze submit throttle lock timeout -aiimage-backend.log.2026-05-12.4:82128:2026-05-12 16:56:39.697 [coze-task-5644] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] assemble workbook taskId=8095 parsedRows=3286 receivedRows=3286 resultRows=3286 resolvedRows=3286 reasonRows=3201 -aiimage-backend.log.2026-05-12.4:82138:2026-05-12 16:56:41.058 [coze-task-5644] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process success jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=184911 resultFileUrl=result/appearance_patent/3ebc303c-c675-48c2-8fb4-fd8e0141b03b/黄建彬查询专利3-8095-10731-bda913fc-215b-45a3-be9c-7c44aaa8c433-result.xlsx -aiimage-backend.log.2026-05-12.4:82143:2026-05-12 16:56:41.319 [coze-task-5691] WARN c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] read all rows failed taskId=8095 err=读取解析载荷失败 -aiimage-backend.log.2026-05-12.4:82144:2026-05-12 16:56:41.327 [coze-task-5691] WARN c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process failed jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 msg=读取解析载荷失败 -aiimage-backend.log.2026-05-12.2:898:2026-05-12 05:58:05.681 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:899:2026-05-12 05:58:05.686 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:900:2026-05-12 05:58:05.704 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:901:2026-05-12 05:58:05.704 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:925:2026-05-12 05:58:06.002 [coze-task-1556] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=41 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:926:2026-05-12 05:58:06.010 [coze-task-1556] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=303 -aiimage-backend.log.2026-05-12.2:6474:2026-05-12 06:04:12.031 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:6475:2026-05-12 06:04:12.035 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:6476:2026-05-12 06:04:12.055 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:6477:2026-05-12 06:04:12.055 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:6779:2026-05-12 06:04:42.811 [coze-task-1582] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638758408044871732 -aiimage-backend.log.2026-05-12.2:6780:2026-05-12 06:04:42.820 [coze-task-1582] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=30761 -aiimage-backend.log.2026-05-12.2:6994:2026-05-12 06:05:02.171 [coze-task-1586] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52957 taskId=8095 executeId=7638758408044871732 -aiimage-backend.log.2026-05-12.2:6997:2026-05-12 06:05:02.179 [coze-task-1586] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=52957 executeId=7638758408044871732 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:6999:2026-05-12 06:05:02.305 [coze-task-1586] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=52957 executeId=7638758408044871732 status=RUNNING -aiimage-backend.log.2026-05-12.2:7305:2026-05-12 06:05:32.172 [coze-task-1589] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52957 taskId=8095 executeId=7638758408044871732 -aiimage-backend.log.2026-05-12.2:7306:2026-05-12 06:05:32.179 [coze-task-1589] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=52957 executeId=7638758408044871732 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:7308:2026-05-12 06:05:32.468 [coze-task-1589] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=52957 executeId=7638758408044871732 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.2:10431:2026-05-12 06:10:21.133 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:10432:2026-05-12 06:10:21.139 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:10433:2026-05-12 06:10:21.159 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:10434:2026-05-12 06:10:21.159 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:10444:2026-05-12 06:10:21.387 [coze-task-1604] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=33 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:10445:2026-05-12 06:10:21.392 [coze-task-1604] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=230 -aiimage-backend.log.2026-05-12.2:15833:2026-05-12 06:16:30.076 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:15834:2026-05-12 06:16:30.082 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:15835:2026-05-12 06:16:30.100 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:15836:2026-05-12 06:16:30.100 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:16373:2026-05-12 06:17:29.087 [coze-task-1617] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638761683033243690 -aiimage-backend.log.2026-05-12.2:16374:2026-05-12 06:17:29.094 [coze-task-1617] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=58991 -aiimage-backend.log.2026-05-12.2:16417:2026-05-12 06:17:32.203 [coze-task-1619] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52963 taskId=8095 executeId=7638761683033243690 -aiimage-backend.log.2026-05-12.2:16419:2026-05-12 06:17:32.211 [coze-task-1619] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=52963 executeId=7638761683033243690 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:16425:2026-05-12 06:17:32.334 [coze-task-1619] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=52963 executeId=7638761683033243690 status=RUNNING -aiimage-backend.log.2026-05-12.2:16756:2026-05-12 06:18:02.205 [coze-task-1624] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52963 taskId=8095 executeId=7638761683033243690 -aiimage-backend.log.2026-05-12.2:16758:2026-05-12 06:18:02.211 [coze-task-1624] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=52963 executeId=7638761683033243690 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:16764:2026-05-12 06:18:02.414 [coze-task-1624] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=52963 executeId=7638761683033243690 status=RUNNING -aiimage-backend.log.2026-05-12.2:17041:2026-05-12 06:18:32.206 [coze-task-1626] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52963 taskId=8095 executeId=7638761683033243690 -aiimage-backend.log.2026-05-12.2:17043:2026-05-12 06:18:32.215 [coze-task-1626] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=52963 executeId=7638761683033243690 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:17058:2026-05-12 06:18:32.705 [coze-task-1626] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=52963 executeId=7638761683033243690 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.2:21272:2026-05-12 06:22:39.066 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:21273:2026-05-12 06:22:39.071 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:21274:2026-05-12 06:22:39.089 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:21275:2026-05-12 06:22:39.089 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:21277:2026-05-12 06:22:39.669 [coze-task-1636] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=25 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:21278:2026-05-12 06:22:39.682 [coze-task-1636] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=590 -aiimage-backend.log.2026-05-12.2:24931:2026-05-12 06:28:47.178 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:24932:2026-05-12 06:28:47.183 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:24933:2026-05-12 06:28:47.202 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:24934:2026-05-12 06:28:47.202 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:24936:2026-05-12 06:28:47.527 [coze-task-1655] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=46 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:24937:2026-05-12 06:28:47.538 [coze-task-1655] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=333 -aiimage-backend.log.2026-05-12.2:30129:2026-05-12 06:34:54.041 [http-nio-18080-exec-3] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:30131:2026-05-12 06:34:54.045 [http-nio-18080-exec-3] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:30132:2026-05-12 06:34:54.064 [http-nio-18080-exec-3] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:30133:2026-05-12 06:34:54.064 [http-nio-18080-exec-3] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:30438:2026-05-12 06:35:26.121 [coze-task-1669] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638766309548163122 -aiimage-backend.log.2026-05-12.2:30439:2026-05-12 06:35:26.129 [coze-task-1669] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=32060 -aiimage-backend.log.2026-05-12.2:30507:2026-05-12 06:35:32.257 [coze-task-1672] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52974 taskId=8095 executeId=7638766309548163122 -aiimage-backend.log.2026-05-12.2:30510:2026-05-12 06:35:32.265 [coze-task-1672] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=52974 executeId=7638766309548163122 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:30513:2026-05-12 06:35:32.377 [coze-task-1672] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=52974 executeId=7638766309548163122 status=RUNNING -aiimage-backend.log.2026-05-12.2:30799:2026-05-12 06:36:02.258 [coze-task-1675] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52974 taskId=8095 executeId=7638766309548163122 -aiimage-backend.log.2026-05-12.2:30801:2026-05-12 06:36:02.265 [coze-task-1675] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=52974 executeId=7638766309548163122 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:30806:2026-05-12 06:36:02.583 [coze-task-1675] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=52974 executeId=7638766309548163122 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.2:34266:2026-05-12 06:41:01.788 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:34267:2026-05-12 06:41:01.793 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:34268:2026-05-12 06:41:01.814 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:34269:2026-05-12 06:41:01.814 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:34277:2026-05-12 06:41:02.222 [coze-task-1684] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=38 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:34278:2026-05-12 06:41:02.228 [coze-task-1684] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=411 -aiimage-backend.log.2026-05-12.2:38991:2026-05-12 06:47:06.603 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:38992:2026-05-12 06:47:06.610 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:38993:2026-05-12 06:47:06.632 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:38994:2026-05-12 06:47:06.633 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:39507:2026-05-12 06:47:56.740 [coze-task-1703] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638769558660546595 -aiimage-backend.log.2026-05-12.2:39508:2026-05-12 06:47:56.751 [coze-task-1703] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=50115 -aiimage-backend.log.2026-05-12.2:39553:2026-05-12 06:48:02.293 [coze-task-1706] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52981 taskId=8095 executeId=7638769558660546595 -aiimage-backend.log.2026-05-12.2:39554:2026-05-12 06:48:02.301 [coze-task-1706] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=52981 executeId=7638769558660546595 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:39561:2026-05-12 06:48:02.488 [coze-task-1706] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=52981 executeId=7638769558660546595 status=RUNNING -aiimage-backend.log.2026-05-12.2:39848:2026-05-12 06:48:32.295 [coze-task-1709] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52981 taskId=8095 executeId=7638769558660546595 -aiimage-backend.log.2026-05-12.2:39850:2026-05-12 06:48:32.301 [coze-task-1709] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=52981 executeId=7638769558660546595 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:39852:2026-05-12 06:48:32.503 [coze-task-1709] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=52981 executeId=7638769558660546595 status=RUNNING -aiimage-backend.log.2026-05-12.2:40243:2026-05-12 06:49:02.296 [coze-task-1710] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52981 taskId=8095 executeId=7638769558660546595 -aiimage-backend.log.2026-05-12.2:40245:2026-05-12 06:49:02.297 [coze-task-1710] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=52981 executeId=7638769558660546595 lastPolledAt=2026-05-12T06:48:33 -aiimage-backend.log.2026-05-12.2:40593:2026-05-12 06:49:32.298 [coze-task-1715] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52981 taskId=8095 executeId=7638769558660546595 -aiimage-backend.log.2026-05-12.2:40594:2026-05-12 06:49:32.305 [coze-task-1715] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=52981 executeId=7638769558660546595 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:40597:2026-05-12 06:49:32.784 [coze-task-1715] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=52981 executeId=7638769558660546595 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.2:44732:2026-05-12 06:53:15.037 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:44733:2026-05-12 06:53:15.042 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:44734:2026-05-12 06:53:15.061 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:44735:2026-05-12 06:53:15.061 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:44737:2026-05-12 06:53:15.440 [coze-task-1720] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=30 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:44738:2026-05-12 06:53:15.447 [coze-task-1720] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=382 -aiimage-backend.log.2026-05-12.2:48486:2026-05-12 06:59:21.574 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:48487:2026-05-12 06:59:21.579 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:48488:2026-05-12 06:59:21.603 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:48489:2026-05-12 06:59:21.603 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:48798:2026-05-12 06:59:52.206 [coze-task-1732] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638772641251606563 -aiimage-backend.log.2026-05-12.2:48799:2026-05-12 06:59:52.214 [coze-task-1732] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=30607 -aiimage-backend.log.2026-05-12.2:48946:2026-05-12 07:00:02.326 [coze-task-1734] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52985 taskId=8095 executeId=7638772641251606563 -aiimage-backend.log.2026-05-12.2:48947:2026-05-12 07:00:02.335 [coze-task-1734] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=52985 executeId=7638772641251606563 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:48949:2026-05-12 07:00:02.454 [coze-task-1734] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=52985 executeId=7638772641251606563 status=RUNNING -aiimage-backend.log.2026-05-12.2:49472:2026-05-12 07:00:32.328 [coze-task-1735] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52985 taskId=8095 executeId=7638772641251606563 -aiimage-backend.log.2026-05-12.2:49473:2026-05-12 07:00:32.336 [coze-task-1735] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=52985 executeId=7638772641251606563 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:49478:2026-05-12 07:00:32.669 [coze-task-1735] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=52985 executeId=7638772641251606563 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.2:53684:2026-05-12 07:05:26.983 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:53686:2026-05-12 07:05:26.988 [http-nio-18080-exec-10] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:53687:2026-05-12 07:05:27.007 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:53688:2026-05-12 07:05:27.007 [http-nio-18080-exec-10] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:53690:2026-05-12 07:05:27.363 [coze-task-1756] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=22 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:53691:2026-05-12 07:05:27.369 [coze-task-1756] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=359 -aiimage-backend.log.2026-05-12.2:58309:2026-05-12 07:11:31.034 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:58310:2026-05-12 07:11:31.039 [http-nio-18080-exec-7] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:58311:2026-05-12 07:11:31.057 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:58312:2026-05-12 07:11:31.057 [http-nio-18080-exec-7] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:58317:2026-05-12 07:11:31.333 [coze-task-1773] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=43 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:58318:2026-05-12 07:11:31.339 [coze-task-1773] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=279 -aiimage-backend.log.2026-05-12.2:63013:2026-05-12 07:17:36.959 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:63014:2026-05-12 07:17:36.964 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:63015:2026-05-12 07:17:36.983 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:63016:2026-05-12 07:17:36.983 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:63453:2026-05-12 07:18:07.803 [coze-task-1792] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638777334548512808 -aiimage-backend.log.2026-05-12.2:63454:2026-05-12 07:18:07.810 [coze-task-1792] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=30824 -aiimage-backend.log.2026-05-12.2:63685:2026-05-12 07:18:32.381 [coze-task-1797] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52997 taskId=8095 executeId=7638777334548512808 -aiimage-backend.log.2026-05-12.2:63692:2026-05-12 07:18:32.389 [coze-task-1797] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=52997 executeId=7638777334548512808 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:63696:2026-05-12 07:18:32.515 [coze-task-1797] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=52997 executeId=7638777334548512808 status=RUNNING -aiimage-backend.log.2026-05-12.2:63995:2026-05-12 07:19:02.383 [coze-task-1802] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52997 taskId=8095 executeId=7638777334548512808 -aiimage-backend.log.2026-05-12.2:63998:2026-05-12 07:19:02.384 [coze-task-1802] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=52997 executeId=7638777334548512808 lastPolledAt=2026-05-12T07:18:33 -aiimage-backend.log.2026-05-12.2:64308:2026-05-12 07:19:32.384 [coze-task-1806] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=52997 taskId=8095 executeId=7638777334548512808 -aiimage-backend.log.2026-05-12.2:64310:2026-05-12 07:19:32.392 [coze-task-1806] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=52997 executeId=7638777334548512808 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:64312:2026-05-12 07:19:32.902 [coze-task-1806] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=52997 executeId=7638777334548512808 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.2:68274:2026-05-12 07:23:43.374 [http-nio-18080-exec-6] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:68275:2026-05-12 07:23:43.379 [http-nio-18080-exec-6] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:68277:2026-05-12 07:23:43.398 [http-nio-18080-exec-6] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:68278:2026-05-12 07:23:43.398 [http-nio-18080-exec-6] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:68286:2026-05-12 07:23:43.986 [coze-task-1814] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=35 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:68287:2026-05-12 07:23:43.997 [coze-task-1814] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=595 -aiimage-backend.log.2026-05-12.2:71995:2026-05-12 07:29:50.259 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:71996:2026-05-12 07:29:50.264 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:71997:2026-05-12 07:29:50.282 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:71998:2026-05-12 07:29:50.282 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:72469:2026-05-12 07:30:20.715 [coze-task-1828] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638780497149100082 -aiimage-backend.log.2026-05-12.2:72470:2026-05-12 07:30:20.723 [coze-task-1828] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=30438 -aiimage-backend.log.2026-05-12.2:72675:2026-05-12 07:30:32.414 [coze-task-1829] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53001 taskId=8095 executeId=7638780497149100082 -aiimage-backend.log.2026-05-12.2:72676:2026-05-12 07:30:32.420 [coze-task-1829] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53001 executeId=7638780497149100082 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:72682:2026-05-12 07:30:32.563 [coze-task-1829] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53001 executeId=7638780497149100082 status=RUNNING -aiimage-backend.log.2026-05-12.2:73174:2026-05-12 07:31:02.415 [coze-task-1831] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53001 taskId=8095 executeId=7638780497149100082 -aiimage-backend.log.2026-05-12.2:73175:2026-05-12 07:31:02.416 [coze-task-1831] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53001 executeId=7638780497149100082 lastPolledAt=2026-05-12T07:30:33 -aiimage-backend.log.2026-05-12.2:73708:2026-05-12 07:31:32.416 [coze-task-1832] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53001 taskId=8095 executeId=7638780497149100082 -aiimage-backend.log.2026-05-12.2:73709:2026-05-12 07:31:32.423 [coze-task-1832] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53001 executeId=7638780497149100082 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:73714:2026-05-12 07:31:32.748 [coze-task-1832] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53001 executeId=7638780497149100082 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.2:77821:2026-05-12 07:35:57.629 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:77822:2026-05-12 07:35:57.634 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:77823:2026-05-12 07:35:57.652 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:77824:2026-05-12 07:35:57.652 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:77830:2026-05-12 07:35:58.017 [coze-task-1842] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=27 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:77831:2026-05-12 07:35:58.023 [coze-task-1842] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=368 -aiimage-backend.log.2026-05-12.2:83252:2026-05-12 07:42:07.411 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:83253:2026-05-12 07:42:07.416 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:83254:2026-05-12 07:42:07.439 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:83255:2026-05-12 07:42:07.439 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:83260:2026-05-12 07:42:07.745 [coze-task-1870] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=48 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:83261:2026-05-12 07:42:07.756 [coze-task-1870] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=313 -aiimage-backend.log.2026-05-12.2:87680:2026-05-12 07:48:13.153 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:87681:2026-05-12 07:48:13.160 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:87682:2026-05-12 07:48:13.180 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:87683:2026-05-12 07:48:13.180 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:87958:2026-05-12 07:48:43.729 [coze-task-1879] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638785237577433098 -aiimage-backend.log.2026-05-12.2:87959:2026-05-12 07:48:43.736 [coze-task-1879] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=30553 -aiimage-backend.log.2026-05-12.2:88142:2026-05-12 07:49:02.464 [coze-task-1881] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53011 taskId=8095 executeId=7638785237577433098 -aiimage-backend.log.2026-05-12.2:88144:2026-05-12 07:49:02.471 [coze-task-1881] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53011 executeId=7638785237577433098 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:88150:2026-05-12 07:49:02.592 [coze-task-1881] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53011 executeId=7638785237577433098 status=RUNNING -aiimage-backend.log.2026-05-12.2:88461:2026-05-12 07:49:32.465 [coze-task-1883] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53011 taskId=8095 executeId=7638785237577433098 -aiimage-backend.log.2026-05-12.2:88462:2026-05-12 07:49:32.467 [coze-task-1883] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53011 executeId=7638785237577433098 lastPolledAt=2026-05-12T07:49:03 -aiimage-backend.log.2026-05-12.2:88751:2026-05-12 07:50:02.467 [coze-task-1885] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53011 taskId=8095 executeId=7638785237577433098 -aiimage-backend.log.2026-05-12.2:88752:2026-05-12 07:50:02.474 [coze-task-1885] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53011 executeId=7638785237577433098 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:88763:2026-05-12 07:50:02.941 [coze-task-1885] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53011 executeId=7638785237577433098 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.2:92857:2026-05-12 07:54:17.964 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:92858:2026-05-12 07:54:17.970 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:92859:2026-05-12 07:54:17.990 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:92860:2026-05-12 07:54:17.990 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:92862:2026-05-12 07:54:18.428 [coze-task-1904] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=40 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:92863:2026-05-12 07:54:18.439 [coze-task-1904] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=446 -aiimage-backend.log.2026-05-12.2:96675:2026-05-12 08:00:26.842 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:96676:2026-05-12 08:00:26.848 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:96677:2026-05-12 08:00:26.869 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:96678:2026-05-12 08:00:26.869 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:97251:2026-05-12 08:00:57.580 [coze-task-1916] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638788406897917995 -aiimage-backend.log.2026-05-12.2:97252:2026-05-12 08:00:57.591 [coze-task-1916] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=30718 -aiimage-backend.log.2026-05-12.2:97340:2026-05-12 08:01:02.500 [coze-task-1920] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53019 taskId=8095 executeId=7638788406897917995 -aiimage-backend.log.2026-05-12.2:97345:2026-05-12 08:01:02.509 [coze-task-1920] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53019 executeId=7638788406897917995 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:97350:2026-05-12 08:01:02.657 [coze-task-1920] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53019 executeId=7638788406897917995 status=RUNNING -aiimage-backend.log.2026-05-12.2:98108:2026-05-12 08:01:32.501 [coze-task-1923] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53019 taskId=8095 executeId=7638788406897917995 -aiimage-backend.log.2026-05-12.2:98111:2026-05-12 08:01:32.503 [coze-task-1923] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53019 executeId=7638788406897917995 lastPolledAt=2026-05-12T08:01:03 -aiimage-backend.log.2026-05-12.2:98940:2026-05-12 08:02:02.503 [coze-task-1925] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53019 taskId=8095 executeId=7638788406897917995 -aiimage-backend.log.2026-05-12.2:98941:2026-05-12 08:02:02.511 [coze-task-1925] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53019 executeId=7638788406897917995 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:98946:2026-05-12 08:02:02.967 [coze-task-1925] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53019 executeId=7638788406897917995 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.2:101742:2026-05-12 08:06:38.965 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:101743:2026-05-12 08:06:38.970 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:101744:2026-05-12 08:06:38.991 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:101745:2026-05-12 08:06:38.991 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:101748:2026-05-12 08:06:39.425 [coze-task-1935] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=32 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:101749:2026-05-12 08:06:39.431 [coze-task-1935] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=436 -aiimage-backend.log.2026-05-12.2:107403:2026-05-12 08:12:48.306 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:107404:2026-05-12 08:12:48.311 [http-nio-18080-exec-9] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:107405:2026-05-12 08:12:48.330 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:107406:2026-05-12 08:12:48.330 [http-nio-18080-exec-9] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:107735:2026-05-12 08:13:19.456 [coze-task-1950] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638791578316619811 -aiimage-backend.log.2026-05-12.2:107736:2026-05-12 08:13:19.466 [coze-task-1950] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=31132 -aiimage-backend.log.2026-05-12.2:107844:2026-05-12 08:13:32.535 [coze-task-1952] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53024 taskId=8095 executeId=7638791578316619811 -aiimage-backend.log.2026-05-12.2:107845:2026-05-12 08:13:32.543 [coze-task-1952] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53024 executeId=7638791578316619811 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:107847:2026-05-12 08:13:32.645 [coze-task-1952] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53024 executeId=7638791578316619811 status=RUNNING -aiimage-backend.log.2026-05-12.2:108129:2026-05-12 08:14:02.537 [coze-task-1953] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53024 taskId=8095 executeId=7638791578316619811 -aiimage-backend.log.2026-05-12.2:108130:2026-05-12 08:14:02.538 [coze-task-1953] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53024 executeId=7638791578316619811 lastPolledAt=2026-05-12T08:13:33 -aiimage-backend.log.2026-05-12.2:108427:2026-05-12 08:14:32.538 [coze-task-1954] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53024 taskId=8095 executeId=7638791578316619811 -aiimage-backend.log.2026-05-12.2:108428:2026-05-12 08:14:32.545 [coze-task-1954] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53024 executeId=7638791578316619811 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:108433:2026-05-12 08:14:32.952 [coze-task-1954] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53024 executeId=7638791578316619811 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.2:111121:2026-05-12 08:18:54.995 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:111122:2026-05-12 08:18:55.000 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:111123:2026-05-12 08:18:55.019 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:111124:2026-05-12 08:18:55.019 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:111126:2026-05-12 08:18:55.674 [coze-task-1964] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=24 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:111127:2026-05-12 08:18:55.685 [coze-task-1964] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=663 -aiimage-backend.log.2026-05-12.2:116269:2026-05-12 08:24:59.619 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:116270:2026-05-12 08:24:59.626 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:116271:2026-05-12 08:24:59.648 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:116272:2026-05-12 08:24:59.648 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:116286:2026-05-12 08:25:00.511 [coze-task-1989] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=45 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:116287:2026-05-12 08:25:00.524 [coze-task-1989] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=872 -aiimage-backend.log.2026-05-12.2:120437:2026-05-12 08:31:15.396 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:120438:2026-05-12 08:31:15.401 [http-nio-18080-exec-4] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:120439:2026-05-12 08:31:15.422 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:120440:2026-05-12 08:31:15.422 [http-nio-18080-exec-4] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:121725:2026-05-12 08:31:46.036 [coze-task-2002] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638796343398039561 -aiimage-backend.log.2026-05-12.2:121726:2026-05-12 08:31:46.043 [coze-task-2002] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=30618 -aiimage-backend.log.2026-05-12.2:121901:2026-05-12 08:32:02.588 [coze-task-2004] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53033 taskId=8095 executeId=7638796343398039561 -aiimage-backend.log.2026-05-12.2:121902:2026-05-12 08:32:02.594 [coze-task-2004] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53033 executeId=7638796343398039561 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:121904:2026-05-12 08:32:02.718 [coze-task-2004] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53033 executeId=7638796343398039561 status=RUNNING -aiimage-backend.log.2026-05-12.2:122216:2026-05-12 08:32:32.589 [coze-task-2005] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53033 taskId=8095 executeId=7638796343398039561 -aiimage-backend.log.2026-05-12.2:122217:2026-05-12 08:32:32.590 [coze-task-2005] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53033 executeId=7638796343398039561 lastPolledAt=2026-05-12T08:32:03 -aiimage-backend.log.2026-05-12.2:122508:2026-05-12 08:33:02.591 [coze-task-2006] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53033 taskId=8095 executeId=7638796343398039561 -aiimage-backend.log.2026-05-12.2:122509:2026-05-12 08:33:02.598 [coze-task-2006] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53033 executeId=7638796343398039561 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:122514:2026-05-12 08:33:03.024 [coze-task-2006] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53033 executeId=7638796343398039561 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.2:125511:2026-05-12 08:37:35.205 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:125512:2026-05-12 08:37:35.212 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:125513:2026-05-12 08:37:35.233 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:125514:2026-05-12 08:37:35.233 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:125516:2026-05-12 08:37:35.581 [coze-task-2019] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=37 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:125517:2026-05-12 08:37:35.592 [coze-task-2019] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=355 -aiimage-backend.log.2026-05-12.2:130850:2026-05-12 08:43:52.884 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:130851:2026-05-12 08:43:52.889 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:130852:2026-05-12 08:43:52.910 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:130853:2026-05-12 08:43:52.910 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:131150:2026-05-12 08:44:23.666 [coze-task-2031] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638799601927241755 -aiimage-backend.log.2026-05-12.2:131151:2026-05-12 08:44:23.673 [coze-task-2031] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=30760 -aiimage-backend.log.2026-05-12.2:131253:2026-05-12 08:44:32.624 [coze-task-2033] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53040 taskId=8095 executeId=7638799601927241755 -aiimage-backend.log.2026-05-12.2:131256:2026-05-12 08:44:32.631 [coze-task-2033] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53040 executeId=7638799601927241755 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:131261:2026-05-12 08:44:32.732 [coze-task-2033] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53040 executeId=7638799601927241755 status=RUNNING -aiimage-backend.log.2026-05-12.2:131558:2026-05-12 08:45:02.626 [coze-task-2035] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53040 taskId=8095 executeId=7638799601927241755 -aiimage-backend.log.2026-05-12.2:131560:2026-05-12 08:45:02.627 [coze-task-2035] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53040 executeId=7638799601927241755 lastPolledAt=2026-05-12T08:44:33 -aiimage-backend.log.2026-05-12.2:131887:2026-05-12 08:45:32.627 [coze-task-2037] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53040 taskId=8095 executeId=7638799601927241755 -aiimage-backend.log.2026-05-12.2:131888:2026-05-12 08:45:32.634 [coze-task-2037] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53040 executeId=7638799601927241755 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:131893:2026-05-12 08:45:33.054 [coze-task-2037] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53040 executeId=7638799601927241755 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.2:134797:2026-05-12 08:50:10.773 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:134798:2026-05-12 08:50:10.779 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:134799:2026-05-12 08:50:10.797 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:134800:2026-05-12 08:50:10.797 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:134811:2026-05-12 08:50:11.436 [coze-task-2047] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=29 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:134812:2026-05-12 08:50:11.443 [coze-task-2047] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=639 -aiimage-backend.log.2026-05-12.2:140213:2026-05-12 08:56:21.587 [http-nio-18080-exec-3] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:140214:2026-05-12 08:56:21.592 [http-nio-18080-exec-3] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:140215:2026-05-12 08:56:21.609 [http-nio-18080-exec-3] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:140216:2026-05-12 08:56:21.609 [http-nio-18080-exec-3] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:140700:2026-05-12 08:57:10.187 [coze-task-2057] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze async submitted taskId=8095 jobId=2713 rows=50 batch=1/1 executeId=7638802886948667432 -aiimage-backend.log.2026-05-12.2:140701:2026-05-12 08:57:10.195 [coze-task-2057] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=48582 -aiimage-backend.log.2026-05-12.2:140919:2026-05-12 08:57:32.660 [coze-task-2061] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53045 taskId=8095 executeId=7638802886948667432 -aiimage-backend.log.2026-05-12.2:140924:2026-05-12 08:57:32.668 [coze-task-2061] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53045 executeId=7638802886948667432 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:140926:2026-05-12 08:57:32.787 [coze-task-2061] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll pending taskId=8095 stateId=53045 executeId=7638802886948667432 status=RUNNING -aiimage-backend.log.2026-05-12.2:141240:2026-05-12 08:58:02.661 [coze-task-2064] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53045 taskId=8095 executeId=7638802886948667432 -aiimage-backend.log.2026-05-12.2:141242:2026-05-12 08:58:02.662 [coze-task-2064] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll skipped by claim guard taskId=8095 stateId=53045 executeId=7638802886948667432 lastPolledAt=2026-05-12T08:57:33 -aiimage-backend.log.2026-05-12.2:141564:2026-05-12 08:58:32.663 [coze-task-2067] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll worker entered stateId=53045 taskId=8095 executeId=7638802886948667432 -aiimage-backend.log.2026-05-12.2:141565:2026-05-12 08:58:32.669 [coze-task-2067] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll start taskId=8095 stateId=53045 executeId=7638802886948667432 jobId=2713 chunk=null batch=1/1 -aiimage-backend.log.2026-05-12.2:141570:2026-05-12 08:58:33.013 [coze-task-2067] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze poll completed taskId=8095 stateId=53045 executeId=7638802886948667432 status=DONE batchRows=50 mergedRows=50 failure=- -aiimage-backend.log.2026-05-12.2:145540:2026-05-12 09:02:30.341 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:145541:2026-05-12 09:02:30.346 [http-nio-18080-exec-5] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:145542:2026-05-12 09:02:30.364 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:145543:2026-05-12 09:02:30.364 [http-nio-18080-exec-5] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:145549:2026-05-12 09:02:30.976 [coze-task-2076] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=21 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:145550:2026-05-12 09:02:30.986 [coze-task-2076] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=619 -aiimage-backend.log.2026-05-12.2:149475:2026-05-12 09:08:41.632 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:149476:2026-05-12 09:08:41.636 [http-nio-18080-exec-2] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:149477:2026-05-12 09:08:41.655 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:149478:2026-05-12 09:08:41.655 [http-nio-18080-exec-2] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:149483:2026-05-12 09:08:42.279 [coze-task-2093] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] coze batch waiting for more rows taskId=8095 jobId=2713 pendingRows=42 batchSize=50 finalUpload=false -aiimage-backend.log.2026-05-12.2:149484:2026-05-12 09:08:42.285 [coze-task-2093] INFO c.n.a.m.t.s.TaskResultFileJobWorker - [task-file-job] process deferred jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT resultId=10731 elapsedMs=627 -aiimage-backend.log.2026-05-12.2:155090:2026-05-12 09:14:51.029 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:155091:2026-05-12 09:14:51.035 [http-nio-18080-exec-8] INFO c.n.a.m.a.s.AppearancePatentTaskService - [appearance-patent] scope state updated taskId=8095 scope=8095 scopeHash=c40b15ca508f04649d16db6256bcbe09f2dd2fea63824d4e812a787d26c67ecd completed=false cozeDone=false -aiimage-backend.log.2026-05-12.2:155092:2026-05-12 09:14:51.052 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobPublisher - [task-file-job] mq disabled, fallback to local dispatcher/scheduled worker jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT -aiimage-backend.log.2026-05-12.2:155093:2026-05-12 09:14:51.052 [http-nio-18080-exec-8] INFO c.n.a.m.t.s.TaskFileJobDispatchCoordinator - [task-file-job] forced local async dispatch scheduled jobId=2713 taskId=8095 moduleType=APPEARANCE_PATENT diff --git a/app/.env b/app/.env index f106c81..49ccb5d 100644 --- a/app/.env +++ b/app/.env @@ -1,6 +1,6 @@ -base_url=http://8.136.19.173:15124 +base_url=http://47.110.241.161:15124 workflow_id=7608812635877900322 -mysql_host=8.136.19.173 +mysql_host=47.110.241.161 mysql_user=aiimage proxy_url=https://api.jikip.com/ip-get?num=1&minute=1&format=json&area=all&protocol=1&mode=2&key=t24g6gi44ubufd8 @@ -13,7 +13,7 @@ client_name=ShuFuAI # java_api_base=http://47.111.163.154:18080 -java_api_base=http://127.0.0.1:18080 -# java_api_base=http://121.196.149.225:18080 +# java_api_base=http://127.0.0.1:18080 +java_api_base=http://121.196.149.225:18080 diff --git a/app/.env copy b/app/.env copy index 0ff00cd..26fc410 100644 --- a/app/.env copy +++ b/app/.env copy @@ -1,6 +1,6 @@ -base_url=http://8.136.19.173:15124 +base_url=http://47.111.163.154:15124 workflow_id=7608812635877900322 -mysql_host=8.136.19.173 +mysql_host=47.111.163.154 mysql_user=aiimage proxy_url=https://api.jikip.com/ip-get?num=1&minute=1&format=json&area=all&protocol=1&mode=2&key=t24g6gi44ubufd8 @@ -10,6 +10,6 @@ client_name=ShuFuAI java_api_base=http://127.0.0.1:18080 -# java_api_base=http://8.136.19.173:18080 +# java_api_base=http://47.111.163.154:18080 diff --git a/app/.env.example b/app/.env.example index 3cadbd4..7de63f3 100644 --- a/app/.env.example +++ b/app/.env.example @@ -1,5 +1,5 @@ workflow_id=7608812635877900322 -mysql_host=8.136.19.173 +mysql_host=47.111.163.154 mysql_user=aiimage proxy_url=https://api.jikip.com/ip-get?num=1&minute=1&format=json&area=all&protocol=1&mode=2&key=t24g6gi44ubufd8 @@ -13,6 +13,6 @@ client_name=ShuFuAI java_api_base=http://47.111.163.154:18080 # java_api_base=http://127.0.0.1:18080 -# java_api_base=http://8.136.19.173:18080 +# java_api_base=http://47.111.163.154:18080 diff --git a/backend-java/src/main/java/com/nanri/aiimage/common/exception/GlobalExceptionHandler.java b/backend-java/src/main/java/com/nanri/aiimage/common/exception/GlobalExceptionHandler.java index ae7caf4..8e172a8 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/common/exception/GlobalExceptionHandler.java +++ b/backend-java/src/main/java/com/nanri/aiimage/common/exception/GlobalExceptionHandler.java @@ -6,6 +6,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.context.request.async.AsyncRequestNotUsableException; + +import java.io.IOException; @Slf4j @RestControllerAdvice @@ -34,9 +37,33 @@ public class GlobalExceptionHandler { return ApiResponse.fail(ex.getMessage()); } + @ExceptionHandler(AsyncRequestNotUsableException.class) + public void handleAsyncRequestNotUsableException(AsyncRequestNotUsableException ex) { + log.debug("Client disconnected before response completed: {}", ex.getMessage()); + } + @ExceptionHandler(Exception.class) public ApiResponse handleException(Exception ex) { + if (isClientAbort(ex)) { + log.debug("Client disconnected before response completed: {}", ex.getMessage()); + return ApiResponse.fail("客户端已断开连接"); + } log.error("Unhandled exception", ex); return ApiResponse.fail("服务异常: " + ex.getMessage()); } + + private boolean isClientAbort(Throwable ex) { + Throwable cursor = ex; + while (cursor != null) { + String className = cursor.getClass().getName(); + String message = cursor.getMessage() == null ? "" : cursor.getMessage().toLowerCase(); + if (cursor instanceof AsyncRequestNotUsableException + || cursor instanceof IOException && (message.contains("broken pipe") || message.contains("connection reset")) + || className.contains("ClientAbortException")) { + return true; + } + cursor = cursor.getCause(); + } + return false; + } } diff --git a/backend-java/src/main/java/com/nanri/aiimage/config/AppearancePatentProperties.java b/backend-java/src/main/java/com/nanri/aiimage/config/AppearancePatentProperties.java index 78cfc2d..f8fb85e 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/config/AppearancePatentProperties.java +++ b/backend-java/src/main/java/com/nanri/aiimage/config/AppearancePatentProperties.java @@ -3,6 +3,9 @@ package com.nanri.aiimage.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; +import java.util.ArrayList; +import java.util.List; + @Data @ConfigurationProperties(prefix = "aiimage.appearance-patent") public class AppearancePatentProperties { @@ -11,6 +14,8 @@ public class AppearancePatentProperties { private String cozeWorkflowHistoryPath = "/v1/workflows/{workflow_id}/run_histories/{execute_id}"; private String cozeWorkflowId = "7632683471312355338"; private String cozeToken = ""; + private List cozeCredentials = new ArrayList<>(); + private int cozeCredentialStripeSize = 5; private int cozeBatchSize = 50; private int cozeConnectTimeoutMillis = 10000; private int cozeReadTimeoutMillis = 60000; @@ -18,4 +23,11 @@ public class AppearancePatentProperties { private int cozePollTimeoutMillis = 600000; private int staleTimeoutMinutes = 20; private String staleFinalizeCron = "0 */2 * * * *"; + + @Data + public static class CozeCredential { + private String name; + private String workflowId; + private String token; + } } diff --git a/backend-java/src/main/java/com/nanri/aiimage/config/SimilarAsinProperties.java b/backend-java/src/main/java/com/nanri/aiimage/config/SimilarAsinProperties.java index 82e870c..8fad3e8 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/config/SimilarAsinProperties.java +++ b/backend-java/src/main/java/com/nanri/aiimage/config/SimilarAsinProperties.java @@ -3,6 +3,9 @@ package com.nanri.aiimage.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; +import java.util.ArrayList; +import java.util.List; + @Data @ConfigurationProperties(prefix = "aiimage.similar-asin") public class SimilarAsinProperties { @@ -11,6 +14,8 @@ public class SimilarAsinProperties { private String cozeWorkflowHistoryPath = "/v1/workflows/{workflow_id}/run_histories/{execute_id}"; private String cozeWorkflowId = "7635328462404583478"; private String cozeToken = ""; + private List cozeCredentials = new ArrayList<>(); + private int cozeCredentialStripeSize = 5; private int cozeBatchSize = 50; private int cozeConnectTimeoutMillis = 10000; private int cozeReadTimeoutMillis = 60000; @@ -18,4 +23,11 @@ public class SimilarAsinProperties { private int cozePollTimeoutMillis = 600000; private int staleTimeoutMinutes = 20; private String staleFinalizeCron = "0 */2 * * * *"; + + @Data + public static class CozeCredential { + private String name; + private String workflowId; + private String token; + } } diff --git a/backend-java/src/main/java/com/nanri/aiimage/config/TaskFileJobConfig.java b/backend-java/src/main/java/com/nanri/aiimage/config/TaskFileJobConfig.java index fdbbcfb..dd893cf 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/config/TaskFileJobConfig.java +++ b/backend-java/src/main/java/com/nanri/aiimage/config/TaskFileJobConfig.java @@ -9,6 +9,7 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.Semaphore; @Configuration public class TaskFileJobConfig { @@ -37,7 +38,23 @@ public class TaskFileJobConfig { } @Bean("cozeTaskExecutor") - public TaskExecutor cozeTaskExecutor(ExecutorService cozeVirtualThreadExecutor) { - return new ConcurrentTaskExecutor(cozeVirtualThreadExecutor); + public TaskExecutor cozeTaskExecutor( + ExecutorService cozeVirtualThreadExecutor, + @Value("${aiimage.coze-task.max-concurrent:8}") int maxConcurrent) { + Semaphore semaphore = new Semaphore(Math.max(1, maxConcurrent)); + return new ConcurrentTaskExecutor(command -> cozeVirtualThreadExecutor.execute(() -> { + boolean acquired = false; + try { + semaphore.acquire(); + acquired = true; + command.run(); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } finally { + if (acquired) { + semaphore.release(); + } + } + })); } } diff --git a/backend-java/src/main/java/com/nanri/aiimage/config/TaskOperationLockConfig.java b/backend-java/src/main/java/com/nanri/aiimage/config/TaskOperationLockConfig.java index c6c1601..9f39e47 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/config/TaskOperationLockConfig.java +++ b/backend-java/src/main/java/com/nanri/aiimage/config/TaskOperationLockConfig.java @@ -34,7 +34,7 @@ public class TaskOperationLockConfig implements WebMvcConfigurer { private static final Pattern TASK_PATH = Pattern.compile(".*/api/([^/]+)/tasks/(\\d+)(?:/.*)?$"); private static final Pattern TASK_RESULT_PATH = Pattern.compile(".*/api/([^/]+)/tasks/(\\d+)/result/?$"); private static final Set MUTATING_METHODS = Set.of("POST", "PUT", "PATCH", "DELETE"); - private static final long RESULT_SUBMIT_WAIT_MILLIS = 10 * 60 * 1000L; + private static final long RESULT_SUBMIT_WAIT_MILLIS = 30 * 1000L; private static final long DELETE_WAIT_MILLIS = 60 * 1000L; private static final String LOCK_ATTRIBUTE = TaskOperationLockInterceptor.class.getName() + ".LOCK"; diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/appearancepatent/client/AppearancePatentCozeClient.java b/backend-java/src/main/java/com/nanri/aiimage/modules/appearancepatent/client/AppearancePatentCozeClient.java index 53af4d0..56ef765 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/appearancepatent/client/AppearancePatentCozeClient.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/appearancepatent/client/AppearancePatentCozeClient.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.nanri.aiimage.config.AppearancePatentProperties; import com.nanri.aiimage.modules.appearancepatent.model.dto.AppearancePatentResultRowDto; +import com.nanri.aiimage.modules.coze.service.CozeCredentialPoolService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpHeaders; @@ -19,22 +20,26 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.concurrent.atomic.AtomicLong; @Component @RequiredArgsConstructor @Slf4j public class AppearancePatentCozeClient { + private static final String MODULE_TYPE = "APPEARANCE_PATENT"; private static final MediaType APPLICATION_JSON_UTF8 = new MediaType("application", "json", StandardCharsets.UTF_8); private final AppearancePatentProperties properties; private final ObjectMapper objectMapper; + private final CozeCredentialPoolService cozeCredentialPoolService; + private final AtomicLong credentialCursor = new AtomicLong(); public List inspect(List rows, String prompt, String apiKey) { if (rows == null || rows.isEmpty()) { return List.of(); } - if (properties.getCozeToken() == null || properties.getCozeToken().isBlank()) { + if (!hasConfiguredCredential()) { log.warn("[appearance-patent] coze token not configured, keep raw rows size={}", rows.size()); return rows.stream().map(this::copy).toList(); } @@ -48,17 +53,31 @@ public class AppearancePatentCozeClient { } public CozeSubmitResponse submitWorkflow(List rows, String prompt, String apiKey) throws Exception { - JsonNode submitRoot = objectMapper.readTree(postWorkflow(rows, prompt, apiKey)); + return submitWorkflow(rows, prompt, apiKey, nextCredential()); + } + + public CozeSubmitResponse submitWorkflow(List rows, + String prompt, + String apiKey, + CozeCredentialRef credential) throws Exception { + CozeCredentialRef resolvedCredential = resolveCredential(credential); + JsonNode submitRoot = objectMapper.readTree(postWorkflow(rows, prompt, apiKey, resolvedCredential)); ensureSuccess(submitRoot); return new CozeSubmitResponse( extractExecuteId(submitRoot), extractResultDataText(submitRoot), - writeJson(submitRoot) + writeJson(submitRoot), + resolvedCredential.name() ); } public CozePollResponse pollWorkflow(String executeId) throws Exception { - JsonNode pollRoot = objectMapper.readTree(getWorkflowHistory(executeId)); + return pollWorkflow(executeId, null); + } + + public CozePollResponse pollWorkflow(String executeId, CozeCredentialRef credential) throws Exception { + CozeCredentialRef resolvedCredential = resolveCredential(credential); + JsonNode pollRoot = objectMapper.readTree(getWorkflowHistory(executeId, resolvedCredential)); ensureSuccess(pollRoot); String status = normalize(resolveWorkflowStatus(pollRoot)).toUpperCase(Locale.ROOT); String dataText = extractResultDataText(pollRoot); @@ -66,7 +85,8 @@ public class AppearancePatentCozeClient { String failureMessage = isFailedWorkflowStatus(status) ? firstNonBlank(resolveFailureMessage(pollRoot), "Coze async workflow failed") : ""; - return new CozePollResponse(executeId, status, dataText, outputText, failureMessage, writeJson(pollRoot)); + return new CozePollResponse(executeId, status, dataText, outputText, failureMessage, writeJson(pollRoot), + resolvedCredential.name()); } public List mergeRowsFromDataText(List rows, String dataText) throws Exception { @@ -164,7 +184,8 @@ public class AppearancePatentCozeClient { } private String runWorkflowAsyncAndWait(List rows, String prompt, String apiKey) throws Exception { - JsonNode submitRoot = objectMapper.readTree(postWorkflow(rows, prompt, apiKey)); + CozeCredentialRef credential = nextCredential(); + JsonNode submitRoot = objectMapper.readTree(postWorkflow(rows, prompt, apiKey, credential)); ensureSuccess(submitRoot); String immediateData = extractResultDataText(submitRoot); @@ -180,7 +201,7 @@ public class AppearancePatentCozeClient { long deadline = System.currentTimeMillis() + Math.max(10000, properties.getCozePollTimeoutMillis()); while (System.currentTimeMillis() < deadline) { ensureNotInterrupted(); - JsonNode pollRoot = objectMapper.readTree(getWorkflowHistory(executeId)); + JsonNode pollRoot = objectMapper.readTree(getWorkflowHistory(executeId, credential)); ensureSuccess(pollRoot); String dataText = extractResultDataText(pollRoot); @@ -205,20 +226,24 @@ public class AppearancePatentCozeClient { throw new IllegalStateException("Coze async workflow poll timeout"); } - private String postWorkflow(List rows, String prompt, String apiKey) { + private String postWorkflow(List rows, + String prompt, + String apiKey, + CozeCredentialRef credential) { Map parameters = buildParameters(rows, prompt, apiKey); Map body = new LinkedHashMap<>(); - body.put("workflow_id", properties.getCozeWorkflowId()); + body.put("workflow_id", credential.workflowId()); body.put("parameters", parameters); body.put("is_async", Boolean.TRUE); - log.info("[appearance-patent] coze request url={} body={}", + log.info("[appearance-patent] coze request credential={} url={} body={}", + credential.name(), joinUrl(properties.getCozeBaseUrl(), properties.getCozeWorkflowPath()), writeJson(maskCozeRequestBody(body))); RestClient.RequestBodySpec request = restClient().post() .uri(joinUrl(properties.getCozeBaseUrl(), properties.getCozeWorkflowPath())) .headers(headers -> { - headers.setBearerAuth(stripBearer(properties.getCozeToken())); + headers.setBearerAuth(stripBearer(credential.token())); headers.setContentType(APPLICATION_JSON_UTF8); headers.set(HttpHeaders.ACCEPT_CHARSET, StandardCharsets.UTF_8.name()); }); @@ -233,28 +258,98 @@ public class AppearancePatentCozeClient { }); } - private String getWorkflowHistory(String executeId) { + private String getWorkflowHistory(String executeId, CozeCredentialRef credential) { String path = properties.getCozeWorkflowHistoryPath() - .replace("{workflow_id}", properties.getCozeWorkflowId()) + .replace("{workflow_id}", credential.workflowId()) .replace("{execute_id}", executeId); return restClient().get() .uri(joinUrl(properties.getCozeBaseUrl(), path)) .headers(headers -> { - headers.setBearerAuth(stripBearer(properties.getCozeToken())); + headers.setBearerAuth(stripBearer(credential.token())); headers.setContentType(APPLICATION_JSON_UTF8); headers.set(HttpHeaders.ACCEPT_CHARSET, StandardCharsets.UTF_8.name()); }) .exchange((clientRequest, clientResponse) -> { byte[] responseBytes = StreamUtils.copyToByteArray(clientResponse.getBody()); String responseText = responseBytes.length == 0 ? "" : new String(responseBytes, StandardCharsets.UTF_8); - log.info("[appearance-patent] coze history response executeId={} status={} body={}", - executeId, + log.info("[appearance-patent] coze history response credential={} executeId={} status={} body={}", + credential.name(), executeId, clientResponse.getStatusCode(), responseText); return responseText; }); } + public CozeCredentialRef nextCredential() { + List pooledCredentials = cozeCredentialPoolService.listEnabled(MODULE_TYPE); + CozeCredentialPoolService.CozeCredential pooledCredential = + cozeCredentialPoolService.chooseRoundRobin(MODULE_TYPE, pooledCredentials, properties.getCozeCredentialStripeSize()); + if (pooledCredential != null) { + return new CozeCredentialRef(pooledCredential.name(), pooledCredential.workflowId(), pooledCredential.token(), + pooledCredential.maxConcurrent()); + } + List credentials = configuredCredentials(); + int stripeSize = Math.max(1, properties.getCozeCredentialStripeSize()); + long cursor = Math.max(0L, credentialCursor.getAndIncrement()); + int index = (int) ((cursor / stripeSize) % credentials.size()); + return credentials.get(index); + } + + public CozeCredentialRef credentialByName(String name) { + if (name == null || name.isBlank()) { + return nextCredential(); + } + String normalizedName = normalize(name); + for (CozeCredentialRef credential : configuredCredentials()) { + if (normalize(credential.name()).equals(normalizedName)) { + return credential; + } + } + return nextCredential(); + } + + public boolean hasConfiguredCredential() { + return !configuredCredentials().isEmpty(); + } + + public int configuredCredentialCount() { + return configuredCredentials().size(); + } + + private CozeCredentialRef resolveCredential(CozeCredentialRef credential) { + return credential == null ? nextCredential() : credential; + } + + private List configuredCredentials() { + List credentials = new ArrayList<>(); + for (CozeCredentialPoolService.CozeCredential credential : cozeCredentialPoolService.listEnabled(MODULE_TYPE)) { + credentials.add(new CozeCredentialRef(credential.name(), credential.workflowId(), credential.token(), + credential.maxConcurrent())); + } + if (!credentials.isEmpty()) { + return credentials; + } + if (properties.getCozeCredentials() != null) { + int index = 1; + for (AppearancePatentProperties.CozeCredential credential : properties.getCozeCredentials()) { + if (credential == null + || normalize(credential.getWorkflowId()).isBlank() + || normalize(credential.getToken()).isBlank()) { + continue; + } + String name = firstNonBlank(credential.getName(), "credential-" + index); + credentials.add(new CozeCredentialRef(name, credential.getWorkflowId(), credential.getToken(), Integer.MAX_VALUE)); + index++; + } + } + if (credentials.isEmpty() + && properties.getCozeWorkflowId() != null && !properties.getCozeWorkflowId().isBlank() + && properties.getCozeToken() != null && !properties.getCozeToken().isBlank()) { + credentials.add(new CozeCredentialRef("default", properties.getCozeWorkflowId(), properties.getCozeToken(), Integer.MAX_VALUE)); + } + return credentials; + } + private Map buildParameters(List rows, String prompt, String apiKey) { List groupKeys = rows.stream().map(row -> nonBlank(row.getGroupKey(), rowKey(row))).toList(); List rowIds = rows.stream().map(row -> nonBlank(row.getId(), "")).toList(); @@ -965,7 +1060,8 @@ public class AppearancePatentCozeClient { public record CozeSubmitResponse( String executeId, String immediateData, - String rawResponse + String rawResponse, + String credentialName ) { } @@ -975,7 +1071,8 @@ public class AppearancePatentCozeClient { String dataText, String outputText, String failureMessage, - String rawResponse + String rawResponse, + String credentialName ) { public boolean hasPayload() { return dataText != null && !dataText.isBlank() || outputText != null && !outputText.isBlank(); @@ -1001,6 +1098,14 @@ public class AppearancePatentCozeClient { } } + public record CozeCredentialRef( + String name, + String workflowId, + String token, + int maxConcurrent + ) { + } + private static final class PartialCozeResultException extends RuntimeException { private final int resolvedCount; diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/appearancepatent/service/AppearancePatentTaskService.java b/backend-java/src/main/java/com/nanri/aiimage/modules/appearancepatent/service/AppearancePatentTaskService.java index 9a7be6e..1f3f019 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/appearancepatent/service/AppearancePatentTaskService.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/appearancepatent/service/AppearancePatentTaskService.java @@ -28,6 +28,7 @@ import com.nanri.aiimage.modules.appearancepatent.model.vo.AppearancePatentParse import com.nanri.aiimage.modules.appearancepatent.model.vo.AppearancePatentTaskBatchVo; import com.nanri.aiimage.modules.appearancepatent.model.vo.AppearancePatentTaskDetailVo; import com.nanri.aiimage.modules.appearancepatent.model.vo.AppearancePatentTaskItemVo; +import com.nanri.aiimage.modules.coze.service.CozeCredentialPoolService; import com.nanri.aiimage.modules.file.service.LocalFileStorageService; import com.nanri.aiimage.modules.file.service.oss.OssStorageService; import com.nanri.aiimage.modules.task.mapper.FileResultMapper; @@ -69,6 +70,7 @@ import org.springframework.transaction.support.TransactionTemplate; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.IOException; import java.time.Duration; import java.time.Instant; import java.time.LocalDateTime; @@ -84,6 +86,8 @@ import java.util.Objects; import java.util.Set; import java.util.UUID; import java.util.function.Supplier; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; @Service @RequiredArgsConstructor @@ -100,15 +104,17 @@ public class AppearancePatentTaskService { private static final String COZE_STATUS_DONE = "DONE"; private static final String COZE_STATUS_FAILED = "FAILED"; private static final String CONTENT_TYPE_XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + private static final String CONTENT_TYPE_ZIP = "application/zip"; private static final int RESULT_ROWS_READ_RETRY_LIMIT = 3; private static final long RESULT_ROWS_READ_RETRY_DELAY_MS = 500L; private static final Duration TASK_LOCK_TTL = Duration.ofMinutes(5); private static final long TASK_LOCK_WAIT_MILLIS = 10000L; private static final long TASK_LOCK_RETRY_DELAY_MILLIS = 200L; private static final Duration COZE_SUBMIT_LOCK_TTL = Duration.ofMinutes(2); - private static final long COZE_SUBMIT_LOCK_WAIT_MILLIS = 180000L; + private static final long COZE_SUBMIT_LOCK_WAIT_MILLIS = 1000L; private static final long COZE_SUBMIT_LOCK_RETRY_DELAY_MILLIS = 500L; private static final long COZE_SUBMIT_MIN_INTERVAL_MILLIS = 30000L; + private static final long PENDING_COZE_RETRY_INTERVAL_MILLIS = 30000L; private static final int MAX_COZE_SUBMIT_RETRY_COUNT = 5; private static final List RESULT_HEADERS = List.of( "id", @@ -119,7 +125,7 @@ public class AppearancePatentTaskService { "外观维度(外观设计专利)", "专利维度(发明/实用新型专利)", "结论", - "status" + "状态" ); private final LocalFileStorageService localFileStorageService; @@ -140,6 +146,7 @@ public class AppearancePatentTaskService { private final DistributedJobLockService distributedJobLockService; private final TaskDistributedLockService taskDistributedLockService; private final InstanceMetadata instanceMetadata; + private final CozeCredentialPoolService cozeCredentialPoolService; @Autowired @Qualifier("cozeTaskExecutor") private TaskExecutor cozeTaskExecutor; @@ -165,12 +172,12 @@ public class AppearancePatentTaskService { long parseStartedAt = System.nanoTime(); for (AppearancePatentSourceFileDto source : sourceFiles) { if (source.getFileKey() == null || source.getFileKey().isBlank()) { - throw new BusinessException("fileKey 不能为空"); - } - File input = localFileStorageService.findLocalSourceFile(source.getFileKey()); - if (input == null || !input.exists()) { - throw new BusinessException("源文件不存在"); - } + throw new BusinessException("fileKey 不能为空"); + } + File input = localFileStorageService.findLocalSourceFile(source.getFileKey()); + if (input == null || !input.exists()) { + throw new BusinessException("源文件不存在"); + } ParsedWorkbook parsed = parseWorkbook(input, source); totalRows += parsed.totalRows(); @@ -748,7 +755,7 @@ public class AppearancePatentTaskService { touchJavaSideTaskActivity(task.getId()); } else if (isResultSubmissionComplete(task.getId())) { maybeFinalizeCozeJobLocked(task.getId(), new CozeBatchContext( - job.getId(), result.getId(), null, null, 1, 1, currentInstanceId(), 0)); + job.getId(), result.getId(), null, null, 1, 1, currentInstanceId(), 0, null)); } } @@ -1429,18 +1436,7 @@ public class AppearancePatentTaskService { @Scheduled(fixedDelayString = "${aiimage.appearance-patent.coze-poll-delay-ms:30000}") public void pollPendingCozeJobs() { - List states = taskScopeStateMapper.selectList(new LambdaQueryWrapper() - .eq(TaskScopeStateEntity::getModuleType, MODULE_TYPE) - .in(TaskScopeStateEntity::getCozeStatus, List.of(COZE_STATUS_SUBMITTED, COZE_STATUS_RUNNING)) - .isNotNull(TaskScopeStateEntity::getCozeExecuteId) - .and(wrapper -> wrapper - .apply("JSON_UNQUOTE(JSON_EXTRACT(state_json, '$.ownerInstanceId')) IS NULL") - .or() - .apply("JSON_UNQUOTE(JSON_EXTRACT(state_json, '$.ownerInstanceId')) = ''") - .or() - .apply("JSON_UNQUOTE(JSON_EXTRACT(state_json, '$.ownerInstanceId')) = {0}", currentInstanceId())) - .orderByDesc(TaskScopeStateEntity::getUpdatedAt) - .last("limit 50")); + List states = listOwnedPendingCozeStates(); if (states == null || states.isEmpty()) { return; } @@ -1464,6 +1460,41 @@ public class AppearancePatentTaskService { } } + private List listOwnedPendingCozeStates() { + Map merged = new LinkedHashMap<>(); + for (TaskScopeStateEntity state : queryOwnedPendingCozeStates(false, 50)) { + if (state != null && state.getId() != null) { + merged.put(state.getId(), state); + } + } + for (TaskScopeStateEntity state : queryOwnedPendingCozeStates(true, 50)) { + if (state != null && state.getId() != null) { + merged.putIfAbsent(state.getId(), state); + } + } + return new ArrayList<>(merged.values()); + } + + private List queryOwnedPendingCozeStates(boolean oldestFirst, int limit) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper() + .eq(TaskScopeStateEntity::getModuleType, MODULE_TYPE) + .in(TaskScopeStateEntity::getCozeStatus, List.of(COZE_STATUS_SUBMITTED, COZE_STATUS_RUNNING)) + .and(ownerWrapper -> ownerWrapper + .apply("JSON_UNQUOTE(JSON_EXTRACT(state_json, '$.ownerInstanceId')) IS NULL") + .or() + .apply("JSON_UNQUOTE(JSON_EXTRACT(state_json, '$.ownerInstanceId')) = ''") + .or() + .apply("JSON_UNQUOTE(JSON_EXTRACT(state_json, '$.ownerInstanceId')) = {0}", currentInstanceId())) + .last("limit " + Math.max(1, Math.min(limit, 100))); + if (oldestFirst) { + wrapper.orderByAsc(TaskScopeStateEntity::getUpdatedAt); + } else { + wrapper.orderByDesc(TaskScopeStateEntity::getUpdatedAt); + } + List states = taskScopeStateMapper.selectList(wrapper); + return states == null ? List.of() : states; + } + private List loadSubmittedChunks(Long taskId) { if (taskId == null || taskId <= 0) { return List.of(); @@ -1492,6 +1523,10 @@ public class AppearancePatentTaskService { if (key.isBlank() || !queuedRowKeys.add(key)) { continue; } + AppearancePatentResultRowDto persistedRow = persistedRows.get(key); + if (hasResolvedCozeFields(persistedRow)) { + continue; + } candidates.add(new CozeCandidate(chunk.getScopeHash(), chunk.getChunkIndex(), row)); } } @@ -1530,7 +1565,7 @@ public class AppearancePatentTaskService { if (chunks == null || chunks.isEmpty()) { return countPendingCozeStates(task.getId()) > 0; } - if (properties.getCozeToken() == null || properties.getCozeToken().isBlank()) { + if (!cozeClient.hasConfiguredCredential()) { log.warn("[appearance-patent] coze token not configured, skip async coze taskId={} jobId={}", task.getId(), job.getId()); return false; @@ -1586,8 +1621,10 @@ public class AppearancePatentTaskService { return COZE_STATUS_SUBMITTED.equals(existing.getCozeStatus()) || COZE_STATUS_RUNNING.equals(existing.getCozeStatus()); } + AppearancePatentCozeClient.CozeCredentialRef credential = cozeClient.nextCredential(); try { - AppearancePatentCozeClient.CozeSubmitResponse submit = submitCozeWorkflowThrottled(batchRows, prompt, apiKey); + AppearancePatentCozeClient.CozeSubmitResponse submit = submitCozeWorkflowThrottled( + batchRows, prompt, apiKey, credential, true); if (submit.immediateData() != null && !submit.immediateData().isBlank()) { List cozeRows = cozeClient.mergeRowsFromDataText(batchRows, submit.immediateData()); mergeCozeRowsIntoSubmittedChunks(task, cozeRows, allRowsByBaseId); @@ -1600,19 +1637,84 @@ public class AppearancePatentTaskService { return false; } saveCozeBatchState(task, result, job, batchRows, batchScopeKey, batchScopeHash, - batchIndex, batchTotal, submit.executeId()); - log.info("[appearance-patent] coze async submitted taskId={} jobId={} rows={} batch={}/{} executeId={}", - task.getId(), job.getId(), batchRows.size(), batchIndex, batchTotal, submit.executeId()); + batchIndex, batchTotal, submit.executeId(), submit.credentialName()); + log.info("[appearance-patent] coze async submitted taskId={} jobId={} rows={} batch={}/{} credential={} executeId={}", + task.getId(), job.getId(), batchRows.size(), batchIndex, batchTotal, + submit.credentialName(), submit.executeId()); return true; } catch (Exception ex) { String message = firstNonBlank(ex.getMessage(), "Coze submit failed"); log.warn("[appearance-patent] coze async submit failed taskId={} jobId={} rows={} batch={}/{} err={}", task.getId(), job.getId(), batchRows.size(), batchIndex, batchTotal, message); + if (isCozeThrottleLockTimeout(message)) { + savePendingCozeBatchState(task, result, job, batchRows, batchScopeKey, batchScopeHash, + batchIndex, batchTotal, message, credential.name()); + taskFileJobService.touchRunning(job.getId()); + touchJavaSideTaskActivity(task.getId()); + return true; + } mergeCozeRowsIntoSubmittedChunks(task, cozeClient.markRowsFailed(batchRows, message), allRowsByBaseId); return false; } } + private boolean isCozeThrottleLockTimeout(String message) { + return normalize(message).toLowerCase(Locale.ROOT).contains("coze submit throttle lock timeout"); + } + + private void savePendingCozeBatchState(FileTaskEntity task, + FileResultEntity result, + TaskFileJobEntity job, + List batchRows, + String batchScopeKey, + String batchScopeHash, + int batchIndex, + int batchTotal, + String pendingReason, + String credentialName) { + LocalDateTime now = LocalDateTime.now(); + CozeBatchContext context = new CozeBatchContext( + job.getId(), + result.getId(), + null, + null, + batchIndex, + batchTotal, + currentInstanceId(), + 0, + credentialName + ); + String batchPayload = writeJson(batchRows, "serialize pending coze batch payload failed"); + String storedBatchPayload = storeSharedCozeBatchPayload(task.getId(), batchScopeHash, batchPayload); + TaskScopeStateEntity state = new TaskScopeStateEntity(); + state.setTaskId(task.getId()); + state.setModuleType(MODULE_TYPE); + state.setScopeKey(batchScopeKey); + state.setScopeHash(batchScopeHash); + state.setParsedPayloadJson(storedBatchPayload); + state.setStateJson(writeJson(context, "serialize pending coze batch context failed")); + state.setCozeStatus(COZE_STATUS_RUNNING); + state.setCozeSubmittedAt(now); + state.setCozeLastPolledAt(null); + state.setCozeAttemptCount(0); + state.setCozeError(firstNonBlank(pendingReason, "Coze submit queued by throttle")); + state.setChunkTotal(batchTotal); + state.setReceivedChunkCount(batchIndex); + state.setCompleted(0); + state.setCreatedAt(now); + state.setUpdatedAt(now); + try { + taskScopeStateMapper.insert(state); + touchJavaSideTaskActivity(task.getId()); + log.info("[appearance-patent] coze async submit queued by throttle taskId={} jobId={} rows={} batch={}/{}", + task.getId(), job.getId(), batchRows.size(), batchIndex, batchTotal); + } catch (DuplicateKeyException ex) { + transientPayloadStorageService.deletePayloadIfPresent(storedBatchPayload); + log.info("[appearance-patent] duplicate pending coze batch state ignored taskId={} scope={}", + task.getId(), batchScopeKey); + } + } + private void saveCozeBatchState(FileTaskEntity task, FileResultEntity result, TaskFileJobEntity job, @@ -1621,7 +1723,8 @@ public class AppearancePatentTaskService { String batchScopeHash, int batchIndex, int batchTotal, - String executeId) { + String executeId, + String credentialName) { LocalDateTime now = LocalDateTime.now(); CozeBatchContext context = new CozeBatchContext( job.getId(), @@ -1631,7 +1734,8 @@ public class AppearancePatentTaskService { batchIndex, batchTotal, currentInstanceId(), - 0 + 0, + credentialName ); String batchPayload = writeJson(batchRows, "serialize coze batch payload failed"); String storedBatchPayload = storeSharedCozeBatchPayload(task.getId(), batchScopeHash, batchPayload); @@ -1689,6 +1793,10 @@ public class AppearancePatentTaskService { try { TaskScopeStateEntity state = taskScopeStateMapper.selectById(stateId); if (state == null || state.getCozeExecuteId() == null || state.getCozeExecuteId().isBlank()) { + if (state != null && state.getCozeExecuteId() == null + && (COZE_STATUS_SUBMITTED.equals(state.getCozeStatus()) || COZE_STATUS_RUNNING.equals(state.getCozeStatus()))) { + retryPendingCozeSubmitState(state); + } return; } if (!(COZE_STATUS_SUBMITTED.equals(state.getCozeStatus()) || COZE_STATUS_RUNNING.equals(state.getCozeStatus()))) { @@ -1715,7 +1823,9 @@ public class AppearancePatentTaskService { log.info("[appearance-patent] coze poll start taskId={} stateId={} executeId={} jobId={} chunk={} batch={}/{}", state.getTaskId(), state.getId(), state.getCozeExecuteId(), context.jobId(), context.chunkIndex(), context.batchIndex(), context.batchTotal()); - AppearancePatentCozeClient.CozePollResponse poll = cozeClient.pollWorkflow(state.getCozeExecuteId()); + AppearancePatentCozeClient.CozePollResponse poll = cozeClient.pollWorkflow( + state.getCozeExecuteId(), + cozeClient.credentialByName(context.credentialName())); if (!poll.hasPayload() && !poll.isFinished() && !isCozeStateTimedOut(state)) { log.info("[appearance-patent] coze poll pending taskId={} stateId={} executeId={} status={}", state.getTaskId(), state.getId(), state.getCozeExecuteId(), poll.status()); @@ -1804,7 +1914,8 @@ public class AppearancePatentTaskService { } try { AppearancePatentCozeClient.CozeSubmitResponse submit = - submitCozeWorkflowThrottled(batchRows, readAiPrompt(task), readApiKey(task)); + submitCozeWorkflowThrottled(batchRows, readAiPrompt(task), readApiKey(task), + cozeClient.credentialByName(context.credentialName()), false); Map> allRowsByBaseId = loadAllRowsByBaseId(task); if (submit.immediateData() != null && !submit.immediateData().isBlank()) { List cozeRows = @@ -1853,23 +1964,54 @@ public class AppearancePatentTaskService { private AppearancePatentCozeClient.CozeSubmitResponse submitCozeWorkflowThrottled( List rows, String prompt, - String apiKey) throws Exception { - DistributedJobLockService.LockHandle lockHandle = acquireCozeSubmitLock(); - if (lockHandle == null) { - throw new IllegalStateException("Coze submit throttle lock timeout"); - } - try (lockHandle) { - AppearancePatentCozeClient.CozeSubmitResponse response = cozeClient.submitWorkflow(rows, prompt, apiKey); - sleepQuietly(COZE_SUBMIT_MIN_INTERVAL_MILLIS); - return response; + String apiKey, + AppearancePatentCozeClient.CozeCredentialRef credential, + boolean allowCredentialFallback) throws Exception { + int attempts = allowCredentialFallback ? Math.max(1, cozeClient.configuredCredentialCount()) : 1; + AppearancePatentCozeClient.CozeCredentialRef currentCredential = + credential == null ? cozeClient.nextCredential() : credential; + Exception lastFailure = null; + for (int i = 0; i < attempts; i++) { + DistributedJobLockService.LockHandle lockHandle = acquireCozeSubmitLock(currentCredential); + if (lockHandle == null) { + lastFailure = new IllegalStateException("Coze submit throttle lock timeout"); + currentCredential = cozeClient.nextCredential(); + continue; + } + CozeCredentialPoolService.BorrowedCredential borrowedCredential = + cozeCredentialPoolService.borrow(MODULE_TYPE, toPoolCredential(currentCredential)); + if (borrowedCredential == null) { + lockHandle.close(); + lastFailure = new IllegalStateException("Coze credential concurrency limit reached"); + currentCredential = cozeClient.nextCredential(); + continue; + } + try (lockHandle; borrowedCredential) { + return cozeClient.submitWorkflow(rows, prompt, apiKey, currentCredential); + } finally { + sleepQuietly(COZE_SUBMIT_MIN_INTERVAL_MILLIS); + } } + throw lastFailure == null ? new IllegalStateException("Coze submit failed") : lastFailure; } - private DistributedJobLockService.LockHandle acquireCozeSubmitLock() { + private CozeCredentialPoolService.CozeCredential toPoolCredential(AppearancePatentCozeClient.CozeCredentialRef credential) { + if (credential == null) { + return null; + } + return new CozeCredentialPoolService.CozeCredential( + credential.name(), + credential.workflowId(), + credential.token(), + credential.maxConcurrent()); + } + + private DistributedJobLockService.LockHandle acquireCozeSubmitLock(AppearancePatentCozeClient.CozeCredentialRef credential) { long deadline = System.currentTimeMillis() + COZE_SUBMIT_LOCK_WAIT_MILLIS; + String credentialName = credential == null ? "default" : firstNonBlank(credential.name(), "default"); while (System.currentTimeMillis() <= deadline) { DistributedJobLockService.LockHandle lockHandle = - distributedJobLockService.tryLock("appearance-patent:coze-submit", COZE_SUBMIT_LOCK_TTL); + distributedJobLockService.tryLock("appearance-patent:coze-submit:" + credentialName, COZE_SUBMIT_LOCK_TTL); if (lockHandle != null) { return lockHandle; } @@ -1915,14 +2057,16 @@ public class AppearancePatentTaskService { int partIndex = 1; for (List partRows : partitions) { AppearancePatentCozeClient.CozeSubmitResponse submit = - submitCozeWorkflowThrottled(partRows, readAiPrompt(task), readApiKey(task)); + submitCozeWorkflowThrottled(partRows, readAiPrompt(task), readApiKey(task), + cozeClient.credentialByName(context.credentialName()), false); if (submit.immediateData() != null && !submit.immediateData().isBlank()) { List cozeRows = cozeClient.mergeRowsFromDataText(partRows, submit.immediateData()); mergeCozeRowsIntoSubmittedChunks(task, cozeRows, allRowsByBaseId); submittedAny = true; } else if (submit.executeId() != null && !submit.executeId().isBlank()) { - saveSplitRetryCozeBatchState(state, context, partRows, partIndex, partitions.size(), retryCount, submit.executeId()); + saveSplitRetryCozeBatchState(state, context, partRows, partIndex, partitions.size(), retryCount, + submit.executeId(), submit.credentialName()); submittedAny = true; } partIndex++; @@ -1950,7 +2094,8 @@ public class AppearancePatentTaskService { int partIndex, int partTotal, int retryCount, - String executeId) { + String executeId, + String credentialName) { String scopeKey = parent.getScopeKey() + ":split:" + retryCount + ":" + partIndex; String scopeHash = DigestUtil.sha256Hex(scopeKey); CozeBatchContext context = new CozeBatchContext( @@ -1961,7 +2106,8 @@ public class AppearancePatentTaskService { partIndex, partTotal, parentContext.ownerInstanceId(), - retryCount + retryCount, + firstNonBlank(credentialName, parentContext.credentialName()) ); LocalDateTime now = LocalDateTime.now(); String batchPayload = writeJson(batchRows, "serialize split coze batch payload failed"); @@ -2058,6 +2204,24 @@ public class AppearancePatentTaskService { .set(TaskScopeStateEntity::getUpdatedAt, now)) > 0; } + private boolean tryClaimPendingCozeSubmitState(TaskScopeStateEntity state) { + if (state == null || state.getId() == null) { + return false; + } + LocalDateTime now = LocalDateTime.now(); + long intervalMillis = Math.max(1000L, PENDING_COZE_RETRY_INTERVAL_MILLIS); + return taskScopeStateMapper.update(null, new LambdaUpdateWrapper() + .eq(TaskScopeStateEntity::getId, state.getId()) + .in(TaskScopeStateEntity::getCozeStatus, List.of(COZE_STATUS_SUBMITTED, COZE_STATUS_RUNNING)) + .and(wrapper -> wrapper + .isNull(TaskScopeStateEntity::getCozeLastPolledAt) + .or() + .le(TaskScopeStateEntity::getCozeLastPolledAt, now.minus(Duration.ofMillis(intervalMillis)))) + .set(TaskScopeStateEntity::getCozeStatus, COZE_STATUS_RUNNING) + .set(TaskScopeStateEntity::getCozeLastPolledAt, now) + .set(TaskScopeStateEntity::getUpdatedAt, now)) > 0; + } + private void markCozeStateTerminal(TaskScopeStateEntity state, String status, String error) { taskScopeStateMapper.update(null, new LambdaUpdateWrapper() .eq(TaskScopeStateEntity::getId, state.getId()) @@ -2275,7 +2439,8 @@ public class AppearancePatentTaskService { context.batchIndex(), context.batchTotal(), context.ownerInstanceId(), - submitRetryCount + submitRetryCount, + context.credentialName() ); } @@ -2374,6 +2539,115 @@ public class AppearancePatentTaskService { return "task:" + taskId + ":owner:" + firstNonBlank(ownerFromTask(task), currentInstanceId()); } + private void retryPendingCozeSubmitState(TaskScopeStateEntity state) { + if (state == null || state.getId() == null) { + return; + } + if (!tryClaimPendingCozeSubmitState(state)) { + log.info("[appearance-patent] coze submit retry skipped by claim guard taskId={} stateId={} lastPolledAt={}", + state.getTaskId(), state.getId(), state.getCozeLastPolledAt()); + return; + } + CozeBatchContext context = readCozeBatchContext(state); + if (context == null || context.jobId() == null || context.resultId() == null) { + markCozeStateTerminal(state, COZE_STATUS_FAILED, "Coze pending submit context missing"); + return; + } + List batchRows = readCozeBatchRows(state); + if (batchRows.isEmpty()) { + markCozeStateTerminal(state, COZE_STATUS_FAILED, "Coze pending submit payload missing"); + maybeFinalizeCozeJobLocked(state.getTaskId(), context); + return; + } + FileTaskEntity task = fileTaskMapper.selectById(state.getTaskId()); + if (task == null || !MODULE_TYPE.equals(task.getModuleType())) { + markCozeStateTerminal(state, COZE_STATUS_FAILED, "Coze pending submit task missing"); + return; + } + Map currentRows = loadPersistedResultRows(task.getId()); + List currentBatchRows = batchRows.stream() + .map(row -> currentRows.get(rowKey(row))) + .filter(Objects::nonNull) + .toList(); + if (currentBatchRows.size() == batchRows.size() + && currentBatchRows.stream().allMatch(this::hasResolvedCozeFields)) { + markCozeStateTerminal(state, COZE_STATUS_DONE, "Coze rows already resolved by another batch"); + maybeFinalizeCozeJobLocked(state.getTaskId(), context); + log.info("[appearance-patent] coze pending submit skipped because rows already resolved taskId={} stateId={} jobId={} rows={}", + state.getTaskId(), state.getId(), context.jobId(), batchRows.size()); + return; + } + try { + taskFileJobService.touchRunning(context.jobId()); + AppearancePatentCozeClient.CozeSubmitResponse submit = + submitCozeWorkflowThrottled(batchRows, readAiPrompt(task), readApiKey(task), + cozeClient.credentialByName(context.credentialName()), false); + Map> allRowsByBaseId = loadAllRowsByBaseId(task); + if (submit.immediateData() != null && !submit.immediateData().isBlank()) { + List cozeRows = + cozeClient.mergeRowsFromDataText(batchRows, submit.immediateData()); + mergeCozeRowsIntoSubmittedChunks(task, cozeRows, allRowsByBaseId); + markCozeStateTerminal(state, COZE_STATUS_DONE, null); + maybeFinalizeCozeJobLocked(state.getTaskId(), context); + return; + } + if (submit.executeId() == null || submit.executeId().isBlank()) { + markCozeStateTerminal(state, COZE_STATUS_FAILED, "Coze async execute_id missing"); + mergeCozeRowsIntoSubmittedChunks(task, + cozeClient.markRowsFailed(batchRows, "Coze async execute_id missing"), + allRowsByBaseId); + maybeFinalizeCozeJobLocked(state.getTaskId(), context); + return; + } + LocalDateTime now = LocalDateTime.now(); + taskScopeStateMapper.update(null, new LambdaUpdateWrapper() + .eq(TaskScopeStateEntity::getId, state.getId()) + .in(TaskScopeStateEntity::getCozeStatus, List.of(COZE_STATUS_SUBMITTED, COZE_STATUS_RUNNING)) + .set(TaskScopeStateEntity::getCozeExecuteId, submit.executeId()) + .set(TaskScopeStateEntity::getCozeStatus, COZE_STATUS_SUBMITTED) + .set(TaskScopeStateEntity::getCozeSubmittedAt, now) + .set(TaskScopeStateEntity::getCozeLastPolledAt, null) + .set(TaskScopeStateEntity::getCozeError, null) + .set(TaskScopeStateEntity::getUpdatedAt, now)); + touchJavaSideTaskActivity(state.getTaskId()); + log.info("[appearance-patent] coze pending submit retried taskId={} stateId={} jobId={} rows={} executeId={}", + state.getTaskId(), state.getId(), context.jobId(), batchRows.size(), submit.executeId()); + } catch (Exception ex) { + String message = firstNonBlank(ex.getMessage(), "Coze pending submit retry failed"); + log.warn("[appearance-patent] coze pending submit retry failed taskId={} stateId={} jobId={} rows={} err={}", + state.getTaskId(), state.getId(), context.jobId(), batchRows.size(), message); + if (isCozeThrottleLockTimeout(message)) { + keepPendingCozeSubmitState(state, message); + return; + } + int nextAttemptCount = cozeAttemptCount(state) + 1; + if (nextAttemptCount >= MAX_COZE_SUBMIT_RETRY_COUNT) { + Map> allRowsByBaseId = loadAllRowsByBaseId(task); + String finalMessage = message + " after " + nextAttemptCount + " submit attempts"; + mergeCozeRowsIntoSubmittedChunks(task, + cozeClient.markRowsFailed(batchRows, finalMessage), + allRowsByBaseId); + markCozeStateTerminal(state, COZE_STATUS_FAILED, finalMessage); + maybeFinalizeCozeJobLocked(state.getTaskId(), context); + return; + } + updateCozeStateRunning(state, message); + } + } + + private void keepPendingCozeSubmitState(TaskScopeStateEntity state, String error) { + int updated = taskScopeStateMapper.update(null, new LambdaUpdateWrapper() + .eq(TaskScopeStateEntity::getId, state.getId()) + .in(TaskScopeStateEntity::getCozeStatus, List.of(COZE_STATUS_SUBMITTED, COZE_STATUS_RUNNING)) + .set(TaskScopeStateEntity::getCozeStatus, COZE_STATUS_RUNNING) + .set(TaskScopeStateEntity::getCozeExecuteId, null) + .set(TaskScopeStateEntity::getCozeError, error) + .set(TaskScopeStateEntity::getUpdatedAt, LocalDateTime.now())); + if (updated > 0) { + touchJavaSideTaskActivity(state.getTaskId()); + } + } + private String currentInstanceId() { String instanceId = instanceMetadata == null ? null : instanceMetadata.getInstanceId(); return firstNonBlank(instanceId, "unknown-instance"); @@ -2475,6 +2749,12 @@ public class AppearancePatentTaskService { } int safeTotal = Math.max(1, total); int safeCompleted = Math.max(0, Math.min(completed, safeTotal)); + TaskProgressSnapshotEntity existing = taskProgressSnapshotService.find(task.getId(), MODULE_TYPE); + int displayPercent = calculateDisplayProgressPercent(safeCompleted, safeTotal, job, LocalDateTime.now()); + int previousDisplayPercent = calculateSnapshotDisplayPercent(existing, job); + if (previousDisplayPercent > displayPercent && safeCompleted < safeTotal) { + displayPercent = previousDisplayPercent; + } taskProgressSnapshotService.save( task.getId(), MODULE_TYPE, @@ -2484,10 +2764,57 @@ public class AppearancePatentTaskService { 0, job.getScopeKey(), message, - Map.of("phase", "RESULT_FILE", "jobId", job.getId()) + Map.of("phase", "RESULT_FILE", "jobId", job.getId(), "displayPercent", displayPercent) ); } + private int calculateDisplayProgressPercent(int current, + int total, + TaskFileJobEntity job, + LocalDateTime baseTime) { + if (total <= 0) { + return 0; + } + current = Math.max(0, Math.min(current, total)); + int percent = Math.max(1, Math.min(99, (int) Math.floor(current * 100.0 / total))); + if (job != null && STATUS_RUNNING.equals(job.getStatus())) { + long elapsedSeconds = baseTime == null ? 0 : Math.max(0, Duration.between(baseTime, LocalDateTime.now()).getSeconds()); + if (current <= 0) { + int firstRealProgressPercent = Math.max(1, Math.min(99, (int) Math.floor(100.0 / total))); + int waitingCap = Math.max(8, Math.min(35, firstRealProgressPercent - 1)); + percent = Math.max(percent, Math.min(waitingCap, 8 + (int) (elapsedSeconds / 6))); + } else if (current < total) { + percent = Math.max(percent, Math.min(92, percent + (int) (elapsedSeconds / 10))); + } + } + return percent; + } + + private int calculateSnapshotDisplayPercent(TaskProgressSnapshotEntity snapshot, TaskFileJobEntity job) { + if (snapshot == null) { + return 0; + } + int total = snapshot.getTotalCount() == null ? 0 : snapshot.getTotalCount(); + int current = snapshot.getSuccessCount() == null ? 0 : snapshot.getSuccessCount(); + int percent = total <= 0 ? 0 : calculateDisplayProgressPercent(current, total, job, snapshot.getUpdatedAt()); + return Math.max(percent, extractSnapshotDisplayPercent(snapshot)); + } + + private int extractSnapshotDisplayPercent(TaskProgressSnapshotEntity snapshot) { + if (snapshot == null || snapshot.getSnapshotJson() == null || snapshot.getSnapshotJson().isBlank()) { + return 0; + } + try { + JsonNode displayPercent = objectMapper.readTree(snapshot.getSnapshotJson()).path("displayPercent"); + if (!displayPercent.isNumber()) { + return 0; + } + return Math.max(0, Math.min(100, displayPercent.asInt())); + } catch (Exception ignored) { + return 0; + } + } + private void saveCozePipelineProgress(FileTaskEntity task, TaskFileJobEntity job) { if (task == null || task.getId() == null || job == null || job.getId() == null) { return; @@ -2565,28 +2892,160 @@ public class AppearancePatentTaskService { if (!outputDir.exists() && !outputDir.mkdirs()) { throw new BusinessException("创建结果目录失败"); } - String filename = safeFileStem(result.getSourceFilename()) + "-result.xlsx"; - String tempFilename = safeFileStem(result.getSourceFilename()) - + "-" + task.getId() - + "-" + result.getId() - + "-" + UUID.randomUUID() - + "-result.xlsx"; - File xlsx = new File(outputDir, tempFilename); + List sourceRows = splitRowsBySourceFile(parsed, receivedRows, result.getSourceFilename()); + List workbooks = new ArrayList<>(); + File zip = null; try { - writeResultWorkbook(xlsx, parsed, receivedRows, resultMap); - String objectKey = ossStorageService.uploadResultFile(xlsx, MODULE_TYPE); + for (SourceRows item : sourceRows) { + String filename = safeFileStem(item.sourceFilename()) + "-result.xlsx"; + String tempFilename = safeFileStem(item.sourceFilename()) + + "-" + task.getId() + + "-" + result.getId() + + "-" + UUID.randomUUID() + + "-result.xlsx"; + File xlsx = new File(outputDir, tempFilename); + writeResultWorkbook(xlsx, parsed, item.rows(), resultMap); + workbooks.add(new SourceResultWorkbook(xlsx, filename, item.rows().size())); + } + if (workbooks.isEmpty()) { + throw new BusinessException("外观专利检测结果为空,请稍后重试生成结果文件"); + } + + File uploadFile; + String filename; + String contentType; + if (workbooks.size() == 1) { + SourceResultWorkbook workbook = workbooks.get(0); + uploadFile = workbook.file(); + filename = workbook.filename(); + contentType = CONTENT_TYPE_XLSX; + } else { + filename = safeFileStem(result.getSourceFilename()) + "-result.zip"; + String tempFilename = safeFileStem(result.getSourceFilename()) + + "-" + task.getId() + + "-" + result.getId() + + "-" + UUID.randomUUID() + + "-result.zip"; + zip = new File(outputDir, tempFilename); + packageResultWorkbooksAsZip(zip, workbooks); + uploadFile = zip; + contentType = CONTENT_TYPE_ZIP; + } + + String objectKey = ossStorageService.uploadResultFile(uploadFile, MODULE_TYPE); result.setResultFilename(filename); result.setResultFileUrl(objectKey); - result.setResultFileSize(xlsx.length()); - result.setResultContentType(CONTENT_TYPE_XLSX); + result.setResultFileSize(uploadFile.length()); + result.setResultContentType(contentType); result.setRowCount(receivedRows.size()); } finally { - if (xlsx.exists() && !xlsx.delete()) { - log.warn("[appearance-patent] delete temp xlsx failed file={}", xlsx); + for (SourceResultWorkbook workbook : workbooks) { + if (workbook.file().exists() && !workbook.file().delete()) { + log.warn("[appearance-patent] delete temp xlsx failed file={}", workbook.file()); + } + } + if (zip != null && zip.exists() && !zip.delete()) { + log.warn("[appearance-patent] delete temp zip failed file={}", zip); } } } + private List splitRowsBySourceFile(AppearancePatentParsedPayloadDto parsed, + List receivedRows, + String fallbackFilename) { + String defaultFilename = firstNonBlank(fallbackFilename, "appearance-patent"); + Map builders = new LinkedHashMap<>(); + if (parsed != null && parsed.getSourceFiles() != null) { + for (AppearancePatentSourceFileDto sourceFile : parsed.getSourceFiles()) { + if (sourceFile == null) { + continue; + } + String sourceFileKey = normalize(sourceFile.getFileKey()); + if (sourceFileKey.isBlank()) { + continue; + } + builders.putIfAbsent(sourceFileKey, + new SourceRowsBuilder(sourceFileKey, firstNonBlank(sourceFile.getOriginalFilename(), defaultFilename))); + } + } + + for (AppearancePatentParsedRowVo row : receivedRows == null ? List.of() : receivedRows) { + if (row == null) { + continue; + } + String sourceFileKey = normalize(row.getSourceFileKey()); + if (sourceFileKey.isBlank()) { + sourceFileKey = normalize(row.getSourceFilename()); + } + if (sourceFileKey.isBlank()) { + sourceFileKey = "__default__"; + } + SourceRowsBuilder builder = builders.computeIfAbsent(sourceFileKey, + key -> new SourceRowsBuilder(key, firstNonBlank(row.getSourceFilename(), defaultFilename))); + if (builder.sourceFilename().isBlank() || Objects.equals(builder.sourceFilename(), defaultFilename)) { + builder.setSourceFilename(firstNonBlank(row.getSourceFilename(), defaultFilename)); + } + builder.rows().add(row); + } + + return builders.values().stream() + .filter(builder -> !builder.rows().isEmpty()) + .map(builder -> new SourceRows(builder.sourceFileKey(), firstNonBlank(builder.sourceFilename(), defaultFilename), builder.rows())) + .toList(); + } + + private void packageResultWorkbooksAsZip(File zip, List workbooks) { + Set entryNames = new LinkedHashSet<>(); + try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zip))) { + byte[] buffer = new byte[8192]; + for (SourceResultWorkbook workbook : workbooks) { + writeResultZipEntry(zos, buffer, workbook.file(), uniqueZipEntryName(workbook.filename(), entryNames)); + } + } catch (IOException ex) { + throw new BusinessException("生成外观专利检测结果压缩包失败"); + } + } + + private void writeResultZipEntry(ZipOutputStream zos, + byte[] buffer, + File file, + String entryName) throws IOException { + zos.putNextEntry(new ZipEntry(entryName)); + try (FileInputStream inputStream = new FileInputStream(file)) { + int len; + while ((len = inputStream.read(buffer)) > 0) { + zos.write(buffer, 0, len); + } + } + zos.closeEntry(); + } + + private String uniqueZipEntryName(String filename, Set entryNames) { + String safeFilename = normalizeZipFilename(filename); + if (entryNames.add(safeFilename)) { + return safeFilename; + } + int dotIndex = safeFilename.lastIndexOf('.'); + String stem = dotIndex > 0 ? safeFilename.substring(0, dotIndex) : safeFilename; + String extension = dotIndex > 0 ? safeFilename.substring(dotIndex) : ""; + int index = 2; + while (true) { + String candidate = stem + "(" + index + ")" + extension; + if (entryNames.add(candidate)) { + return candidate; + } + index++; + } + } + + private String normalizeZipFilename(String filename) { + String normalized = firstNonBlank(filename, "appearance-patent-result.xlsx").replace('\\', '/'); + while (normalized.startsWith("/")) { + normalized = normalized.substring(1); + } + return normalized.isBlank() ? "appearance-patent-result.xlsx" : normalized; + } + private List filterReceivedParsedRows(List parsedRows, Map resultMap) { if (parsedRows == null || parsedRows.isEmpty() || resultMap == null || resultMap.isEmpty()) { @@ -3141,19 +3600,10 @@ public class AppearancePatentTaskService { if (total <= 0) { return; } - current = Math.max(0, Math.min(current, total)); - int percent = Math.max(1, Math.min(99, (int) Math.floor(current * 100.0 / total))); - if (job != null && STATUS_RUNNING.equals(job.getStatus())) { - LocalDateTime baseTime = snapshot.getUpdatedAt() != null ? snapshot.getUpdatedAt() : job.getUpdatedAt(); - long elapsedSeconds = baseTime == null ? 0 : Math.max(0, Duration.between(baseTime, LocalDateTime.now()).getSeconds()); - if (current <= 0) { - int firstRealProgressPercent = Math.max(1, Math.min(99, (int) Math.floor(100.0 / total))); - int waitingCap = Math.max(8, Math.min(35, firstRealProgressPercent - 1)); - percent = Math.max(percent, Math.min(waitingCap, 8 + (int) (elapsedSeconds / 6))); - } else if (current < total) { - percent = Math.max(percent, Math.min(92, percent + (int) (elapsedSeconds / 10))); - } - } + LocalDateTime baseTime = snapshot.getUpdatedAt() != null ? snapshot.getUpdatedAt() : (job == null ? null : job.getUpdatedAt()); + int percent = calculateDisplayProgressPercent(current, total, job, baseTime); + percent = Math.max(percent, extractSnapshotDisplayPercent(snapshot)); + percent = Boolean.TRUE.equals(vo.getFileReady()) ? 100 : Math.min(99, percent); vo.setFileProgressCurrent(current); vo.setFileProgressTotal(total); vo.setFileProgressPercent(percent); @@ -3514,7 +3964,8 @@ public class AppearancePatentTaskService { Integer batchIndex, Integer batchTotal, String ownerInstanceId, - Integer submitRetryCount) { + Integer submitRetryCount, + String credentialName) { } private record CozeCandidate(String chunkScopeHash, @@ -3522,6 +3973,43 @@ public class AppearancePatentTaskService { AppearancePatentResultRowDto row) { } + private static class SourceRowsBuilder { + private final String sourceFileKey; + private String sourceFilename; + private final List rows = new ArrayList<>(); + + private SourceRowsBuilder(String sourceFileKey, String sourceFilename) { + this.sourceFileKey = sourceFileKey; + this.sourceFilename = sourceFilename; + } + + private String sourceFileKey() { + return sourceFileKey; + } + + private String sourceFilename() { + return sourceFilename; + } + + private void setSourceFilename(String sourceFilename) { + this.sourceFilename = sourceFilename; + } + + private List rows() { + return rows; + } + } + + private record SourceRows(String sourceFileKey, + String sourceFilename, + List rows) { + } + + private record SourceResultWorkbook(File file, + String filename, + int rowCount) { + } + private record ParsedWorkbook(int totalRows, int droppedRows, List headers, List allRows) { } } diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/coze/mapper/CozeCredentialMapper.java b/backend-java/src/main/java/com/nanri/aiimage/modules/coze/mapper/CozeCredentialMapper.java new file mode 100644 index 0000000..608fda3 --- /dev/null +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/coze/mapper/CozeCredentialMapper.java @@ -0,0 +1,9 @@ +package com.nanri.aiimage.modules.coze.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nanri.aiimage.modules.coze.model.entity.CozeCredentialEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface CozeCredentialMapper extends BaseMapper { +} diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/coze/model/entity/CozeCredentialEntity.java b/backend-java/src/main/java/com/nanri/aiimage/modules/coze/model/entity/CozeCredentialEntity.java new file mode 100644 index 0000000..3752f89 --- /dev/null +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/coze/model/entity/CozeCredentialEntity.java @@ -0,0 +1,25 @@ +package com.nanri.aiimage.modules.coze.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@TableName("biz_coze_credential") +public class CozeCredentialEntity { + + @TableId(type = IdType.AUTO) + private Long id; + private String moduleType; + private String credentialName; + private String workflowId; + private String token; + private Integer enabled; + private Integer maxConcurrent; + private Integer sortOrder; + private LocalDateTime createdAt; + private LocalDateTime updatedAt; +} diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/coze/service/CozeCredentialPoolService.java b/backend-java/src/main/java/com/nanri/aiimage/modules/coze/service/CozeCredentialPoolService.java new file mode 100644 index 0000000..28071aa --- /dev/null +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/coze/service/CozeCredentialPoolService.java @@ -0,0 +1,182 @@ +package com.nanri.aiimage.modules.coze.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.nanri.aiimage.modules.coze.mapper.CozeCredentialMapper; +import com.nanri.aiimage.modules.coze.model.entity.CozeCredentialEntity; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; + +import java.time.Duration; +import java.util.List; +import java.util.Objects; + +@Slf4j +@Service +@RequiredArgsConstructor +public class CozeCredentialPoolService { + + private static final Duration INFLIGHT_TTL = Duration.ofMinutes(30); + + private final CozeCredentialMapper cozeCredentialMapper; + private final StringRedisTemplate stringRedisTemplate; + + public List listEnabled(String moduleType) { + if (moduleType == null || moduleType.isBlank()) { + return List.of(); + } + try { + List rows = cozeCredentialMapper.selectList(new LambdaQueryWrapper() + .eq(CozeCredentialEntity::getModuleType, moduleType) + .eq(CozeCredentialEntity::getEnabled, 1) + .orderByAsc(CozeCredentialEntity::getSortOrder) + .orderByAsc(CozeCredentialEntity::getId)); + if (rows == null || rows.isEmpty()) { + return List.of(); + } + return rows.stream() + .filter(Objects::nonNull) + .filter(row -> !blank(row.getCredentialName()) + && !blank(row.getWorkflowId()) + && !blank(row.getToken())) + .map(row -> new CozeCredential( + row.getCredentialName().trim(), + row.getWorkflowId().trim(), + row.getToken().trim(), + row.getMaxConcurrent() == null || row.getMaxConcurrent() <= 0 + ? Integer.MAX_VALUE + : row.getMaxConcurrent())) + .toList(); + } catch (Exception ex) { + log.warn("[coze-credential] list enabled failed moduleType={} err={}", moduleType, ex.getMessage()); + return List.of(); + } + } + + public CozeCredential chooseLeastInflight(String moduleType, List credentials) { + return chooseRoundRobin(moduleType, credentials, 1); + } + + public CozeCredential chooseRoundRobin(String moduleType, List credentials, int stripeSize) { + if (credentials == null || credentials.isEmpty()) { + return null; + } + int safeStripeSize = Math.max(1, stripeSize); + long cursor = nextCursor(moduleType); + int index = (int) ((Math.max(0L, cursor) / safeStripeSize) % credentials.size()); + return credentials.get(index); + } + + public BorrowedCredential borrow(String moduleType, CozeCredential credential) { + if (credential == null) { + return null; + } + String key = inflightKey(moduleType, credential.name()); + try { + Long value = stringRedisTemplate.opsForValue().increment(key); + stringRedisTemplate.expire(key, INFLIGHT_TTL); + long inflight = value == null ? 0L : value; + if (inflight > credential.maxConcurrent()) { + release(moduleType, credential.name()); + return null; + } + return new BorrowedCredential(this, moduleType, credential.name()); + } catch (Exception ex) { + log.warn("[coze-credential] borrow failed moduleType={} credential={} err={}", + moduleType, credential.name(), ex.getMessage()); + return BorrowedCredential.noop(); + } + } + + public void release(String moduleType, String credentialName) { + if (blank(moduleType) || blank(credentialName)) { + return; + } + try { + Long value = stringRedisTemplate.opsForValue().decrement(inflightKey(moduleType, credentialName)); + if (value != null && value <= 0L) { + stringRedisTemplate.delete(inflightKey(moduleType, credentialName)); + } + } catch (Exception ex) { + log.warn("[coze-credential] release failed moduleType={} credential={} err={}", + moduleType, credentialName, ex.getMessage()); + } + } + + private long inflight(String moduleType, String credentialName) { + try { + String raw = stringRedisTemplate.opsForValue().get(inflightKey(moduleType, credentialName)); + return raw == null || raw.isBlank() ? 0L : Long.parseLong(raw); + } catch (Exception ex) { + return 0L; + } + } + + private long nextCursor(String moduleType) { + if (blank(moduleType)) { + return 0L; + } + try { + Long value = stringRedisTemplate.opsForValue().increment(cursorKey(moduleType)); + stringRedisTemplate.expire(cursorKey(moduleType), Duration.ofDays(7)); + return value == null ? 0L : Math.max(0L, value - 1L); + } catch (Exception ex) { + log.warn("[coze-credential] cursor increment failed moduleType={} err={}", moduleType, ex.getMessage()); + return System.nanoTime(); + } + } + + private String inflightKey(String moduleType, String credentialName) { + return "coze:credential:inflight:" + moduleType + ":" + credentialName; + } + + private String cursorKey(String moduleType) { + return "coze:credential:cursor:" + moduleType; + } + + private boolean blank(String value) { + return value == null || value.isBlank(); + } + + public record CozeCredential(String name, + String workflowId, + String token, + int maxConcurrent) { + } + + public static final class BorrowedCredential implements AutoCloseable { + private final CozeCredentialPoolService owner; + private final String moduleType; + private final String credentialName; + private final boolean noop; + private boolean released; + + private BorrowedCredential(CozeCredentialPoolService owner, String moduleType, String credentialName) { + this.owner = owner; + this.moduleType = moduleType; + this.credentialName = credentialName; + this.noop = false; + } + + private BorrowedCredential() { + this.owner = null; + this.moduleType = null; + this.credentialName = null; + this.noop = true; + } + + private static BorrowedCredential noop() { + return new BorrowedCredential(); + } + + @Override + public void close() { + if (released || noop) { + return; + } + released = true; + owner.release(moduleType, credentialName); + } + } +} diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/productcategory/controller/ProductCategoryController.java b/backend-java/src/main/java/com/nanri/aiimage/modules/productcategory/controller/ProductCategoryController.java index 910db73..3996374 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/productcategory/controller/ProductCategoryController.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/productcategory/controller/ProductCategoryController.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @@ -28,8 +29,26 @@ public class ProductCategoryController { @GetMapping("/product-categories") @Operation(summary = "查询商品类目树") - public ApiResponse list() { - return ApiResponse.success(productCategoryService.list()); + public ApiResponse list(@RequestParam(value = "keyword", required = false) String keyword) { + return ApiResponse.success(productCategoryService.list(keyword)); + } + + @GetMapping("/product-categories/children") + @Operation(summary = "分页查询指定父级下的商品类目") + public ApiResponse children( + @RequestParam(value = "parentId", required = false) Long parentId, + @RequestParam(value = "page", defaultValue = "1") Long page, + @RequestParam(value = "pageSize", defaultValue = "20") Long pageSize) { + return ApiResponse.success(productCategoryService.children(parentId, page, pageSize)); + } + + @GetMapping("/product-categories/search") + @Operation(summary = "分页搜索商品类目") + public ApiResponse search( + @RequestParam(value = "keyword", required = false) String keyword, + @RequestParam(value = "page", defaultValue = "1") Long page, + @RequestParam(value = "pageSize", defaultValue = "20") Long pageSize) { + return ApiResponse.success(productCategoryService.search(keyword, page, pageSize)); } @PostMapping("/product-category") diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/productcategory/model/vo/ProductCategoryListVo.java b/backend-java/src/main/java/com/nanri/aiimage/modules/productcategory/model/vo/ProductCategoryListVo.java index 98a2289..d361f0d 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/productcategory/model/vo/ProductCategoryListVo.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/productcategory/model/vo/ProductCategoryListVo.java @@ -8,4 +8,8 @@ import java.util.List; public class ProductCategoryListVo { private List tree; private List items; + private Long total; + private Long page; + private Long pageSize; + private Boolean hasMore; } diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/productcategory/service/ProductCategoryService.java b/backend-java/src/main/java/com/nanri/aiimage/modules/productcategory/service/ProductCategoryService.java index bc072ef..a759ffa 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/productcategory/service/ProductCategoryService.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/productcategory/service/ProductCategoryService.java @@ -17,6 +17,7 @@ import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; @@ -27,13 +28,52 @@ public class ProductCategoryService { private final ProductCategoryMapper productCategoryMapper; public ProductCategoryListVo list() { + return list(null); + } + + public ProductCategoryListVo list(String keyword) { List rows = productCategoryMapper.selectList(new LambdaQueryWrapper() .orderByAsc(ProductCategoryEntity::getParentId) .orderByAsc(ProductCategoryEntity::getSortOrder) .orderByAsc(ProductCategoryEntity::getId)); + rows = filterRowsByKeyword(rows, keyword); return buildListVo(rows); } + public ProductCategoryListVo children(Long parentId, long page, long pageSize) { + long safePage = Math.max(page, 1); + long safePageSize = normalizePageSize(pageSize); + Long normalizedParentId = normalizeParentId(parentId); + LambdaQueryWrapper countQuery = new LambdaQueryWrapper<>(); + applyParentFilter(countQuery, normalizedParentId); + Long total = productCategoryMapper.selectCount(countQuery); + + LambdaQueryWrapper pageQuery = new LambdaQueryWrapper() + .orderByAsc(ProductCategoryEntity::getSortOrder) + .orderByAsc(ProductCategoryEntity::getId) + .last("LIMIT " + ((safePage - 1) * safePageSize) + ", " + safePageSize); + applyParentFilter(pageQuery, normalizedParentId); + List rows = productCategoryMapper.selectList(pageQuery); + return buildPageVo(rows, total, safePage, safePageSize); + } + + public ProductCategoryListVo search(String keyword, long page, long pageSize) { + String normalized = normalizeSearchKeyword(keyword); + if (normalized.isBlank()) { + return emptyPageVo(Math.max(page, 1), normalizePageSize(pageSize)); + } + long safePage = Math.max(page, 1); + long safePageSize = normalizePageSize(pageSize); + LambdaQueryWrapper countQuery = buildSearchQuery(normalized); + Long total = productCategoryMapper.selectCount(countQuery); + List rows = productCategoryMapper.selectList(buildSearchQuery(normalized) + .orderByAsc(ProductCategoryEntity::getParentId) + .orderByAsc(ProductCategoryEntity::getSortOrder) + .orderByAsc(ProductCategoryEntity::getId) + .last("LIMIT " + ((safePage - 1) * safePageSize) + ", " + safePageSize)); + return buildSearchPageVo(rows, total, safePage, safePageSize); + } + @Transactional public ProductCategoryItemVo create(ProductCategorySaveRequest request) { String name = normalizeRequired(request.getName(), "类目名称不能为空"); @@ -80,11 +120,13 @@ public class ProductCategoryService { } private ProductCategoryItemVo findItem(Long id) { - ProductCategoryListVo listVo = list(); - return listVo.getItems().stream() - .filter(item -> id.equals(item.getId())) - .findFirst() - .orElseThrow(() -> new BusinessException("类目不存在")); + ProductCategoryEntity entity = getById(id); + Long childCount = productCategoryMapper.selectCount(new LambdaQueryWrapper() + .eq(ProductCategoryEntity::getParentId, entity.getId())); + ProductCategoryItemVo item = toItemVo(entity, childCount == null ? 0 : childCount.intValue()); + item.setLevel(resolveLevel(entity)); + item.setPath(resolvePath(entity)); + return item; } private ProductCategoryListVo buildListVo(List rows) { @@ -105,9 +147,153 @@ public class ProductCategoryService { ProductCategoryListVo vo = new ProductCategoryListVo(); vo.setTree(tree); vo.setItems(flat); + vo.setTotal((long) flat.size()); + vo.setPage(1L); + vo.setPageSize((long) flat.size()); + vo.setHasMore(false); return vo; } + private ProductCategoryListVo buildPageVo(List rows, Long total, long page, long pageSize) { + Map childCountById = buildChildCountById(rows); + List items = rows.stream() + .map(row -> toItemVo(row, childCountById.getOrDefault(row.getId(), 0))) + .toList(); + ProductCategoryListVo vo = new ProductCategoryListVo(); + vo.setItems(items); + vo.setTree(List.of()); + vo.setTotal(total == null ? 0L : total); + vo.setPage(page); + vo.setPageSize(pageSize); + vo.setHasMore(page * pageSize < vo.getTotal()); + return vo; + } + + private ProductCategoryListVo buildSearchPageVo(List rows, Long total, long page, long pageSize) { + Map childCountById = buildChildCountById(rows); + List items = rows.stream() + .map(row -> { + ProductCategoryItemVo item = toItemVo(row, childCountById.getOrDefault(row.getId(), 0)); + item.setLevel(resolveLevel(row)); + item.setPath(resolvePath(row)); + return item; + }) + .toList(); + ProductCategoryListVo vo = new ProductCategoryListVo(); + vo.setItems(items); + vo.setTree(List.of()); + vo.setTotal(total == null ? 0L : total); + vo.setPage(page); + vo.setPageSize(pageSize); + vo.setHasMore(page * pageSize < vo.getTotal()); + return vo; + } + + private ProductCategoryListVo emptyPageVo(long page, long pageSize) { + ProductCategoryListVo vo = new ProductCategoryListVo(); + vo.setItems(List.of()); + vo.setTree(List.of()); + vo.setTotal(0L); + vo.setPage(page); + vo.setPageSize(pageSize); + vo.setHasMore(false); + return vo; + } + + private Map buildChildCountById(List rows) { + Map childCountById = new HashMap<>(); + if (rows.isEmpty()) { + return childCountById; + } + for (ProductCategoryEntity row : rows) { + Long childCount = productCategoryMapper.selectCount(new LambdaQueryWrapper() + .eq(ProductCategoryEntity::getParentId, row.getId())); + childCountById.put(row.getId(), childCount == null ? 0 : childCount.intValue()); + } + return childCountById; + } + + private void applyParentFilter(LambdaQueryWrapper query, Long parentId) { + if (parentId == null) { + query.isNull(ProductCategoryEntity::getParentId); + } else { + query.eq(ProductCategoryEntity::getParentId, parentId); + } + } + + private LambdaQueryWrapper buildSearchQuery(String keyword) { + return new LambdaQueryWrapper() + .like(ProductCategoryEntity::getName, keyword) + .or() + .like(ProductCategoryEntity::getCategoryKey, keyword) + .or() + .like(ProductCategoryEntity::getDescription, keyword); + } + + private List filterRowsByKeyword(List rows, String keyword) { + String normalized = normalizeSearchKeyword(keyword); + if (normalized.isBlank()) { + return rows; + } + Map byId = new HashMap<>(); + Map> byParent = new HashMap<>(); + for (ProductCategoryEntity row : rows) { + byId.put(row.getId(), row); + byParent.computeIfAbsent(row.getParentId(), ignored -> new ArrayList<>()).add(row); + } + Set includedIds = new HashSet<>(); + for (ProductCategoryEntity row : rows) { + if (!matchesKeyword(row, normalized)) { + continue; + } + includeAncestors(row, byId, includedIds); + includeDescendants(row, byParent, includedIds); + } + if (includedIds.isEmpty()) { + return List.of(); + } + return rows.stream() + .filter(row -> includedIds.contains(row.getId())) + .toList(); + } + + private String normalizeSearchKeyword(String keyword) { + return keyword == null ? "" : keyword.trim().toLowerCase(Locale.ROOT); + } + + private boolean matchesKeyword(ProductCategoryEntity row, String keyword) { + return containsKeyword(row.getName(), keyword) + || containsKeyword(row.getCategoryKey(), keyword) + || containsKeyword(row.getDescription(), keyword); + } + + private boolean containsKeyword(String value, String keyword) { + return value != null && value.toLowerCase(Locale.ROOT).contains(keyword); + } + + private void includeAncestors(ProductCategoryEntity row, + Map byId, + Set includedIds) { + ProductCategoryEntity cursor = row; + Set visited = new HashSet<>(); + while (cursor != null && cursor.getId() != null && visited.add(cursor.getId())) { + includedIds.add(cursor.getId()); + cursor = cursor.getParentId() == null ? null : byId.get(cursor.getParentId()); + } + } + + private void includeDescendants(ProductCategoryEntity row, + Map> byParent, + Set includedIds) { + if (row == null || row.getId() == null) { + return; + } + includedIds.add(row.getId()); + for (ProductCategoryEntity child : byParent.getOrDefault(row.getId(), List.of())) { + includeDescendants(child, byParent, includedIds); + } + } + private List buildChildren( Long parentId, int level, @@ -159,6 +345,36 @@ public class ProductCategoryService { return vo; } + private int resolveLevel(ProductCategoryEntity entity) { + int level = 0; + ProductCategoryEntity cursor = entity; + Set visited = new HashSet<>(); + while (cursor != null && cursor.getParentId() != null && visited.add(cursor.getId())) { + ProductCategoryEntity parent = productCategoryMapper.selectById(cursor.getParentId()); + if (parent == null) { + break; + } + level += 1; + cursor = parent; + } + return level; + } + + private String resolvePath(ProductCategoryEntity entity) { + List names = new ArrayList<>(); + ProductCategoryEntity cursor = entity; + Set visited = new HashSet<>(); + while (cursor != null && cursor.getId() != null && visited.add(cursor.getId())) { + names.add(cursor.getName()); + cursor = cursor.getParentId() == null ? null : productCategoryMapper.selectById(cursor.getParentId()); + } + List ordered = new ArrayList<>(); + for (int i = names.size() - 1; i >= 0; i--) { + ordered.add(names.get(i)); + } + return String.join(" / ", ordered); + } + private ProductCategoryEntity getById(Long id) { ProductCategoryEntity entity = productCategoryMapper.selectById(id); if (entity == null) { @@ -225,6 +441,10 @@ public class ProductCategoryService { return value == null ? 100 : value; } + private long normalizePageSize(long value) { + return Math.min(Math.max(value, 1), 100); + } + private String normalizeDescription(String value) { String normalized = value == null ? "" : value.trim(); return normalized.length() > 512 ? normalized.substring(0, 512) : normalized; diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/shopkey/controller/QueryAsinController.java b/backend-java/src/main/java/com/nanri/aiimage/modules/shopkey/controller/QueryAsinController.java index 860bc7a..8fc1869 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/shopkey/controller/QueryAsinController.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/shopkey/controller/QueryAsinController.java @@ -1,6 +1,7 @@ package com.nanri.aiimage.modules.shopkey.controller; import com.nanri.aiimage.common.api.ApiResponse; +import com.nanri.aiimage.common.util.DownloadHeaderUtil; import com.nanri.aiimage.modules.shopkey.model.dto.QueryAsinCountryUpdateRequest; import com.nanri.aiimage.modules.shopkey.model.dto.QueryAsinCreateRequest; import com.nanri.aiimage.modules.shopkey.model.vo.QueryAsinImportProgressVo; @@ -13,6 +14,9 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -24,12 +28,17 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + @RestController @RequiredArgsConstructor @RequestMapping("/api/admin/query-asins") @Tag(name = "查询 ASIN", description = "维护店铺按国家查询的 ASIN") public class QueryAsinController { + private static final DateTimeFormatter EXPORT_FILENAME_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss"); + private final QueryAsinService queryAsinService; @GetMapping @@ -52,6 +61,23 @@ public class QueryAsinController { Boolean.TRUE.equals(superAdmin))); } + @GetMapping("/export") + @Operation(summary = "导出查询 ASIN") + public ResponseEntity export( + @Parameter(description = "分组ID") @RequestParam(required = false) Long groupId, + @Parameter(description = "店铺名") @RequestParam(required = false) String shopName, + @Parameter(description = "ASIN") @RequestParam(required = false) String asin, + @Parameter(description = "当前操作人用户ID") @RequestParam(required = false) Long operatorId, + @Parameter(description = "是否超级管理员") @RequestParam(defaultValue = "false") Boolean superAdmin) { + byte[] bytes = queryAsinService.export(groupId, shopName, asin, operatorId, Boolean.TRUE.equals(superAdmin)); + String filename = "query-asin-" + LocalDateTime.now().format(EXPORT_FILENAME_FORMATTER) + ".xlsx"; + return ResponseEntity.ok() + .header(HttpHeaders.CONTENT_DISPOSITION, DownloadHeaderUtil.contentDisposition(filename)) + .contentType(MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) + .contentLength(bytes.length) + .body(bytes); + } + @PostMapping @Operation(summary = "新增或覆盖查询 ASIN") public ApiResponse create( diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/shopkey/service/QueryAsinService.java b/backend-java/src/main/java/com/nanri/aiimage/modules/shopkey/service/QueryAsinService.java index 8517d93..aa90cef 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/shopkey/service/QueryAsinService.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/shopkey/service/QueryAsinService.java @@ -16,12 +16,18 @@ import com.nanri.aiimage.modules.shopkey.model.vo.QueryAsinPageVo; import com.nanri.aiimage.modules.shopkey.model.vo.ShopManageGroupItemVo; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import java.io.ByteArrayOutputStream; import java.io.File; import java.nio.file.Files; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; @@ -41,6 +47,7 @@ public class QueryAsinService { private static final List SUPPORTED_COUNTRIES = List.of("DE", "UK", "FR", "IT", "ES"); private static final String KEY_SEPARATOR = Character.toString((char) 1); private static final String UTF8_BOM = String.valueOf((char) 0xFEFF); + private static final DateTimeFormatter EXPORT_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); private final QueryAsinMapper queryAsinMapper; private final ShopManageGroupService shopManageGroupService; @@ -52,32 +59,15 @@ public class QueryAsinService { Long operatorId, boolean superAdmin) { long safePage = Math.max(page, 1); long safePageSize = Math.min(Math.max(pageSize, 1), 100); - String safeShopName = normalizeBlank(shopName); - String safeAsin = normalizeBlank(asin); - Set accessibleGroupIds = superAdmin ? Set.of() : shopManageGroupService.listAccessibleGroupIds(operatorId, false); - - LambdaQueryWrapper query = new LambdaQueryWrapper() - .eq(groupId != null && groupId > 0, QueryAsinEntity::getGroupId, groupId) - .like(!safeShopName.isEmpty(), QueryAsinEntity::getShopName, safeShopName) - .and(!safeAsin.isEmpty(), wrapper -> wrapper - .like(QueryAsinEntity::getAsinDe, safeAsin) - .or().like(QueryAsinEntity::getAsinUk, safeAsin) - .or().like(QueryAsinEntity::getAsinFr, safeAsin) - .or().like(QueryAsinEntity::getAsinIt, safeAsin) - .or().like(QueryAsinEntity::getAsinEs, safeAsin)) - .orderByDesc(QueryAsinEntity::getId); - - if (!superAdmin) { - if (accessibleGroupIds.isEmpty()) { - query.eq(QueryAsinEntity::getId, -1L); - } else { - query.in(QueryAsinEntity::getGroupId, accessibleGroupIds); - } - } - - Long total = queryAsinMapper.selectCount(query); - List rows = queryAsinMapper - .selectList(query.last("LIMIT " + ((safePage - 1) * safePageSize) + ", " + safePageSize)); + Long total = countFilteredRows(groupId, shopName, asin, operatorId, superAdmin); + List rows = listFilteredRows( + groupId, + shopName, + asin, + operatorId, + superAdmin, + (safePage - 1) * safePageSize, + safePageSize); Map groupNameById = shopManageGroupService.buildGroupNameMap(rows.stream() .map(QueryAsinEntity::getGroupId) @@ -93,6 +83,110 @@ public class QueryAsinService { return vo; } + public byte[] export(Long groupId, String shopName, String asin, Long operatorId, boolean superAdmin) { + List rows = listFilteredRows(groupId, shopName, asin, operatorId, superAdmin, null, null); + Map groupNameById = shopManageGroupService.buildGroupNameMap(rows.stream() + .map(QueryAsinEntity::getGroupId) + .filter(id -> id != null && id > 0) + .distinct() + .toList()); + try (SXSSFWorkbook workbook = new SXSSFWorkbook(100); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { + Sheet sheet = workbook.createSheet("QueryAsin"); + writeExportHeader(sheet); + for (int index = 0; index < rows.size(); index++) { + writeExportRow(sheet, index + 1, rows.get(index), groupNameById.get(rows.get(index).getGroupId())); + } + applyExportColumnWidths(sheet); + workbook.write(outputStream); + workbook.dispose(); + return outputStream.toByteArray(); + } catch (Exception ex) { + throw new BusinessException("导出查询 ASIN 失败"); + } + } + + private Long countFilteredRows(Long groupId, String shopName, String asin, Long operatorId, boolean superAdmin) { + return queryAsinMapper.selectCount(buildFilterQuery(groupId, shopName, asin, operatorId, superAdmin)); + } + + private List listFilteredRows(Long groupId, String shopName, String asin, + Long operatorId, boolean superAdmin, + Long offset, Long limit) { + LambdaQueryWrapper query = buildFilterQuery(groupId, shopName, asin, operatorId, superAdmin); + if (offset != null && limit != null) { + query.last("LIMIT " + Math.max(0L, offset) + ", " + Math.max(1L, limit)); + } + return queryAsinMapper.selectList(query); + } + + private LambdaQueryWrapper buildFilterQuery(Long groupId, String shopName, String asin, + Long operatorId, boolean superAdmin) { + String safeShopName = normalizeBlank(shopName); + String safeAsin = normalizeBlank(asin); + Set accessibleGroupIds = superAdmin ? Set.of() : shopManageGroupService.listAccessibleGroupIds(operatorId, false); + LambdaQueryWrapper query = new LambdaQueryWrapper() + .eq(groupId != null && groupId > 0, QueryAsinEntity::getGroupId, groupId) + .like(!safeShopName.isEmpty(), QueryAsinEntity::getShopName, safeShopName) + .and(!safeAsin.isEmpty(), wrapper -> wrapper + .like(QueryAsinEntity::getAsinDe, safeAsin) + .or().like(QueryAsinEntity::getAsinUk, safeAsin) + .or().like(QueryAsinEntity::getAsinFr, safeAsin) + .or().like(QueryAsinEntity::getAsinIt, safeAsin) + .or().like(QueryAsinEntity::getAsinEs, safeAsin)) + .orderByDesc(QueryAsinEntity::getId); + if (!superAdmin) { + if (accessibleGroupIds.isEmpty()) { + query.eq(QueryAsinEntity::getId, -1L); + } else { + query.in(QueryAsinEntity::getGroupId, accessibleGroupIds); + } + } + return query; + } + + private void writeExportHeader(Sheet sheet) { + Row header = sheet.createRow(0); + String[] headers = { + "序号", "分组", "店铺名", + "德国ASIN", "英国ASIN", "法国ASIN", "意大利ASIN", "西班牙ASIN", + "创建时间", "更新时间" + }; + for (int i = 0; i < headers.length; i++) { + header.createCell(i).setCellValue(headers[i]); + } + } + + private void writeExportRow(Sheet sheet, int rowNo, QueryAsinEntity entity, String groupName) { + Row row = sheet.createRow(rowNo); + int col = 0; + row.createCell(col++).setCellValue(rowNo); + row.createCell(col++).setCellValue(blankToEmpty(groupName)); + row.createCell(col++).setCellValue(blankToEmpty(entity.getShopName())); + row.createCell(col++).setCellValue(blankToEmpty(entity.getAsinDe())); + row.createCell(col++).setCellValue(blankToEmpty(entity.getAsinUk())); + row.createCell(col++).setCellValue(blankToEmpty(entity.getAsinFr())); + row.createCell(col++).setCellValue(blankToEmpty(entity.getAsinIt())); + row.createCell(col++).setCellValue(blankToEmpty(entity.getAsinEs())); + row.createCell(col++).setCellValue(formatExportTime(entity.getCreatedAt())); + row.createCell(col).setCellValue(formatExportTime(entity.getUpdatedAt())); + } + + private void applyExportColumnWidths(Sheet sheet) { + int[] widths = { + 2800, 5200, 5200, + 4600, 4600, 4600, 4600, 4600, + 5200, 5200 + }; + for (int i = 0; i < widths.length; i++) { + sheet.setColumnWidth(i, widths[i]); + } + } + + private String formatExportTime(LocalDateTime value) { + return value == null ? "" : value.format(EXPORT_TIME_FORMATTER); + } + @Transactional public QueryAsinItemVo createOrUpdate(QueryAsinCreateRequest request, Long operatorId, boolean superAdmin) { ShopManageGroupEntity group = shopManageGroupService.getAccessibleById(request.getGroupId(), operatorId, superAdmin); diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/similarasin/client/SimilarAsinCozeClient.java b/backend-java/src/main/java/com/nanri/aiimage/modules/similarasin/client/SimilarAsinCozeClient.java index 8ab612b..a468dcb 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/similarasin/client/SimilarAsinCozeClient.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/similarasin/client/SimilarAsinCozeClient.java @@ -3,6 +3,7 @@ package com.nanri.aiimage.modules.similarasin.client; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.nanri.aiimage.config.SimilarAsinProperties; +import com.nanri.aiimage.modules.coze.service.CozeCredentialPoolService; import com.nanri.aiimage.modules.similarasin.model.dto.SimilarAsinResultRowDto; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -19,22 +20,26 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.concurrent.atomic.AtomicLong; @Component @RequiredArgsConstructor @Slf4j public class SimilarAsinCozeClient { + private static final String MODULE_TYPE = "SIMILAR_ASIN"; private static final MediaType APPLICATION_JSON_UTF8 = new MediaType("application", "json", StandardCharsets.UTF_8); private final SimilarAsinProperties properties; private final ObjectMapper objectMapper; + private final CozeCredentialPoolService cozeCredentialPoolService; + private final AtomicLong credentialCursor = new AtomicLong(); public List inspect(List rows, String prompt, String apiKey) { if (rows == null || rows.isEmpty()) { return List.of(); } - if (properties.getCozeToken() == null || properties.getCozeToken().isBlank()) { + if (!hasConfiguredCredential()) { log.warn("[similar-asin] coze token not configured, keep raw rows size={}", rows.size()); return rows.stream().map(this::copy).toList(); } @@ -48,17 +53,31 @@ public class SimilarAsinCozeClient { } public CozeSubmitResponse submitWorkflow(List rows, String prompt, String apiKey) throws Exception { - JsonNode submitRoot = objectMapper.readTree(postWorkflow(rows, prompt, apiKey)); + return submitWorkflow(rows, prompt, apiKey, nextCredential()); + } + + public CozeSubmitResponse submitWorkflow(List rows, + String prompt, + String apiKey, + CozeCredentialRef credential) throws Exception { + CozeCredentialRef resolvedCredential = resolveCredential(credential); + JsonNode submitRoot = objectMapper.readTree(postWorkflow(rows, prompt, apiKey, resolvedCredential)); ensureSuccess(submitRoot); return new CozeSubmitResponse( extractExecuteId(submitRoot), extractResultDataText(submitRoot), - writeJson(submitRoot) + writeJson(submitRoot), + resolvedCredential.name() ); } public CozePollResponse pollWorkflow(String executeId) throws Exception { - JsonNode pollRoot = objectMapper.readTree(getWorkflowHistory(executeId)); + return pollWorkflow(executeId, null); + } + + public CozePollResponse pollWorkflow(String executeId, CozeCredentialRef credential) throws Exception { + CozeCredentialRef resolvedCredential = resolveCredential(credential); + JsonNode pollRoot = objectMapper.readTree(getWorkflowHistory(executeId, resolvedCredential)); ensureSuccess(pollRoot); String status = normalize(resolveWorkflowStatus(pollRoot)).toUpperCase(Locale.ROOT); String dataText = extractResultDataText(pollRoot); @@ -66,7 +85,8 @@ public class SimilarAsinCozeClient { String failureMessage = isFailedWorkflowStatus(status) ? firstNonBlank(resolveFailureMessage(pollRoot), "Coze async workflow failed") : ""; - return new CozePollResponse(executeId, status, dataText, outputText, failureMessage, writeJson(pollRoot)); + return new CozePollResponse(executeId, status, dataText, outputText, failureMessage, writeJson(pollRoot), + resolvedCredential.name()); } public List mergeRowsFromDataText(List rows, String dataText) throws Exception { @@ -161,7 +181,8 @@ public class SimilarAsinCozeClient { } private String runWorkflowAsyncAndWait(List rows, String prompt, String apiKey) throws Exception { - JsonNode submitRoot = objectMapper.readTree(postWorkflow(rows, prompt, apiKey)); + CozeCredentialRef credential = nextCredential(); + JsonNode submitRoot = objectMapper.readTree(postWorkflow(rows, prompt, apiKey, credential)); ensureSuccess(submitRoot); String immediateData = extractResultDataText(submitRoot); @@ -177,7 +198,7 @@ public class SimilarAsinCozeClient { long deadline = System.currentTimeMillis() + Math.max(10000, properties.getCozePollTimeoutMillis()); while (System.currentTimeMillis() < deadline) { ensureNotInterrupted(); - JsonNode pollRoot = objectMapper.readTree(getWorkflowHistory(executeId)); + JsonNode pollRoot = objectMapper.readTree(getWorkflowHistory(executeId, credential)); ensureSuccess(pollRoot); String dataText = extractResultDataText(pollRoot); @@ -202,23 +223,27 @@ public class SimilarAsinCozeClient { throw new IllegalStateException("Coze async workflow poll timeout"); } - private String postWorkflow(List rows, String prompt, String apiKey) { + private String postWorkflow(List rows, + String prompt, + String apiKey, + CozeCredentialRef credential) { Map parameters = buildParameters(rows, prompt, apiKey); Map body = new LinkedHashMap<>(); - body.put("workflow_id", properties.getCozeWorkflowId()); + body.put("workflow_id", credential.workflowId()); body.put("parameters", parameters); if (apiKey != null && !apiKey.isBlank()) { body.put("api_key", apiKey.trim()); } body.put("is_async", Boolean.TRUE); - log.info("[similar-asin] coze request url={} body={}", + log.info("[similar-asin] coze request credential={} url={} body={}", + credential.name(), joinUrl(properties.getCozeBaseUrl(), properties.getCozeWorkflowPath()), writeJson(maskCozeRequestBody(body))); RestClient.RequestBodySpec request = restClient().post() .uri(joinUrl(properties.getCozeBaseUrl(), properties.getCozeWorkflowPath())) .headers(headers -> { - headers.setBearerAuth(stripBearer(properties.getCozeToken())); + headers.setBearerAuth(stripBearer(credential.token())); headers.setContentType(APPLICATION_JSON_UTF8); headers.set(HttpHeaders.ACCEPT_CHARSET, StandardCharsets.UTF_8.name()); }); @@ -233,28 +258,98 @@ public class SimilarAsinCozeClient { }); } - private String getWorkflowHistory(String executeId) { + private String getWorkflowHistory(String executeId, CozeCredentialRef credential) { String path = properties.getCozeWorkflowHistoryPath() - .replace("{workflow_id}", properties.getCozeWorkflowId()) + .replace("{workflow_id}", credential.workflowId()) .replace("{execute_id}", executeId); return restClient().get() .uri(joinUrl(properties.getCozeBaseUrl(), path)) .headers(headers -> { - headers.setBearerAuth(stripBearer(properties.getCozeToken())); + headers.setBearerAuth(stripBearer(credential.token())); headers.setContentType(APPLICATION_JSON_UTF8); headers.set(HttpHeaders.ACCEPT_CHARSET, StandardCharsets.UTF_8.name()); }) .exchange((clientRequest, clientResponse) -> { byte[] responseBytes = StreamUtils.copyToByteArray(clientResponse.getBody()); String responseText = responseBytes.length == 0 ? "" : new String(responseBytes, StandardCharsets.UTF_8); - log.info("[similar-asin] coze history response executeId={} status={} body={}", - executeId, + log.info("[similar-asin] coze history response credential={} executeId={} status={} body={}", + credential.name(), executeId, clientResponse.getStatusCode(), responseText); return responseText; }); } + public CozeCredentialRef nextCredential() { + List pooledCredentials = cozeCredentialPoolService.listEnabled(MODULE_TYPE); + CozeCredentialPoolService.CozeCredential pooledCredential = + cozeCredentialPoolService.chooseRoundRobin(MODULE_TYPE, pooledCredentials, properties.getCozeCredentialStripeSize()); + if (pooledCredential != null) { + return new CozeCredentialRef(pooledCredential.name(), pooledCredential.workflowId(), pooledCredential.token(), + pooledCredential.maxConcurrent()); + } + List credentials = configuredCredentials(); + int stripeSize = Math.max(1, properties.getCozeCredentialStripeSize()); + long cursor = Math.max(0L, credentialCursor.getAndIncrement()); + int index = (int) ((cursor / stripeSize) % credentials.size()); + return credentials.get(index); + } + + public CozeCredentialRef credentialByName(String name) { + if (name == null || name.isBlank()) { + return nextCredential(); + } + String normalizedName = normalize(name); + for (CozeCredentialRef credential : configuredCredentials()) { + if (normalize(credential.name()).equals(normalizedName)) { + return credential; + } + } + return nextCredential(); + } + + public boolean hasConfiguredCredential() { + return !configuredCredentials().isEmpty(); + } + + public int configuredCredentialCount() { + return configuredCredentials().size(); + } + + private CozeCredentialRef resolveCredential(CozeCredentialRef credential) { + return credential == null ? nextCredential() : credential; + } + + private List configuredCredentials() { + List credentials = new ArrayList<>(); + for (CozeCredentialPoolService.CozeCredential credential : cozeCredentialPoolService.listEnabled(MODULE_TYPE)) { + credentials.add(new CozeCredentialRef(credential.name(), credential.workflowId(), credential.token(), + credential.maxConcurrent())); + } + if (!credentials.isEmpty()) { + return credentials; + } + if (properties.getCozeCredentials() != null) { + int index = 1; + for (SimilarAsinProperties.CozeCredential credential : properties.getCozeCredentials()) { + if (credential == null + || normalize(credential.getWorkflowId()).isBlank() + || normalize(credential.getToken()).isBlank()) { + continue; + } + String name = firstNonBlank(credential.getName(), "credential-" + index); + credentials.add(new CozeCredentialRef(name, credential.getWorkflowId(), credential.getToken(), Integer.MAX_VALUE)); + index++; + } + } + if (credentials.isEmpty() + && properties.getCozeWorkflowId() != null && !properties.getCozeWorkflowId().isBlank() + && properties.getCozeToken() != null && !properties.getCozeToken().isBlank()) { + credentials.add(new CozeCredentialRef("default", properties.getCozeWorkflowId(), properties.getCozeToken(), Integer.MAX_VALUE)); + } + return credentials; + } + private Map buildParameters(List rows, String prompt, String apiKey) { List asins = rows.stream().map(row -> nonBlank(row.getAsin(), "")).toList(); List skus = rows.stream().map(row -> nonBlank(row.getSku(), "")).toList(); @@ -1045,7 +1140,8 @@ public class SimilarAsinCozeClient { public record CozeSubmitResponse( String executeId, String immediateData, - String rawResponse + String rawResponse, + String credentialName ) { } @@ -1055,7 +1151,8 @@ public class SimilarAsinCozeClient { String dataText, String outputText, String failureMessage, - String rawResponse + String rawResponse, + String credentialName ) { public boolean hasPayload() { return dataText != null && !dataText.isBlank() || outputText != null && !outputText.isBlank(); @@ -1081,6 +1178,14 @@ public class SimilarAsinCozeClient { } } + public record CozeCredentialRef( + String name, + String workflowId, + String token, + int maxConcurrent + ) { + } + private static final class PartialCozeResultException extends RuntimeException { private final int resolvedCount; diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/similarasin/service/SimilarAsinTaskService.java b/backend-java/src/main/java/com/nanri/aiimage/modules/similarasin/service/SimilarAsinTaskService.java index 26d9ef9..8e31a87 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/similarasin/service/SimilarAsinTaskService.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/similarasin/service/SimilarAsinTaskService.java @@ -11,6 +11,7 @@ import com.nanri.aiimage.common.service.DistributedJobLockService; import com.nanri.aiimage.config.InstanceMetadata; import com.nanri.aiimage.config.SimilarAsinProperties; import com.nanri.aiimage.config.StorageProperties; +import com.nanri.aiimage.modules.coze.service.CozeCredentialPoolService; import com.nanri.aiimage.modules.similarasin.mapper.SimilarAsinFilterConditionMapper; import com.nanri.aiimage.modules.similarasin.client.SimilarAsinCozeClient; import com.nanri.aiimage.modules.similarasin.model.dto.SimilarAsinFilterConditionAddRequest; @@ -72,6 +73,7 @@ import org.springframework.transaction.support.TransactionTemplate; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.IOException; import java.time.Duration; import java.time.Instant; import java.time.LocalDateTime; @@ -86,6 +88,8 @@ import java.util.Objects; import java.util.Set; import java.util.UUID; import java.util.function.Supplier; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; @Service @RequiredArgsConstructor @@ -102,12 +106,13 @@ public class SimilarAsinTaskService { private static final String COZE_STATUS_DONE = "DONE"; private static final String COZE_STATUS_FAILED = "FAILED"; private static final String CONTENT_TYPE_XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + private static final String CONTENT_TYPE_ZIP = "application/zip"; private static final int RESULT_ROWS_READ_RETRY_LIMIT = 3; private static final long RESULT_ROWS_READ_RETRY_DELAY_MS = 500L; private static final Duration TASK_LOCK_TTL = Duration.ofMinutes(5); private static final long TASK_LOCK_WAIT_MILLIS = 10000L; private static final Duration COZE_SUBMIT_LOCK_TTL = Duration.ofMinutes(2); - private static final long COZE_SUBMIT_LOCK_WAIT_MILLIS = 180000L; + private static final long COZE_SUBMIT_LOCK_WAIT_MILLIS = 1000L; private static final long COZE_SUBMIT_LOCK_RETRY_DELAY_MILLIS = 500L; private static final long COZE_SUBMIT_MIN_INTERVAL_MILLIS = 30000L; private static final int MAX_COZE_SUBMIT_RETRY_COUNT = 5; @@ -122,7 +127,7 @@ public class SimilarAsinTaskService { "是否符合类目", "不符合理由", "产品类目", - "status" + "状态" ); private final LocalFileStorageService localFileStorageService; @@ -144,6 +149,7 @@ public class SimilarAsinTaskService { private final PlatformTransactionManager transactionManager; private final DistributedJobLockService distributedJobLockService; private final InstanceMetadata instanceMetadata; + private final CozeCredentialPoolService cozeCredentialPoolService; @Autowired @Qualifier("cozeTaskExecutor") private TaskExecutor cozeTaskExecutor; @@ -821,7 +827,7 @@ public class SimilarAsinTaskService { touchJavaSideTaskActivity(task.getId()); } else if (isResultSubmissionComplete(task.getId())) { maybeFinalizeCozeJobLocked(task.getId(), new CozeBatchContext( - job.getId(), result.getId(), context.scopeHash(), context.chunkIndex(), 1, 1, currentInstanceId(), 0)); + job.getId(), result.getId(), context.scopeHash(), context.chunkIndex(), 1, 1, currentInstanceId(), 0, null)); } } @@ -1431,12 +1437,7 @@ public class SimilarAsinTaskService { return; } try (lockHandle) { - List states = taskScopeStateMapper.selectList(new LambdaQueryWrapper() - .eq(TaskScopeStateEntity::getModuleType, MODULE_TYPE) - .in(TaskScopeStateEntity::getCozeStatus, List.of(COZE_STATUS_SUBMITTED, COZE_STATUS_RUNNING)) - .isNotNull(TaskScopeStateEntity::getCozeExecuteId) - .orderByAsc(TaskScopeStateEntity::getUpdatedAt) - .last("limit 50")); + List states = listOwnedPendingCozeStates(); if (states == null || states.isEmpty()) { return; } @@ -1458,7 +1459,7 @@ public class SimilarAsinTaskService { if (chunks == null || chunks.isEmpty()) { return countPendingCozeStates(task.getId()) > 0; } - if (properties.getCozeToken() == null || properties.getCozeToken().isBlank()) { + if (!cozeClient.hasConfiguredCredential()) { log.warn("[similar-asin] coze token not configured, skip async coze taskId={} jobId={}", task.getId(), job.getId()); return false; @@ -1512,8 +1513,10 @@ public class SimilarAsinTaskService { return COZE_STATUS_SUBMITTED.equals(existing.getCozeStatus()) || COZE_STATUS_RUNNING.equals(existing.getCozeStatus()); } + SimilarAsinCozeClient.CozeCredentialRef credential = cozeClient.nextCredential(); try { - SimilarAsinCozeClient.CozeSubmitResponse submit = submitCozeWorkflowThrottled(batchRows, prompt, apiKey); + SimilarAsinCozeClient.CozeSubmitResponse submit = submitCozeWorkflowThrottled( + batchRows, prompt, apiKey, credential, true); if (submit.immediateData() != null && !submit.immediateData().isBlank()) { List cozeRows = cozeClient.mergeRowsFromDataText(batchRows, submit.immediateData()); String emptyResultMessage = emptyCozeResultMessage(cozeRows, batchRows.size()); @@ -1532,14 +1535,22 @@ public class SimilarAsinTaskService { return false; } saveCozeBatchState(task, result, job, chunk, batchRows, batchScopeKey, batchScopeHash, - batchIndex, batchTotal, submit.executeId()); - log.info("[similar-asin] coze async submitted taskId={} jobId={} chunk={} batch={}/{} executeId={}", - task.getId(), job.getId(), chunk.getChunkIndex(), batchIndex, batchTotal, submit.executeId()); + batchIndex, batchTotal, submit.executeId(), submit.credentialName()); + log.info("[similar-asin] coze async submitted taskId={} jobId={} chunk={} batch={}/{} credential={} executeId={}", + task.getId(), job.getId(), chunk.getChunkIndex(), batchIndex, batchTotal, + submit.credentialName(), submit.executeId()); return true; } catch (Exception ex) { String message = firstNonBlank(ex.getMessage(), "Coze submit failed"); log.warn("[similar-asin] coze async submit failed taskId={} jobId={} chunk={} batch={}/{} err={}", task.getId(), job.getId(), chunk.getChunkIndex(), batchIndex, batchTotal, message); + if (isCozeThrottleLockTimeout(message)) { + savePendingCozeBatchState(task, result, job, chunk, batchRows, batchScopeKey, batchScopeHash, + batchIndex, batchTotal, message, credential.name()); + taskFileJobService.touchRunning(job.getId()); + touchJavaSideTaskActivity(task.getId()); + return true; + } mergeCozeRowsIntoChunk(task, chunk.getScopeHash(), chunk.getChunkIndex(), @@ -1549,6 +1560,65 @@ public class SimilarAsinTaskService { } } + private boolean isCozeThrottleLockTimeout(String message) { + return normalize(message).toLowerCase(Locale.ROOT).contains("coze submit throttle lock timeout"); + } + + private void savePendingCozeBatchState(FileTaskEntity task, + FileResultEntity result, + TaskFileJobEntity job, + TaskChunkEntity chunk, + List batchRows, + String batchScopeKey, + String batchScopeHash, + int batchIndex, + int batchTotal, + String pendingReason, + String credentialName) { + LocalDateTime now = LocalDateTime.now(); + CozeBatchContext context = new CozeBatchContext( + job.getId(), + result.getId(), + chunk.getScopeHash(), + chunk.getChunkIndex(), + batchIndex, + batchTotal, + currentInstanceId(), + 0, + credentialName + ); + String batchPayload = writeJson(batchRows, "serialize pending coze batch payload failed"); + String storedBatchPayload = transientPayloadStorageService.storeParsedPayloadFast( + MODULE_TYPE, task.getId(), batchScopeHash, batchPayload, true); + TaskScopeStateEntity state = new TaskScopeStateEntity(); + state.setTaskId(task.getId()); + state.setModuleType(MODULE_TYPE); + state.setScopeKey(batchScopeKey); + state.setScopeHash(batchScopeHash); + state.setParsedPayloadJson(storedBatchPayload); + state.setStateJson(writeJson(context, "serialize pending coze batch context failed")); + state.setCozeStatus(COZE_STATUS_RUNNING); + state.setCozeSubmittedAt(now); + state.setCozeLastPolledAt(null); + state.setCozeAttemptCount(0); + state.setCozeError(firstNonBlank(pendingReason, "Coze submit queued by throttle")); + state.setChunkTotal(batchTotal); + state.setReceivedChunkCount(batchIndex); + state.setCompleted(0); + state.setCreatedAt(now); + state.setUpdatedAt(now); + try { + taskScopeStateMapper.insert(state); + touchJavaSideTaskActivity(task.getId()); + log.info("[similar-asin] coze async submit queued by throttle taskId={} jobId={} chunk={} rows={} batch={}/{}", + task.getId(), job.getId(), chunk.getChunkIndex(), batchRows.size(), batchIndex, batchTotal); + } catch (DuplicateKeyException ex) { + transientPayloadStorageService.deletePayloadIfPresent(storedBatchPayload); + log.info("[similar-asin] duplicate pending coze batch state ignored taskId={} scope={}", + task.getId(), batchScopeKey); + } + } + private void saveCozeBatchState(FileTaskEntity task, FileResultEntity result, TaskFileJobEntity job, @@ -1558,7 +1628,8 @@ public class SimilarAsinTaskService { String batchScopeHash, int batchIndex, int batchTotal, - String executeId) { + String executeId, + String credentialName) { LocalDateTime now = LocalDateTime.now(); CozeBatchContext context = new CozeBatchContext( job.getId(), @@ -1568,7 +1639,8 @@ public class SimilarAsinTaskService { batchIndex, batchTotal, currentInstanceId(), - 0 + 0, + credentialName ); String batchPayload = writeJson(batchRows, "serialize coze batch payload failed"); String storedBatchPayload = transientPayloadStorageService.storeParsedPayloadFast( @@ -1602,6 +1674,10 @@ public class SimilarAsinTaskService { private void pollPendingCozeState(Long stateId) { TaskScopeStateEntity lockState = taskScopeStateMapper.selectById(stateId); if (lockState == null || lockState.getCozeExecuteId() == null || lockState.getCozeExecuteId().isBlank()) { + if (lockState != null && lockState.getCozeExecuteId() == null + && (COZE_STATUS_SUBMITTED.equals(lockState.getCozeStatus()) || COZE_STATUS_RUNNING.equals(lockState.getCozeStatus()))) { + retryPendingCozeSubmitState(lockState); + } return; } if (!isCozeStateOwnedByCurrentInstance(lockState)) { @@ -1621,6 +1697,10 @@ public class SimilarAsinTaskService { private void pollPendingCozeStateLocked(Long stateId) { TaskScopeStateEntity state = taskScopeStateMapper.selectById(stateId); if (state == null || state.getCozeExecuteId() == null || state.getCozeExecuteId().isBlank()) { + if (state != null && state.getCozeExecuteId() == null + && (COZE_STATUS_SUBMITTED.equals(state.getCozeStatus()) || COZE_STATUS_RUNNING.equals(state.getCozeStatus()))) { + retryPendingCozeSubmitState(state); + } return; } if (!(COZE_STATUS_SUBMITTED.equals(state.getCozeStatus()) || COZE_STATUS_RUNNING.equals(state.getCozeStatus()))) { @@ -1644,7 +1724,9 @@ public class SimilarAsinTaskService { } taskFileJobService.touchRunning(context.jobId()); try { - SimilarAsinCozeClient.CozePollResponse poll = cozeClient.pollWorkflow(state.getCozeExecuteId()); + SimilarAsinCozeClient.CozePollResponse poll = cozeClient.pollWorkflow( + state.getCozeExecuteId(), + cozeClient.credentialByName(context.credentialName())); if (!poll.hasPayload() && !poll.isFinished() && !isCozeStateTimedOut(state)) { updateCozeStateRunning(state, null); return; @@ -1725,7 +1807,8 @@ public class SimilarAsinTaskService { } try { SimilarAsinCozeClient.CozeSubmitResponse submit = - submitCozeWorkflowThrottled(batchRows, readAiPrompt(task), readApiKey(task)); + submitCozeWorkflowThrottled(batchRows, readAiPrompt(task), readApiKey(task), + cozeClient.credentialByName(context.credentialName()), false); Map> allRowsByBaseId = loadAllRowsByBaseId(task); if (submit.immediateData() != null && !submit.immediateData().isBlank()) { List cozeRows = @@ -1774,23 +1857,54 @@ public class SimilarAsinTaskService { private SimilarAsinCozeClient.CozeSubmitResponse submitCozeWorkflowThrottled( List rows, String prompt, - String apiKey) throws Exception { - DistributedJobLockService.LockHandle lockHandle = acquireCozeSubmitLock(); - if (lockHandle == null) { - throw new IllegalStateException("Coze submit throttle lock timeout"); - } - try (lockHandle) { - SimilarAsinCozeClient.CozeSubmitResponse response = cozeClient.submitWorkflow(rows, prompt, apiKey); - sleepQuietly(COZE_SUBMIT_MIN_INTERVAL_MILLIS); - return response; + String apiKey, + SimilarAsinCozeClient.CozeCredentialRef credential, + boolean allowCredentialFallback) throws Exception { + int attempts = allowCredentialFallback ? Math.max(1, cozeClient.configuredCredentialCount()) : 1; + SimilarAsinCozeClient.CozeCredentialRef currentCredential = + credential == null ? cozeClient.nextCredential() : credential; + Exception lastFailure = null; + for (int i = 0; i < attempts; i++) { + DistributedJobLockService.LockHandle lockHandle = acquireCozeSubmitLock(currentCredential); + if (lockHandle == null) { + lastFailure = new IllegalStateException("Coze submit throttle lock timeout"); + currentCredential = cozeClient.nextCredential(); + continue; + } + CozeCredentialPoolService.BorrowedCredential borrowedCredential = + cozeCredentialPoolService.borrow(MODULE_TYPE, toPoolCredential(currentCredential)); + if (borrowedCredential == null) { + lockHandle.close(); + lastFailure = new IllegalStateException("Coze credential concurrency limit reached"); + currentCredential = cozeClient.nextCredential(); + continue; + } + try (lockHandle; borrowedCredential) { + return cozeClient.submitWorkflow(rows, prompt, apiKey, currentCredential); + } finally { + sleepQuietly(COZE_SUBMIT_MIN_INTERVAL_MILLIS); + } } + throw lastFailure == null ? new IllegalStateException("Coze submit failed") : lastFailure; } - private DistributedJobLockService.LockHandle acquireCozeSubmitLock() { + private CozeCredentialPoolService.CozeCredential toPoolCredential(SimilarAsinCozeClient.CozeCredentialRef credential) { + if (credential == null) { + return null; + } + return new CozeCredentialPoolService.CozeCredential( + credential.name(), + credential.workflowId(), + credential.token(), + credential.maxConcurrent()); + } + + private DistributedJobLockService.LockHandle acquireCozeSubmitLock(SimilarAsinCozeClient.CozeCredentialRef credential) { long deadline = System.currentTimeMillis() + COZE_SUBMIT_LOCK_WAIT_MILLIS; + String credentialName = credential == null ? "default" : firstNonBlank(credential.name(), "default"); while (System.currentTimeMillis() <= deadline) { DistributedJobLockService.LockHandle lockHandle = - distributedJobLockService.tryLock("similar-asin:coze-submit", COZE_SUBMIT_LOCK_TTL); + distributedJobLockService.tryLock("similar-asin:coze-submit:" + credentialName, COZE_SUBMIT_LOCK_TTL); if (lockHandle != null) { return lockHandle; } @@ -1836,14 +1950,16 @@ public class SimilarAsinTaskService { int partIndex = 1; for (List partRows : partitions) { SimilarAsinCozeClient.CozeSubmitResponse submit = - submitCozeWorkflowThrottled(partRows, readAiPrompt(task), readApiKey(task)); + submitCozeWorkflowThrottled(partRows, readAiPrompt(task), readApiKey(task), + cozeClient.credentialByName(context.credentialName()), false); if (submit.immediateData() != null && !submit.immediateData().isBlank()) { List cozeRows = cozeClient.mergeRowsFromDataText(partRows, submit.immediateData()); mergeCozeRowsIntoChunk(task, context.chunkScopeHash(), context.chunkIndex(), cozeRows, allRowsByBaseId); submittedAny = true; } else if (submit.executeId() != null && !submit.executeId().isBlank()) { - saveSplitRetryCozeBatchState(state, context, partRows, partIndex, partitions.size(), retryCount, submit.executeId()); + saveSplitRetryCozeBatchState(state, context, partRows, partIndex, partitions.size(), retryCount, + submit.executeId(), submit.credentialName()); submittedAny = true; } partIndex++; @@ -1871,7 +1987,8 @@ public class SimilarAsinTaskService { int partIndex, int partTotal, int retryCount, - String executeId) { + String executeId, + String credentialName) { String scopeKey = parent.getScopeKey() + ":split:" + retryCount + ":" + partIndex; String scopeHash = DigestUtil.sha256Hex(scopeKey); CozeBatchContext context = new CozeBatchContext( @@ -1882,7 +1999,8 @@ public class SimilarAsinTaskService { partIndex, partTotal, parentContext.ownerInstanceId(), - retryCount + retryCount, + firstNonBlank(credentialName, parentContext.credentialName()) ); LocalDateTime now = LocalDateTime.now(); String batchPayload = writeJson(batchRows, "serialize split coze batch payload failed"); @@ -1926,6 +2044,130 @@ public class SimilarAsinTaskService { || normalized.contains("\u8c03\u7528\u8d85\u65f6"); } + private void retryPendingCozeSubmitState(TaskScopeStateEntity state) { + if (state == null || state.getId() == null) { + return; + } + if (!tryClaimCozeStateForPoll(state)) { + log.info("[similar-asin] coze submit retry skipped by claim guard taskId={} stateId={} lastPolledAt={}", + state.getTaskId(), state.getId(), state.getCozeLastPolledAt()); + return; + } + CozeBatchContext context = readCozeBatchContext(state); + if (context == null || context.jobId() == null || context.resultId() == null) { + markCozeStateTerminal(state, COZE_STATUS_FAILED, "Coze pending submit context missing"); + return; + } + List batchRows = readCozeBatchRows(state); + if (batchRows.isEmpty()) { + markCozeStateTerminal(state, COZE_STATUS_FAILED, "Coze pending submit payload missing"); + maybeFinalizeCozeJobLocked(state.getTaskId(), context); + return; + } + FileTaskEntity task = fileTaskMapper.selectById(state.getTaskId()); + if (task == null || !MODULE_TYPE.equals(task.getModuleType())) { + markCozeStateTerminal(state, COZE_STATUS_FAILED, "Coze pending submit task missing"); + return; + } + TaskChunkEntity currentChunk = taskChunkMapper.selectOne(new LambdaQueryWrapper() + .eq(TaskChunkEntity::getTaskId, task.getId()) + .eq(TaskChunkEntity::getModuleType, MODULE_TYPE) + .eq(TaskChunkEntity::getScopeHash, context.chunkScopeHash()) + .eq(TaskChunkEntity::getChunkIndex, context.chunkIndex()) + .last("limit 1")); + Map currentRows = readChunkRows(currentChunk); + List currentBatchRows = batchRows.stream() + .map(row -> currentRows.get(rowKey(row))) + .filter(Objects::nonNull) + .toList(); + if (currentBatchRows.size() == batchRows.size() + && currentBatchRows.stream().allMatch(this::hasResolvedCozeFields)) { + markCozeStateTerminal(state, COZE_STATUS_DONE, "Coze rows already resolved by another batch"); + maybeFinalizeCozeJobLocked(state.getTaskId(), context); + log.info("[similar-asin] coze pending submit skipped because rows already resolved taskId={} stateId={} jobId={} rows={}", + state.getTaskId(), state.getId(), context.jobId(), batchRows.size()); + return; + } + try { + taskFileJobService.touchRunning(context.jobId()); + SimilarAsinCozeClient.CozeSubmitResponse submit = + submitCozeWorkflowThrottled(batchRows, readAiPrompt(task), readApiKey(task), + cozeClient.credentialByName(context.credentialName()), false); + Map> allRowsByBaseId = loadAllRowsByBaseId(task); + if (submit.immediateData() != null && !submit.immediateData().isBlank()) { + List cozeRows = + cozeClient.mergeRowsFromDataText(batchRows, submit.immediateData()); + String emptyResultMessage = emptyCozeResultMessage(cozeRows, batchRows.size()); + if (!emptyResultMessage.isBlank()) { + throw new IllegalStateException(emptyResultMessage); + } + mergeCozeRowsIntoChunk(task, context.chunkScopeHash(), context.chunkIndex(), cozeRows, allRowsByBaseId); + markCozeStateTerminal(state, COZE_STATUS_DONE, null); + maybeFinalizeCozeJobLocked(state.getTaskId(), context); + return; + } + if (submit.executeId() == null || submit.executeId().isBlank()) { + markCozeStateTerminal(state, COZE_STATUS_FAILED, "Coze async execute_id missing"); + mergeCozeRowsIntoChunk(task, + context.chunkScopeHash(), + context.chunkIndex(), + cozeClient.markRowsFailed(batchRows, "Coze async execute_id missing"), + allRowsByBaseId); + maybeFinalizeCozeJobLocked(state.getTaskId(), context); + return; + } + LocalDateTime now = LocalDateTime.now(); + taskScopeStateMapper.update(null, new LambdaUpdateWrapper() + .eq(TaskScopeStateEntity::getId, state.getId()) + .in(TaskScopeStateEntity::getCozeStatus, List.of(COZE_STATUS_SUBMITTED, COZE_STATUS_RUNNING)) + .set(TaskScopeStateEntity::getCozeExecuteId, submit.executeId()) + .set(TaskScopeStateEntity::getCozeStatus, COZE_STATUS_SUBMITTED) + .set(TaskScopeStateEntity::getCozeSubmittedAt, now) + .set(TaskScopeStateEntity::getCozeLastPolledAt, null) + .set(TaskScopeStateEntity::getCozeError, null) + .set(TaskScopeStateEntity::getUpdatedAt, now)); + touchJavaSideTaskActivity(state.getTaskId()); + log.info("[similar-asin] coze pending submit retried taskId={} stateId={} jobId={} rows={} executeId={}", + state.getTaskId(), state.getId(), context.jobId(), batchRows.size(), submit.executeId()); + } catch (Exception ex) { + String message = firstNonBlank(ex.getMessage(), "Coze pending submit retry failed"); + log.warn("[similar-asin] coze pending submit retry failed taskId={} stateId={} jobId={} rows={} err={}", + state.getTaskId(), state.getId(), context.jobId(), batchRows.size(), message); + if (isCozeThrottleLockTimeout(message)) { + keepPendingCozeSubmitState(state, message); + return; + } + int nextAttemptCount = cozeAttemptCount(state) + 1; + if (nextAttemptCount >= MAX_COZE_SUBMIT_RETRY_COUNT) { + Map> allRowsByBaseId = loadAllRowsByBaseId(task); + String finalMessage = message + " after " + nextAttemptCount + " submit attempts"; + mergeCozeRowsIntoChunk(task, + context.chunkScopeHash(), + context.chunkIndex(), + cozeClient.markRowsFailed(batchRows, finalMessage), + allRowsByBaseId); + markCozeStateTerminal(state, COZE_STATUS_FAILED, finalMessage); + maybeFinalizeCozeJobLocked(state.getTaskId(), context); + return; + } + updateCozeStateRunning(state, message); + } + } + + private void keepPendingCozeSubmitState(TaskScopeStateEntity state, String error) { + int updated = taskScopeStateMapper.update(null, new LambdaUpdateWrapper() + .eq(TaskScopeStateEntity::getId, state.getId()) + .in(TaskScopeStateEntity::getCozeStatus, List.of(COZE_STATUS_SUBMITTED, COZE_STATUS_RUNNING)) + .set(TaskScopeStateEntity::getCozeStatus, COZE_STATUS_RUNNING) + .set(TaskScopeStateEntity::getCozeExecuteId, null) + .set(TaskScopeStateEntity::getCozeLastPolledAt, LocalDateTime.now()) + .set(TaskScopeStateEntity::getCozeError, error) + .set(TaskScopeStateEntity::getUpdatedAt, LocalDateTime.now())); + if (updated > 0) { + touchJavaSideTaskActivity(state.getTaskId()); + } + } + private boolean isRetryableCozeFailure(String failureMessage) { String normalized = normalize(failureMessage).toLowerCase(Locale.ROOT); return normalized.contains("rate limit") @@ -2173,7 +2415,8 @@ public class SimilarAsinTaskService { context.batchIndex(), context.batchTotal(), context.ownerInstanceId(), - submitRetryCount + submitRetryCount, + context.credentialName() ); } @@ -2338,6 +2581,12 @@ public class SimilarAsinTaskService { } int safeTotal = Math.max(1, total); int safeCompleted = Math.max(0, Math.min(completed, safeTotal)); + TaskProgressSnapshotEntity existing = taskProgressSnapshotService.find(task.getId(), MODULE_TYPE); + int displayPercent = calculateDisplayProgressPercent(safeCompleted, safeTotal, job, LocalDateTime.now()); + int previousDisplayPercent = calculateSnapshotDisplayPercent(existing, job); + if (previousDisplayPercent > displayPercent && safeCompleted < safeTotal) { + displayPercent = previousDisplayPercent; + } taskProgressSnapshotService.save( task.getId(), MODULE_TYPE, @@ -2347,10 +2596,57 @@ public class SimilarAsinTaskService { 0, job.getScopeKey(), message, - Map.of("phase", "RESULT_FILE", "jobId", job.getId()) + Map.of("phase", "RESULT_FILE", "jobId", job.getId(), "displayPercent", displayPercent) ); } + private int calculateDisplayProgressPercent(int current, + int total, + TaskFileJobEntity job, + LocalDateTime baseTime) { + if (total <= 0) { + return 0; + } + current = Math.max(0, Math.min(current, total)); + int percent = Math.max(1, Math.min(99, (int) Math.floor(current * 100.0 / total))); + if (job != null && STATUS_RUNNING.equals(job.getStatus())) { + long elapsedSeconds = baseTime == null ? 0 : Math.max(0, Duration.between(baseTime, LocalDateTime.now()).getSeconds()); + if (current <= 0) { + int firstRealProgressPercent = Math.max(1, Math.min(99, (int) Math.floor(100.0 / total))); + int waitingCap = Math.max(8, Math.min(35, firstRealProgressPercent - 1)); + percent = Math.max(percent, Math.min(waitingCap, 8 + (int) (elapsedSeconds / 6))); + } else if (current < total) { + percent = Math.max(percent, Math.min(92, percent + (int) (elapsedSeconds / 10))); + } + } + return percent; + } + + private int calculateSnapshotDisplayPercent(TaskProgressSnapshotEntity snapshot, TaskFileJobEntity job) { + if (snapshot == null) { + return 0; + } + int total = snapshot.getTotalCount() == null ? 0 : snapshot.getTotalCount(); + int current = snapshot.getSuccessCount() == null ? 0 : snapshot.getSuccessCount(); + int percent = total <= 0 ? 0 : calculateDisplayProgressPercent(current, total, job, snapshot.getUpdatedAt()); + return Math.max(percent, extractSnapshotDisplayPercent(snapshot)); + } + + private int extractSnapshotDisplayPercent(TaskProgressSnapshotEntity snapshot) { + if (snapshot == null || snapshot.getSnapshotJson() == null || snapshot.getSnapshotJson().isBlank()) { + return 0; + } + try { + JsonNode displayPercent = objectMapper.readTree(snapshot.getSnapshotJson()).path("displayPercent"); + if (!displayPercent.isNumber()) { + return 0; + } + return Math.max(0, Math.min(100, displayPercent.asInt())); + } catch (Exception ignored) { + return 0; + } + } + public void cleanupResultFileJob(TaskFileJobEntity job) { if (job == null || job.getTaskId() == null) { return; @@ -2379,28 +2675,195 @@ public class SimilarAsinTaskService { if (!outputDir.exists() && !outputDir.mkdirs()) { throw new BusinessException("创建结果目录失败"); } - String filename = safeFileStem(result.getSourceFilename()) + "-result.xlsx"; - String tempFilename = safeFileStem(result.getSourceFilename()) - + "-" + task.getId() - + "-" + result.getId() - + "-" + UUID.randomUUID() - + "-result.xlsx"; - File xlsx = new File(outputDir, tempFilename); + List sourceRows = splitRowsBySourceFile(parsed, parsed.getAllItems(), result.getSourceFilename()); + List workbooks = new ArrayList<>(); + File zip = null; try { - writeResultWorkbook(xlsx, parsed, resultMap); - String objectKey = ossStorageService.uploadResultFile(xlsx, MODULE_TYPE); + for (SourceRows item : sourceRows) { + String filename = safeFileStem(item.sourceFilename()) + "-result.xlsx"; + String tempFilename = safeFileStem(item.sourceFilename()) + + "-" + task.getId() + + "-" + result.getId() + + "-" + UUID.randomUUID() + + "-result.xlsx"; + File xlsx = new File(outputDir, tempFilename); + writeResultWorkbook(xlsx, item.rows(), resultMap); + workbooks.add(new SourceResultWorkbook(xlsx, filename, item.rows().size())); + } + if (workbooks.isEmpty()) { + throw new BusinessException("相似ASIN检测结果为空,请稍后重试生成结果文件"); + } + + File uploadFile; + String filename; + String contentType; + if (workbooks.size() == 1) { + SourceResultWorkbook workbook = workbooks.get(0); + uploadFile = workbook.file(); + filename = workbook.filename(); + contentType = CONTENT_TYPE_XLSX; + } else { + filename = safeFileStem(result.getSourceFilename()) + "-result.zip"; + String tempFilename = safeFileStem(result.getSourceFilename()) + + "-" + task.getId() + + "-" + result.getId() + + "-" + UUID.randomUUID() + + "-result.zip"; + zip = new File(outputDir, tempFilename); + packageResultWorkbooksAsZip(zip, workbooks); + uploadFile = zip; + contentType = CONTENT_TYPE_ZIP; + } + + String objectKey = ossStorageService.uploadResultFile(uploadFile, MODULE_TYPE); result.setResultFilename(filename); result.setResultFileUrl(objectKey); - result.setResultFileSize(xlsx.length()); - result.setResultContentType(CONTENT_TYPE_XLSX); + result.setResultFileSize(uploadFile.length()); + result.setResultContentType(contentType); result.setRowCount(parsed.getAllItems().size()); } finally { - if (xlsx.exists() && !xlsx.delete()) { - log.warn("[similar-asin] delete temp xlsx failed file={}", xlsx); + for (SourceResultWorkbook workbook : workbooks) { + if (workbook.file().exists() && !workbook.file().delete()) { + log.warn("[similar-asin] delete temp xlsx failed file={}", workbook.file()); + } + } + if (zip != null && zip.exists() && !zip.delete()) { + log.warn("[similar-asin] delete temp zip failed file={}", zip); } } } + private List listOwnedPendingCozeStates() { + Map merged = new LinkedHashMap<>(); + for (TaskScopeStateEntity state : queryOwnedPendingCozeStates(false, 50)) { + if (state != null && state.getId() != null) { + merged.put(state.getId(), state); + } + } + for (TaskScopeStateEntity state : queryOwnedPendingCozeStates(true, 50)) { + if (state != null && state.getId() != null) { + merged.putIfAbsent(state.getId(), state); + } + } + return new ArrayList<>(merged.values()); + } + + private List queryOwnedPendingCozeStates(boolean oldestFirst, int limit) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper() + .eq(TaskScopeStateEntity::getModuleType, MODULE_TYPE) + .in(TaskScopeStateEntity::getCozeStatus, List.of(COZE_STATUS_SUBMITTED, COZE_STATUS_RUNNING)) + .and(query -> query + .apply("JSON_UNQUOTE(JSON_EXTRACT(state_json, '$.ownerInstanceId')) IS NULL") + .or() + .apply("JSON_UNQUOTE(JSON_EXTRACT(state_json, '$.ownerInstanceId')) = ''") + .or() + .apply("JSON_UNQUOTE(JSON_EXTRACT(state_json, '$.ownerInstanceId')) = {0}", currentInstanceId())) + .last("limit " + Math.max(1, Math.min(limit, 100))); + if (oldestFirst) { + wrapper.orderByAsc(TaskScopeStateEntity::getUpdatedAt); + } else { + wrapper.orderByDesc(TaskScopeStateEntity::getUpdatedAt); + } + List states = taskScopeStateMapper.selectList(wrapper); + return states == null ? List.of() : states; + } + + private List splitRowsBySourceFile(SimilarAsinParsedPayloadDto parsed, + List rows, + String fallbackFilename) { + String defaultFilename = firstNonBlank(fallbackFilename, "similar-asin"); + Map builders = new LinkedHashMap<>(); + if (parsed != null && parsed.getSourceFiles() != null) { + for (SimilarAsinSourceFileDto sourceFile : parsed.getSourceFiles()) { + if (sourceFile == null) { + continue; + } + String sourceFileKey = normalize(sourceFile.getFileKey()); + if (sourceFileKey.isBlank()) { + continue; + } + builders.putIfAbsent(sourceFileKey, + new SourceRowsBuilder(sourceFileKey, firstNonBlank(sourceFile.getOriginalFilename(), defaultFilename))); + } + } + + for (SimilarAsinParsedRowVo row : rows == null ? List.of() : rows) { + if (row == null) { + continue; + } + String sourceFileKey = normalize(row.getSourceFileKey()); + if (sourceFileKey.isBlank()) { + sourceFileKey = normalize(row.getSourceFilename()); + } + if (sourceFileKey.isBlank()) { + sourceFileKey = "__default__"; + } + SourceRowsBuilder builder = builders.computeIfAbsent(sourceFileKey, + key -> new SourceRowsBuilder(key, firstNonBlank(row.getSourceFilename(), defaultFilename))); + if (builder.sourceFilename().isBlank() || Objects.equals(builder.sourceFilename(), defaultFilename)) { + builder.setSourceFilename(firstNonBlank(row.getSourceFilename(), defaultFilename)); + } + builder.rows().add(row); + } + + return builders.values().stream() + .filter(builder -> !builder.rows().isEmpty()) + .map(builder -> new SourceRows(builder.sourceFileKey(), firstNonBlank(builder.sourceFilename(), defaultFilename), builder.rows())) + .toList(); + } + + private void packageResultWorkbooksAsZip(File zip, List workbooks) { + Set entryNames = new LinkedHashSet<>(); + try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zip))) { + byte[] buffer = new byte[8192]; + for (SourceResultWorkbook workbook : workbooks) { + writeResultZipEntry(zos, buffer, workbook.file(), uniqueZipEntryName(workbook.filename(), entryNames)); + } + } catch (IOException ex) { + throw new BusinessException("生成相似ASIN检测结果压缩包失败"); + } + } + + private void writeResultZipEntry(ZipOutputStream zos, + byte[] buffer, + File file, + String entryName) throws IOException { + zos.putNextEntry(new ZipEntry(entryName)); + try (FileInputStream inputStream = new FileInputStream(file)) { + int len; + while ((len = inputStream.read(buffer)) > 0) { + zos.write(buffer, 0, len); + } + } + zos.closeEntry(); + } + + private String uniqueZipEntryName(String filename, Set entryNames) { + String safeFilename = normalizeZipFilename(filename); + if (entryNames.add(safeFilename)) { + return safeFilename; + } + int dotIndex = safeFilename.lastIndexOf('.'); + String stem = dotIndex > 0 ? safeFilename.substring(0, dotIndex) : safeFilename; + String extension = dotIndex > 0 ? safeFilename.substring(dotIndex) : ""; + int index = 2; + while (true) { + String candidate = stem + "(" + index + ")" + extension; + if (entryNames.add(candidate)) { + return candidate; + } + index++; + } + } + + private String normalizeZipFilename(String filename) { + String normalized = firstNonBlank(filename, "similar-asin-result.xlsx").replace('\\', '/'); + while (normalized.startsWith("/")) { + normalized = normalized.substring(1); + } + return normalized.isBlank() ? "similar-asin-result.xlsx" : normalized; + } + private Map loadPersistedResultRows(Long taskId) { Map result = new LinkedHashMap<>(); List chunks = taskChunkMapper.selectList(new LambdaQueryWrapper() @@ -2450,7 +2913,9 @@ public class SimilarAsinTaskService { } } - private void writeResultWorkbook(File xlsx, SimilarAsinParsedPayloadDto parsed, Map resultMap) { + private void writeResultWorkbook(File xlsx, + List rowsToWrite, + Map resultMap) { try (SXSSFWorkbook workbook = new SXSSFWorkbook(200); FileOutputStream fos = new FileOutputStream(xlsx)) { Sheet sheet = workbook.createSheet("相似asin检测"); CellStyle headerStyle = workbook.createCellStyle(); @@ -2467,7 +2932,7 @@ public class SimilarAsinTaskService { } int rowIndex = 1; - for (SimilarAsinParsedRowVo parsedRow : parsed.getAllItems()) { + for (SimilarAsinParsedRowVo parsedRow : rowsToWrite == null ? List.of() : rowsToWrite) { SimilarAsinResultRowDto resultRow = findResultRow(parsedRow, resultMap); Row row = sheet.createRow(rowIndex++); int col = 0; @@ -2807,23 +3272,25 @@ public class SimilarAsinTaskService { } int cozeCompleted = countCompletedCozeStates(taskId); int cozePending = countPendingCozeStates(taskId); + TaskProgressSnapshotEntity snapshot = taskProgressSnapshotService.find(taskId, MODULE_TYPE); if (job != null && STATUS_RUNNING.equals(job.getStatus()) && cozePending > 0) { int total = Math.max(1, cozeCompleted + cozePending); int current = Math.max(0, Math.min(cozeCompleted, total)); vo.setFileProgressCurrent(current); vo.setFileProgressTotal(total); - vo.setFileProgressPercent(Math.max(0, Math.min(100, (int) Math.floor(current * 100.0 / total)))); + int percent = calculateDisplayProgressPercent(current, total, job, snapshot == null ? null : snapshot.getUpdatedAt()); + percent = Math.max(percent, calculateSnapshotDisplayPercent(snapshot, job)); + vo.setFileProgressPercent(Math.min(99, percent)); vo.setFileProgressMessage("Coze 已完成 " + current + "/" + total + ",等待回流"); return; } - TaskProgressSnapshotEntity snapshot = taskProgressSnapshotService.find(taskId, MODULE_TYPE); if (snapshot == null) { if (job != null && STATUS_RUNNING.equals(job.getStatus()) && cozeCompleted + cozePending > 0) { int total = Math.max(1, cozeCompleted + cozePending); int current = Math.max(0, Math.min(cozeCompleted, total)); vo.setFileProgressCurrent(current); vo.setFileProgressTotal(total); - vo.setFileProgressPercent(Math.max(0, Math.min(100, (int) Math.floor(current * 100.0 / total)))); + vo.setFileProgressPercent(Math.min(99, calculateDisplayProgressPercent(current, total, job, job.getUpdatedAt()))); vo.setFileProgressMessage(cozePending > 0 ? "Coze 已完成 " + current + "/" + total + ",等待回流" : "Coze 处理中"); @@ -2835,8 +3302,10 @@ public class SimilarAsinTaskService { if (total <= 0) { return; } - current = Math.max(0, Math.min(current, total)); - int percent = Math.max(0, Math.min(100, (int) Math.floor(current * 100.0 / total))); + LocalDateTime baseTime = snapshot.getUpdatedAt() != null ? snapshot.getUpdatedAt() : (job == null ? null : job.getUpdatedAt()); + int percent = calculateDisplayProgressPercent(current, total, job, baseTime); + percent = Math.max(percent, extractSnapshotDisplayPercent(snapshot)); + percent = Boolean.TRUE.equals(vo.getFileReady()) ? 100 : Math.min(99, percent); vo.setFileProgressCurrent(current); vo.setFileProgressTotal(total); vo.setFileProgressPercent(percent); @@ -3138,7 +3607,45 @@ public class SimilarAsinTaskService { Integer batchIndex, Integer batchTotal, String ownerInstanceId, - Integer submitRetryCount) { + Integer submitRetryCount, + String credentialName) { + } + + private static class SourceRowsBuilder { + private final String sourceFileKey; + private String sourceFilename; + private final List rows = new ArrayList<>(); + + private SourceRowsBuilder(String sourceFileKey, String sourceFilename) { + this.sourceFileKey = sourceFileKey; + this.sourceFilename = sourceFilename; + } + + private String sourceFileKey() { + return sourceFileKey; + } + + private String sourceFilename() { + return sourceFilename; + } + + private void setSourceFilename(String sourceFilename) { + this.sourceFilename = sourceFilename; + } + + private List rows() { + return rows; + } + } + + private record SourceRows(String sourceFileKey, + String sourceFilename, + List rows) { + } + + private record SourceResultWorkbook(File file, + String filename, + int rowCount) { } private record ParsedWorkbook(int totalRows, int droppedRows, List headers, List allRows) { diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskFileJobDispatchCoordinator.java b/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskFileJobDispatchCoordinator.java index 51e4a2c..f5b08a2 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskFileJobDispatchCoordinator.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskFileJobDispatchCoordinator.java @@ -4,6 +4,8 @@ import com.nanri.aiimage.modules.task.model.dto.TaskFileJobDispatchEvent; import com.nanri.aiimage.modules.task.model.dto.TaskFileJobMessage; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Component; import org.springframework.transaction.event.TransactionPhase; import org.springframework.transaction.event.TransactionalEventListener; @@ -15,6 +17,8 @@ public class TaskFileJobDispatchCoordinator { private final TaskFileJobPublisher taskFileJobPublisher; private final TaskFileJobLocalDispatcher taskFileJobLocalDispatcher; + @Qualifier("taskFileJobDispatchExecutor") + private final TaskExecutor taskFileJobDispatchExecutor; @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT, fallbackExecution = true) public void onTaskFileJobDispatch(TaskFileJobDispatchEvent event) { @@ -29,6 +33,16 @@ public class TaskFileJobDispatchCoordinator { message.setScopeKey(event.scopeKey()); message.setJobType(event.jobType()); message.setCreatedAt(event.createdAt()); + try { + taskFileJobDispatchExecutor.execute(() -> dispatchAfterCommit(event, message)); + } catch (RuntimeException ex) { + log.warn("[task-file-job] dispatch executor rejected after commit jobId={} taskId={} moduleType={} msg={}", + event.jobId(), event.taskId(), event.moduleType(), ex.getMessage(), ex); + dispatchAfterCommit(event, message); + } + } + + private void dispatchAfterCommit(TaskFileJobDispatchEvent event, TaskFileJobMessage message) { boolean published = taskFileJobPublisher.publish(message); if (published) { return; diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskFileJobPublisher.java b/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskFileJobPublisher.java index 3d06a59..c389794 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskFileJobPublisher.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskFileJobPublisher.java @@ -8,12 +8,17 @@ import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; + @Slf4j @Service @RequiredArgsConstructor public class TaskFileJobPublisher { private final ObjectProvider rocketMQTemplateProvider; + private final AtomicInteger consecutiveFailures = new AtomicInteger(); + private final AtomicLong circuitOpenUntilMillis = new AtomicLong(); @Value("${aiimage.result-file-job.mq-enabled:false}") private boolean mqEnabled; @@ -21,6 +26,15 @@ public class TaskFileJobPublisher { @Value("${aiimage.result-file-job.topic:aiimage-result-file-job}") private String topic; + @Value("${aiimage.result-file-job.mq-send-timeout-ms:1000}") + private long mqSendTimeoutMillis; + + @Value("${aiimage.result-file-job.mq-failure-threshold:3}") + private int mqFailureThreshold; + + @Value("${aiimage.result-file-job.mq-circuit-open-ms:60000}") + private long mqCircuitOpenMillis; + public boolean publish(TaskFileJobMessage message) { if (message == null || message.getJobId() == null) { return false; @@ -30,6 +44,13 @@ public class TaskFileJobPublisher { message.getJobId(), message.getTaskId(), message.getModuleType()); return false; } + long now = System.currentTimeMillis(); + long openUntil = circuitOpenUntilMillis.get(); + if (openUntil > now) { + log.info("[task-file-job] RocketMQ publish circuit open, fallback to local dispatcher/scheduled worker jobId={} taskId={} moduleType={} remainingMs={}", + message.getJobId(), message.getTaskId(), message.getModuleType(), openUntil - now); + return false; + } RocketMQTemplate template = rocketMQTemplateProvider.getIfAvailable(); if (template == null) { log.warn("[task-file-job] RocketMQTemplate unavailable, jobId={} taskId={} moduleType={}", @@ -37,13 +58,25 @@ public class TaskFileJobPublisher { return false; } try { - template.convertAndSend(topic, message); + template.syncSend(topic, message, Math.max(100L, mqSendTimeoutMillis)); + consecutiveFailures.set(0); + circuitOpenUntilMillis.set(0L); log.info("[task-file-job] mq published jobId={} taskId={} moduleType={} topic={}", message.getJobId(), message.getTaskId(), message.getModuleType(), topic); return true; } catch (Exception ex) { - log.warn("[task-file-job] publish RocketMQ failed, fallback to local dispatcher/scheduled worker jobId={} taskId={} moduleType={} msg={}", - message.getJobId(), message.getTaskId(), message.getModuleType(), ex.getMessage()); + int failures = consecutiveFailures.incrementAndGet(); + int threshold = Math.max(1, mqFailureThreshold); + if (failures >= threshold) { + long nextOpenUntil = System.currentTimeMillis() + Math.max(1000L, mqCircuitOpenMillis); + circuitOpenUntilMillis.set(nextOpenUntil); + log.warn("[task-file-job] publish RocketMQ failed, circuit opened and fallback to local dispatcher/scheduled worker jobId={} taskId={} moduleType={} failures={} openMs={} msg={}", + message.getJobId(), message.getTaskId(), message.getModuleType(), failures, + Math.max(1000L, mqCircuitOpenMillis), ex.getMessage()); + } else { + log.warn("[task-file-job] publish RocketMQ failed, fallback to local dispatcher/scheduled worker jobId={} taskId={} moduleType={} failures={}/{} msg={}", + message.getJobId(), message.getTaskId(), message.getModuleType(), failures, threshold, ex.getMessage()); + } return false; } } diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskFileJobService.java b/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskFileJobService.java index e1cbdb1..2c2c073 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskFileJobService.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskFileJobService.java @@ -12,6 +12,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -76,6 +77,41 @@ public class TaskFileJobService { .last("limit " + Math.max(1, Math.min(limit, 100)))); } + public List listRunnableJobsForOwner(int limit, String owner) { + String normalizedOwner = owner == null ? "" : owner.trim(); + if (normalizedOwner.isBlank()) { + return listRunnableJobs(limit); + } + String ownerMarker = ":owner:" + normalizedOwner; + int safeLimit = Math.max(1, Math.min(limit, 100)); + + List ownerJobs = taskFileJobMapper.selectList(new LambdaQueryWrapper() + .in(TaskFileJobEntity::getStatus, List.of("PENDING", "FAILED")) + .lt(TaskFileJobEntity::getRetryCount, 5) + .in(TaskFileJobEntity::getModuleType, List.of("APPEARANCE_PATENT", "SIMILAR_ASIN")) + .like(TaskFileJobEntity::getScopeKey, ownerMarker) + .orderByAsc(TaskFileJobEntity::getUpdatedAt) + .last("limit " + safeLimit)); + if (ownerJobs.size() >= safeLimit) { + return ownerJobs; + } + + List jobs = new ArrayList<>(ownerJobs); + LambdaQueryWrapper genericWrapper = new LambdaQueryWrapper() + .in(TaskFileJobEntity::getStatus, List.of("PENDING", "FAILED")) + .lt(TaskFileJobEntity::getRetryCount, 5) + .and(wrapper -> wrapper + .notIn(TaskFileJobEntity::getModuleType, List.of("APPEARANCE_PATENT", "SIMILAR_ASIN")) + .or() + .isNull(TaskFileJobEntity::getScopeKey) + .or() + .notLike(TaskFileJobEntity::getScopeKey, ":owner:")) + .orderByAsc(TaskFileJobEntity::getUpdatedAt) + .last("limit " + (safeLimit - jobs.size())); + jobs.addAll(taskFileJobMapper.selectList(genericWrapper)); + return jobs; + } + public List listJobs(String status, String moduleType, Long taskId, int limit) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper() .orderByDesc(TaskFileJobEntity::getUpdatedAt) @@ -130,7 +166,8 @@ public class TaskFileJobService { .eq(TaskFileJobEntity::getStatus, "RUNNING") .set(TaskFileJobEntity::getStatus, "FAILED") .set(TaskFileJobEntity::getErrorMessage, "文件生成任务运行超时") - .set(TaskFileJobEntity::getUpdatedAt, LocalDateTime.now())); + .set(TaskFileJobEntity::getUpdatedAt, LocalDateTime.now()) + .set(TaskFileJobEntity::getFinishedAt, LocalDateTime.now())); continue; } int updated = taskFileJobMapper.update(null, new LambdaUpdateWrapper() @@ -168,6 +205,19 @@ public class TaskFileJobService { .set(TaskFileJobEntity::getUpdatedAt, LocalDateTime.now())); } + public boolean deferRunning(Long jobId, String message) { + if (jobId == null || jobId <= 0) { + return false; + } + return taskFileJobMapper.update(null, new LambdaUpdateWrapper() + .eq(TaskFileJobEntity::getId, jobId) + .eq(TaskFileJobEntity::getStatus, "RUNNING") + .set(TaskFileJobEntity::getStatus, "PENDING") + .set(TaskFileJobEntity::getErrorMessage, message) + .set(TaskFileJobEntity::getUpdatedAt, LocalDateTime.now()) + .set(TaskFileJobEntity::getFinishedAt, null)) > 0; + } + @Transactional public boolean requeue(Long jobId, String message) { if (jobId == null || jobId <= 0) { @@ -198,14 +248,23 @@ public class TaskFileJobService { .set(TaskFileJobEntity::getFinishedAt, LocalDateTime.now())); } + public TaskFileJobEntity findById(Long jobId) { + if (jobId == null || jobId <= 0) { + return null; + } + return taskFileJobMapper.selectById(jobId); + } + public void markFailed(TaskFileJobEntity job, String message) { int retryCount = job.getRetryCount() == null ? 0 : job.getRetryCount() + 1; taskFileJobMapper.update(null, new LambdaUpdateWrapper() .eq(TaskFileJobEntity::getId, job.getId()) + .ne(TaskFileJobEntity::getStatus, "SUCCESS") .set(TaskFileJobEntity::getStatus, "FAILED") .set(TaskFileJobEntity::getRetryCount, retryCount) .set(TaskFileJobEntity::getErrorMessage, message == null ? "结果文件生成失败" : message) - .set(TaskFileJobEntity::getUpdatedAt, LocalDateTime.now())); + .set(TaskFileJobEntity::getUpdatedAt, LocalDateTime.now()) + .set(TaskFileJobEntity::getFinishedAt, retryCount >= 5 ? LocalDateTime.now() : null)); } public TaskFileJobEntity findAssembleJob(Long taskId, String moduleType, Long resultId) { diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskResultFileJobWorker.java b/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskResultFileJobWorker.java index f5c5073..5b110df 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskResultFileJobWorker.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/task/service/TaskResultFileJobWorker.java @@ -62,7 +62,7 @@ public class TaskResultFileJobWorker { if (!localWorkerEnabled) { return; } - List jobs = taskFileJobService.listRunnableJobs(batchSize); + List jobs = taskFileJobService.listRunnableJobsForOwner(batchSize, currentInstanceId()); if (jobs == null || jobs.isEmpty()) { return; } @@ -111,6 +111,12 @@ public class TaskResultFileJobWorker { private void processInternal(TaskFileJobEntity job) { long startedAt = System.currentTimeMillis(); try { + TaskFileJobEntity latest = taskFileJobService.findById(job.getId()); + if (latest != null && "SUCCESS".equals(latest.getStatus())) { + log.info("[task-file-job] process skipped because job already succeeded jobId={} taskId={} moduleType={} resultId={}", + job.getId(), job.getTaskId(), job.getModuleType(), job.getResultId()); + return; + } TaskDistributedLockService.LockHandle lockHandle = taskDistributedLockService.acquire(job.getModuleType(), job.getTaskId(), TaskDistributedLockService.DEFAULT_WAIT_MILLIS); if (lockHandle == null) { @@ -120,9 +126,22 @@ public class TaskResultFileJobWorker { return; } try (lockHandle) { + latest = taskFileJobService.findById(job.getId()); + if (latest != null && "SUCCESS".equals(latest.getStatus())) { + log.info("[task-file-job] process skipped after lock because job already succeeded jobId={} taskId={} moduleType={} resultId={}", + job.getId(), job.getTaskId(), job.getModuleType(), job.getResultId()); + return; + } boolean completed = dispatch(job); if (!completed) { - taskFileJobService.touchRunning(job.getId()); + if (isOwnerScopedCozeJob(job)) { + taskFileJobService.touchRunning(job.getId()); + log.info("[task-file-job] process waiting for async coze result jobId={} taskId={} moduleType={} resultId={} elapsedMs={}", + job.getId(), job.getTaskId(), job.getModuleType(), job.getResultId(), + System.currentTimeMillis() - startedAt); + return; + } + taskFileJobService.deferRunning(job.getId(), "Waiting for Coze/file assembly to continue"); log.info("[task-file-job] process deferred jobId={} taskId={} moduleType={} resultId={} elapsedMs={}", job.getId(), job.getTaskId(), job.getModuleType(), job.getResultId(), System.currentTimeMillis() - startedAt); @@ -136,6 +155,12 @@ public class TaskResultFileJobWorker { System.currentTimeMillis() - startedAt, resultFileUrl); } } catch (Exception ex) { + TaskFileJobEntity latest = taskFileJobService.findById(job.getId()); + if (latest != null && "SUCCESS".equals(latest.getStatus())) { + log.info("[task-file-job] process failure ignored because job already succeeded jobId={} taskId={} moduleType={} resultId={} msg={}", + job.getId(), job.getTaskId(), job.getModuleType(), job.getResultId(), ex.getMessage()); + return; + } String message = ex.getMessage() == null ? "结果文件生成失败" : ex.getMessage(); log.warn("[task-file-job] process failed jobId={} taskId={} moduleType={} resultId={} msg={}", job.getId(), job.getTaskId(), job.getModuleType(), job.getResultId(), message); diff --git a/backend-java/src/main/resources/application.yml b/backend-java/src/main/resources/application.yml index 4862b83..b0c99e4 100644 --- a/backend-java/src/main/resources/application.yml +++ b/backend-java/src/main/resources/application.yml @@ -136,6 +136,9 @@ aiimage: mq-enabled: ${AIIMAGE_RESULT_FILE_JOB_MQ_ENABLED:true} topic: ${AIIMAGE_RESULT_FILE_JOB_TOPIC:aiimage-result-file-job} consumer-group: ${AIIMAGE_RESULT_FILE_JOB_CONSUMER_GROUP:aiimage-result-file-job-consumer} + mq-send-timeout-ms: ${AIIMAGE_RESULT_FILE_JOB_MQ_SEND_TIMEOUT_MS:1000} + mq-failure-threshold: ${AIIMAGE_RESULT_FILE_JOB_MQ_FAILURE_THRESHOLD:3} + mq-circuit-open-ms: ${AIIMAGE_RESULT_FILE_JOB_MQ_CIRCUIT_OPEN_MS:60000} local-dispatch-enabled: ${AIIMAGE_RESULT_FILE_JOB_LOCAL_DISPATCH_ENABLED:true} local-dispatch-pool-size: ${AIIMAGE_RESULT_FILE_JOB_LOCAL_DISPATCH_POOL_SIZE:2} local-dispatch-queue-capacity: ${AIIMAGE_RESULT_FILE_JOB_LOCAL_DISPATCH_QUEUE_CAPACITY:200} @@ -144,12 +147,14 @@ aiimage: stuck-scan-delay-ms: ${AIIMAGE_RESULT_FILE_JOB_STUCK_SCAN_DELAY_MS:60000} stuck-timeout-minutes: ${AIIMAGE_RESULT_FILE_JOB_STUCK_TIMEOUT_MINUTES:30} batch-size: ${AIIMAGE_RESULT_FILE_JOB_BATCH_SIZE:20} + coze-task: + max-concurrent: ${AIIMAGE_COZE_TASK_MAX_CONCURRENT:8} appearance-patent: coze-base-url: ${AIIMAGE_APPEARANCE_PATENT_COZE_BASE_URL:https://api.coze.cn} coze-workflow-path: ${AIIMAGE_APPEARANCE_PATENT_COZE_WORKFLOW_PATH:/v1/workflow/run} - coze-workflow-id: ${AIIMAGE_APPEARANCE_PATENT_COZE_WORKFLOW_ID:7632683471312355338} - coze-token: ${AIIMAGE_APPEARANCE_PATENT_COZE_TOKEN:Bearer sat_gsInckdsN0qqhnZSK7K4Zevw6neJCHmYHyIbm85oGgJIGEmSdkH5OFctSKLsAHvT} - coze-batch-size: ${AIIMAGE_APPEARANCE_PATENT_COZE_BATCH_SIZE:50} + coze-workflow-id: ${AIIMAGE_APPEARANCE_PATENT_COZE_WORKFLOW_ID:7639685157562089513} + coze-token: ${AIIMAGE_APPEARANCE_PATENT_COZE_TOKEN:Bearer sat_CztofPRhIKFKeaPZBIRxocfckqhsdCZZ45NPhkf7WOZjbX36vnVSfVV30T6u2rSX} + coze-batch-size: ${AIIMAGE_APPEARANCE_PATENT_COZE_BATCH_SIZE:20} coze-connect-timeout-millis: ${AIIMAGE_APPEARANCE_PATENT_COZE_CONNECT_TIMEOUT_MILLIS:10000} coze-read-timeout-millis: ${AIIMAGE_APPEARANCE_PATENT_COZE_READ_TIMEOUT_MILLIS:60000} coze-poll-interval-millis: ${AIIMAGE_APPEARANCE_PATENT_COZE_POLL_INTERVAL_MILLIS:30000} @@ -159,9 +164,9 @@ aiimage: similar-asin: coze-base-url: ${AIIMAGE_SIMILAR_ASIN_COZE_BASE_URL:https://api.coze.cn} coze-workflow-path: ${AIIMAGE_SIMILAR_ASIN_COZE_WORKFLOW_PATH:/v1/workflow/run} - coze-workflow-id: ${AIIMAGE_SIMILAR_ASIN_COZE_WORKFLOW_ID:7635328462404583478} - coze-token: ${AIIMAGE_SIMILAR_ASIN_COZE_TOKEN:Bearer sat_gsInckdsN0qqhnZSK7K4Zevw6neJCHmYHyIbm85oGgJIGEmSdkH5OFctSKLsAHvT} - coze-batch-size: ${AIIMAGE_SIMILAR_ASIN_COZE_BATCH_SIZE:50} + coze-workflow-id: ${AIIMAGE_SIMILAR_ASIN_COZE_WORKFLOW_ID:7639708860686024756} + coze-token: ${AIIMAGE_SIMILAR_ASIN_COZE_TOKEN:Bearer sat_vqmb97BiXbMW3XVyG9htWQKjZ2F55CaW2FRrT9bDdPha7a3hxmXnMNCE1XNHdCVU} + coze-batch-size: ${AIIMAGE_SIMILAR_ASIN_COZE_BATCH_SIZE:20} coze-connect-timeout-millis: ${AIIMAGE_SIMILAR_ASIN_COZE_CONNECT_TIMEOUT_MILLIS:10000} coze-read-timeout-millis: ${AIIMAGE_SIMILAR_ASIN_COZE_READ_TIMEOUT_MILLIS:60000} coze-poll-interval-millis: ${AIIMAGE_SIMILAR_ASIN_COZE_POLL_INTERVAL_MILLIS:30000} diff --git a/backend-java/src/main/resources/db/V51__coze_credential_pool.sql b/backend-java/src/main/resources/db/V51__coze_credential_pool.sql new file mode 100644 index 0000000..c792e5b --- /dev/null +++ b/backend-java/src/main/resources/db/V51__coze_credential_pool.sql @@ -0,0 +1,29 @@ +CREATE TABLE IF NOT EXISTS biz_coze_credential ( + id BIGINT NOT NULL AUTO_INCREMENT, + module_type VARCHAR(64) NOT NULL, + credential_name VARCHAR(128) NOT NULL, + workflow_id VARCHAR(128) NOT NULL, + token VARCHAR(512) NOT NULL, + enabled TINYINT NOT NULL DEFAULT 1, + max_concurrent INT NOT NULL DEFAULT 0, + sort_order INT NOT NULL DEFAULT 0, + created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (id), + UNIQUE KEY uk_coze_credential_module_name (module_type, credential_name), + KEY idx_coze_credential_module_enabled (module_type, enabled, sort_order, id) +); + +INSERT INTO biz_coze_credential (module_type, credential_name, workflow_id, token, enabled, max_concurrent, sort_order) +VALUES +('APPEARANCE_PATENT', 'appearance-1', '7639685157562089513', 'Bearer sat_CztofPRhIKFKeaPZBIRxocfckqhsdCZZ45NPhkf7WOZjbX36vnVSfVV30T6u2rSX', 1, 0, 10), +('APPEARANCE_PATENT', 'appearance-2', '7639688221823778850', 'Bearer sat_2VsTpfWXYG3EkCo8OQfLwJEWqhduCL4NEw7sSCsABppkW61kkSRPIac9coNlEnHE', 1, 0, 20), +('SIMILAR_ASIN', 'similar-1', '7639708860686024756', 'Bearer sat_vqmb97BiXbMW3XVyG9htWQKjZ2F55CaW2FRrT9bDdPha7a3hxmXnMNCE1XNHdCVU', 1, 0, 10), +('SIMILAR_ASIN', 'similar-2', '7635328462404583478', 'Bearer sat_gsInckdsN0qqhnZSK7K4Zevw6neJCHmYHyIbm85oGgJIGEmSdkH5OFctSKLsAHvT', 1, 0, 20) +ON DUPLICATE KEY UPDATE + workflow_id = VALUES(workflow_id), + token = VALUES(token), + enabled = VALUES(enabled), + max_concurrent = VALUES(max_concurrent), + sort_order = VALUES(sort_order), + updated_at = CURRENT_TIMESTAMP; diff --git a/backend-java/src/main/resources/db/aiimage.sql b/backend-java/src/main/resources/db/aiimage.sql index 6cb071f..d33479d 100644 --- a/backend-java/src/main/resources/db/aiimage.sql +++ b/backend-java/src/main/resources/db/aiimage.sql @@ -4,7 +4,7 @@ Source Server : 南日AI-线上 Source Server Type : MySQL Source Server Version : 80045 (8.0.45) - Source Host : 8.136.19.173:3306 + Source Host : 47.111.163.154:3306 Source Schema : aiimage Target Server Type : MySQL diff --git a/backend/blueprints/admin_api.py b/backend/blueprints/admin_api.py index 190f592..bb9d1b0 100644 --- a/backend/blueprints/admin_api.py +++ b/backend/blueprints/admin_api.py @@ -5,6 +5,7 @@ import json import os import re import threading +from urllib.parse import quote import requests from requests.adapters import HTTPAdapter @@ -1217,7 +1218,9 @@ def list_product_categories(): _, _, denied = _ensure_product_category_access() if denied: return denied - result, error_response, status = _proxy_backend_java('GET', '/api/admin/product-categories') + keyword = (request.args.get('keyword') or '').strip() + query = f'?keyword={quote(keyword)}' if keyword else '' + result, error_response, status = _proxy_backend_java('GET', f'/api/admin/product-categories{query}') if error_response is not None: return error_response, status payload = result.get('data') or {} @@ -1225,6 +1228,76 @@ def list_product_categories(): 'success': True, 'tree': [_format_product_category_item(item) for item in (payload.get('tree') or [])], 'items': [_format_product_category_item(item, include_children=False) for item in (payload.get('items') or [])], + 'total': payload.get('total') or 0, + 'page': payload.get('page') or 1, + 'page_size': payload.get('pageSize') or 0, + 'has_more': bool(payload.get('hasMore')), + }) + + +@admin_api.route('/product-categories/children') +@login_required +def list_product_category_children(): + _ensure_product_category_schema() + _, _, denied = _ensure_product_category_access() + if denied: + return denied + parent_id_raw = (request.args.get('parent_id') or request.args.get('parentId') or '').strip() + page = max(1, int(request.args.get('page', 1))) + page_size = min(100, max(1, int(request.args.get('page_size', request.args.get('pageSize', 20))))) + params = { + 'page': page, + 'pageSize': page_size, + } + if parent_id_raw: + params['parentId'] = parent_id_raw + result, error_response, status = _proxy_backend_java( + 'GET', + '/api/admin/product-categories/children', + params=params, + ) + if error_response is not None: + return error_response, status + payload = result.get('data') or {} + return jsonify({ + 'success': True, + 'items': [_format_product_category_item(item, include_children=False) for item in (payload.get('items') or [])], + 'total': payload.get('total') or 0, + 'page': payload.get('page') or page, + 'page_size': payload.get('pageSize') or page_size, + 'has_more': bool(payload.get('hasMore')), + }) + + +@admin_api.route('/product-categories/search') +@login_required +def search_product_categories(): + _ensure_product_category_schema() + _, _, denied = _ensure_product_category_access() + if denied: + return denied + keyword = (request.args.get('keyword') or '').strip() + page = max(1, int(request.args.get('page', 1))) + page_size = min(100, max(1, int(request.args.get('page_size', request.args.get('pageSize', 20))))) + result, error_response, status = _proxy_backend_java( + 'GET', + '/api/admin/product-categories/search', + params={ + 'keyword': keyword, + 'page': page, + 'pageSize': page_size, + }, + ) + if error_response is not None: + return error_response, status + payload = result.get('data') or {} + return jsonify({ + 'success': True, + 'items': [_format_product_category_item(item, include_children=False) for item in (payload.get('items') or [])], + 'total': payload.get('total') or 0, + 'page': payload.get('page') or page, + 'page_size': payload.get('pageSize') or page_size, + 'has_more': bool(payload.get('hasMore')), }) @@ -2415,6 +2488,54 @@ def list_query_asins(): }) +@admin_api.route('/query-asins/export') +@login_required +def export_query_asins(): + role, current_row, denied = _ensure_backend_menu_access('query-asin') + if denied: + return denied + params = { + 'operatorId': current_row.get('id') if current_row else None, + 'superAdmin': 'true' if role == 'super_admin' else 'false', + } + group_id_raw = (request.args.get('group_id') or request.args.get('groupId') or '').strip() + shop_name = (request.args.get('shop_name') or request.args.get('shopName') or '').strip() + asin = (request.args.get('asin') or '').strip() + if group_id_raw: + params['groupId'] = group_id_raw + if shop_name: + params['shopName'] = shop_name + if asin: + params['asin'] = asin + + url = f"{backend_java_base_url}/api/admin/query-asins/export" + try: + resp = _get_backend_java_session().get(url, params=params, timeout=60) + except requests.RequestException: + return jsonify({'success': False, 'error': 'backend-java 服务不可用'}), 502 + if resp.status_code >= 400: + try: + data = resp.json() + error = data.get('message') or data.get('error') or '导出失败' + except ValueError: + error = '导出失败' + return jsonify({'success': False, 'error': error}), resp.status_code + + headers = {} + disposition = resp.headers.get('Content-Disposition') + if disposition: + headers['Content-Disposition'] = disposition + return Response( + resp.content, + status=resp.status_code, + headers=headers, + content_type=resp.headers.get( + 'Content-Type', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + ), + ) + + def _format_query_asin_import_progress(progress): return { 'status': progress.get('status') or 'pending', diff --git a/backend/config.py b/backend/config.py index db46cef..1058a2e 100644 --- a/backend/config.py +++ b/backend/config.py @@ -1,14 +1,48 @@ +import os +from pathlib import Path + +try: + from dotenv import load_dotenv +except ImportError: + def load_dotenv(*args, **kwargs): + return False + base_url = "https://api.coze.cn/v1" coze_token = "sat_12nW40INoJxArrDXbY4lSCoudbqkOYTcphC99BP2efWyzxmsk4q81WDX3ezWgqZ5" workflow_id = "7608812635877900322" STITCH_WORKFLOW_ID = "7608813873483300907" +BASE_DIR = Path(__file__).resolve().parent +LOADED_ENV_FILES = [] + + +def _load_env_files(): + candidates = ( + BASE_DIR / ".env", + BASE_DIR.parent / "app" / ".env", + BASE_DIR.parent / ".env", + ) + for env_path in candidates: + if env_path.is_file(): + load_dotenv(dotenv_path=env_path, override=False) + LOADED_ENV_FILES.append(str(env_path)) + + +def _get_env(*names, default=None): + for name in names: + value = os.getenv(name) + if value not in (None, ""): + return value, name + return default, "config.default" + + +_load_env_files() # MySQL 配置 -mysql_host = "8.136.19.173" -mysql_user = "aiimage" -mysql_password = "WTFrb5y6hNLz6hNy" # 请修改为您的数据库密码 -mysql_database = "aiimage" +mysql_host, mysql_host_source = _get_env("mysql_host", "MYSQL_HOST", default="47.110.241.161") +mysql_user, mysql_user_source = _get_env("mysql_user", "MYSQL_USER", default="aiimage") +mysql_password, mysql_password_source = _get_env("mysql_password", "MYSQL_PASSWORD", default="WTFrb5y6hNLz6hNy") +mysql_database, mysql_database_source = _get_env("mysql_database", "MYSQL_DATABASE", default="aiimage") cache_path = "./user_data" @@ -22,20 +56,20 @@ bucket_path = "nanri-image/" file_url_pre = f"https://{bucket}.oss-cn-hangzhou.aliyuncs.com/" -import os -backend_java_base_url = os.environ.get('BACKEND_JAVA_BASE_URL', 'http://127.0.0.1:18080').rstrip('/') -# backend_java_base_url = os.environ.get('BACKEND_JAVA_BASE_URL', 'http://8.136.19.173:18080').rstrip('/') -# backend_java_base_url = os.environ.get('BACKEND_JAVA_BASE_URL', 'http://47.111.163.154:18080').rstrip('/') -# backend_java_base_url = os.environ.get('BACKEND_JAVA_BASE_URL', 'http://121.196.149.225:18080').rstrip('/') -os.environ['OSS_ACCESS_KEY_ID'] = accessKeyId -os.environ['OSS_ACCESS_KEY_SECRET'] = accessKeySecret -os.environ['SECRET_KEY'] = "ddffc7c1d02121d9554d7b080b2511b6" +backend_java_base_url, backend_java_base_url_source = _get_env( + "java_api_base", + "BACKEND_JAVA_BASE_URL", + default="http://127.0.0.1:18080", + # default="http://47.111.163.154:18080", +) +backend_java_base_url = backend_java_base_url.rstrip("/") +os.environ["OSS_ACCESS_KEY_ID"] = accessKeyId +os.environ["OSS_ACCESS_KEY_SECRET"] = accessKeySecret +os.environ["SECRET_KEY"] = "ddffc7c1d02121d9554d7b080b2511b6" debug = True version = "1.0.0" APP_UPDATE_URL = "" -os.environ['APP_VERSION'] = version -os.environ['APP_UPDATE_URL'] = version - - +os.environ["APP_VERSION"] = version +os.environ["APP_UPDATE_URL"] = version diff --git a/backend/requirement.txt b/backend/requirement.txt index 1eb81b2..7f798fd 100644 --- a/backend/requirement.txt +++ b/backend/requirement.txt @@ -44,6 +44,7 @@ PyQt5==5.15.11 PyQt5-Qt5==5.15.2 PyQt5_sip==12.17.1 python-dateutil==2.9.0.post0 +python-dotenv==1.0.1 pythonnet==3.0.5 pytz==2026.1.post1 pywebview==6.1 diff --git a/backend/static/admin.js b/backend/static/admin.js index e5500a4..4bf1138 100644 --- a/backend/static/admin.js +++ b/backend/static/admin.js @@ -2563,14 +2563,47 @@ } function buildQueryAsinQuery(page) { var query = 'page=' + (page || 1) + '&page_size=' + queryAsinPageSize; + var filterQuery = buildQueryAsinFilterQuery(); + if (filterQuery) query += '&' + filterQuery; + return query; + } + function buildQueryAsinFilterQuery() { + var query = ''; var groupId = (document.getElementById('queryAsinFilterGroupId').value || '').trim(); var shopName = (document.getElementById('queryAsinFilterShopName').value || '').trim(); var asin = (document.getElementById('queryAsinFilterAsin').value || '').trim(); - if (groupId) query += '&group_id=' + encodeURIComponent(groupId); - if (shopName) query += '&shop_name=' + encodeURIComponent(shopName); - if (asin) query += '&asin=' + encodeURIComponent(asin); + if (groupId) query += (query ? '&' : '') + 'group_id=' + encodeURIComponent(groupId); + if (shopName) query += (query ? '&' : '') + 'shop_name=' + encodeURIComponent(shopName); + if (asin) query += (query ? '&' : '') + 'asin=' + encodeURIComponent(asin); return query; } + function exportQueryAsin() { + var query = buildQueryAsinFilterQuery(); + var url = '/api/admin/query-asins/export' + (query ? ('?' + query) : ''); + fetch(url) + .then(function (response) { + var contentType = response.headers.get('content-type') || ''; + if (!response.ok || contentType.indexOf('application/json') >= 0) { + return response.json().then(function (res) { + throw new Error((res && (res.error || res.msg)) || '导出失败'); + }).catch(function (err) { + throw err instanceof Error ? err : new Error('导出失败'); + }); + } + return response.blob().then(function (blob) { + return { + blob: blob, + filename: extractDownloadFilename(response.headers.get('content-disposition'), 'query-asin.xlsx') + }; + }); + }) + .then(function (payload) { + triggerBrowserDownload(payload.blob, payload.filename); + }) + .catch(function (err) { + alert((err && err.message) || '导出失败'); + }); + } function renderQueryAsinCell(item, country) { var asinValue = item[country.field] || ''; var infoHtml = asinValue ? '' + asinValue + '' : '-'; @@ -2883,6 +2916,9 @@ document.getElementById('btnSearchQueryAsin').onclick = function () { loadQueryAsin(1); }; + document.getElementById('btnExportQueryAsin').onclick = function () { + exportQueryAsin(); + }; document.getElementById('queryAsinFilterShopName').addEventListener('keydown', function (e) { if (e.key === 'Enter') { e.preventDefault(); @@ -2964,6 +3000,11 @@ renderQueryAsinInputs(); var productCategoryItems = []; + var productCategoryNodeMap = {}; + var productCategoryPageSize = 20; + var productCategoryRootState = { children: [], page: 0, total: 0, hasMore: true, loaded: false, loading: false }; + var productCategorySearchState = { items: [], page: 0, total: 0, hasMore: false, loading: false }; + var productCategoryKeyword = ''; var editingProductCategoryId = null; function resetProductCategoryForm() { @@ -2983,27 +3024,102 @@ var selected = selectedValue == null ? select.value : String(selectedValue || ''); var excluded = excludedId == null ? editingProductCategoryId : excludedId; var options = ['']; - productCategoryItems.forEach(function (item) { + productCategoryItems.slice().sort(function (a, b) { + return String(a.path || a.name || '').localeCompare(String(b.path || b.name || ''), 'zh-CN'); + }).forEach(function (item) { if (excluded && String(item.id) === String(excluded)) return; var prefix = new Array((item.level || 0) + 1).join('  '); options.push(''); }); + if (selected && !productCategoryItems.some(function (item) { return String(item.id) === selected; })) { + options.push(''); + } select.innerHTML = options.join(''); select.value = selected; } - function renderProductCategoryRows(items) { + function normalizeProductCategoryItem(item, parent) { + var id = String(item.id || ''); + var existing = productCategoryNodeMap[id] || {}; + var level = item.level != null ? item.level : (parent ? (parent.level || 0) + 1 : 0); + var path = item.path || (parent && parent.path ? parent.path + ' / ' + (item.name || '') : (item.name || '')); + var normalized = Object.assign(existing, item, { + id: item.id, + parent_id: item.parent_id == null ? null : item.parent_id, + child_count: item.child_count || 0, + level: level, + path: path, + children: existing.children || [], + page: existing.page || 0, + total: existing.total || 0, + hasMore: existing.hasMore !== false, + loaded: existing.loaded || false, + loading: false, + expanded: existing.expanded || false + }); + productCategoryNodeMap[id] = normalized; + productCategoryItems = Object.keys(productCategoryNodeMap).map(function (key) { return productCategoryNodeMap[key]; }); + return normalized; + } + + function flattenVisibleProductCategories(items, output) { + (items || []).forEach(function (item) { + output.push({ type: 'item', item: item }); + if ((item.child_count || 0) > 0 && item.expanded) { + flattenVisibleProductCategories(item.children || [], output); + if (item.hasMore) { + output.push({ type: 'more', parent: item }); + } + } + }); + return output; + } + + function renderProductCategoryRows() { var tbody = document.getElementById('productCategoryListBody'); if (!tbody) return; - if (!items.length) { + var rows = productCategoryKeyword + ? productCategorySearchState.items.map(function (item) { return { type: 'item', item: item, search: true }; }) + : flattenVisibleProductCategories(productCategoryRootState.children, []); + if (!productCategoryKeyword && productCategoryRootState.hasMore) { + rows.push({ type: 'more', parent: null }); + } + if (productCategoryKeyword && productCategorySearchState.hasMore) { + rows.push({ type: 'searchMore' }); + } + if (!rows.length) { tbody.innerHTML = '暂无商品类目'; return; } - tbody.innerHTML = items.map(function (item) { + tbody.innerHTML = rows.map(function (row) { + if (row.type === 'more') { + var parent = row.parent; + var level = parent ? (parent.level || 0) + 1 : 0; + var indentMore = Math.max(0, level) * 24; + var loading = parent ? parent.loading : productCategoryRootState.loading; + var loadedCount = parent ? (parent.children || []).length : (productCategoryRootState.children || []).length; + var totalCount = parent ? (parent.total || 0) : (productCategoryRootState.total || 0); + return '
' + + '' + + '已加载 ' + escapeHtml(loadedCount) + ' / ' + escapeHtml(totalCount) + '
'; + } + if (row.type === 'searchMore') { + var searchLoadedCount = (productCategorySearchState.items || []).length; + var searchTotalCount = productCategorySearchState.total || 0; + return ' ' + + '已加载 ' + escapeHtml(searchLoadedCount) + ' / ' + escapeHtml(searchTotalCount) + ''; + } + var item = row.item; var indent = Math.max(0, item.level || 0) * 24; - var mark = item.child_count > 0 ? '+' : '-'; + var hasChildren = (item.child_count || 0) > 0; + var expanded = !!item.expanded; + var mark = hasChildren ? (expanded ? '-' : '+') : ''; return '' + - '
' + mark + '' + escapeHtml(item.name || '') + '
' + + '
' + + '' + + '' + escapeHtml(item.name || '') + '
' + '
' + escapeHtml(item.path || item.name || '') + '
' + escapeHtml(item.category_key || '') + '
' + '' + escapeHtml(item.sort_order || 0) + '' + '' + (item.is_builtin ? '内置' : '自定义') + '' + @@ -3012,6 +3128,24 @@ '' + ''; }).join(''); + document.querySelectorAll('[data-product-category-toggle]').forEach(function (btn) { + btn.onclick = function () { + var id = String(btn.dataset.productCategoryToggle || ''); + if (!id || btn.disabled) return; + toggleProductCategoryNode(id); + }; + }); + document.querySelectorAll('[data-product-category-load-more]').forEach(function (btn) { + btn.onclick = function () { + var parentId = (btn.dataset.productCategoryLoadMore || '').trim(); + loadProductCategoryChildren(parentId || null, true); + }; + }); + document.querySelectorAll('[data-product-category-search-more]').forEach(function (btn) { + btn.onclick = function () { + loadProductCategorySearch(true); + }; + }); document.querySelectorAll('[data-product-category-edit]').forEach(function (btn) { btn.onclick = function () { var item = productCategoryItems.find(function (row) { return String(row.id) === String(btn.dataset.productCategoryEdit); }); @@ -3047,28 +3181,136 @@ } function loadProductCategories() { - fetch('/api/admin/product-categories') + if (productCategoryKeyword) { + productCategorySearchState = { items: [], page: 0, total: 0, hasMore: false, loading: false }; + loadProductCategorySearch(false); + return; + } + productCategoryRootState = { children: [], page: 0, total: 0, hasMore: true, loaded: false, loading: false }; + productCategoryNodeMap = {}; + productCategoryItems = []; + renderProductCategoryParentOptions(); + loadProductCategoryChildren(null, false); + } + + function loadProductCategoryChildren(parentId, append) { + var parent = parentId ? productCategoryNodeMap[String(parentId)] : null; + var state = parent || productCategoryRootState; + if (state.loading) return; + state.loading = true; + var failed = false; + renderProductCategoryRows(); + var nextPage = append ? (state.page || 0) + 1 : 1; + var query = '?page=' + nextPage + '&page_size=' + productCategoryPageSize; + if (parentId) query += '&parent_id=' + encodeURIComponent(parentId); + fetch('/api/admin/product-categories/children' + query) .then(function (r) { return r.json(); }) .then(function (res) { var tbody = document.getElementById('productCategoryListBody'); if (!res.success) { + failed = true; if (tbody) tbody.innerHTML = '加载失败: ' + escapeHtml(res.error || '') + ''; return; } - productCategoryItems = res.items || []; + var children = (res.items || []).map(function (item) { + return normalizeProductCategoryItem(item, parent); + }); + if (!append) { + state.children = []; + } + state.children = state.children.concat(children); + state.page = res.page || nextPage; + state.total = res.total || 0; + state.hasMore = !!res.has_more; + state.loaded = true; renderProductCategoryParentOptions(); - renderProductCategoryRows(productCategoryItems); + renderProductCategoryRows(); }) .catch(function () { + failed = true; var tbody = document.getElementById('productCategoryListBody'); if (tbody) tbody.innerHTML = '请求失败'; + }) + .finally(function () { + state.loading = false; + if (!failed) renderProductCategoryRows(); }); } + function loadProductCategorySearch(append) { + if (productCategorySearchState.loading) return; + productCategorySearchState.loading = true; + var failed = false; + renderProductCategoryRows(); + var nextPage = append ? (productCategorySearchState.page || 0) + 1 : 1; + fetch('/api/admin/product-categories/search?keyword=' + encodeURIComponent(productCategoryKeyword) + + '&page=' + nextPage + '&page_size=' + productCategoryPageSize) + .then(function (r) { return r.json(); }) + .then(function (res) { + var tbody = document.getElementById('productCategoryListBody'); + if (!res.success) { + failed = true; + if (tbody) tbody.innerHTML = '加载失败: ' + escapeHtml(res.error || '') + ''; + return; + } + var items = (res.items || []).map(function (item) { + var normalized = normalizeProductCategoryItem(item, null); + normalized.expanded = false; + return normalized; + }); + productCategorySearchState.items = append + ? productCategorySearchState.items.concat(items) + : items; + productCategorySearchState.page = res.page || nextPage; + productCategorySearchState.total = res.total || 0; + productCategorySearchState.hasMore = !!res.has_more; + renderProductCategoryParentOptions(); + renderProductCategoryRows(); + }) + .catch(function () { + failed = true; + var tbody = document.getElementById('productCategoryListBody'); + if (tbody) tbody.innerHTML = '请求失败'; + }) + .finally(function () { + productCategorySearchState.loading = false; + if (!failed) renderProductCategoryRows(); + }); + } + + function toggleProductCategoryNode(id) { + var item = productCategoryNodeMap[String(id)]; + if (!item) return; + item.expanded = !item.expanded; + if (item.expanded && !item.loaded) { + loadProductCategoryChildren(id, false); + return; + } + renderProductCategoryRows(); + } + document.getElementById('btnCancelProductCategoryEdit').onclick = function () { resetProductCategoryForm(); }; + document.getElementById('btnSearchProductCategory').onclick = function () { + productCategoryKeyword = (document.getElementById('productCategoryKeyword').value || '').trim(); + loadProductCategories(); + }; + + document.getElementById('btnClearProductCategorySearch').onclick = function () { + productCategoryKeyword = ''; + document.getElementById('productCategoryKeyword').value = ''; + loadProductCategories(); + }; + + document.getElementById('productCategoryKeyword').onkeydown = function (event) { + if (event.key === 'Enter') { + event.preventDefault(); + document.getElementById('btnSearchProductCategory').click(); + } + }; + document.getElementById('btnCreateProductCategory').onclick = function () { var msgEl = document.getElementById('msgProductCategory'); var name = (document.getElementById('productCategoryName').value || '').trim(); diff --git a/backend/utils/db.py b/backend/utils/db.py index 5ec2849..ae5a694 100644 --- a/backend/utils/db.py +++ b/backend/utils/db.py @@ -10,16 +10,32 @@ try: from config import mysql_user as config_mysql_user from config import mysql_password as config_mysql_password from config import mysql_database as config_mysql_database + from config import mysql_host_source as config_mysql_host_source + from config import mysql_user_source as config_mysql_user_source + from config import mysql_database_source as config_mysql_database_source except ImportError: config_mysql_host = 'localhost' config_mysql_user = 'root' config_mysql_password = '' config_mysql_database = 'maixiang_ai' + config_mysql_host_source = 'fallback.default' + config_mysql_user_source = 'fallback.default' + config_mysql_database_source = 'fallback.default' -mysql_host = os.environ.get('MYSQL_HOST', config_mysql_host) -mysql_user = os.environ.get('MYSQL_USER', config_mysql_user) -mysql_password = os.environ.get('MYSQL_PASSWORD', config_mysql_password) -mysql_database = os.environ.get('MYSQL_DATABASE', config_mysql_database) +mysql_host = config_mysql_host +mysql_user = config_mysql_user +mysql_password = config_mysql_password +mysql_database = config_mysql_database +mysql_host_source = config_mysql_host_source +mysql_user_source = config_mysql_user_source +mysql_database_source = config_mysql_database_source + + +def describe_db_target(): + return ( + f"{mysql_user}@{mysql_host}/{mysql_database} " + f"(host={mysql_host_source}, user={mysql_user_source}, database={mysql_database_source})" + ) def get_db(): diff --git a/backend/web_source/admin.html b/backend/web_source/admin.html index 3fb943c..a687efa 100644 --- a/backend/web_source/admin.html +++ b/backend/web_source/admin.html @@ -371,6 +371,7 @@ .tree-node-mark { width: 18px; height: 18px; + border: 0; border-radius: 4px; background: #eef1ff; color: #667eea; @@ -379,6 +380,14 @@ justify-content: center; font-size: 12px; font-weight: 700; + cursor: pointer; + padding: 0; + line-height: 1; + } + + .tree-node-mark.is-leaf { + background: transparent; + cursor: default; } .category-path { @@ -1317,6 +1326,7 @@ + @@ -1365,7 +1375,16 @@

-

类目树

+
+

类目树

+
+
+ +
+ + +
+
diff --git a/frontend-vue/src/pages/brand/components/BrandApiSecretSettingsButton.vue b/frontend-vue/src/pages/brand/components/BrandApiSecretSettingsButton.vue index 910c69a..2e517f0 100644 --- a/frontend-vue/src/pages/brand/components/BrandApiSecretSettingsButton.vue +++ b/frontend-vue/src/pages/brand/components/BrandApiSecretSettingsButton.vue @@ -8,33 +8,33 @@
-
+
-
{{ item.title }}
-
{{ item.description }}
+
通用 Coze 密钥
+
用于外观专利检测和货源查询。
@@ -43,14 +43,14 @@
保留时长
- {{ formatRetentionText(item.retention, item.expiresAt) }} + {{ formatRetentionText(secretState.retention, secretState.expiresAt) }} 当前未保存
@@ -73,14 +73,10 @@ import { clearStoredApiSecret, getStoredApiSecretSnapshot, saveStoredApiSecret, - type ApiSecretModuleKey, type ApiSecretRetention, } from '@/shared/utils/api-secret-store' -type ModuleState = { - moduleKey: ApiSecretModuleKey - title: string - description: string +type SecretState = { value: string retention: ApiSecretRetention expiresAt: number | null @@ -90,25 +86,18 @@ type ModuleState = { const dialogVisible = ref(false) const retentionOptions: Array<{ value: ApiSecretRetention; label: string }> = [ - { value: 'session', label: '仅本次打开有效' }, - { value: '1d', label: '1天' }, - { value: '7d', label: '7天' }, - { value: '30d', label: '30天' }, + { value: 'session', label: '本次打开有效' }, + { value: '1d', label: '1 天' }, + { value: '7d', label: '7 天' }, + { value: '30d', label: '30 天' }, { value: 'forever', label: '长期保留' }, ] -const moduleStates = ref([]) +const secretState = ref(emptySecretState()) -function buildModuleState( - moduleKey: ApiSecretModuleKey, - title: string, - description: string, -): ModuleState { - const snapshot = getStoredApiSecretSnapshot(moduleKey) - return { - moduleKey, - title, - description, +function loadStates() { + const snapshot = getStoredApiSecretSnapshot() + secretState.value = { value: snapshot.value, retention: snapshot.retention, expiresAt: snapshot.expiresAt, @@ -116,11 +105,13 @@ function buildModuleState( } } -function loadStates() { - moduleStates.value = [ - buildModuleState('appearance-patent', '外观专利', '用于外观专利检测的 Coze 接口密钥。'), - buildModuleState('similar-asin', '货源查询', '用于货源查询的 Coze 接口密钥。'), - ] +function emptySecretState(): SecretState { + return { + value: '', + retention: 'session', + expiresAt: null, + exists: false, + } } function formatRetentionText(retention: ApiSecretRetention, expiresAt: number | null) { @@ -136,16 +127,14 @@ function formatRetentionText(retention: ApiSecretRetention, expiresAt: number | return `有效期至 ${year}-${month}-${day} ${hour}:${minute}` } -function clearSecret(moduleKey: ApiSecretModuleKey) { - clearStoredApiSecret(moduleKey) +function clearSecret() { + clearStoredApiSecret() loadStates() ElMessage.success('已清空密钥') } function saveAll() { - for (const item of moduleStates.value) { - saveStoredApiSecret(item.moduleKey, item.value, item.retention) - } + saveStoredApiSecret(secretState.value.value, secretState.value.retention) loadStates() dialogVisible.value = false ElMessage.success('密钥设置已保存') @@ -192,6 +181,45 @@ loadStates() line-height: 1; } +:global(.secret-settings-dialog) { + --el-dialog-bg-color: #171b20; + --el-dialog-padding-primary: 20px; + overflow: hidden; + border: 1px solid #2c3540; + border-radius: 14px; + background: #171b20; + box-shadow: 0 24px 70px rgba(0, 0, 0, .52); +} + +:global(.secret-settings-dialog .el-dialog__header) { + padding: 22px 22px 12px; + margin: 0; + background: #171b20; +} + +:global(.secret-settings-dialog .el-dialog__body) { + padding: 12px 22px 16px; + background: #171b20; +} + +:global(.secret-settings-dialog .el-dialog__footer) { + padding: 0 22px 22px; + background: #171b20; +} + +:global(.secret-settings-dialog .el-dialog__headerbtn) { + top: 18px; + right: 18px; +} + +:global(.secret-settings-dialog .el-dialog__close) { + color: #8793a0; +} + +:global(.secret-settings-dialog .el-dialog__close:hover) { + color: #d8e3ee; +} + .dialog-header { display: flex; flex-direction: column; @@ -217,10 +245,10 @@ loadStates() } .secret-card { - padding: 16px; - border: 1px solid #2f363f; - border-radius: 12px; - background: #22272d; + padding: 18px; + border: 1px solid #313b46; + border-radius: 10px; + background: #20252b; } .secret-card-head { @@ -331,7 +359,11 @@ loadStates() } .footer-btn-primary { - background: #5aa2ea; + background: #4f8fda; color: #fff; } + +.footer-btn-primary:hover { + background: #67a6ed; +} diff --git a/frontend-vue/src/pages/brand/components/BrandAppearancePatentTab.vue b/frontend-vue/src/pages/brand/components/BrandAppearancePatentTab.vue index 58af24e..ebdd2cd 100644 --- a/frontend-vue/src/pages/brand/components/BrandAppearancePatentTab.vue +++ b/frontend-vue/src/pages/brand/components/BrandAppearancePatentTab.vue @@ -18,10 +18,8 @@
-
AI 提示词
-