feat: 2026-07-11 全量更新 - 代办集成+会议室预定+知识迭代修复+UI统一+Bug修复
== 已部署上线 (9项) == - 代办事项真实数据源集成 (企微审批API 8bug修复链) - H5/坐席端 Logo样式统一+绿色背景 - 视频引导页修复 (localStorage key v2) - 坐席端 v9 Vue版本修复 (ElMessage._context) - 截图按钮 v10 修复 (getDisplayMedia user gesture) - 扫码样式恢复+H5扫码登录跳转修复 - H5截图快捷键提示 == 代码完成待部署 (3项) == - 知识迭代3Bug修复 (#8 POST端点/#7 MERGE幂等/#6 过期检查) - 会议室预定-小鱼易联终端 (40文件, 40/40测试通过) - IT资产升级审批推送 (asset_service.py) == 需求文档 (2项) == - 坐席端AI辅助消息框-PRD (4项新功能确认) - 坐席端布局优化建议 v2.0 (7天计划) == 新增文档 == - 日报-2026-07-11.md - 知识迭代Bug修复报告-20260711.md - 会议室预定-部署指南.md - CHANGELOG.md 更新 == 测试 == - test_todo_integration.py: 40/40 - test_meetingroom.py: 40/40 - test_bugfix_ki_suggestions.py: 21/21
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 176 KiB |
|
After Width: | Height: | Size: 176 KiB |
|
After Width: | Height: | Size: 176 KiB |
|
After Width: | Height: | Size: 541 KiB |
|
After Width: | Height: | Size: 541 KiB |
|
After Width: | Height: | Size: 548 KiB |
|
After Width: | Height: | Size: 569 KiB |
|
After Width: | Height: | Size: 564 KiB |
|
After Width: | Height: | Size: 564 KiB |
|
After Width: | Height: | Size: 519 KiB |
|
After Width: | Height: | Size: 483 KiB |
|
After Width: | Height: | Size: 462 KiB |
|
After Width: | Height: | Size: 482 KiB |
|
After Width: | Height: | Size: 500 KiB |
|
After Width: | Height: | Size: 498 KiB |
|
After Width: | Height: | Size: 498 KiB |
@@ -0,0 +1,46 @@
|
||||
[
|
||||
{
|
||||
"index": 1,
|
||||
"screenshots": [
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\chat_c1_01_top.png"
|
||||
],
|
||||
"ocr_texts": [
|
||||
"Q 搜索\n+\n舒礼明\n稽查风险业务团队解决方案岗\n疯狂打码中\n舒礼明\n服务聊天已结束\n昨天\n4月14日09:16\n献@亿企赢总部\n宋献@亿企赢总部\n雷力\n2026-7-11\n服务聊天已结束\n昨天\n你好\n邵楚\n宋献@亿企赢总部\n6-7-11\n宋献@亿企赢总部\n服务聊天已结束\n昨天\nvpn 更换手机,接收验证码\n2026-7-11\n93\n王芳1989\n服务聊天已结束\n没办法接收验证码\n宋献@亿企赢总部\n昨天\n2026-7-11\n周颖慧\n您好,桌面IT支持【8222】为您服务\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n宋献@亿\n2026-7-11\n刘海霞(联系此号)\n一站式运维平台那边提交了更改手机号的工单吗\n服务聊天已结束\n昨天\n登录不上去啊\n宋献@亿企赢总部\n2026-7-11\n宋献@亿企赢总部\n汤宇航\n2026-7-11\n在外面出差,当下要演示vpn登录不上去\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n贾天培\n2026-7-11\n服务聊天已结束\n昨天\n新的手机号多少\n18069691987\n安彤\n献@亿企赢总部\n2026-7-11\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n目前已经给你修改了,你登入后,有空补一下工单\n宋梓琦\n好的\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n宋献@亿企\n2026-7-11\n2026-7-1\n99+\n尚冬洋\n昨天\n宋献@亿企赢总部\n登入成功了吗\n服务聊天已结束\n2026-7-11\n宋献@亿企赢总部\n==\n2026-7-11\n徐炜\n服务聊天已结束\n昨天\n可以了\n宋献@亿企赢总部\n2026-7-11\n宋献@亿企赢总部\n10\n2026-7-11\n信露\n昨天\n服务聊天已结束\n好的,欢迎您的咨询,后续遇到问题可以优先选择咨询\n智能IT助手(原桌面IT支持)\n闫莹颖\n如果回复有什么错误可以反馈给我们,我们将持续优化为您提供更好的服务!\nE\n服务聊天已结束\n昨天\n服务聊天已结束\n宋献@亿企赢总部\n钱恒双\n2026-7-11\n昨天15:56\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n舒礼明进入了服务聊天\n张思琦(\n火绒的管理密码是多少\n宋献@亿企赢总部\n昨天\n宋献@亿企赢总部\n服务聊天已结束\n2026-7-11\n2026-7-11\n我想关闭下U盘保护\n32\n李圣伟(常用号)\n企\n服务聊天已结束\n昨天\n11\n宋献@亿企赢总部\n2026-7-11\n您好,桌面IT支持【8222】为您服务\n9\n有问题请先问*智能IT助手*..\n\n庄欣邀请季永盛加入了群... 昨天\n你好\n宋献@亿企赢总部\n2026-7-11\n宋献@亿企赢总部\n2026-7-11\n何小枚22674\n你撤回了一条消息\n服务聊天已结束\n昨天\n提示不对\n宋献@亿企赢总部\n宋献@亿\n张鹏\n2026-7-11\n2026-7\n服务聊天已结束\n昨天\n你撤回了一条消息\n宋献@亿企赢总部\n云盘相关问题处理群\n宋献@亿企赢总部\n2026-7-11\n2026-7-11\n这个呢\n张鹏:好的\n昨天\n可以了\n看不见\n许松\n宋献@亿企赢总部\n昨天\n2026-7-11\n宋献@亿企赢总部\n服务聊天已结束\n欢迎您的咨询,后续遇到问题可以优先选择咨询\n智能IT助手(原桌面IT支持)\n侯品品\n如果回复有什么错误可以反馈给我们,我们将持续优化为您提供更好的服务!\n服务聊天已结束\n昨天\n昨天16:10\n缪春德\n服务聊天已结束\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n宋献@亿企赢总部\n2026-7-11\n2026-7-11\n吴美玲\n服务聊天已结束\n星期四\n宋献@亿企赢总部\n2026-7-11\n宋献@亿企赢总音\n有问题请先问\"智能IT助手\"...\n2026-7-11\n陈文锋:哦哦\n星期四\n③\nx\n目\n\n00\nN\n叶红卫\n服务聊天已结束\n星期四\n曾刘拴\n服务聊天已结束\n星期四\n企微服务商权限管理-亿企...\n李学鹏: [OK]\n星期四"
|
||||
],
|
||||
"screenshot_count": 1
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"screenshots": [
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\chat_c2_01_top.png",
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\chat_c2_02.png",
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\chat_c2_03.png"
|
||||
],
|
||||
"ocr_texts": [
|
||||
"Q 搜索\n+\n雷力\n重庆技术团队\n系统运维岗\n舒礼明\n服务聊天已结束\n昨天\n昨天15:42\n献@亿企赢总部\n宋献@亿企赢总部\n雷力进入了服务聊天\n2026-7-11\n雷力\n2026-7-11\n服务聊天已结束\n昨天\n6月工资清单自助查询提醒\n宋献@亿企赢总部\n邵楚\n2026-07-10 人力资源共享服务中心\n2026-7-11\n服务聊天已结束\n昨天\n各位同事好:\n6月工资清单已开放查询,工资将于今日发放,具体到账时间请以银行为准。\n王芳1989\n服务聊天已结束\n昨天\n查询路径:EHR--我的工资--我的月工资清单\n(因数据安全需要,工资清单仅支持PC端查询)\nEHR链接: http://ehr.dc.servyou-it.com/HRis/Loginx.aspx\n周颖慧\n说明:\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n1、新疆部分同事及联营云工资清单请按照区域通知的为准。\n2026-7-11\n2、登录EHR系统需连接公司内网,请先接入公司WI-FI或VPN;VPN请咨询企微服务号-桌面IT支\n持,发送VPN”即可获取申请和使用指南,如有疑问可转人工服务。\n刘海霞(联系此号)\n服务聊天已结束\n昨天\n你好,如何连接vpn访问公司内网\n宋献@亿企赢总部\n2026-7-11\n汤宇航\n您好,桌面IT支持【8222】为您服务\n服务聊天已结束\n昨天\n赢总部\n宋献@亿企赢总部\n2026-7-11\n贾天培\n零信任aTurst——员工使用指南\n服务聊天已结束\n昨天\n郑明扬(已离职)创建\n宋献@亿企赢总部\n1. 账号申请开通\n安彤\n2026-7-11\n银据安全管理要求VPN账号需要核据需要中请开课,VPN除号密码、认证\n服务聊天已结束\n昨天\n独立配置,与其他系统账号密码不同;\n一站式运续平台-VPN号中请链线\n宋献@亿企赢总部\n8\ntp:/devps.dc.erycu-.com/t/w..\n1. 未开通账号员工可通过\n宋梓琦\n2026-7-11\n服务聊天已结束\n昨天\n99+\n尚冬洋\n宋献@亿企赢总部\n宋献@亿企赢总部\n可以先提交申请账号\n服务聊天已结束\n昨天\n2026-7-11\n2026-7-11\n7/10 15:45:54\n徐炜\n昨天\n宋献@亿企赢总部\n服务聊天已结束\n2026-7-11\nB\n10\n信露\n无法访问此网站\n服务聊天已结束\n昨天\n检\n, TGin\n闫莹颖\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n2026-7-11\n钱恒双\n服务聊天已结束\n昨天\n提交账号申请的链接都进不去呢\n宋献@亿企赢总部\n张思琦(\n2026-7-11\n2026-7-11\n服务聊天已结束\n昨天\n我没在总部办公\n企赢总部\n32\n李圣伟(常用号)\n11\n昨天\n3.\n可以在手机企微端-【工作台】-【一站式运维平台】-【服务台】-【服务目\n服务聊天已结束\n录】-【IT支持服务】下,进行【员工零信任(原vpn)账号申请】(无需登入vpn\n可直接打开)\n有问题请先问\"智能IT助手\"..\n宋献@亿企赢总部\n 一站式运维平台(v20260409...\n庄欣邀请季永盛加入了群... 昨天\n2026-7-11\n<\n服务目录\n何小枚22674\n请输入内容\n服务聊天已结束\n昨天\n2\n宋献@亿企赢\n收藏的流程\n员工服务入口\n2026-7-11\nGM-地市服务\nIT设备升级与硬件维修\n☆>\n张鹏\n昨天\nIT支持服务\n终强设备网络准入申请\n服务聊天已结束\n宋献@亿企赢总部\n员工零信任(原VPN)账号申请\nC题-标准退维...\n云盘相关问题处理群\n2026-7-11\n活动与会议技术支持\n☆>\n0题-诸询验厅\n张鹏:好的\n昨天\n员工IT支持与故障接修\n集团内部服务\n宋献@亿企赢总部\n运维支持入口\n看不见\n许松\n需求反馈用有\n2026-7-11\nIT支持知识库维护\ny\n服务聊天已结束\n昨天\n办公电脑系统重置\n★ >\n会议设备远检记录\n*>\n侯品品\n宋献\n打印设备述检记录\n备>\n服务聊天已结束\n昨天\n202\n保密设备远检记录\n☆>\n缪春德\n③\nC\n回\n8\nO\n昨天\n宋献@亿企赢总部\n服务聊天已结束\n好的手机可以打开我试试\n2026-7-11\n昊美玲\n服务聊天已结束\n星期四\n宋献@亿企赢总部\n还有别的问题吗?\n2026-7-11\n有问题请先问*智能IT助手*...\n品\n00\n陈文锋:哦哦\n星期四\nn\n叶红卫\n服务聊天已结束\n星期四\n曾刘拴\n服务聊天已结束\n星期四\n企微服务商权限管理-亿企...\n李学鹏: [OK]\n星期四",
|
||||
"Q 搜索\n+\n雷力\n重庆技术团队系统运维岗\n舒礼明\n查询路径:EHR--我的工资--我的月工资清单\n服务聊天已结束\n昨天\n(因数据安全需要,工资清单仅支持PC端查询)\nEHR链接: http://ehr.dc.servyou-it.com/HRis/Loginx.aspx\n献@亿企赢总部\n说明:\n026-7-11\n雷動\n0\n1、新疆部分同事及联营云工资清单请按照区域通知的为准。\n服务聊天已结束\n昨天\n2、登录EHR系统需连接公司内网,请先接入公司WI-FI或VPN;VPN清咨询企微服务号-桌面IT支\n持,发送VPN”即可获取申请和使用指南,如有疑问可转人工服务。\n宋献@亿企赢总部\n邵楚\n2026-7-11\n你好,如何连接vpn访问公司内网\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n您好,桌面IT支持【8222】为您服务\n93\n王芳1989\n2026-7-11\n服务聊天已结束\n昨天\n零信任aTurst——员工使用指南\n周颖慧\n宋献@\n郑明扬(已离职)创建\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n2026\n2026-7-11\n1. 账号申请开通\n根据安全管理要求VPN张号需要积据需要申请开通,VPN账号密码、认证\n刘海霞(联系此号)\n推立配置,与其他系统账号密码不同;\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n一站式运播平台-VPN号@解续\n2026-7-11\n1. 未开通账号员工可通过\nvtp/oevps.cc.serye-It.oom/tt/w..\n汤宇航\n服务聊天已结束\n昨天\n赢总部\n宋献@亿企赢总部\n2026-7-11\n可以先提交申请账号\n贾天培\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n2026-7-11\n安彤\n服务聊天已结束\n昨天\n图\n无法访问此网站\n宋献@亿\n宋梓琦\n\n2026-7-\n服务聊天已结束\n昨天\nuRss, wdin w\n99+\n18\n尚冬洋\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n20\n徐炜\n提交账号申请的链接都进不去呢\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n信露\n我没在总部办公\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n2026\n3.\n可以在手机企微端-【工作台】-【一站式运维平台】-【服务台】-【服务目\n闫莹颖\n昨天\n录】-【IT支持服务】下,进行【员工零信任(原vpn)账号申请】(无需登入vpn\n服务聊天已结束\n可直接打开)\n宋献@亿企赢总部\n2026-7-11\n一站式运维平台(v20260409...\n钱恒双\n昨天\n<\n服务目录\n服务聊天已结束\n请输入内容\n宋献@亿企赢总部\n张思琦(\n2026-7-11\n农藏的洗程\n员工服务入口\n服务聊天已结束\n昨天\nC题-她市服务\nIT设备升级与硬件维修\n☆>\n企赢总部\n32\nT支持服务\n待强设备网格渔入申请\n李圣伟(常用号)\n11\n昨天\nG题-标准运\n员工零信任(原VPN)账号申请\n服务聊天已结束\n项必成\n活动与会议技术支持\n★>\n0题-咨询转厅\n有问题请先问*智能IT助手\".\n员工IT支持与政障报修\n20\n宋献@亿企赢总部\n集团内部服务\n区\n庄欣邀请季永盛加入了群... 昨天\n2026-7-11\n运维支持入口\n需求反馈所有.\nIT支持知识库维护\n由\ny\n何小枚22674\n办公电脑系统重置\n服务聊天已结束\n昨天\n宋献@亿企赢\n会议设备通检记录\n☆>\n2026-7-11\n项必成\n打印设备述检记录\n☆>\n张鹏\n昨天\n保密设备远检记录\n☆>\n服务聊天已结束\n宋献@亿企赢总部\n2026-7-11\n③\n\n回\n8\nre\n云盘相关问题处理群\n张鹏:好的\n昨天\n好的手机可以打开 我试试\n宋献@亿企赢总部\n看不见\n许松\n2026-7-11\n宋献@亿企赢总部\n昨天\n2026-\n服务聊天已结束\n还有别的问题吗?\n没有了谢谢\n侯品品\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n欢迎您的咨询,后续遇到问题可以优先选择咨询\n缪春德\n智能IT助手(原桌面IT支持)\nO\n昨天\n宋献@亿企赢总部\n如果回复有什么错误可以反馈给我们,我们将持续优化为您提供更好的服务!\n服务聊天已结束\n2026-7-11\n昨天16:02\n吴美玲\n服务聊天已结束\n星期四\n宋献@亿企赢总部\n服务聊天已结束\n宋献@亿企赢总部\n2026-7-11\n2026-7-11\n有问题请先问\"智能IT助手\"..\n③\nx\n国\n00\n陈文锋:哦哦\n星期四\nN\n叶红卫\n服务聊天已结束\n星期四\n曾刘拴\n服务聊天已结束\n星期四\n4\n企微服务商权限管理-亿企...\n李学鹏: [OK]\n星期四",
|
||||
"Q 搜索\n+\n雷力\n重庆技术团队\n系统运维岗\n舒礼明\n查询路径:EHR--我的工资--我的月工资清单\n服务聊天已结束\n昨天\n(因数据安全需要,工资清单仅支持PC端查询)\nEHR链接: http://ehr.dc.servyou-it.com/HRIs/Loginx.aspx\n献@亿企赢总部\n说明:\n026-7-11\n雷動\n1、新疆部分同事及联营云工资清单清按照区域通知的为准\n服务聊天已结束\n昨天\n2、登录EHR系统需连接公司内网,请先接入公司WI-FI或VPN;VPN清咨询企微服务号-桌面IT支\n持,发送VPN”即可获取申请和使用指南,如有疑问可转人工服务。\n宋献@亿企赢总部\n邵楚\n2026-7-11\n服务聊天已结束\n你好,如何连接vpn访问公司内网\n昨天\n您好,桌面IT支持【8222】为您服务\n王芳1989\n宋献@亿企赢总部\n2026-7-11\n服务聊天已结束\n昨天\n零信任aTurst——员工使用指南\n周颖慧\n宋献@\n郑明扬(已离职)创建\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n2026\n2026-7-11\n1. 账号申请开通\n根据安全管理要求VPN张号需要根据需要章请开通,VPN账号密码、认证\n刘海霞(联系此号)\n独立配置,与其他系统账号密码不同;\n服务聊天已结束\n宋献@亿企赢总部\n一站式运播平台-VPN账号@话链续\n昨天\nvttp:/loevops.dc.seryu-I.omy/tM/w..\n2026-7-11\n1. 未开通账号员工可通过\n汤宇航\n服务聊天已结束\n昨天\n赢总部\n宋献@亿企赢总部\n2026-7-11\n可以先提交申请账号\n贾天培\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n2026-7-11\n安彤\n服务聊天已结束\n昨天\nB\n宋献@亿\n无法访同此网站\n宋梓琦\n2026-7-\nec\n服务聊天已结束\n昨天\nSIROTA\n99+\n尚冬洋\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n20\n徐炜\n提交账号申请的链接都进不去呢\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n10\n詹露\n我没在总部办公\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n2026\n闫莹颖\n3.\n可以在手机企微端-【工作台】-【一站式运维平台】-【服务台】-【服务目\n昨天\n录】-【IT支持服务】下,进行【员工零信任(原vpn)账号申请】(无需登入vpn\n服务聊天已结束\n可直接打开)\n宋献@亿企赢总部\n2026-7-11\n 一站式运维平台(v20260409...\n钱恒双\n昨天\n服务目录\n服务聊天已结束\n请输入内容\n宋献@亿企赢总部\n张思琦(\n2026-7-11\n收藏约武程\n昨天\n员工服务入口\n服务聊天已结束\nCE-地市服务\nIT设备升级与硬件维修\n企赢总部\n32\nT支持服务\n终端设备网福准入申请\n李圣伟(常用号)\n11\n昨天\n员工零信任(预VPN)班号申请\n服务聊天已结束\n0级-标准运.\n活动与会议技术支持\n0端-请询证件\n有问题请先问*智能IT助手\"...\n员工IT支持与故障按修\n20\n\n宋献@亿企赢总部\n集团内部服务\n庄欣邀请季永盛加入了群... 昨天\n2026-7-11\n运维支持入口\n需求反馈(所有.\nIT支持知识库维护\n查\ny\n何小枚22674\n昨天\n办公电脑系统重置\n★\n服务聊天已结束\n宋献@亿企赢\n会议设备送检记录\n☆>\n2026-7-11\n打印设备送检记录\n☆>\n张鹏\n服务聊天已结束\n昨天\n保密设备远检记录\n☆>\n宋献@亿企赢总部\n2026-7-11\n③\nG\n回\n8\nZ\n云盘相关问题处理群\n张鹏:好的\n昨天\n好的手机可以打开 我试试\n宋献@亿企赢总部\n看不见\n许松\n宋献@亿企赢总部\n2026-7-11\n昨天\n2026-\n服务聊天已结束\n还有别的问题吗?\n没有了谢谢\n侯品品\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n欢迎您的咨询,后续遇到问题可以优先选择咨询\n缪春德\n智能IT助手(原桌面IT支持)\nHO\n昨天\n宋献@亿企赢总部\n如果回复有什么错误可以反馈给我们,我们将持续优化为您提供更好的服务!\n服务聊天已结束\n2026-7-11\n昨天16:02\n吴美玲\n服务聊天已结束\n星期四\n宋献@亿企赢总部\n服务聊天已结束\n宋献@亿企赢总部\n2026-7-11\n2026-7-11\n有问题请先问\"智能IT助手\"...\n品\n同\n00\n陈文锋:哦哦\n星期四\n5\n叶红卫\n服务聊天已结束\n星期四\n曾刘拴\n服务聊天已结束\n星期四\n4\n企微服务商权限管理-亿企...\n李学鹏: [OK]\n星期四"
|
||||
],
|
||||
"screenshot_count": 3
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"screenshots": [
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\chat_c3_01_top.png",
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\chat_c3_02.png",
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\chat_c3_03.png",
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\chat_c3_04.png",
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\chat_c3_05.png",
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\chat_c3_06.png"
|
||||
],
|
||||
"ocr_texts": [
|
||||
"Q 搜索\n+\n二土目\n舒礼明\n事事有回应件件有着落\n服务聊天已结束\n昨天\n昨天14:58\n献@亿企赢总部\n宋献@亿企赢总部\n雷力\n2026-7-11\n服务聊天已结束\n昨天\n亲亲我这个文件为什么都删不掉\n企赢总部\n邵楚\n2026-7-11\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\neas\n王芳1989\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n您好,桌面IT支持【8222】为您服务\n周颖慧\n高总部\n昨天\n文件夹正在使用\n×\n服务聊天已结束\n宋献@亿企赢总\n操作无法完成,因为其中的文件夹或文件已在另一程序中打开\n2026-7-11\n刘海霞(联系此号)\n服务聊天已结束\n昨天\n请关闭该文件夹或文件,然后重试。\neas\n宋献@亿企赢总部\n创建日期:2023-06-13 10:39\n汤宇航\n2026-7-11\n服务聊天已结束\n昨天\n重试(R)\n取消\n亿企赢总部\n7-11\n贾天培\n简略信息\n服务聊天已结束\n昨天\n亿企\n安彤\n我没有在用的文件呢\n7-11\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n宋梓琦\n宋献@亿企赢总部\n金蝶吗\n服务聊天已结束\n昨天\n2026-7-11\n是的\n2026-7-\n99+\n尚冬洋\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n宋献@亿企赢总部\n2026-7-11\n2026-7-11\n你重启一下电脑再删除一下试试\n徐炜\n试过很多次了都不行我都给忘记了\n赢总部\n服务聊天已结束\n昨天\n2026-7-11\n宋献@亿企赢总部\n10\n詹露\n2026-7-11\n你金蝶还在用吗\n服务聊天已结束\n昨天\n没有的\n宋献@亿企赢总部\n2\n闫莹颖\n2026-7-11\n服务聊天已结束\n昨天\n系统也没开过呢\n钱恒双\n2026-7-11\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n那就要看一下系统进程有没有相关的进程了\n您能帮我远程看看么\n张思琦(\n宋献@亿企赢总部\n2026-7-11\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n或者你试试卸载金蝶之后再删除\n李圣伟(常用号)\n企赢总部\n11\n/2部\n品念限\n天\n全1\nb-7-11\n服务聊天已结束\n20\n有问题请先问*智能IT助手*...\n7\n庄欣邀请季永盛加入了群... 昨天\n宋献@亿企赢总部\n昨天15:20\n宋献@亿企赢总部\n2026-7-11\n邵楚进入了服务聊天\n2026-7-11\n何小枚22674\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n现在可以吗?\n张鹏\n2026-7-11\n服务聊天已结束\n昨天\n已经卸载完成了\n还是删不掉\n宋献@亿企赢总部\nPZ\n云盘相关问题处理群\n2026-7-11\n张鹏:好的\n昨天\n许松\n宋献@亿企赢总部\n火绒有吗?\n看不见\n宋献@亿企赢\n服务聊天已结束\n昨天\n2026-7-11\n2026-7-11\n安全工具\n2日播中心\n三\nX\n侯品品\n包含属习修复,系统修复等各项扩展工具\n服务聊天已结束\n昨天\n宋献\n202\n火\n+\n缪春德\n流月修复\n系统修复\n弹出拦机\nHO\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n8\n2026-7-11\n8\n吴美玲\n启动项管理\n垃圾清理\n文件粉碎\ntB\n服务聊天已结束\n星期四\n宋献@亿企赢总部\n円\n2026-7-11\n有问题请先问\"智能IT助手\"..\n石键管理\n新网修复\n流量监控\n陈文锋:哦哦\nx\n星期四\n同\n\n00\nN\n叶红卫\n服务聊天已结束\n星期四\n曾刘拴\n服务聊天已结束\n星期四\n4\n企微服务商权限管理-亿企...\n李学鹏: [OK]\n星期四",
|
||||
"十\n品定\n舒礼明\n事事有回应件件有着落\n服务聊天已结束\n昨天\n献@亿企赢总部\n雷力\n宋献@亿企赢总部\n金蝶吗\n2026-7-11\n服务聊天已结束\n昨天\n2026-7-11\n是的\n邵楚\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n宋献@亿企赢总部\n你重启一下电脑再删除一下试试\n王芳1989\n试过很多次了都不行我都给忘记了\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n2026-7-11\n周颖慧\n服务聊天已结束\n昨天\n@亿企赢总部\n你金蝶还在用吗\n没有的\n26-7-11\n宋献@亿企赢总部\n刘海霞(联系此号)\n2026-7-11\n服务聊天已结束\n昨天\n系统也没开过呢\n宋献@亿企赢总部\n2026-7-11\n汤宇航\n宋献@亿企赢总部\n2026-7-11\n服务聊天已结束\n昨天\n全赢总部\n那就要看一下系统进程有没有相关的进程了\n贾天培\n您能帮我远程看看么\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n安彤\n宋献@亿企赢总部\n或者你试试卸载金蝶之后再删除\n服务聊天已结束\n昨天\n2026-7-11\n宋献\n昨天15:14\n2026-7-\n宋梓琦\n服务聊天已结束\n服务聊天已结束\n昨天\n宋献@亿企\n昨天15:20\n宋献@亿\n2026-7-11\n2026-7-\n99+\n尚冬洋\n邵楚进入了服务聊天\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n2026-7-11\n宋献@亿企赢总部\n2026-7-11\n现在可以吗?\n徐炜\n昨天\n已经卸载完成了\n服务聊天已结束\n宋献@亿企赢总部\n2026-7-11\n宋献@亿企赢总部\n10\n詹露\n还是删不掉\n2026-7-11\n服务聊天已结束\n昨天\nE\n闫莹颖\n宋献@亿企赢总部\n火绒有吗?\n昨天\n2026-7-11\n服务聊天已结束\n安全工具\n2日连接中心\n三\n钱恒双\n宋献@亿企赢总部\n昨天\n2026-7-11\n包含漏习修复,系统修复等各项扩震工具\n服务聊天已结束\n火\n张思琦(\n宋献@亿企赢总部\n习修复\n系统修复\n弹出二数\n服务聊天已结束\n昨天\n2026-7-11\n88\n32\n李圣伟(常用号)\n企赢总部\n启助项管理\n垃圾清理\n文件粉碎\n服务聊天已结束\n昨天\n11\nθ\n有问题请先问\"智能IT助手\".\n右键管理\n新网修复\n流量监控\n9\n庄欣邀请季永盛加入了群... 昨天\n宋献@亿企赢总部\n2026-7-11\n何小枚22674\n服务聊天已结束\n昨天\n用这个文件粉碎试试\n宏献@亿企赢总部\n我试试看\n张鹏\n2026-7\n服务聊天已结束\n昨天\n火城安全-文件粉碎\nX\n正在粉碎,请稍候...\n2\n影停\n宋献@亿企赢总部\n云盘相关问题处理群\n正在粉钟: C\\Users\\such\\Desktop\\eas\n2026-7-11\n张鹏:好的\n昨天\n名称\n路径\n操作\nChUserslsuchDesktop\n许松\n6种中\n看不见\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n侯品品\n服务聊天已结束\n昨天\n缪春德\nHO\n服务聊天已结束\n昨天\n新火\n\n排加文件\n宋献@亿企赢总部\n2026-7-11\n吴美玲\n火城安全-文件粉碎\n服务聊天已结束\n星期四\n宋献@亿企赢总\n有问题请先问\"智能IT助手\"...\n2026-7-11\nx\n目\n00\n陈文锋:哦哦\n星期四\n叶红卫\n服务聊天已结束\n星期四\n曾刘拴\n服务聊天已结束\n星期四\na\n企微服务商权限管理-亿企...\n李学鹏:[OK]\n星期四",
|
||||
"搜索\n+\n部定\n高四区服分部(和南)\n主管\n舒礼明\n事事有回应件件有着落\n服务聊天已结束\n昨天\n昨天15:14\n献@亿企赢总部\n雷力\n服务聊天已结束\n宋献@亿企赢总部\n2026-7-11\n2026-7-11\n服务聊天已结束\n昨天\n昨天15:20\n邵楚\n宋献@亿企赢总部\n邵楚进入了服务聊天\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n2026-7-11\n现在可以吗?\n93\n王芳1989\n已经卸载完成了\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n2026-7-11\n周颖慧\n还是删不掉\n服务聊天已结束\n昨天\n宋献@忆企赢总部\n2026-7-11\n宋献@亿企赢总部\n2026-7-11\n火绒有吗?\n刘海霞(联系此号)\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n安全工具\n2日连接中心\ni\nx\n汤宇航\n2026-7-11\n包含属习修复,系统修复等各项扩展工具\n服务聊天已结束\n昨天\n全赢总部\nk\n贾天培\n混月修复\n系统修复\n弹国载\n服务聊天已结束\n昨天\n88\n安彤\n宋献@亿企赢总部\n启动项管理\n垃圾清理\n文件粉碎\n服务聊天已结束\n昨天\n2026-7-11\n宋梓琦\n右键管理\n新网修复\n流量监控\n服务聊天已结束\n昨天\n宋献@亿企赢总\n2026-7-11\n99+\n尚冬洋\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n用这个文件粉碎试试\n宋献@亿企赢总部\n2026-7-11\n2026-7-11\n我试试看\n徐炜\n服务聊天已结束\n昨天\n火绒安全-文件粉碎\n宋献@亿企赢总部\n正在粉碎,请稍候..\n10\n暂师\n2026-7-11\n詹露\n正在粉钟: C\\Users\\such\\Desktop)eas\n服务聊天已结束\n昨天\n名称\n路经\n操作\nCUsers/yuchDesktop\n8种中\nE\n闫莹颖\n服务聊天已结束\n昨天\n钱恒双\n宋献@亿企赢总部\n昨天\n2026-7-11\n服务聊天已结束\n张思琦(\n昨天\n宋献@亿企赢总部\n服务聊天已结束\n\n添加文件\n2026-7-11\n32\n李圣伟(常用号)\n火域安全-文件粉碎\n - ×\n亿企赢总部\n服务聊天已结束\n昨天\n-7-11\n2\n有问题请先问*智能IT助手*...\n庄欣邀请季永盛加入了群... 昨天\n0\n宋献@亿企赢总部\n2026-7-11\n何小枚22674\n昨天\n粉碎失败\n服务聊天已结束\n共解碎1个文件,全部粗碎失数 查面洋情\n宋献@亿\n张鹏\n完成\n2026-7\n服务聊天已结束\n昨天\n宋\n宋献@亿企赢总部\n云盘相关问题处理群\n2026-7-11\n张鹏:好的\n昨天\n\n看不见\n许松\n为啥呀\n宋献@亿企赢总部\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n2026-7-11\n侯品品\n有向日葵吗?我远程试试\n昨天\n宋献@亿企赢总部\n服务聊天已结束\n没呢我现在下一夏\n2026-7-11\n缪春德\nOF\n昨天15:35\n服务聊天已结束\n\n昨天\n宋献@亿企赢总部\n宋献@亿企赢总部\n搜索/法验设备\n618返场高性期版1年送6\n经典\n50\n2026-7-11\n昊美玲\n服务聊天已结束\n星期四\n远程协助本机\n本机识划\n单次验证码\n宋献@亿企赢总音\n有问题请先问\"智能IT助手\"..\n2026-7-11\nO\n品\n目\n00\n陈文锋:哦哦\n星期四\n叶红卫\n服务聊天已结束\n星期四\n曾刘拴\n服务聊天已结束\n星期四\nR\n12\n企微服务商权限管理-亿企...\nON\n李学鹏: [OK]\n星期四",
|
||||
"Q 搜索\n+\n邵楚广西区域服务部(兼湖南)\n主管\n事事有回应件件有着落\n舒礼明\n服务聊天已结束\n昨天\n献@亿企赢总部\n雷力\n右键管理\n新网修复\n流量监控\n2026-7-11\n服务聊天已结束\n昨天\n邵楚\n宋献@亿企赢总部\n2026-7-11\n2026-7-\n服务聊天已结束\n昨天\n用这个文件粉碎试试\n王芳1989\n我试试看\n服务聊天已结束\n昨天\n火域安全·文件粉碎\nx\n周颖慧\n正在粉碎,请稍候...\n暂停\n服务聊天已结束\n正在船钾: C\\Users\\such\\Desktop\\eas\n宋献@亿企赢总部\n昨天\n操作\n2026-7-11\n名称\n路径\n刘海霞(联系此号)\nChUsenlsuchDesktop\nCgi\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n2026-7-11\n汤宇航\n服务聊天已结束\n昨天\n赢总部\n贾天培\n服务聊天已结束\n昨天\n船种而更\n\n湖加文件\n安彤\n宋献@亿企赢总部\n2026-7\n - ×\n2026-7-11\n服务聊天已结束\n昨天\n火绒安全-文件粉碎\n宋梓琦\n宋献@亿\n服务聊天已结束\n昨天\n2026-7-\n0\n99+\n尚冬洋\n服务聊天已结束\n昨天\n宋20\n宋献@亿企赢总部\n粉碎失败\n2026-7-11\n共粉碎1个文件,全部粉碎失数 查看详情\n徐炜\n昨天\n完成\n服务聊天已结束\n宋献@亿企赢总部\n10\n2026-7-11\n詹露\n服务聊天已结束\n昨天\n部\n数终原史\n闫莹颖\n2026-7-11\nE\n为啥呀\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n宋献@亿企赢总部\n钱恒双\n2026-7-11\n2026-7-11\n有向日葵吗?我远程试试\n服务聊天已结束\n昨天\n没呢我现在下一夏\n张思琦(\n宋献@亿企赢总部\n昨天\n2026-7-11\n宋献@亿企赢总部\n服务聊天已结束\n昨天15:35\n2026-7-11\n搜索/值验设备\n618返场高性端版1年送6...\n32\n经典\n新版\n李圣伟(常用号)\n亿企赢总部\n服务聊天已结束\n昨天\n-7-11\n远程协助本机\n有问题请先问\"智能IT助手\"...\n本机识别码\n单次脸证码\n128 089 9530\n庄欣邀请季永盛加入了群... 昨天\n宋献@亿企赢总部\n远程协助他人\n2026-7-11\n何小枚22674\n服务聊天已结束\n昨天\n请输入伙伴识别\n验证码(可为空)\n连接\n远程桌面\n远程文件\n宋献@亿\n张鹏\n618返场\n2026-7\n服务聊天已结束\n昨天\n高性能版\n买1年送6月\n宋献@亿企赢总部\n云盘相关问题处理群\n2026-7-11\n张鹏:好的\n昨天\n看不见\n许松\n我的识别码:1280899530\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n使用向日葵即可对我发起远程协助\n2026-7-11\n向日葵下载地址:http://url.oray.com/tGJdas/\n侯品品\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n向日葵远程控制软件下载_向日葵远程控...\n2026-7-11\n贝锐向日葵远程控制软件官方下载中\n缪春德\n心,提供个人版、企业版、SDK及信...\n10\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n2026-7\n2026-7-11\n昊美玲\n昨天15:45\n服务聊天已结束\n星期四\n宋献@亿企赢总部\n服务聊天已结束\n2026-7-11\n宋献@亿企赢总音\n有问题请先问*智能IT助手*...\n禁进入了服验工\n2026-7-11\nx\n同\n00\n陈文锋:哦哦\n星期四\n5\n叶红卫\n服务聊天已结束\n星期四\n曾刘拴\n服务聊天已结束\n星期四\nR\n企微服务商权限管理-亿企...\n李学鹏:[OK]\n星期四",
|
||||
"Q 搜索\n邵楚\n广西区域服务部(兼湖南)\n主管\n+\n事事有回应件件有着落\n舒礼明\n路径\n操作\n服务聊天已结束\n昨天\n名称\nCUsers/suchDesktop\n种中\neas\n献@亿企赢总部\n026-7-11\n雷力\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n邵楚\n2026-7-11\n服务聊天已结束\n昨天\n王芳1989\n\n添加文件\n服务聊天已结束\n昨天\n火城安全-文件粉碎\n - ×\n周颖慧\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n刘海霞(联系此号)\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n汤宇航\n粉碎失败\n2026-7-11\n服务聊天已结束\n昨天\n共粉碎1个文件,全部粒碎失数 查石洋情\n亿企赢总部\n1\n完成\n7-11\n贾天培\n服务聊天已结束\n昨天\n安彤\n宋献@亿企赢总部\n\n服务聊天已结束\n昨天\n2026-7-11\n为啥呀\n宋梓琦\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n宋献@亿\n有向日葵吗?我远程试试\n99+\n尚冬洋\n昨天\n没呢我现在下一夏\n宋献@亿企赢总部\n服务聊天已结束\n2026-7-11\n徐炜\n昨天15:35\n企赢总部\n服务聊天已结束\n昨天\n搜索/连接设备\n618返场高性产版1年送6...\n经典\n1吸\n宋献@亿企赢总部\n10\n信露\n2026-7-11\n远程协助本机\n服务聊天已结束\n昨天\n本机识码\n单次验证码\n128 089 9530\n闫莹颖\n服务聊天已结束\n昨天\n远程协助他人\n钱恒双\n请输入伙伴识司\n验证码(可为)\n连接\n宋献@亿企赢总部\n昨天\n远程桌面\n远程文件\n2026-7-11\n服务聊天已结束\n618通场\n高性能版\n张思琦(\n买1年送6月\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n2026-7-11\n李圣伟(常用号)\n企\n亿企赢总部\n服务聊天已结束\n昨天\n11\n2026-7-11\n我的识别码:1280899530\n9\n有问题请先问*智能IT助手*...\n使用向日葵即可对我发起远程协助\n\n庄欣邀请季永盛加入了群... 昨天\n向日葵下载地址:http://url.oray.com/tGJdas/\n宋献@亿企赢总部\n向日葵远程控制软件下载 向日葵远程控..\n2026-7-11\n何小枚22674\n服务聊天已结束\n昨天\n贝锐向日葵远程控制软件官方下载中\n心,提供个人版、企业版、SDK及信...\n献@亿企赢总部\n2026-7-11\n宋献@亿\n张鹏\n2026-7\n服务聊天已结束\n昨天\n昨天15:45\n宋献@亿企赢总部\n宋献@亿企赢总部\n云盘相关问题处理群\n2026-7-11\n服务聊天已结束\n2026-7-11\n张鹏:好的\n昨天\n邵楚进入了服务聊天\n看不见\n许松\n宋献@亿企赢总部\n昨天\n2026-7-11\n宋献@亿企赢总部\n服务聊天已结束\n2026-7-11\n好了\n好的麻烦亲亲了\n侯品品\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n026-7-11\n欢迎您的咨询,后续遇到问题可以优先选择咨询\n缪春德\n智能IT助手(原桌面IT支持)\nHOF\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n如果回复有什么错误可以反馈给我们,我们将持续优化为您提供更好的服务!\n2026-7-11\n昨天15:58\n2026-1\n吴美玲\n服务聊天已结束\n星期四\n服务聊天已结束\n宋献@亿企赢总部\n宋献@亿企赢总音\n2026-7-11\n有问题请先问\"智能IT助手\"...\n2026-7-11\n陈文锋:哦哦\n星期四\nO\nX\n同\n00\nN\n叶红卫\n服务聊天已结束\n星期四\n曾刘拴\n服务聊天已结束\n星期四\n企微服务商权限管理-亿企..\n李学鹏:[OK]\n星期四",
|
||||
"Q 搜索\n邵楚\n广西区域服务部(兼湖南)\n主管\n十\n事事有回应件件有着落\n舒礼明\n路径\n操作\n服务聊天已结束\n昨天\n名称\nCUserslsuchDesktop\n中\nAas\n献@亿企赢总部\n南\n026-7-11\n雷力\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n邵楚\n2026-7-11\n服务聊天已结束\n昨天\n93\n王芳1989\n添部文件\n服务聊天已结束\n昨天\n和牌历史\n周颖慧\n火城安全-文件粉碎\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n刘海霞(联系此号)\n服务聊天已结束\n昨天\n0\n宋献@亿企赢总部\n汤宇航\n粉碎失败\n2026-7-11\n服务聊天已结束\n昨天\n共粉碎1个文件,全部阳鲜失数 查看详情\n亿企赢总部\n完成\n7-11\n贾天培\n服务聊天已结束\n昨天\n安彤\n宋献@亿企赢总部\n历\n服务聊天已结束\n昨天\n2026-7-11\n为啥呀\n宋梓琦\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n宋献@亿\n有向日葵吗?我远程试试\n99+\n尚冬洋\n服务聊天已结束\n昨天\n没呢我现在下一夏\n宋献@亿企赢总部\n2026-7-11\n徐炜\n昨天15:35\n企赢总部\n服务聊天已结束\n昨天\n搜术/连接设备\n618返场高性期版1年送6..\n经典\n新级\n0\n宋献@亿企赢总部\n10\n詹露\n2026-7-11\n远程协助本机\n服务聊天已结束\n昨天\n本机识的\n单次验证码\n128 089 9530\n闫莹颖\n服务聊天已结束\n昨天\n远程协助他人\n钱恒双\n请输入伙伴识别解\n验证码(可为空)\n连接\n宋献@亿企赢总部\n昨天\n识程桌面\n远程文件\n2026-7-11\n服务聊天已结束\n618商场\n高性能版\n张思琦(\n买1年送6月\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n2026-7-11\n李圣伟(常用号)\n亿企赢总部\n服务聊天已结束\n昨天\n2026-7-11\n我的识别码:1280899530\n2\n有问题请先问*智能IT助手*...\n使用向日葵即可对我发起远程协助\n\n庄欣邀请季永盛加入了群... 昨天\n向日葵下载地址:http://url.oray.com/tGJdas/\n宋献@亿企赢总部\n向日葵远程控制软件下载 向日葵远程控...\n2026-7-11\n何小枚22674\n服务聊天已结束\n昨天\n贝锐向日葵远程控制软件官方下载中\n心,提供个人版、企业版、SDK及信...\n献@亿企赢总部\n2026-7-11\n宋献@亿\n张鹏\n2026-7\n服务聊天已结束\n昨天\n昨天15:45\n宋献@亿企赢总部\n宋献@亿企赢总部\n云盘相关问题处理群\n2026-7-11\n服务聊天已结束\n2026-7-11\n张鹏:好的\n昨天\n邵楚进入了服务聊天\n看不见\n许松\n宋献@亿企赢总部\n2026-7-11\n宋献@亿企赢总部\n服务聊天已结束\n昨天\n好了\n2026-7-11\n好的麻烦亲亲了\n侯品品\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n026-7-11\n欢迎您的咨询,后续遇到问题可以优先选择咨询\n缪春德\n智能IT助手(原桌面IT支持)\nO\n服务聊天已结束\n昨天\n宋献@亿企赢总部\n如果回复有什么错误可以反馈给我们,我们将持续优化为您提供更好的服务!\n2026-7-11\n昨天15:58\n2026-7\n吴美玲\n服务聊天已结束\n星期四\n服务聊天已结束\n宋献@亿企赢总部\n宋献@亿企赢总音\n2026-7-11\n有问题请先问\"智能IT助手\"...\n2026-7-11\n陈文锋:哦哦\n星期四\n①\nX\n目\n00\nN\n叶红卫\n服务聊天已结束\n星期四\n曾刘拴\n服务聊天已结束\n星期四\nH\n企微服务商权限管理-亿企...\n李学鹏: [OK]\n星期四"
|
||||
],
|
||||
"screenshot_count": 6
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 172 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 176 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 182 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 177 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 180 KiB |
@@ -0,0 +1,7 @@
|
||||
13834466
|
||||
2560
|
||||
-323
|
||||
1080
|
||||
1920
|
||||
3240
|
||||
637
|
||||
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 564 KiB |
|
After Width: | Height: | Size: 564 KiB |
|
After Width: | Height: | Size: 564 KiB |
|
After Width: | Height: | Size: 564 KiB |
|
After Width: | Height: | Size: 564 KiB |
|
After Width: | Height: | Size: 564 KiB |
|
After Width: | Height: | Size: 564 KiB |
@@ -0,0 +1,570 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
IM Chat Export v6 - AHK + BitBlt + OCR
|
||||
Uses AutoHotkey for window activation/scrolling (bypasses Python foreground lock),
|
||||
PrintWindow for layout analysis, BitBlt for content capture, PaddleOCR for text.
|
||||
|
||||
Usage:
|
||||
python im_chat_export_v6.py --start 1 --count 3 --output ./chat_export
|
||||
python im_chat_export_v6.py --start 4 --count 5 --deep --output ./chat_export
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
import json
|
||||
import ctypes
|
||||
import subprocess
|
||||
import argparse
|
||||
import numpy as np
|
||||
from pathlib import Path
|
||||
from datetime import datetime
|
||||
|
||||
# --- win32 imports (do NOT import pyautogui - it pollutes DPI awareness) ---
|
||||
import win32gui
|
||||
import win32ui
|
||||
import win32con
|
||||
import win32api
|
||||
|
||||
from PIL import Image, ImageChops, ImageStat, ImageDraw
|
||||
|
||||
# --- Constants ---
|
||||
AHK_EXE = r"C:\Program Files\AutoHotkey\v2\AutoHotkey64.exe"
|
||||
AHK_SCRIPT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "scroll_helper.ahk")
|
||||
WINDOW_TITLE_KEYWORD = "智能IT助手"
|
||||
|
||||
# PW_RENDERFULLCONTENT = 2
|
||||
PW_RENDERFULLCONTENT = 2
|
||||
|
||||
|
||||
def find_im_window():
|
||||
"""Find the WeChat Work IM chat window by title."""
|
||||
results = []
|
||||
|
||||
def callback(hwnd, _):
|
||||
if win32gui.IsWindowVisible(hwnd):
|
||||
title = win32gui.GetWindowText(hwnd)
|
||||
if title and WINDOW_TITLE_KEYWORD in title:
|
||||
results.append((hwnd, title))
|
||||
return True
|
||||
|
||||
win32gui.EnumWindows(callback, None)
|
||||
return results
|
||||
|
||||
|
||||
def capture_printwindow(hwnd, save_path=None):
|
||||
"""Capture window content via PrintWindow API - works even if window not in foreground."""
|
||||
left, top, right, bottom = win32gui.GetClientRect(hwnd)
|
||||
width = right - left
|
||||
height = bottom - top
|
||||
if width <= 0 or height <= 0:
|
||||
return None
|
||||
|
||||
hwnd_dc = win32gui.GetDC(hwnd)
|
||||
mfc_dc = win32ui.CreateDCFromHandle(hwnd_dc)
|
||||
save_dc = mfc_dc.CreateCompatibleDC()
|
||||
|
||||
bmp = win32ui.CreateBitmap()
|
||||
bmp.CreateCompatibleBitmap(mfc_dc, width, height)
|
||||
save_dc.SelectObject(bmp)
|
||||
|
||||
result = ctypes.windll.user32.PrintWindow(hwnd, save_dc.GetSafeHdc(), PW_RENDERFULLCONTENT)
|
||||
|
||||
bmpinfo = bmp.GetInfo()
|
||||
bmpstr = bmp.GetBitmapBits(True)
|
||||
img = Image.frombuffer('RGB', (bmpinfo['bmWidth'], bmpinfo['bmHeight']),
|
||||
bmpstr, 'raw', 'BGRX', 0, 1)
|
||||
|
||||
if save_path:
|
||||
img.save(save_path)
|
||||
|
||||
# Cleanup
|
||||
win32gui.DeleteObject(bmp.GetHandle())
|
||||
save_dc.DeleteDC()
|
||||
mfc_dc.DeleteDC()
|
||||
win32gui.ReleaseDC(hwnd, hwnd_dc)
|
||||
|
||||
return img
|
||||
|
||||
|
||||
def capture_bitblt(hwnd, save_path=None):
|
||||
"""Capture screen region matching window client area via BitBlt - shows actual visible content."""
|
||||
cli_left, cli_top = win32gui.ClientToScreen(hwnd, (0, 0))
|
||||
left, top, right, bottom = win32gui.GetClientRect(hwnd)
|
||||
width = right - left
|
||||
height = bottom - top
|
||||
if width <= 0 or height <= 0:
|
||||
return None
|
||||
|
||||
screen_dc = win32gui.GetDC(0)
|
||||
mfc_dc = win32ui.CreateDCFromHandle(screen_dc)
|
||||
save_dc = mfc_dc.CreateCompatibleDC()
|
||||
|
||||
bmp = win32ui.CreateBitmap()
|
||||
bmp.CreateCompatibleBitmap(mfc_dc, width, height)
|
||||
save_dc.SelectObject(bmp)
|
||||
save_dc.BitBlt((0, 0), (width, height), mfc_dc, (cli_left, cli_top), win32con.SRCCOPY)
|
||||
|
||||
bmpinfo = bmp.GetInfo()
|
||||
bmpstr = bmp.GetBitmapBits(True)
|
||||
img = Image.frombuffer('RGB', (bmpinfo['bmWidth'], bmpinfo['bmHeight']),
|
||||
bmpstr, 'raw', 'BGRX', 0, 1)
|
||||
|
||||
if save_path:
|
||||
img.save(save_path)
|
||||
|
||||
# Cleanup
|
||||
win32gui.DeleteObject(bmp.GetHandle())
|
||||
save_dc.DeleteDC()
|
||||
mfc_dc.DeleteDC()
|
||||
win32gui.ReleaseDC(0, screen_dc)
|
||||
|
||||
return img
|
||||
|
||||
|
||||
def images_diff(img1, img2):
|
||||
"""Calculate difference ratio between two images."""
|
||||
if img1.size != img2.size:
|
||||
return 1.0
|
||||
diff = ImageChops.difference(img1, img2)
|
||||
stat = ImageStat.Stat(diff)
|
||||
return sum(stat.mean) / len(stat.mean) / 255.0
|
||||
|
||||
|
||||
def analyze_layout(img):
|
||||
"""
|
||||
Analyze PrintWindow screenshot to find contact list rows.
|
||||
Uses horizontal projection of left-column content (avatars + text).
|
||||
"""
|
||||
arr = np.array(img)
|
||||
h, w = arr.shape[:2]
|
||||
|
||||
# Sample background color from a "safe" empty area (top-right corner far from content)
|
||||
# Or use the first column (left edge - often margin/background)
|
||||
sample_y1, sample_y2 = 0, 30
|
||||
sample_x1, sample_x2 = w - 100, w - 5
|
||||
sample = arr[sample_y1:sample_y2, sample_x1:sample_x2]
|
||||
# Use mean as background (sample region is likely toolbar/empty)
|
||||
bg_color = tuple(sample.reshape(-1, 3).mean(axis=0).astype(int))
|
||||
bg_r, bg_g, bg_b = bg_color
|
||||
print(f" [布局] 背景采样区域 ({sample_x1},{sample_y1})-({sample_x2},{sample_y2})")
|
||||
print(f" [布局] 背景色 RGB: ({bg_r}, {bg_g}, {bg_b})")
|
||||
|
||||
# Build a vertical gradient row by looking for rows with high horizontal variance
|
||||
# (rows with text/avatars have high color variance, blank rows don't)
|
||||
# We focus on the left panel (contact list, 0-280px)
|
||||
panel = arr[:, 0:280].astype(int)
|
||||
row_var = panel.std(axis=(1, 2)) # std across pixels in each row
|
||||
|
||||
# Threshold: rows with std > 15 (some color variation) are content
|
||||
is_content = row_var > 15
|
||||
|
||||
# Find content blocks
|
||||
blocks = []
|
||||
in_block = False
|
||||
block_start = 0
|
||||
gap_count = 0
|
||||
min_height = 30 # Min contact row height
|
||||
max_gap = 6 # Allow small gaps within a block
|
||||
|
||||
for y in range(h):
|
||||
if is_content[y]:
|
||||
if not in_block:
|
||||
in_block = True
|
||||
block_start = y
|
||||
gap_count = 0
|
||||
else:
|
||||
if in_block:
|
||||
gap_count += 1
|
||||
if gap_count > max_gap:
|
||||
block_height = y - gap_count - block_start + 1
|
||||
if block_height >= min_height:
|
||||
blocks.append((block_start, y - gap_count))
|
||||
in_block = False
|
||||
gap_count = 0
|
||||
|
||||
if in_block:
|
||||
block_height = h - block_start
|
||||
if block_height >= min_height:
|
||||
blocks.append((block_start, h))
|
||||
|
||||
print(f" [布局] 联系人行(高方差检测): {len(blocks)} 个")
|
||||
|
||||
# If we got too few blocks, the window might not be a chat list. Return all blocks.
|
||||
return blocks, bg_r * 65536 + bg_g * 256 + bg_b
|
||||
|
||||
|
||||
class IMChatExporterV6:
|
||||
def __init__(self, hwnd, output_dir):
|
||||
self.hwnd = hwnd
|
||||
self.output_dir = Path(output_dir)
|
||||
self.output_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# Window geometry
|
||||
self.cli_left, self.cli_top = win32gui.ClientToScreen(hwnd, (0, 0))
|
||||
_, _, self.cli_width, self.cli_height = win32gui.GetClientRect(hwnd)
|
||||
|
||||
# Contact list params (estimated, refined by analyze_layout)
|
||||
self.list_width = 280
|
||||
|
||||
# Title bar offset: contacts in window may be hidden behind title bar
|
||||
# Real contact list starts BELOW title bar (about 50px on top + search bar ~40px)
|
||||
# So contact #1's real position is approximately client_y + 90
|
||||
self.title_bar_offset = 90
|
||||
|
||||
# Screen coordinates for click targets
|
||||
self.contact_x = self.cli_left + self.list_width // 2
|
||||
self.chat_x = self.cli_left + self.list_width + (self.cli_width - self.list_width) // 2
|
||||
self.chat_y = self.cli_top + self.cli_height // 2
|
||||
|
||||
self.contacts = []
|
||||
self._ocr_engine = None
|
||||
|
||||
print(f" 窗口句柄: 0x{hwnd:x}")
|
||||
print(f" 客户区: {self.cli_width}x{self.cli_height}")
|
||||
print(f" 屏幕起点: ({self.cli_left}, {self.cli_top})")
|
||||
print(f" 联系人点击X: {self.contact_x}")
|
||||
print(f" 聊天区域中心: ({self.chat_x}, {self.chat_y})")
|
||||
|
||||
def ahk_run(self, *args):
|
||||
"""Run AHK script with given action and arguments."""
|
||||
cmd = [AHK_EXE, AHK_SCRIPT] + [str(a) for a in args]
|
||||
try:
|
||||
result = subprocess.run(cmd, capture_output=True, timeout=30, text=True)
|
||||
if result.returncode != 0:
|
||||
print(f" [AHK] 返回码={result.returncode}, stderr={result.stderr[:200]}")
|
||||
return result.returncode == 0
|
||||
except subprocess.TimeoutExpired:
|
||||
print(f" [AHK] 超时!")
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f" [AHK] 错误: {e}")
|
||||
return False
|
||||
|
||||
def activate_window(self):
|
||||
"""Activate window using AHK (handles foreground lock)."""
|
||||
print(" [AHK] 激活窗口...")
|
||||
self.ahk_run("activate")
|
||||
time.sleep(0.5)
|
||||
|
||||
def analyze_contacts(self):
|
||||
"""Use BitBlt to capture and analyze layout for contact positions."""
|
||||
print(" [分析] BitBlt 截图 + 布局分析...")
|
||||
|
||||
# Capture via BitBlt (reflects actual visible screen content)
|
||||
pw_path = self.output_dir / "layout_analysis.png"
|
||||
img = capture_bitblt(self.hwnd, str(pw_path))
|
||||
if img is None:
|
||||
print(" [分析] BitBlt 失败!")
|
||||
return []
|
||||
|
||||
blocks, bg_color = analyze_layout(img)
|
||||
print(f" [分析] 背景色: #{bg_color:06X}")
|
||||
print(f" [分析] 检测到 {len(blocks)} 个内容块")
|
||||
|
||||
# Filter blocks that are in the contact list area (left 280px)
|
||||
arr = np.array(img)
|
||||
bg_rgb = np.array([(bg_color >> 16) & 0xFF, (bg_color >> 8) & 0xFF, bg_color & 0xFF])
|
||||
contact_blocks = []
|
||||
for i, (y1, y2) in enumerate(blocks):
|
||||
# Check if this block has content in the left panel (contact list area)
|
||||
left_region = arr[y1:y2, 0:self.list_width]
|
||||
diff_arr = np.abs(left_region.astype(int) - bg_rgb)
|
||||
non_bg = np.sum(np.any(diff_arr > 30, axis=2))
|
||||
total = left_region.shape[0] * left_region.shape[1]
|
||||
if total > 0 and non_bg / total > 0.03:
|
||||
center_y = (y1 + y2) // 2
|
||||
screen_y = self.cli_top + center_y
|
||||
contact_blocks.append({
|
||||
'index': len(contact_blocks) + 1,
|
||||
'client_y1': y1,
|
||||
'client_y2': y2,
|
||||
'center_y': center_y,
|
||||
'screen_x': self.contact_x,
|
||||
'screen_y': screen_y,
|
||||
'height': y2 - y1
|
||||
})
|
||||
|
||||
# Draw annotated layout
|
||||
annotated = img.copy()
|
||||
draw = ImageDraw.Draw(annotated)
|
||||
for c in contact_blocks:
|
||||
y1, y2 = c['client_y1'], c['client_y2']
|
||||
draw.rectangle([0, y1, self.list_width, y2], outline="red", width=3)
|
||||
draw.text((5, y1 + 2), f"#{c['index']}", fill="red")
|
||||
annotated.save(str(self.output_dir / "layout_annotated.png"))
|
||||
|
||||
self.contacts = contact_blocks
|
||||
print(f" [分析] 联系人列表: {len(contact_blocks)} 个")
|
||||
for c in contact_blocks:
|
||||
print(f" #{c['index']}: Y={c['center_y']} (screen {c['screen_y']}) H={c['height']}")
|
||||
|
||||
return contact_blocks
|
||||
|
||||
def click_contact(self, contact):
|
||||
"""Click on a contact using AHK."""
|
||||
print(f" [AHK] 点击联系人 #{contact['index']} ({contact['screen_x']}, {contact['screen_y']})...")
|
||||
self.ahk_run("click_contact",
|
||||
contact['screen_x'], contact['screen_y'],
|
||||
self.chat_x, self.chat_y)
|
||||
|
||||
def capture_chat(self, name_suffix=""):
|
||||
"""Capture current chat via BitBlt."""
|
||||
path = self.output_dir / f"chat_{name_suffix}.png"
|
||||
img = capture_bitblt(self.hwnd, str(path))
|
||||
return img, path
|
||||
|
||||
def scroll_to_top(self):
|
||||
"""Scroll chat to top using AHK."""
|
||||
print(" [AHK] 滚动到顶部...")
|
||||
self.ahk_run("scroll_top", self.chat_x, self.chat_y)
|
||||
|
||||
def scroll_down(self, clicks=5):
|
||||
"""Scroll down using AHK."""
|
||||
self.ahk_run("scroll_down", clicks, self.chat_x, self.chat_y)
|
||||
|
||||
def export_contact(self, contact, deep=False):
|
||||
"""Export a single contact's complete chat history."""
|
||||
idx = contact['index']
|
||||
print(f"\n{'='*60}")
|
||||
print(f" 导出联系人 #{idx}")
|
||||
print(f"{'='*60}")
|
||||
|
||||
# Step 1: Click contact and scroll to top (AHK handles activation + click + scroll)
|
||||
self.click_contact(contact)
|
||||
|
||||
# Step 2: Capture initial screenshot (should be at top)
|
||||
img_prev, path_prev = self.capture_chat(f"c{idx}_01_top")
|
||||
print(f" [截图] 初始截图: {path_prev.name}")
|
||||
|
||||
screenshots = [path_prev]
|
||||
max_scrolls = 30 if deep else 10
|
||||
no_change_count = 0
|
||||
|
||||
# Step 3: Scroll down and capture
|
||||
for i in range(max_scrolls):
|
||||
self.scroll_down(5)
|
||||
time.sleep(0.3)
|
||||
|
||||
img_curr, path_curr = self.capture_chat(f"c{idx}_{i+2:02d}")
|
||||
diff = images_diff(img_prev, img_curr)
|
||||
print(f" [截图] #{i+2} 差异={diff:.4f} {'✓变化' if diff > 0.02 else '~相同'}")
|
||||
|
||||
if diff < 0.005:
|
||||
no_change_count += 1
|
||||
if no_change_count >= 2:
|
||||
print(f" [结束] 连续 {no_change_count} 次无变化,停止滚动")
|
||||
# Remove the duplicate screenshot
|
||||
path_curr.unlink(missing_ok=True)
|
||||
break
|
||||
else:
|
||||
no_change_count = 0
|
||||
screenshots.append(path_curr)
|
||||
|
||||
img_prev = img_curr
|
||||
|
||||
print(f" [完成] 共 {len(screenshots)} 张截图")
|
||||
|
||||
# Step 4: OCR
|
||||
ocr_texts = []
|
||||
print(f" [OCR] 开始文字识别...")
|
||||
ocr = self.get_ocr()
|
||||
if ocr:
|
||||
for j, shot_path in enumerate(screenshots):
|
||||
try:
|
||||
# PaddleOCR 3.x: use predict() without cls argument
|
||||
result = ocr.predict(str(shot_path))
|
||||
lines = []
|
||||
# New API returns list of dicts with rec_text field
|
||||
if result:
|
||||
for page in result:
|
||||
rec_texts = page.get('rec_texts', [])
|
||||
lines.extend(rec_texts)
|
||||
ocr_texts.append('\n'.join(lines))
|
||||
print(f" [OCR] 截图{j+1}: {len(lines)} 行文字")
|
||||
except Exception as e:
|
||||
ocr_texts.append(f"[OCR错误: {e}]")
|
||||
print(f" [OCR] 截图{j+1} 失败: {e}")
|
||||
|
||||
# Step 5: Save contact data
|
||||
contact_data = {
|
||||
'index': idx,
|
||||
'screenshots': [str(p) for p in screenshots],
|
||||
'ocr_texts': ocr_texts,
|
||||
'screenshot_count': len(screenshots)
|
||||
}
|
||||
|
||||
return contact_data
|
||||
|
||||
def get_ocr(self):
|
||||
"""Lazy-load PaddleOCR engine."""
|
||||
if self._ocr_engine is None:
|
||||
print(" [OCR] 初始化 PaddleOCR...")
|
||||
try:
|
||||
# Disable oneDNN to avoid ConvertPirAttribute2RuntimeAttribute error
|
||||
import os
|
||||
os.environ['FLAGS_use_mkldnn'] = '0'
|
||||
from paddleocr import PaddleOCR
|
||||
# PaddleOCR 3.x: use_textline_orientation replaces use_angle_cls
|
||||
self._ocr_engine = PaddleOCR(use_textline_orientation=True, lang='ch', enable_mkldnn=False)
|
||||
print(" [OCR] 引擎就绪")
|
||||
except ImportError:
|
||||
print(" [OCR] PaddleOCR 未安装,跳过文字识别")
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f" [OCR] 初始化失败: {e}")
|
||||
return None
|
||||
return self._ocr_engine
|
||||
|
||||
def generate_html(self, all_contacts_data, output_path):
|
||||
"""Generate HTML report with screenshots and OCR text."""
|
||||
html_parts = ['''<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>企微IM聊天记录导出</title>
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif;
|
||||
background: #f5f5f5; color: #333; padding: 20px; }
|
||||
.header { text-align: center; padding: 20px 0; border-bottom: 2px solid #07C160; margin-bottom: 30px; }
|
||||
.header h1 { font-size: 24px; color: #07C160; }
|
||||
.header .meta { font-size: 14px; color: #999; margin-top: 8px; }
|
||||
.contact-section { background: #fff; border-radius: 12px; margin-bottom: 30px;
|
||||
overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.08); }
|
||||
.contact-header { background: #07C160; color: white; padding: 15px 20px; font-size: 18px; font-weight: 600; }
|
||||
.shot-block { border-bottom: 1px solid #eee; padding: 20px; }
|
||||
.shot-block:last-child { border-bottom: none; }
|
||||
.shot-label { font-size: 14px; color: #666; margin-bottom: 8px; font-weight: 600; }
|
||||
.shot-img { max-width: 100%; border: 1px solid #ddd; border-radius: 8px; display: block; margin: 0 auto; }
|
||||
.ocr-text { background: #f9f9f9; border-left: 3px solid #07C160; padding: 12px 16px;
|
||||
margin-top: 12px; font-size: 13px; line-height: 1.8; white-space: pre-wrap;
|
||||
border-radius: 0 6px 6px 0; }
|
||||
.ocr-text:empty { display: none; }
|
||||
.summary { text-align: center; padding: 20px; color: #999; font-size: 14px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="header">
|
||||
<h1>企微IM聊天记录导出</h1>
|
||||
<div class="meta">导出时间:''' + datetime.now().strftime('%Y-%m-%d %H:%M:%S') + '''</div>
|
||||
</div>
|
||||
''']
|
||||
|
||||
for cd in all_contacts_data:
|
||||
html_parts.append(f'<div class="contact-section">')
|
||||
html_parts.append(f'<div class="contact-header">联系人 #{cd["index"]}</div>')
|
||||
|
||||
for j, (shot_path, ocr_text) in enumerate(zip(cd['screenshots'], cd['ocr_texts'])):
|
||||
# Convert path to relative or use data URI for portability
|
||||
try:
|
||||
import base64
|
||||
with open(shot_path, 'rb') as f:
|
||||
b64 = base64.b64encode(f.read()).decode()
|
||||
img_tag = f'<img class="shot-img" src="data:image/png;base64,{b64}" alt="截图{j+1}">'
|
||||
except:
|
||||
img_tag = f'<img class="shot-img" src="{shot_path}" alt="截图{j+1}">'
|
||||
|
||||
html_parts.append(f'''
|
||||
<div class="shot-block">
|
||||
<div class="shot-label">截图 {j+1}</div>
|
||||
{img_tag}
|
||||
<div class="ocr-text">{ocr_text if ocr_text else ""}</div>
|
||||
</div>''')
|
||||
|
||||
html_parts.append('</div>')
|
||||
|
||||
total_shots = sum(cd['screenshot_count'] for cd in all_contacts_data)
|
||||
html_parts.append(f'<div class="summary">共 {len(all_contacts_data)} 个联系人,{total_shots} 张截图</div>')
|
||||
html_parts.append('</body></html>')
|
||||
|
||||
with open(output_path, 'w', encoding='utf-8') as f:
|
||||
f.write('\n'.join(html_parts))
|
||||
print(f"\n [HTML] 报告已生成: {output_path}")
|
||||
|
||||
def run(self, start=1, count=3, deep=False):
|
||||
"""Main export flow."""
|
||||
print(f"\n{'='*60}")
|
||||
print(f" IM Chat Export v6 (AHK + BitBlt + OCR)")
|
||||
print(f" 联系人: #{start} - #{start + count - 1}")
|
||||
print(f" 深度模式: {'是' if deep else '否'}")
|
||||
print(f"{'='*60}")
|
||||
|
||||
# Step 1: Activate window via AHK first (so PrintWindow sees real layout)
|
||||
self.activate_window()
|
||||
|
||||
# Step 2: Analyze layout (after activation for accurate coordinates)
|
||||
contacts = self.analyze_contacts()
|
||||
if not contacts:
|
||||
print(" [错误] 未检测到联系人!")
|
||||
return
|
||||
|
||||
# Filter to requested range
|
||||
target_contacts = [c for c in contacts if start <= c['index'] < start + count]
|
||||
if not target_contacts:
|
||||
print(f" [错误] 请求范围 #{start}-#{start+count-1} 超出检测范围")
|
||||
return
|
||||
|
||||
# Step 3: Export each contact
|
||||
all_data = []
|
||||
for contact in target_contacts:
|
||||
data = self.export_contact(contact, deep=deep)
|
||||
all_data.append(data)
|
||||
|
||||
# Step 4: Generate HTML report
|
||||
html_path = self.output_dir / f"chat_export_{datetime.now().strftime('%Y%m%d_%H%M%S')}.html"
|
||||
self.generate_html(all_data, str(html_path))
|
||||
|
||||
# Step 5: Save JSON data
|
||||
json_path = self.output_dir / f"chat_export_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
|
||||
with open(json_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(all_data, f, ensure_ascii=False, indent=2)
|
||||
|
||||
print(f"\n{'='*60}")
|
||||
print(f" 导出完成!")
|
||||
print(f" HTML: {html_path}")
|
||||
print(f" JSON: {json_path}")
|
||||
print(f" 联系人: {len(all_data)} 个")
|
||||
print(f" 截图: {sum(d['screenshot_count'] for d in all_data)} 张")
|
||||
print(f"{'='*60}")
|
||||
|
||||
return html_path
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='IM Chat Export v6 - AHK + BitBlt + OCR')
|
||||
parser.add_argument('--start', type=int, default=1, help='Start contact index (1-based)')
|
||||
parser.add_argument('--count', type=int, default=3, help='Number of contacts to export')
|
||||
parser.add_argument('--deep', action='store_true', help='Deep scroll mode (max 30 scrolls)')
|
||||
parser.add_argument('--output', type=str, default='.', help='Output directory')
|
||||
parser.add_argument('--analyze', action='store_true', help='Only run layout analysis')
|
||||
args = parser.parse_args()
|
||||
|
||||
# Find window
|
||||
windows = find_im_window()
|
||||
if not windows:
|
||||
print("错误: 未找到企微IM窗口 (标题包含 '智能IT助手')")
|
||||
print("请确保企微IM聊天窗口已打开")
|
||||
sys.exit(1)
|
||||
|
||||
hwnd, title = windows[0]
|
||||
print(f"找到窗口: {title} (hwnd=0x{hwnd:x})")
|
||||
|
||||
exporter = IMChatExporterV6(hwnd, args.output)
|
||||
|
||||
if args.analyze:
|
||||
contacts = exporter.analyze_contacts()
|
||||
if contacts:
|
||||
print(f"\n检测到 {len(contacts)} 个联系人:")
|
||||
for c in contacts:
|
||||
print(f" #{c['index']}: center_y={c['center_y']} screen=({c['screen_x']}, {c['screen_y']})")
|
||||
return
|
||||
|
||||
html_path = exporter.run(start=args.start, count=args.count, deep=args.deep)
|
||||
if html_path:
|
||||
print(f"\n请查看: {html_path}")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"contact_4": {
|
||||
"index": 4,
|
||||
"full_view": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_4\\full_view.png",
|
||||
"screenshots": [
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_4\\chat_top.png",
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_4\\chat_01.png"
|
||||
],
|
||||
"screenshot_count": 2,
|
||||
"scroll_attempts": 2,
|
||||
"max_scroll_diff": 0.0,
|
||||
"ocr_texts": [
|
||||
{
|
||||
"image": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_4\\chat_top.png",
|
||||
"lines": []
|
||||
},
|
||||
{
|
||||
"image": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_4\\chat_01.png",
|
||||
"lines": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"contact_5": {
|
||||
"index": 5,
|
||||
"full_view": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_5\\full_view.png",
|
||||
"screenshots": [
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_5\\chat_top.png",
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_5\\chat_01.png"
|
||||
],
|
||||
"screenshot_count": 2,
|
||||
"scroll_attempts": 2,
|
||||
"max_scroll_diff": 0.0,
|
||||
"ocr_texts": [
|
||||
{
|
||||
"image": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_5\\chat_top.png",
|
||||
"lines": []
|
||||
},
|
||||
{
|
||||
"image": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_5\\chat_01.png",
|
||||
"lines": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"contact_6": {
|
||||
"index": 6,
|
||||
"full_view": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_6\\full_view.png",
|
||||
"screenshots": [
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_6\\chat_top.png",
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_6\\chat_01.png"
|
||||
],
|
||||
"screenshot_count": 2,
|
||||
"scroll_attempts": 2,
|
||||
"max_scroll_diff": 0.0,
|
||||
"ocr_texts": [
|
||||
{
|
||||
"image": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_6\\chat_top.png",
|
||||
"lines": []
|
||||
},
|
||||
{
|
||||
"image": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_6\\chat_01.png",
|
||||
"lines": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"contact_7": {
|
||||
"index": 7,
|
||||
"full_view": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_7\\full_view.png",
|
||||
"screenshots": [
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_7\\chat_top.png",
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_7\\chat_01.png"
|
||||
],
|
||||
"screenshot_count": 2,
|
||||
"scroll_attempts": 2,
|
||||
"max_scroll_diff": 0.0,
|
||||
"ocr_texts": [
|
||||
{
|
||||
"image": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_7\\chat_top.png",
|
||||
"lines": []
|
||||
},
|
||||
{
|
||||
"image": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_7\\chat_01.png",
|
||||
"lines": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"contact_8": {
|
||||
"index": 8,
|
||||
"full_view": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_8\\full_view.png",
|
||||
"screenshots": [
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_8\\chat_top.png",
|
||||
"D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_8\\chat_01.png"
|
||||
],
|
||||
"screenshot_count": 2,
|
||||
"scroll_attempts": 2,
|
||||
"max_scroll_diff": 0.0,
|
||||
"ocr_texts": [
|
||||
{
|
||||
"image": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_8\\chat_top.png",
|
||||
"lines": []
|
||||
},
|
||||
{
|
||||
"image": "D:\\资料\\03-项目开发\\wecom_it_smart_desk\\chat_export\\contact_8\\chat_01.png",
|
||||
"lines": []
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |