From b29d86d9ed34fd890eb14cb7a75f6ae4f7148865 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 01 九月 2026 13:58:03 +0800
Subject: [PATCH] feat(mes): 新增防伪防窜货功能模块
---
docs/sales_outbound_traceability_integration.md | 120 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/integrity/MesTraceIntegrityService.java | 57
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/trace/MesTraceWarningStatusEnum.java | 38
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanEventService.java | 36
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesPageReqVO.java | 4
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanSummaryRespVO.java | 13
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/vo/MesTraceIntegrityRecordPageReqVO.java | 24
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/integrity/MesTraceIntegrityRecordDO.java | 48
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/crossregion/MesTraceCrossRegionService.java | 80 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/integrity/MesTraceIntegrityRecordMapper.java | 32
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/crossregion/MesTraceAntiConfigMapper.java | 19
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/MesProTracePublicServiceImpl.java | 79
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceAntiConfigRespVO.java | 16
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/pub/trace/vo/MesProTracePublicRespVO.java | 15
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionSummaryRespVO.java | 28
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/consumer/MesTraceConsumerScanEventMapper.java | 30
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanDistributionReqVO.java | 27
sql/mysql/mes_dealer_menu_init.sql | 67
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesController.java | 11
sql/mysql/mes_trace_anti_cross_region_init.sql | 82 +
sql/mysql/mes_trace_consumer_scan_event.sql | 28
sql/mysql/mes_wm_sales_outbound_traceability.sql | 9
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/crossregion/MesTraceCrossRegionWarningMapper.java | 42
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionWarningRespVO.java | 99 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesRespVO.java | 11
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanStatisticsServiceImpl.java | 150 +
yudao-server/src/main/resources/static/trace.html | 113 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/batch/MesProBatchServiceImpl.java | 9
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/MesTraceConfigController.java | 38
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/crossregion/MesTraceCrossRegionWarningDO.java | 107 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionWarningPageReqVO.java | 45
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/trace/MesTraceWarningTypeEnum.java | 27
yudao-module-mes/src/test/resources/sql/create_tables.sql | 98 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/integrity/MesTraceIntegrityServiceImpl.java | 237 +++
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanStatisticsServiceImplTest.java | 154 ++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/MesTraceIntegrityController.java | 45
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java | 12
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/batch/MesProBatchMapper.java | 5
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java | 11
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanDistributionRespVO.java | 11
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/vo/MesTraceQrConfigRespVO.java | 16
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java | 5
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/MesTraceConsumerScanController.java | 63
docs/consumer_trace_scan_statistics_api.md | 111 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanStatisticsService.java | 15
sql/mysql/mes_trace_consumer_scan_menu.sql | 20
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/trace/MesTraceIntegrityBizTypeEnum.java | 43
docs/qr_trace_modal_url_integration.md | 65
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/crossregion/MesTraceCrossRegionServiceImplTest.java | 367 ++++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java | 27
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/integrity/MesTraceIntegrityServiceImplTest.java | 129 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/vo/MesTraceIntegrityVerifyReqVO.java | 20
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/consumer/MesTraceConsumerScanStatisticsMapper.java | 31
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/consumer/MesTraceConsumerScanEventDO.java | 69
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesDetailMapper.java | 20
sql/mysql/mes_trace_anti_module_menu.sql | 66
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/vo/MesTraceIntegrityVerifyRespVO.java | 34
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionHandleReqVO.java | 22
yudao-module-mes/src/test/resources/sql/clean.sql | 4
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/MesTraceCrossRegionController.java | 89 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionStatisticsReqVO.java | 28
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/crossregion/MesTraceAntiConfigDO.java | 37
docs/anti_cross_region_integrity_integration.md | 157 ++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesMapper.java | 2
/dev/null | 337 ----
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanEventServiceImpl.java | 118 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/crossregion/MesTraceCrossRegionServiceImpl.java | 423 +++++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanTrendRespVO.java | 13
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanEventServiceImplTest.java | 89 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionStatisticsRespVO.java | 16
70 files changed, 4,150 insertions(+), 363 deletions(-)
diff --git a/.playwright-mcp/img.png b/.playwright-mcp/img.png
deleted file mode 100644
index d6c77b2..0000000
--- a/.playwright-mcp/img.png
+++ /dev/null
Binary files differ
diff --git a/.playwright-mcp/page-2026-07-21T07-05-51-287Z.yml b/.playwright-mcp/page-2026-07-21T07-05-51-287Z.yml
deleted file mode 100644
index 8cff50c..0000000
--- a/.playwright-mcp/page-2026-07-21T07-05-51-287Z.yml
+++ /dev/null
@@ -1,90 +0,0 @@
-- generic [active] [ref=e1]:
- - generic [ref=e3]:
- - generic [ref=e4]:
- - generic [ref=e8]: 涓皬浼佷笟鏀归�燽ug淇敼鍒楄〃
- - button "鐧诲綍鑵捐鏂囨。" [ref=e12]
- - generic [ref=e13]:
- - generic [ref=e14]:
- - generic [ref=e15]: 寮�濮�
- - generic [ref=e16]: 鎻掑叆
- - generic [ref=e17]: 鏁版嵁
- - generic [ref=e18]: 鍏紡
- - generic [ref=e19]: 鍗忎綔
- - generic [ref=e20]: 瑙嗗浘
- - generic [ref=e21]:
- - generic [ref=e27]:
- - generic [ref=e28]: 榛樿瀛椾綋
- - generic [ref=e30]: "10"
- - generic [ref=e42]: 琛ㄦ牸鏍峰紡
- - generic [ref=e44]: 鏉′欢鏍煎紡
- - generic [ref=e53]: 鎹㈣
- - generic [ref=e55]: 鍚堝苟
- - generic [ref=e58]: 甯歌
- - generic [ref=e64]: 绛涢��
- - generic [ref=e66]: 鍐荤粨
- - generic [ref=e68]: 鎺掑簭
- - generic [ref=e70]: 姹傚拰
- - generic [ref=e72]: 鏁版嵁
- - generic [ref=e74]: 淇濇姢
- - generic [ref=e77]: 鎻掑叆
- - generic [ref=e79]: 鍥剧墖
- - generic [ref=e81]: 鍥捐〃
- - generic [ref=e83]: 閫忚琛�
- - generic [ref=e86]: 蹇嵎宸ュ叿
- - generic [ref=e88]: 鐢熸垚鍥剧墖
- - generic [ref=e90]: 鍏宠仈鏀堕泦琛�
- - generic [ref=e92]: 鍥剧墖杞〃鏍�
- - generic [ref=e94]: 鐢熸垚鏅鸿兘琛�
- - generic [ref=e96]: PDF杞崲
- - generic [ref=e99]: 鎵撳嵃
- - generic [ref=e106]:
- - textbox [ref=e107]
- - combobox [ref=e108]:
- - paragraph [ref=e109]
- - generic [ref=e122]:
- - generic [ref=e125]:
- - link "杩涢攢瀛橀噸鏋�-NEW" [ref=e126]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=fs73ok
- - generic [ref=e129]: 閾跺窛3绾OM绯荤粺
- - link "OA闂琛�" [ref=e132]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=f64daq
- - link "瀹佸-涓囬�氬缓鏉�" [ref=e135]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=ept4mh
- - link "娴疆" [ref=e138]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=spyhmp
- - link "閰掓硥楠屾敹闂" [ref=e141]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=x00zho
- - link "婀熸按宄¢獙鏀堕棶棰樿〃" [ref=e144]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=h625nh
- - link "澶╂触鈥斿弻濂囩偣" [ref=e147]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=BB08J2
- - link "澶╂触鈥斿啗娉颁紵涓�" [ref=e150]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=lspijq
- - link "澶╂触--鍚涙瓕鍖栧伐" [ref=e153]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=mq8fx1
- - link "澶╂触鈥旈槼鍏夊嵃鍒�" [ref=e156]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=0l2zs6
- - link "楣ゅ鈥斿ぉ娌愮幓鐠�" [ref=e159]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=iwl1zq
- - link "澶╂触鈥斿痉鐟炴柉褰辫" [ref=e162]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=uw3s1s
- - link "婀栧崡鈥斿潳娉板寲宸�" [ref=e165]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=lhgufk
- - link "婀栧崡鈥旈箯鍒涚數瀛�" [ref=e168]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=qr1hgf
- - link "瀹佸-涓洓寤烘潗" [ref=e171]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=glpee8
- - link "闀挎不鈥斿仴榻块娇绉戝櫒鏉�" [ref=e174]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=f6oijb
- - link "闀挎不鈥斿畨閾佺啍鍓�" [ref=e177]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=27v3ks
- - link "闀挎不-绁ラ洦" [ref=e180]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=51i5b3
- - link "闀挎不-鏅嬪拰鍥�" [ref=e183]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=bo7qyg
- - link "娌冲崡-楣ゅ" [ref=e186]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=mkpiqo
- - generic [ref=e191]: 100%
- - textbox [ref=e193]
- - combobox [ref=e195]:
- - paragraph
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-21T07-06-20-697Z.yml b/.playwright-mcp/page-2026-07-21T07-06-20-697Z.yml
deleted file mode 100644
index ef6405c..0000000
--- a/.playwright-mcp/page-2026-07-21T07-06-20-697Z.yml
+++ /dev/null
@@ -1,315 +0,0 @@
-- generic [ref=e1]:
- - generic [ref=e197]:
- - toolbar "titlebar" [ref=e198]:
- - generic [ref=e205]: 涓皬浼佷笟鏀归�燽ug淇敼鍒楄〃
- - button "鍙兘鏌ョ湅" [ref=e219]
- - img "breadcrumb" [ref=e236]
- - generic [ref=e246]:
- - img "澶村儚" [ref=e249]
- - img "澶村儚" [ref=e254]
- - button "鐧诲綍鑵捐鏂囨。" [ref=e261]
- - toolbar "Toolbar" [ref=e267]:
- - tablist [ref=e269]:
- - tab "寮�濮�" [selected] [ref=e270]
- - tab "鎻掑叆" [ref=e271]
- - tab "鏁版嵁" [ref=e272]
- - tab "鍏紡" [ref=e273]
- - tab "鍗忎綔" [ref=e274]
- - tab "瑙嗗浘" [ref=e275]
- - tab "鏁堢巼宸ュ叿" [ref=e276]
- - tab "浼氬憳涓撲韩" [ref=e277]
- - tabpanel [ref=e279]:
- - toolbar "寮�濮�" [ref=e280]:
- - generic [ref=e281]:
- - generic [ref=e282]:
- - generic [ref=e283]:
- - button [disabled] [ref=e288]:
- - button [disabled] [ref=e290]
- - button [disabled] [ref=e296]:
- - button [disabled] [ref=e298]
- - generic [ref=e300]:
- - button [disabled] [ref=e305]:
- - button [disabled] [ref=e307]
- - button [disabled] [ref=e313]:
- - button [disabled] [ref=e315]
- - generic [ref=e318]:
- - generic [ref=e319]:
- - button [disabled] [ref=e327]:
- - generic [ref=e328]: 榛樿瀛椾綋
- - button [disabled] [ref=e339]:
- - generic [ref=e340]: "12"
- - group [disabled] [ref=e351]:
- - generic [ref=e352]:
- - button [disabled] [ref=e353]
- - button [disabled] [ref=e356]
- - button [disabled] [ref=e364]:
- - button [disabled] [ref=e366]
- - button [disabled] [ref=e377]:
- - generic [ref=e378]:
- - button [disabled] [ref=e379]
- - generic [ref=e381]: 琛ㄦ牸鏍峰紡
- - generic [ref=e384]:
- - button [disabled] [pressed] [ref=e389]:
- - button [disabled] [ref=e391]
- - button [disabled] [ref=e397]:
- - button [disabled] [ref=e399]
- - button [disabled] [ref=e405]:
- - button [disabled] [ref=e407]
- - button [disabled] [ref=e413]:
- - button [disabled] [ref=e415]
- - group [disabled] [ref=e424]:
- - generic [ref=e425]:
- - button [disabled] [ref=e426]
- - button [disabled] [ref=e430]
- - group [disabled] [ref=e438]:
- - generic [ref=e439]:
- - button [disabled] [ref=e440]
- - button [disabled] [ref=e444]
- - button [disabled] [ref=e452]:
- - generic [ref=e453]:
- - button [disabled] [ref=e454]
- - generic [ref=e456]: 鏉′欢鏍煎紡
- - button [ref=e468]:
- - button [ref=e470]
- - generic [ref=e474]: 瀛椾綋鏍峰紡
- - generic [ref=e476]:
- - generic [ref=e477]:
- - button [disabled] [ref=e485]:
- - button [disabled] [ref=e487]
- - button [disabled] [ref=e498]:
- - button [disabled] [ref=e500]
- - generic [ref=e504]:
- - button [disabled] [ref=e509]:
- - button [disabled] [ref=e511]
- - button [disabled] [pressed] [ref=e517]:
- - button [disabled] [ref=e519]
- - button [disabled] [ref=e525]:
- - button [disabled] [ref=e527]
- - generic [ref=e529]:
- - button [disabled] [ref=e535]:
- - generic [ref=e536]:
- - button [disabled] [ref=e537]
- - generic [ref=e539]: 鎹㈣
- - group [disabled] [ref=e548]:
- - generic [ref=e549]:
- - button [disabled] [ref=e550]
- - generic [ref=e552]: 鍚堝苟
- - button [disabled] [ref=e554]
- - button [ref=e564]:
- - button [ref=e566]
- - generic [ref=e570]: 瀵归綈鏂瑰紡
- - generic [ref=e572]:
- - button [disabled] [ref=e581]:
- - generic [ref=e582]: 甯歌
- - generic [ref=e586]:
- - button [disabled] [ref=e591]:
- - button [disabled] [ref=e593]
- - button [disabled] [ref=e599]:
- - button [disabled] [ref=e601]
- - button [ref=e612]:
- - button [ref=e614]
- - generic [ref=e618]: 鏁板瓧鏍煎紡
- - group [ref=e629]:
- - generic [ref=e630]:
- - button [ref=e631]
- - button [ref=e634]
- - generic [ref=e635]: 绛涢��
- - generic [ref=e636]:
- - generic [ref=e637]:
- - button [disabled] [ref=e645]:
- - generic [ref=e646]:
- - button [disabled] [ref=e647]
- - generic [ref=e649]: 鍐荤粨
- - group [disabled] [ref=e659]:
- - generic [ref=e660]:
- - button [disabled] [ref=e661]
- - generic [ref=e663]: 姹傚拰
- - button [disabled] [ref=e665]
- - generic [ref=e666]:
- - button [disabled] [ref=e674]:
- - generic [ref=e675]:
- - button [disabled] [ref=e676]
- - generic [ref=e678]: 鎺掑簭
- - button [disabled] [ref=e688]:
- - generic [ref=e689]:
- - button [disabled] [ref=e690]
- - generic [ref=e692]: 鏁版嵁
- - button [ref=e704]:
- - button [ref=e706]
- - generic [ref=e710]: 鏁版嵁
- - button [disabled] [ref=e720]:
- - button [disabled] [ref=e722]
- - generic [ref=e726]: 淇濇姢
- - button [disabled] [ref=e737]:
- - button [disabled] [ref=e739]
- - generic [ref=e743]: 鎻掑叆
- - button [disabled] [ref=e753]:
- - button [disabled] [ref=e755]
- - generic [ref=e759]: 鍥剧墖
- - generic [ref=e760]:
- - button [disabled] [ref=e769]:
- - generic [ref=e770]:
- - button [disabled] [ref=e771]
- - generic [ref=e773]: 鍥捐〃
- - button [disabled] [ref=e781]:
- - generic [ref=e782]:
- - button [disabled] [ref=e783]
- - generic [ref=e785]: 閫忚琛�
- - button [disabled] [ref=e795]:
- - button [disabled] [ref=e797]
- - generic [ref=e801]: 鎻掑叆
- - button [disabled] [ref=e812]:
- - button [disabled] [ref=e814]
- - generic [ref=e818]: 蹇嵎宸ュ叿
- - button [disabled] [ref=e825]:
- - button [disabled] [ref=e827]
- - generic [ref=e829]: 鐢熸垚鍥剧墖
- - generic [ref=e830]:
- - generic [ref=e831]:
- - button [ref=e836]:
- - generic [ref=e837]:
- - button [ref=e838]
- - generic [ref=e840]: 鐢熸垚鏌ヨ
- - button [ref=e845]:
- - generic [ref=e846]:
- - button [ref=e847]
- - generic [ref=e849]: 鐢熸垚鏅鸿兘琛�
- - generic [ref=e850]:
- - button [disabled] [ref=e855]:
- - generic [ref=e856]:
- - button [disabled] [ref=e857]
- - generic [ref=e859]: 鍥剧墖杞〃鏍�
- - button [disabled] [ref=e867]:
- - generic [ref=e868]:
- - button [disabled] [ref=e869]
- - generic [ref=e871]: PDF杞崲
- - button [ref=e883]:
- - button [ref=e885]
- - generic [ref=e889]: 蹇嵎宸ュ叿
- - button [ref=e897]:
- - button [ref=e899]
- - generic [ref=e901]: 鎵撳嵃
- - button [ref=e911]:
- - button [ref=e913]
- - generic [ref=e920]: 鏇村
- - generic [ref=e921]:
- - generic [ref=e922]:
- - generic [ref=e923]:
- - button "鎾ら攢" [disabled] [ref=e928]:
- - button [disabled] [ref=e930]
- - button "閲嶅仛" [disabled] [ref=e936]:
- - button [disabled] [ref=e938]
- - generic [ref=e940]:
- - button "鏍煎紡鍒凤紝鍙屽嚮鍙噸澶嶄娇鐢�" [disabled] [ref=e945]:
- - button [disabled] [ref=e947]
- - button "娓呴櫎鏍煎紡" [disabled] [ref=e953]:
- - button [disabled] [ref=e955]
- - generic [ref=e958]:
- - generic [ref=e959]:
- - button "榛樿瀛椾綋" [disabled] [ref=e967]
- - button "12" [disabled] [ref=e979]
- - group "杈规" [disabled] [ref=e991]:
- - generic [ref=e992]:
- - button "杈规" [disabled] [ref=e993]
- - button "杈规 鏇村閫夐」" [disabled] [ref=e996]
- - button "鍗曞厓鏍兼牱寮�" [disabled] [ref=e1004]:
- - button [disabled] [ref=e1006]
- - button "琛ㄦ牸鏍峰紡" [disabled] [ref=e1017]:
- - generic [ref=e1018]:
- - button [disabled] [ref=e1019]
- - generic [ref=e1021]: 琛ㄦ牸鏍峰紡
- - generic [ref=e1024]:
- - button "鍔犵矖" [disabled] [pressed] [ref=e1029]:
- - button [disabled] [ref=e1031]
- - button "鍊炬枩" [disabled] [ref=e1037]:
- - button [disabled] [ref=e1039]
- - button "涓嬪垝绾�" [disabled] [ref=e1045]:
- - button [disabled] [ref=e1047]
- - button "鍒犻櫎绾�" [disabled] [ref=e1053]:
- - button [disabled] [ref=e1055]
- - group "瀛椾綋棰滆壊" [disabled] [ref=e1064]:
- - generic [ref=e1065]:
- - button "瀛椾綋棰滆壊" [disabled] [ref=e1066]
- - button "瀛椾綋棰滆壊 鏇村閫夐」" [disabled] [ref=e1070]
- - group "濉厖棰滆壊" [disabled] [ref=e1078]:
- - generic [ref=e1079]:
- - button "濉厖棰滆壊" [disabled] [ref=e1080]
- - button "濉厖棰滆壊 鏇村閫夐」" [disabled] [ref=e1084]
- - button "鏉′欢鏍煎紡" [disabled] [ref=e1092]:
- - generic [ref=e1093]:
- - button [disabled] [ref=e1094]
- - generic [ref=e1096]: 鏉′欢鏍煎紡
- - button "瀵归綈鏂瑰紡" [ref=e1109]:
- - button [ref=e1111]
- - button "鏁板瓧鏍煎紡" [ref=e1126]:
- - button [ref=e1128]
- - generic [ref=e1135]:
- - group "绛涢��" [ref=e1143]:
- - generic [ref=e1144]:
- - button "绛涢��" [ref=e1145]
- - button "绛涢�� 鏇村閫夐」" [ref=e1148]
- - button "鏁版嵁" [ref=e1157]:
- - button [ref=e1159]
- - button "淇濇姢" [disabled] [ref=e1171]:
- - button [disabled] [ref=e1173]
- - button "鎻掑叆" [disabled] [ref=e1188]:
- - button [disabled] [ref=e1190]
- - button "蹇嵎宸ュ叿" [ref=e1205]:
- - button [ref=e1207]
- - button "鎵撳嵃" [ref=e1219]:
- - button [ref=e1221]
- - toolbar [ref=e1225]:
- - generic [ref=e1228]:
- - button "鏌ユ壘鏇挎崲" [ref=e1233]:
- - button [ref=e1235]
- - button "宸ュ叿鏍忓垏鎹�" [ref=e1244]:
- - button [ref=e1246]
- - generic [ref=e105]:
- - generic [ref=e106]:
- - textbox [ref=e107]
- - combobox [ref=e108]:
- - paragraph [ref=e109]
- - combobox [active] [ref=e195]:
- - paragraph
- - toolbar "鐘舵�佹爮" [ref=e1264]:
- - button [ref=e1265]
- - button [ref=e1277]
- - button [ref=e1289]:
- - tablist "宸ヤ綔琛�" [ref=e1296]:
- - generic [ref=e1298]:
- - tab "杩涢攢瀛橀噸鏋�-NEW" [ref=e1300] [cursor=pointer]
- - tab "閾跺窛3绾OM绯荤粺" [selected] [ref=e1303] [cursor=pointer]
- - tab "OA闂琛�" [ref=e1306] [cursor=pointer]
- - tab "瀹佸-涓囬�氬缓鏉�" [ref=e1309] [cursor=pointer]
- - tab "娴疆" [ref=e1312] [cursor=pointer]
- - tab "閰掓硥楠屾敹闂" [ref=e1315] [cursor=pointer]
- - tab "婀熸按宄¢獙鏀堕棶棰樿〃" [ref=e1318] [cursor=pointer]
- - tab "澶╂触鈥斿弻濂囩偣" [ref=e1321] [cursor=pointer]
- - tab "澶╂触鈥斿啗娉颁紵涓�" [ref=e1324] [cursor=pointer]
- - tab "澶╂触--鍚涙瓕鍖栧伐" [ref=e1327] [cursor=pointer]
- - tab "澶╂触鈥旈槼鍏夊嵃鍒�" [ref=e1330] [cursor=pointer]
- - tab "楣ゅ鈥斿ぉ娌愮幓鐠�" [ref=e1333] [cursor=pointer]
- - tab "澶╂触鈥斿痉鐟炴柉褰辫" [ref=e1336] [cursor=pointer]
- - tab "婀栧崡鈥斿潳娉板寲宸�" [ref=e1339] [cursor=pointer]
- - tab "婀栧崡鈥旈箯鍒涚數瀛�" [ref=e1342] [cursor=pointer]
- - tab "瀹佸-涓洓寤烘潗" [ref=e1345] [cursor=pointer]
- - tab "闀挎不鈥斿仴榻块娇绉戝櫒鏉�" [ref=e1348] [cursor=pointer]
- - tab "闀挎不鈥斿畨閾佺啍鍓�" [ref=e1351] [cursor=pointer]
- - tab "闀挎不-绁ラ洦" [ref=e1354] [cursor=pointer]
- - tab "闀挎不-鏅嬪拰鍥�" [ref=e1357] [cursor=pointer]
- - tab "娌冲崡-楣ゅ" [ref=e1360] [cursor=pointer]
- - generic [ref=e1362]:
- - generic [ref=e1365]:
- - button [disabled]
- - button [ref=e1369]
- - button
- - button "楂樹寒鎵�鍦ㄨ鍒�" [ref=e1370]
- - button [ref=e1382]
- - button "鍏ㄥ睆鏌ョ湅 缂╁皬,Ctrl+0鍙仮澶嶈嚦100% 鏀惧ぇ,Ctrl+0鍙仮澶嶈嚦100%" [ref=e1387]:
- - generic [ref=e1392]:
- - generic "鍏ㄥ睆鏌ョ湅" [ref=e1396]
- - generic "缂╁皬,Ctrl+0鍙仮澶嶈嚦100%" [ref=e1400]
- - combobox [ref=e1404]:
- - generic [ref=e1405]: 100%
- - generic "鏀惧ぇ,Ctrl+0鍙仮澶嶈嚦100%" [ref=e1410]
- - textbox [ref=e193]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-21T07-06-46-253Z.png b/.playwright-mcp/page-2026-07-21T07-06-46-253Z.png
deleted file mode 100644
index c0a1f5a..0000000
--- a/.playwright-mcp/page-2026-07-21T07-06-46-253Z.png
+++ /dev/null
Binary files differ
diff --git a/.playwright-mcp/page-2026-07-21T07-08-30-493Z.png b/.playwright-mcp/page-2026-07-21T07-08-30-493Z.png
deleted file mode 100644
index 2f01bfe..0000000
--- a/.playwright-mcp/page-2026-07-21T07-08-30-493Z.png
+++ /dev/null
Binary files differ
diff --git a/.playwright-mcp/page-2026-07-21T07-08-59-408Z.png b/.playwright-mcp/page-2026-07-21T07-08-59-408Z.png
deleted file mode 100644
index 75a9be5..0000000
--- a/.playwright-mcp/page-2026-07-21T07-08-59-408Z.png
+++ /dev/null
Binary files differ
diff --git a/.playwright-mcp/page-2026-07-21T07-09-42-959Z.yml b/.playwright-mcp/page-2026-07-21T07-09-42-959Z.yml
deleted file mode 100644
index 369ff22..0000000
--- a/.playwright-mcp/page-2026-07-21T07-09-42-959Z.yml
+++ /dev/null
@@ -1,428 +0,0 @@
-- generic [ref=e1]:
- - generic [ref=e197]:
- - toolbar "titlebar" [ref=e198]:
- - generic [ref=e205]: 涓皬浼佷笟鏀归�燽ug淇敼鍒楄〃
- - button "鍙兘鏌ョ湅" [ref=e219]
- - img "breadcrumb" [ref=e236]
- - generic [ref=e246]:
- - img "澶村儚" [ref=e249]
- - img "澶村儚" [ref=e254]
- - img "澶村儚" [ref=e1727]
- - button "鐧诲綍鑵捐鏂囨。" [active] [ref=e261]
- - toolbar "Toolbar" [ref=e267]:
- - tablist [ref=e269]:
- - tab "寮�濮�" [selected] [ref=e270]
- - tab "鎻掑叆" [ref=e271]
- - tab "鏁版嵁" [ref=e272]
- - tab "鍏紡" [ref=e273]
- - tab "鍗忎綔" [ref=e274]
- - tab "瑙嗗浘" [ref=e275]
- - tab "鏁堢巼宸ュ叿" [ref=e276]
- - tab "浼氬憳涓撲韩" [ref=e277]
- - tabpanel [ref=e279]:
- - toolbar "寮�濮�" [ref=e280]:
- - generic [ref=e281]:
- - generic [ref=e282]:
- - generic [ref=e283]:
- - button [disabled] [ref=e288]:
- - button [disabled] [ref=e290]
- - button [disabled] [ref=e296]:
- - button [disabled] [ref=e298]
- - generic [ref=e300]:
- - button [disabled] [ref=e305]:
- - button [disabled] [ref=e307]
- - button [disabled] [ref=e313]:
- - button [disabled] [ref=e315]
- - generic [ref=e318]:
- - generic [ref=e319]:
- - button [disabled] [ref=e327]:
- - generic [ref=e328]: 榛樿瀛椾綋
- - button [disabled] [ref=e339]:
- - generic [ref=e340]: "12"
- - group [disabled] [ref=e351]:
- - generic [ref=e352]:
- - button [disabled] [ref=e353]
- - button [disabled] [ref=e356]
- - button [disabled] [ref=e364]:
- - button [disabled] [ref=e366]
- - button [disabled] [ref=e377]:
- - generic [ref=e378]:
- - button [disabled] [ref=e379]
- - generic [ref=e381]: 琛ㄦ牸鏍峰紡
- - generic [ref=e384]:
- - button [disabled] [pressed] [ref=e389]:
- - button [disabled] [ref=e391]
- - button [disabled] [ref=e397]:
- - button [disabled] [ref=e399]
- - button [disabled] [ref=e405]:
- - button [disabled] [ref=e407]
- - button [disabled] [ref=e413]:
- - button [disabled] [ref=e415]
- - group [disabled] [ref=e424]:
- - generic [ref=e425]:
- - button [disabled] [ref=e426]
- - button [disabled] [ref=e430]
- - group [disabled] [ref=e438]:
- - generic [ref=e439]:
- - button [disabled] [ref=e440]
- - button [disabled] [ref=e444]
- - button [disabled] [ref=e452]:
- - generic [ref=e453]:
- - button [disabled] [ref=e454]
- - generic [ref=e456]: 鏉′欢鏍煎紡
- - button [ref=e468]:
- - button [ref=e470]
- - generic [ref=e474]: 瀛椾綋鏍峰紡
- - generic [ref=e476]:
- - generic [ref=e477]:
- - button [disabled] [ref=e485]:
- - button [disabled] [ref=e487]
- - button [disabled] [ref=e498]:
- - button [disabled] [ref=e500]
- - generic [ref=e504]:
- - button [disabled] [ref=e509]:
- - button [disabled] [ref=e511]
- - button [disabled] [pressed] [ref=e517]:
- - button [disabled] [ref=e519]
- - button [disabled] [ref=e525]:
- - button [disabled] [ref=e527]
- - generic [ref=e529]:
- - button [disabled] [ref=e535]:
- - generic [ref=e536]:
- - button [disabled] [ref=e537]
- - generic [ref=e539]: 鎹㈣
- - group [disabled] [ref=e548]:
- - generic [ref=e549]:
- - button [disabled] [ref=e550]
- - generic [ref=e552]: 鍚堝苟
- - button [disabled] [ref=e554]
- - button [ref=e564]:
- - button [ref=e566]
- - generic [ref=e570]: 瀵归綈鏂瑰紡
- - generic [ref=e572]:
- - button [disabled] [ref=e581]:
- - generic [ref=e582]: 甯歌
- - generic [ref=e586]:
- - button [disabled] [ref=e591]:
- - button [disabled] [ref=e593]
- - button [disabled] [ref=e599]:
- - button [disabled] [ref=e601]
- - button [ref=e612]:
- - button [ref=e614]
- - generic [ref=e618]: 鏁板瓧鏍煎紡
- - group [ref=e629]:
- - generic [ref=e630]:
- - button [ref=e631]
- - button [ref=e634]
- - generic [ref=e635]: 绛涢��
- - generic [ref=e636]:
- - generic [ref=e637]:
- - button [disabled] [ref=e645]:
- - generic [ref=e646]:
- - button [disabled] [ref=e647]
- - generic [ref=e649]: 鍐荤粨
- - group [disabled] [ref=e659]:
- - generic [ref=e660]:
- - button [disabled] [ref=e661]
- - generic [ref=e663]: 姹傚拰
- - button [disabled] [ref=e665]
- - generic [ref=e666]:
- - button [disabled] [ref=e674]:
- - generic [ref=e675]:
- - button [disabled] [ref=e676]
- - generic [ref=e678]: 鎺掑簭
- - button [disabled] [ref=e688]:
- - generic [ref=e689]:
- - button [disabled] [ref=e690]
- - generic [ref=e692]: 鏁版嵁
- - button [ref=e704]:
- - button [ref=e706]
- - generic [ref=e710]: 鏁版嵁
- - button [disabled] [ref=e720]:
- - button [disabled] [ref=e722]
- - generic [ref=e726]: 淇濇姢
- - button [disabled] [ref=e737]:
- - button [disabled] [ref=e739]
- - generic [ref=e743]: 鎻掑叆
- - button [disabled] [ref=e753]:
- - button [disabled] [ref=e755]
- - generic [ref=e759]: 鍥剧墖
- - generic [ref=e760]:
- - button [disabled] [ref=e769]:
- - generic [ref=e770]:
- - button [disabled] [ref=e771]
- - generic [ref=e773]: 鍥捐〃
- - button [disabled] [ref=e781]:
- - generic [ref=e782]:
- - button [disabled] [ref=e783]
- - generic [ref=e785]: 閫忚琛�
- - button [disabled] [ref=e795]:
- - button [disabled] [ref=e797]
- - generic [ref=e801]: 鎻掑叆
- - button [disabled] [ref=e812]:
- - button [disabled] [ref=e814]
- - generic [ref=e818]: 蹇嵎宸ュ叿
- - button [disabled] [ref=e825]:
- - button [disabled] [ref=e827]
- - generic [ref=e829]: 鐢熸垚鍥剧墖
- - generic [ref=e830]:
- - generic [ref=e831]:
- - button [ref=e836]:
- - generic [ref=e837]:
- - button [ref=e838]
- - generic [ref=e840]: 鐢熸垚鏌ヨ
- - button [ref=e845]:
- - generic [ref=e846]:
- - button [ref=e847]
- - generic [ref=e849]: 鐢熸垚鏅鸿兘琛�
- - generic [ref=e850]:
- - button [disabled] [ref=e855]:
- - generic [ref=e856]:
- - button [disabled] [ref=e857]
- - generic [ref=e859]: 鍥剧墖杞〃鏍�
- - button [disabled] [ref=e867]:
- - generic [ref=e868]:
- - button [disabled] [ref=e869]
- - generic [ref=e871]: PDF杞崲
- - button [ref=e883]:
- - button [ref=e885]
- - generic [ref=e889]: 蹇嵎宸ュ叿
- - button [ref=e897]:
- - button [ref=e899]
- - generic [ref=e901]: 鎵撳嵃
- - button [ref=e911]:
- - button [ref=e913]
- - generic [ref=e920]: 鏇村
- - generic [ref=e921]:
- - generic [ref=e922]:
- - generic [ref=e923]:
- - button "鎾ら攢" [disabled] [ref=e928]:
- - button [disabled] [ref=e930]
- - button "閲嶅仛" [disabled] [ref=e936]:
- - button [disabled] [ref=e938]
- - generic [ref=e940]:
- - button "鏍煎紡鍒凤紝鍙屽嚮鍙噸澶嶄娇鐢�" [disabled] [ref=e945]:
- - button [disabled] [ref=e947]
- - button "娓呴櫎鏍煎紡" [disabled] [ref=e953]:
- - button [disabled] [ref=e955]
- - generic [ref=e958]:
- - generic [ref=e959]:
- - button "榛樿瀛椾綋" [disabled] [ref=e967]
- - button "12" [disabled] [ref=e979]
- - group "杈规" [disabled] [ref=e991]:
- - generic [ref=e992]:
- - button "杈规" [disabled] [ref=e993]
- - button "杈规 鏇村閫夐」" [disabled] [ref=e996]
- - button "鍗曞厓鏍兼牱寮�" [disabled] [ref=e1004]:
- - button [disabled] [ref=e1006]
- - button "琛ㄦ牸鏍峰紡" [disabled] [ref=e1017]:
- - generic [ref=e1018]:
- - button [disabled] [ref=e1019]
- - generic [ref=e1021]: 琛ㄦ牸鏍峰紡
- - generic [ref=e1024]:
- - button "鍔犵矖" [disabled] [pressed] [ref=e1029]:
- - button [disabled] [ref=e1031]
- - button "鍊炬枩" [disabled] [ref=e1037]:
- - button [disabled] [ref=e1039]
- - button "涓嬪垝绾�" [disabled] [ref=e1045]:
- - button [disabled] [ref=e1047]
- - button "鍒犻櫎绾�" [disabled] [ref=e1053]:
- - button [disabled] [ref=e1055]
- - group "瀛椾綋棰滆壊" [disabled] [ref=e1064]:
- - generic [ref=e1065]:
- - button "瀛椾綋棰滆壊" [disabled] [ref=e1066]
- - button "瀛椾綋棰滆壊 鏇村閫夐」" [disabled] [ref=e1070]
- - group "濉厖棰滆壊" [disabled] [ref=e1078]:
- - generic [ref=e1079]:
- - button "濉厖棰滆壊" [disabled] [ref=e1080]
- - button "濉厖棰滆壊 鏇村閫夐」" [disabled] [ref=e1084]
- - button "鏉′欢鏍煎紡" [disabled] [ref=e1092]:
- - generic [ref=e1093]:
- - button [disabled] [ref=e1094]
- - generic [ref=e1096]: 鏉′欢鏍煎紡
- - generic [ref=e1411]:
- - generic [ref=e1412]:
- - button "鍨傜洿瀵归綈" [disabled] [ref=e1420]:
- - button [disabled] [ref=e1422]
- - button "鏂囧瓧鏂瑰悜" [disabled] [ref=e1433]:
- - button [disabled] [ref=e1435]
- - generic [ref=e1439]:
- - button "宸﹀榻�" [disabled] [ref=e1444]:
- - button [disabled] [ref=e1446]
- - button "灞呬腑瀵归綈" [disabled] [pressed] [ref=e1452]:
- - button [disabled] [ref=e1454]
- - button "鍙冲榻�" [disabled] [ref=e1460]:
- - button [disabled] [ref=e1462]
- - generic [ref=e1464]:
- - button "鎹㈣" [disabled] [ref=e1470]:
- - generic [ref=e1471]:
- - button [disabled] [ref=e1472]
- - generic [ref=e1474]: 鎹㈣
- - group "鍚堝苟" [disabled] [ref=e1483]:
- - generic [ref=e1484]:
- - button "鍚堝苟" [disabled] [ref=e1485]
- - generic [ref=e1487]: 鍚堝苟
- - button "鍚堝苟 鏇村閫夐」" [disabled] [ref=e1489]
- - generic [ref=e1490]:
- - button "甯歌" [disabled] [ref=e1499]
- - generic [ref=e1504]:
- - button "鐧惧垎姣旀牱寮�" [disabled] [ref=e1509]:
- - button [disabled] [ref=e1511]
- - button "鍗冧綅鍒嗛殧鏍峰紡" [disabled] [ref=e1517]:
- - button [disabled] [ref=e1519]
- - group "绛涢��" [ref=e1143]:
- - generic [ref=e1144]:
- - button "绛涢��" [ref=e1145]
- - button "绛涢�� 鏇村閫夐」" [ref=e1148]
- - generic [ref=e1521]:
- - generic [ref=e1522]:
- - button "鍐荤粨" [disabled] [ref=e1530]:
- - generic [ref=e1531]:
- - button [disabled] [ref=e1532]
- - generic [ref=e1534]: 鍐荤粨
- - group "姹傚拰" [disabled] [ref=e1544]:
- - generic [ref=e1545]:
- - button "姹傚拰" [disabled] [ref=e1546]
- - generic [ref=e1548]: 姹傚拰
- - button "姹傚拰 鏇村閫夐」" [disabled] [ref=e1550]
- - generic [ref=e1551]:
- - button "鎺掑簭" [disabled] [ref=e1559]:
- - generic [ref=e1560]:
- - button [disabled] [ref=e1561]
- - generic [ref=e1563]: 鎺掑簭
- - button "鏁版嵁" [disabled] [ref=e1573]:
- - generic [ref=e1574]:
- - button [disabled] [ref=e1575]
- - generic [ref=e1577]: 鏁版嵁
- - button "淇濇姢" [disabled] [ref=e1589]:
- - button [disabled] [ref=e1591]
- - button "鎻掑叆" [disabled] [ref=e1605]:
- - button [disabled] [ref=e1607]
- - button "鍥剧墖" [disabled] [ref=e1621]:
- - button [disabled] [ref=e1623]
- - generic [ref=e1628]:
- - button "鍥捐〃" [disabled] [ref=e1637]:
- - generic [ref=e1638]:
- - button [disabled] [ref=e1639]
- - generic [ref=e1641]: 鍥捐〃
- - button "閫忚琛�" [disabled] [ref=e1649]:
- - generic [ref=e1650]:
- - button [disabled] [ref=e1651]
- - generic [ref=e1653]: 閫忚琛�
- - button "蹇嵎宸ュ叿" [disabled] [ref=e1663]:
- - button [disabled] [ref=e1665]
- - button "鐢熸垚鍥剧墖" [disabled] [ref=e1676]:
- - button [disabled] [ref=e1678]
- - generic [ref=e1681]:
- - generic [ref=e1682]:
- - button "鐢熸垚鏌ヨ" [ref=e1687]:
- - generic [ref=e1688]:
- - button [ref=e1689]
- - generic [ref=e1691]: 鐢熸垚鏌ヨ
- - button "鐢熸垚鏅鸿兘琛�" [ref=e1696]:
- - generic [ref=e1697]:
- - button [ref=e1698]
- - generic [ref=e1700]: 鐢熸垚鏅鸿兘琛�
- - generic [ref=e1701]:
- - button "鍥剧墖杞〃鏍�" [disabled] [ref=e1706]:
- - generic [ref=e1707]:
- - button [disabled] [ref=e1708]
- - generic [ref=e1710]: 鍥剧墖杞〃鏍�
- - button "PDF杞崲" [disabled] [ref=e1718]:
- - generic [ref=e1719]:
- - button [disabled] [ref=e1720]
- - generic [ref=e1722]: PDF杞崲
- - button "鎵撳嵃" [ref=e1219]:
- - button [ref=e1221]
- - toolbar [ref=e1225]:
- - generic [ref=e1228]:
- - button "鏌ユ壘鏇挎崲" [ref=e1233]:
- - button [ref=e1235]
- - button "宸ュ叿鏍忓垏鎹�" [ref=e1244]:
- - button [ref=e1246]
- - generic [ref=e105]:
- - generic [ref=e106]:
- - textbox [ref=e107]
- - combobox [ref=e108]:
- - paragraph [ref=e109]
- - combobox [ref=e195]:
- - paragraph
- - toolbar "鐘舵�佹爮" [ref=e1264]:
- - button [ref=e1265]
- - button [ref=e1277]
- - button [ref=e1289]:
- - tablist "宸ヤ綔琛�" [ref=e1296]:
- - generic [ref=e1298]:
- - tab "杩涢攢瀛橀噸鏋�-NEW" [ref=e1300] [cursor=pointer]
- - tab "閾跺窛3绾OM绯荤粺" [selected] [ref=e1303] [cursor=pointer]
- - tab "OA闂琛�" [ref=e1306] [cursor=pointer]
- - tab "瀹佸-涓囬�氬缓鏉�" [ref=e1309] [cursor=pointer]
- - tab "娴疆" [ref=e1312] [cursor=pointer]
- - tab "閰掓硥楠屾敹闂" [ref=e1315] [cursor=pointer]
- - tab "婀熸按宄¢獙鏀堕棶棰樿〃" [ref=e1318] [cursor=pointer]
- - tab "澶╂触鈥斿弻濂囩偣" [ref=e1321] [cursor=pointer]
- - tab "澶╂触鈥斿啗娉颁紵涓�" [ref=e1324] [cursor=pointer]
- - tab "澶╂触--鍚涙瓕鍖栧伐" [ref=e1327] [cursor=pointer]
- - tab "澶╂触鈥旈槼鍏夊嵃鍒�" [ref=e1330] [cursor=pointer]
- - tab "楣ゅ鈥斿ぉ娌愮幓鐠�" [ref=e1333] [cursor=pointer]
- - tab "澶╂触鈥斿痉鐟炴柉褰辫" [ref=e1336] [cursor=pointer]
- - tab "婀栧崡鈥斿潳娉板寲宸�" [ref=e1339] [cursor=pointer]
- - tab "婀栧崡鈥旈箯鍒涚數瀛�" [ref=e1342] [cursor=pointer]
- - tab "瀹佸-涓洓寤烘潗" [ref=e1345] [cursor=pointer]
- - tab "闀挎不鈥斿仴榻块娇绉戝櫒鏉�" [ref=e1348] [cursor=pointer]
- - tab "闀挎不鈥斿畨閾佺啍鍓�" [ref=e1351] [cursor=pointer]
- - tab "闀挎不-绁ラ洦" [ref=e1354] [cursor=pointer]
- - tab "闀挎不-鏅嬪拰鍥�" [ref=e1357] [cursor=pointer]
- - tab "娌冲崡-楣ゅ" [ref=e1360] [cursor=pointer]
- - generic [ref=e1362]:
- - generic [ref=e1365]:
- - button [disabled]
- - button [ref=e1369]
- - button
- - button "楂樹寒鎵�鍦ㄨ鍒�" [ref=e1370]
- - button [ref=e1382]
- - button "鍏ㄥ睆鏌ョ湅 缂╁皬,Ctrl+0鍙仮澶嶈嚦100% 鏀惧ぇ,Ctrl+0鍙仮澶嶈嚦100%" [ref=e1387]:
- - generic [ref=e1392]:
- - generic "鍏ㄥ睆鏌ョ湅" [ref=e1396]
- - generic "缂╁皬,Ctrl+0鍙仮澶嶈嚦100%" [ref=e1400]
- - combobox [ref=e1404]:
- - generic [ref=e1405]: 100%
- - generic "鏀惧ぇ,Ctrl+0鍙仮澶嶈嚦100%" [ref=e1410]
- - textbox [ref=e193]
- - generic [ref=e1732]:
- - generic [ref=e1733]: 璇烽�夋嫨鐧诲綍鏂瑰紡
- - generic [ref=e1737]:
- - generic [ref=e1738]:
- - tablist [ref=e1740] [cursor=pointer]:
- - tab "寰俊鐧诲綍" [selected] [ref=e1741]
- - tab "QQ鐧诲綍" [ref=e1743]
- - tabpanel [ref=e1746]:
- - generic [ref=e1747]: 寮�鍚揩鎹风櫥褰�
- - generic [ref=e1749]:
- - iframe [ref=e1753]:
- - generic [ref=f3e1]:
- - alert [ref=f3e2]:
- - paragraph [ref=f3e4]: 宸插厑璁�
- - alert [ref=f3e5]:
- - paragraph [ref=f3e7]: 宸叉嫆缁�
- - alert [ref=f3e8]:
- - paragraph [ref=f3e10]: 宸叉嫆缁濅娇鐢ㄤ綘鐨勫井淇¤韩浠借繍琛�
- - alert [ref=f3e11]:
- - paragraph [ref=f3e14]: 绯荤粺閿欒锛岃鍒锋柊閲嶈瘯
- - alert [ref=f3e15]:
- - paragraph [ref=f3e18]: 姝ゅ簲鐢ㄤ粎鏀寔鎵竴鎵櫥褰�
- - alert [ref=f3e19]:
- - paragraph [ref=f3e21]: 鐧诲綍瓒呮椂
- - alert [ref=f3e22]:
- - paragraph [ref=f3e24]: 姝e湪鍔犺浇
- - button "绔嬪嵆鐧诲綍" [ref=e1757] [cursor=pointer]
- - generic [ref=e1759]:
- - generic [ref=e1760]: 鍏朵粬璐﹀彿鐧诲綍
- - generic [ref=e1761]:
- - generic [ref=e1762] [cursor=pointer]: 鎵嬫満鍙�
- - generic [ref=e1767] [cursor=pointer]: 浼佷笟寰俊
- - generic [ref=e1772] [cursor=pointer]: SSO鐧诲綍
- - generic [ref=e1777] [cursor=pointer]: 鍒涘缓缁勭粐
- - generic [ref=e1786]:
- - checkbox "鎴戝凡闃呰骞舵帴鍙楄吘璁枃妗g殑 鏈嶅姟鍗忚 鍜� 闅愮鏀跨瓥" [ref=e1787]
- - generic [ref=e1789]: 鎴戝凡闃呰骞舵帴鍙楄吘璁枃妗g殑 鏈嶅姟鍗忚 鍜� 闅愮鏀跨瓥
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-21T07-09-59-810Z.yml b/.playwright-mcp/page-2026-07-21T07-09-59-810Z.yml
deleted file mode 100644
index 35dfa81..0000000
--- a/.playwright-mcp/page-2026-07-21T07-09-59-810Z.yml
+++ /dev/null
@@ -1,416 +0,0 @@
-- generic [ref=e1]:
- - generic [ref=e197]:
- - toolbar "titlebar" [ref=e198]:
- - generic [ref=e205]: 涓皬浼佷笟鏀归�燽ug淇敼鍒楄〃
- - button "鍙兘鏌ョ湅" [ref=e219]
- - img "breadcrumb" [ref=e236]
- - generic [ref=e246]:
- - img "澶村儚" [ref=e249]
- - img "澶村儚" [ref=e254]
- - img "澶村儚" [ref=e1727]
- - button "鐧诲綍鑵捐鏂囨。" [active] [ref=e261]
- - toolbar "Toolbar" [ref=e267]:
- - tablist [ref=e269]:
- - tab "寮�濮�" [selected] [ref=e270]
- - tab "鎻掑叆" [ref=e271]
- - tab "鏁版嵁" [ref=e272]
- - tab "鍏紡" [ref=e273]
- - tab "鍗忎綔" [ref=e274]
- - tab "瑙嗗浘" [ref=e275]
- - tab "鏁堢巼宸ュ叿" [ref=e276]
- - tab "浼氬憳涓撲韩" [ref=e277]
- - tabpanel [ref=e279]:
- - toolbar "寮�濮�" [ref=e280]:
- - generic [ref=e281]:
- - generic [ref=e282]:
- - generic [ref=e283]:
- - button [disabled] [ref=e288]:
- - button [disabled] [ref=e290]
- - button [disabled] [ref=e296]:
- - button [disabled] [ref=e298]
- - generic [ref=e300]:
- - button [disabled] [ref=e305]:
- - button [disabled] [ref=e307]
- - button [disabled] [ref=e313]:
- - button [disabled] [ref=e315]
- - generic [ref=e318]:
- - generic [ref=e319]:
- - button [disabled] [ref=e327]:
- - generic [ref=e328]: 榛樿瀛椾綋
- - button [disabled] [ref=e339]:
- - generic [ref=e340]: "12"
- - group [disabled] [ref=e351]:
- - generic [ref=e352]:
- - button [disabled] [ref=e353]
- - button [disabled] [ref=e356]
- - button [disabled] [ref=e364]:
- - button [disabled] [ref=e366]
- - button [disabled] [ref=e377]:
- - generic [ref=e378]:
- - button [disabled] [ref=e379]
- - generic [ref=e381]: 琛ㄦ牸鏍峰紡
- - generic [ref=e384]:
- - button [disabled] [pressed] [ref=e389]:
- - button [disabled] [ref=e391]
- - button [disabled] [ref=e397]:
- - button [disabled] [ref=e399]
- - button [disabled] [ref=e405]:
- - button [disabled] [ref=e407]
- - button [disabled] [ref=e413]:
- - button [disabled] [ref=e415]
- - group [disabled] [ref=e424]:
- - generic [ref=e425]:
- - button [disabled] [ref=e426]
- - button [disabled] [ref=e430]
- - group [disabled] [ref=e438]:
- - generic [ref=e439]:
- - button [disabled] [ref=e440]
- - button [disabled] [ref=e444]
- - button [disabled] [ref=e452]:
- - generic [ref=e453]:
- - button [disabled] [ref=e454]
- - generic [ref=e456]: 鏉′欢鏍煎紡
- - button [ref=e468]:
- - button [ref=e470]
- - generic [ref=e474]: 瀛椾綋鏍峰紡
- - generic [ref=e476]:
- - generic [ref=e477]:
- - button [disabled] [ref=e485]:
- - button [disabled] [ref=e487]
- - button [disabled] [ref=e498]:
- - button [disabled] [ref=e500]
- - generic [ref=e504]:
- - button [disabled] [ref=e509]:
- - button [disabled] [ref=e511]
- - button [disabled] [pressed] [ref=e517]:
- - button [disabled] [ref=e519]
- - button [disabled] [ref=e525]:
- - button [disabled] [ref=e527]
- - generic [ref=e529]:
- - button [disabled] [ref=e535]:
- - generic [ref=e536]:
- - button [disabled] [ref=e537]
- - generic [ref=e539]: 鎹㈣
- - group [disabled] [ref=e548]:
- - generic [ref=e549]:
- - button [disabled] [ref=e550]
- - generic [ref=e552]: 鍚堝苟
- - button [disabled] [ref=e554]
- - button [ref=e564]:
- - button [ref=e566]
- - generic [ref=e570]: 瀵归綈鏂瑰紡
- - generic [ref=e572]:
- - button [disabled] [ref=e581]:
- - generic [ref=e582]: 甯歌
- - generic [ref=e586]:
- - button [disabled] [ref=e591]:
- - button [disabled] [ref=e593]
- - button [disabled] [ref=e599]:
- - button [disabled] [ref=e601]
- - button [ref=e612]:
- - button [ref=e614]
- - generic [ref=e618]: 鏁板瓧鏍煎紡
- - group [ref=e629]:
- - generic [ref=e630]:
- - button [ref=e631]
- - button [ref=e634]
- - generic [ref=e635]: 绛涢��
- - generic [ref=e636]:
- - generic [ref=e637]:
- - button [disabled] [ref=e645]:
- - generic [ref=e646]:
- - button [disabled] [ref=e647]
- - generic [ref=e649]: 鍐荤粨
- - group [disabled] [ref=e659]:
- - generic [ref=e660]:
- - button [disabled] [ref=e661]
- - generic [ref=e663]: 姹傚拰
- - button [disabled] [ref=e665]
- - generic [ref=e666]:
- - button [disabled] [ref=e674]:
- - generic [ref=e675]:
- - button [disabled] [ref=e676]
- - generic [ref=e678]: 鎺掑簭
- - button [disabled] [ref=e688]:
- - generic [ref=e689]:
- - button [disabled] [ref=e690]
- - generic [ref=e692]: 鏁版嵁
- - button [ref=e704]:
- - button [ref=e706]
- - generic [ref=e710]: 鏁版嵁
- - button [disabled] [ref=e720]:
- - button [disabled] [ref=e722]
- - generic [ref=e726]: 淇濇姢
- - button [disabled] [ref=e737]:
- - button [disabled] [ref=e739]
- - generic [ref=e743]: 鎻掑叆
- - button [disabled] [ref=e753]:
- - button [disabled] [ref=e755]
- - generic [ref=e759]: 鍥剧墖
- - generic [ref=e760]:
- - button [disabled] [ref=e769]:
- - generic [ref=e770]:
- - button [disabled] [ref=e771]
- - generic [ref=e773]: 鍥捐〃
- - button [disabled] [ref=e781]:
- - generic [ref=e782]:
- - button [disabled] [ref=e783]
- - generic [ref=e785]: 閫忚琛�
- - button [disabled] [ref=e795]:
- - button [disabled] [ref=e797]
- - generic [ref=e801]: 鎻掑叆
- - button [disabled] [ref=e812]:
- - button [disabled] [ref=e814]
- - generic [ref=e818]: 蹇嵎宸ュ叿
- - button [disabled] [ref=e825]:
- - button [disabled] [ref=e827]
- - generic [ref=e829]: 鐢熸垚鍥剧墖
- - generic [ref=e830]:
- - generic [ref=e831]:
- - button [ref=e836]:
- - generic [ref=e837]:
- - button [ref=e838]
- - generic [ref=e840]: 鐢熸垚鏌ヨ
- - button [ref=e845]:
- - generic [ref=e846]:
- - button [ref=e847]
- - generic [ref=e849]: 鐢熸垚鏅鸿兘琛�
- - generic [ref=e850]:
- - button [disabled] [ref=e855]:
- - generic [ref=e856]:
- - button [disabled] [ref=e857]
- - generic [ref=e859]: 鍥剧墖杞〃鏍�
- - button [disabled] [ref=e867]:
- - generic [ref=e868]:
- - button [disabled] [ref=e869]
- - generic [ref=e871]: PDF杞崲
- - button [ref=e883]:
- - button [ref=e885]
- - generic [ref=e889]: 蹇嵎宸ュ叿
- - button [ref=e897]:
- - button [ref=e899]
- - generic [ref=e901]: 鎵撳嵃
- - button [ref=e911]:
- - button [ref=e913]
- - generic [ref=e920]: 鏇村
- - generic [ref=e921]:
- - generic [ref=e922]:
- - generic [ref=e923]:
- - button "鎾ら攢" [disabled] [ref=e928]:
- - button [disabled] [ref=e930]
- - button "閲嶅仛" [disabled] [ref=e936]:
- - button [disabled] [ref=e938]
- - generic [ref=e940]:
- - button "鏍煎紡鍒凤紝鍙屽嚮鍙噸澶嶄娇鐢�" [disabled] [ref=e945]:
- - button [disabled] [ref=e947]
- - button "娓呴櫎鏍煎紡" [disabled] [ref=e953]:
- - button [disabled] [ref=e955]
- - generic [ref=e958]:
- - generic [ref=e959]:
- - button "榛樿瀛椾綋" [disabled] [ref=e967]
- - button "12" [disabled] [ref=e979]
- - group "杈规" [disabled] [ref=e991]:
- - generic [ref=e992]:
- - button "杈规" [disabled] [ref=e993]
- - button "杈规 鏇村閫夐」" [disabled] [ref=e996]
- - button "鍗曞厓鏍兼牱寮�" [disabled] [ref=e1004]:
- - button [disabled] [ref=e1006]
- - button "琛ㄦ牸鏍峰紡" [disabled] [ref=e1017]:
- - generic [ref=e1018]:
- - button [disabled] [ref=e1019]
- - generic [ref=e1021]: 琛ㄦ牸鏍峰紡
- - generic [ref=e1024]:
- - button "鍔犵矖" [disabled] [pressed] [ref=e1029]:
- - button [disabled] [ref=e1031]
- - button "鍊炬枩" [disabled] [ref=e1037]:
- - button [disabled] [ref=e1039]
- - button "涓嬪垝绾�" [disabled] [ref=e1045]:
- - button [disabled] [ref=e1047]
- - button "鍒犻櫎绾�" [disabled] [ref=e1053]:
- - button [disabled] [ref=e1055]
- - group "瀛椾綋棰滆壊" [disabled] [ref=e1064]:
- - generic [ref=e1065]:
- - button "瀛椾綋棰滆壊" [disabled] [ref=e1066]
- - button "瀛椾綋棰滆壊 鏇村閫夐」" [disabled] [ref=e1070]
- - group "濉厖棰滆壊" [disabled] [ref=e1078]:
- - generic [ref=e1079]:
- - button "濉厖棰滆壊" [disabled] [ref=e1080]
- - button "濉厖棰滆壊 鏇村閫夐」" [disabled] [ref=e1084]
- - button "鏉′欢鏍煎紡" [disabled] [ref=e1092]:
- - generic [ref=e1093]:
- - button [disabled] [ref=e1094]
- - generic [ref=e1096]: 鏉′欢鏍煎紡
- - generic [ref=e1411]:
- - generic [ref=e1412]:
- - button "鍨傜洿瀵归綈" [disabled] [ref=e1420]:
- - button [disabled] [ref=e1422]
- - button "鏂囧瓧鏂瑰悜" [disabled] [ref=e1433]:
- - button [disabled] [ref=e1435]
- - generic [ref=e1439]:
- - button "宸﹀榻�" [disabled] [ref=e1444]:
- - button [disabled] [ref=e1446]
- - button "灞呬腑瀵归綈" [disabled] [pressed] [ref=e1452]:
- - button [disabled] [ref=e1454]
- - button "鍙冲榻�" [disabled] [ref=e1460]:
- - button [disabled] [ref=e1462]
- - generic [ref=e1464]:
- - button "鎹㈣" [disabled] [ref=e1470]:
- - generic [ref=e1471]:
- - button [disabled] [ref=e1472]
- - generic [ref=e1474]: 鎹㈣
- - group "鍚堝苟" [disabled] [ref=e1483]:
- - generic [ref=e1484]:
- - button "鍚堝苟" [disabled] [ref=e1485]
- - generic [ref=e1487]: 鍚堝苟
- - button "鍚堝苟 鏇村閫夐」" [disabled] [ref=e1489]
- - generic [ref=e1490]:
- - button "甯歌" [disabled] [ref=e1499]
- - generic [ref=e1504]:
- - button "鐧惧垎姣旀牱寮�" [disabled] [ref=e1509]:
- - button [disabled] [ref=e1511]
- - button "鍗冧綅鍒嗛殧鏍峰紡" [disabled] [ref=e1517]:
- - button [disabled] [ref=e1519]
- - group "绛涢��" [ref=e1143]:
- - generic [ref=e1144]:
- - button "绛涢��" [ref=e1145]
- - button "绛涢�� 鏇村閫夐」" [ref=e1148]
- - generic [ref=e1521]:
- - generic [ref=e1522]:
- - button "鍐荤粨" [disabled] [ref=e1530]:
- - generic [ref=e1531]:
- - button [disabled] [ref=e1532]
- - generic [ref=e1534]: 鍐荤粨
- - group "姹傚拰" [disabled] [ref=e1544]:
- - generic [ref=e1545]:
- - button "姹傚拰" [disabled] [ref=e1546]
- - generic [ref=e1548]: 姹傚拰
- - button "姹傚拰 鏇村閫夐」" [disabled] [ref=e1550]
- - generic [ref=e1551]:
- - button "鎺掑簭" [disabled] [ref=e1559]:
- - generic [ref=e1560]:
- - button [disabled] [ref=e1561]
- - generic [ref=e1563]: 鎺掑簭
- - button "鏁版嵁" [disabled] [ref=e1573]:
- - generic [ref=e1574]:
- - button [disabled] [ref=e1575]
- - generic [ref=e1577]: 鏁版嵁
- - button "淇濇姢" [disabled] [ref=e1589]:
- - button [disabled] [ref=e1591]
- - button "鎻掑叆" [disabled] [ref=e1605]:
- - button [disabled] [ref=e1607]
- - button "鍥剧墖" [disabled] [ref=e1621]:
- - button [disabled] [ref=e1623]
- - generic [ref=e1628]:
- - button "鍥捐〃" [disabled] [ref=e1637]:
- - generic [ref=e1638]:
- - button [disabled] [ref=e1639]
- - generic [ref=e1641]: 鍥捐〃
- - button "閫忚琛�" [disabled] [ref=e1649]:
- - generic [ref=e1650]:
- - button [disabled] [ref=e1651]
- - generic [ref=e1653]: 閫忚琛�
- - button "蹇嵎宸ュ叿" [disabled] [ref=e1663]:
- - button [disabled] [ref=e1665]
- - button "鐢熸垚鍥剧墖" [disabled] [ref=e1676]:
- - button [disabled] [ref=e1678]
- - generic [ref=e1681]:
- - generic [ref=e1682]:
- - button "鐢熸垚鏌ヨ" [ref=e1687]:
- - generic [ref=e1688]:
- - button [ref=e1689]
- - generic [ref=e1691]: 鐢熸垚鏌ヨ
- - button "鐢熸垚鏅鸿兘琛�" [ref=e1696]:
- - generic [ref=e1697]:
- - button [ref=e1698]
- - generic [ref=e1700]: 鐢熸垚鏅鸿兘琛�
- - generic [ref=e1701]:
- - button "鍥剧墖杞〃鏍�" [disabled] [ref=e1706]:
- - generic [ref=e1707]:
- - button [disabled] [ref=e1708]
- - generic [ref=e1710]: 鍥剧墖杞〃鏍�
- - button "PDF杞崲" [disabled] [ref=e1718]:
- - generic [ref=e1719]:
- - button [disabled] [ref=e1720]
- - generic [ref=e1722]: PDF杞崲
- - button "鎵撳嵃" [ref=e1219]:
- - button [ref=e1221]
- - toolbar [ref=e1225]:
- - generic [ref=e1228]:
- - button "鏌ユ壘鏇挎崲" [ref=e1233]:
- - button [ref=e1235]
- - button "宸ュ叿鏍忓垏鎹�" [ref=e1244]:
- - button [ref=e1246]
- - generic [ref=e105]:
- - generic [ref=e106]:
- - textbox [ref=e107]
- - combobox [ref=e108]:
- - paragraph [ref=e109]
- - combobox [ref=e195]:
- - paragraph
- - toolbar "鐘舵�佹爮" [ref=e1264]:
- - button [ref=e1265]
- - button [ref=e1277]
- - button [ref=e1289]:
- - tablist "宸ヤ綔琛�" [ref=e1296]:
- - generic [ref=e1298]:
- - tab "杩涢攢瀛橀噸鏋�-NEW" [ref=e1300] [cursor=pointer]
- - tab "閾跺窛3绾OM绯荤粺" [selected] [ref=e1303] [cursor=pointer]
- - tab "OA闂琛�" [ref=e1306] [cursor=pointer]
- - tab "瀹佸-涓囬�氬缓鏉�" [ref=e1309] [cursor=pointer]
- - tab "娴疆" [ref=e1312] [cursor=pointer]
- - tab "閰掓硥楠屾敹闂" [ref=e1315] [cursor=pointer]
- - tab "婀熸按宄¢獙鏀堕棶棰樿〃" [ref=e1318] [cursor=pointer]
- - tab "澶╂触鈥斿弻濂囩偣" [ref=e1321] [cursor=pointer]
- - tab "澶╂触鈥斿啗娉颁紵涓�" [ref=e1324] [cursor=pointer]
- - tab "澶╂触--鍚涙瓕鍖栧伐" [ref=e1327] [cursor=pointer]
- - tab "澶╂触鈥旈槼鍏夊嵃鍒�" [ref=e1330] [cursor=pointer]
- - tab "楣ゅ鈥斿ぉ娌愮幓鐠�" [ref=e1333] [cursor=pointer]
- - tab "澶╂触鈥斿痉鐟炴柉褰辫" [ref=e1336] [cursor=pointer]
- - tab "婀栧崡鈥斿潳娉板寲宸�" [ref=e1339] [cursor=pointer]
- - tab "婀栧崡鈥旈箯鍒涚數瀛�" [ref=e1342] [cursor=pointer]
- - tab "瀹佸-涓洓寤烘潗" [ref=e1345] [cursor=pointer]
- - tab "闀挎不鈥斿仴榻块娇绉戝櫒鏉�" [ref=e1348] [cursor=pointer]
- - tab "闀挎不鈥斿畨閾佺啍鍓�" [ref=e1351] [cursor=pointer]
- - tab "闀挎不-绁ラ洦" [ref=e1354] [cursor=pointer]
- - tab "闀挎不-鏅嬪拰鍥�" [ref=e1357] [cursor=pointer]
- - tab "娌冲崡-楣ゅ" [ref=e1360] [cursor=pointer]
- - generic [ref=e1362]:
- - generic [ref=e1365]:
- - button [disabled]
- - button [ref=e1369]
- - button
- - button "楂樹寒鎵�鍦ㄨ鍒�" [ref=e1370]
- - button [ref=e1382]
- - button "鍏ㄥ睆鏌ョ湅 缂╁皬,Ctrl+0鍙仮澶嶈嚦100% 鏀惧ぇ,Ctrl+0鍙仮澶嶈嚦100%" [ref=e1387]:
- - generic [ref=e1392]:
- - generic "鍏ㄥ睆鏌ョ湅" [ref=e1396]
- - generic "缂╁皬,Ctrl+0鍙仮澶嶈嚦100%" [ref=e1400]
- - combobox [ref=e1404]:
- - generic [ref=e1405]: 100%
- - generic "鏀惧ぇ,Ctrl+0鍙仮澶嶈嚦100%" [ref=e1410]
- - textbox [ref=e193]
- - generic [ref=e1732]:
- - generic [ref=e1733]: 璇烽�夋嫨鐧诲綍鏂瑰紡
- - generic [ref=e1737]:
- - generic [ref=e1738]:
- - tablist [ref=e1740] [cursor=pointer]:
- - tab "寰俊鐧诲綍" [selected] [ref=e1741]
- - tab "QQ鐧诲綍" [ref=e1743]
- - tabpanel [ref=e1746]:
- - generic [ref=e1747]: 寮�鍚揩鎹风櫥褰�
- - generic [ref=e1749]:
- - iframe [ref=e1753]:
- - generic [ref=f3e34]:
- - paragraph [ref=f3e35]: 浣跨敤寰俊鎵竴鎵櫥褰�
- - paragraph [ref=f3e36]: 鈥滆吘璁枃妗b��
- - button "绔嬪嵆鐧诲綍" [ref=e1757] [cursor=pointer]
- - generic [ref=e1759]:
- - generic [ref=e1760]: 鍏朵粬璐﹀彿鐧诲綍
- - generic [ref=e1761]:
- - generic [ref=e1762] [cursor=pointer]: 鎵嬫満鍙�
- - generic [ref=e1767] [cursor=pointer]: 浼佷笟寰俊
- - generic [ref=e1772] [cursor=pointer]: SSO鐧诲綍
- - generic [ref=e1777] [cursor=pointer]: 鍒涘缓缁勭粐
- - generic [ref=e1786]:
- - checkbox "鎴戝凡闃呰骞舵帴鍙楄吘璁枃妗g殑 鏈嶅姟鍗忚 鍜� 闅愮鏀跨瓥" [ref=e1787]
- - generic [ref=e1789]: 鎴戝凡闃呰骞舵帴鍙楄吘璁枃妗g殑 鏈嶅姟鍗忚 鍜� 闅愮鏀跨瓥
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-21T07-11-18-147Z.png b/.playwright-mcp/page-2026-07-21T07-11-18-147Z.png
deleted file mode 100644
index 8e7543a..0000000
--- a/.playwright-mcp/page-2026-07-21T07-11-18-147Z.png
+++ /dev/null
Binary files differ
diff --git a/.playwright-mcp/page-2026-07-21T07-13-43-647Z.yml b/.playwright-mcp/page-2026-07-21T07-13-43-647Z.yml
deleted file mode 100644
index 25228a7..0000000
--- a/.playwright-mcp/page-2026-07-21T07-13-43-647Z.yml
+++ /dev/null
@@ -1,84 +0,0 @@
-- generic [active] [ref=f4e1]:
- - generic [ref=f4e3]:
- - generic [ref=f4e4]:
- - generic [ref=f4e8]: 涓皬浼佷笟鏀归�燽ug淇敼鍒楄〃
- - button "鐧诲綍鑵捐鏂囨。" [ref=f4e12]
- - generic [ref=f4e13]:
- - generic [ref=f4e14]:
- - generic [ref=f4e15]: 寮�濮�
- - generic [ref=f4e16]: 鎻掑叆
- - generic [ref=f4e17]: 鏁版嵁
- - generic [ref=f4e18]: 鍏紡
- - generic [ref=f4e19]: 鍗忎綔
- - generic [ref=f4e20]: 瑙嗗浘
- - generic [ref=f4e21]:
- - generic [ref=f4e27]:
- - generic [ref=f4e28]: 榛樿瀛椾綋
- - generic [ref=f4e30]: "10"
- - generic [ref=f4e42]: 琛ㄦ牸鏍峰紡
- - generic [ref=f4e44]: 鏉′欢鏍煎紡
- - generic [ref=f4e53]: 鎹㈣
- - generic [ref=f4e55]: 鍚堝苟
- - generic [ref=f4e58]: 甯歌
- - generic [ref=f4e64]: 绛涢��
- - generic [ref=f4e66]: 鍐荤粨
- - generic [ref=f4e68]: 鎺掑簭
- - generic [ref=f4e70]: 姹傚拰
- - generic [ref=f4e72]: 鏁版嵁
- - generic [ref=f4e74]: 淇濇姢
- - generic [ref=f4e77]: 鎻掑叆
- - generic [ref=f4e79]: 鍥剧墖
- - generic [ref=f4e81]: 鍥捐〃
- - generic [ref=f4e83]: 閫忚琛�
- - generic [ref=f4e86]: 蹇嵎宸ュ叿
- - generic [ref=f4e88]: 鐢熸垚鍥剧墖
- - generic [ref=f4e90]: 鍏宠仈鏀堕泦琛�
- - generic [ref=f4e92]: 鍥剧墖杞〃鏍�
- - generic [ref=f4e94]: 鐢熸垚鏅鸿兘琛�
- - generic [ref=f4e96]: PDF杞崲
- - generic [ref=f4e99]: 鎵撳嵃
- - generic [ref=f4e105]: A1
- - generic [ref=f4e122]:
- - generic [ref=f4e125]:
- - link "杩涢攢瀛橀噸鏋�-NEW" [ref=f4e126]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=fs73ok
- - generic [ref=f4e129]: 閾跺窛3绾OM绯荤粺
- - link "OA闂琛�" [ref=f4e132]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=f64daq
- - link "瀹佸-涓囬�氬缓鏉�" [ref=f4e135]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=ept4mh
- - link "娴疆" [ref=f4e138]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=spyhmp
- - link "閰掓硥楠屾敹闂" [ref=f4e141]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=x00zho
- - link "婀熸按宄¢獙鏀堕棶棰樿〃" [ref=f4e144]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=h625nh
- - link "澶╂触鈥斿弻濂囩偣" [ref=f4e147]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=BB08J2
- - link "澶╂触鈥斿啗娉颁紵涓�" [ref=f4e150]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=lspijq
- - link "澶╂触--鍚涙瓕鍖栧伐" [ref=f4e153]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=mq8fx1
- - link "澶╂触鈥旈槼鍏夊嵃鍒�" [ref=f4e156]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=0l2zs6
- - link "楣ゅ鈥斿ぉ娌愮幓鐠�" [ref=f4e159]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=iwl1zq
- - link "澶╂触鈥斿痉鐟炴柉褰辫" [ref=f4e162]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=uw3s1s
- - link "婀栧崡鈥斿潳娉板寲宸�" [ref=f4e165]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=lhgufk
- - link "婀栧崡鈥旈箯鍒涚數瀛�" [ref=f4e168]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=qr1hgf
- - link "瀹佸-涓洓寤烘潗" [ref=f4e171]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=glpee8
- - link "闀挎不鈥斿仴榻块娇绉戝櫒鏉�" [ref=f4e174]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=f6oijb
- - link "闀挎不鈥斿畨閾佺啍鍓�" [ref=f4e177]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=27v3ks
- - link "闀挎不-绁ラ洦" [ref=f4e180]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=51i5b3
- - link "闀挎不-鏅嬪拰鍥�" [ref=f4e183]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=bo7qyg
- - link "娌冲崡-楣ゅ" [ref=f4e186]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=mkpiqo
- - generic [ref=f4e191]: 100%
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-21T07-14-06-572Z.yml b/.playwright-mcp/page-2026-07-21T07-14-06-572Z.yml
deleted file mode 100644
index abf35b8..0000000
--- a/.playwright-mcp/page-2026-07-21T07-14-06-572Z.yml
+++ /dev/null
@@ -1,394 +0,0 @@
-- generic [ref=f4e1]:
- - generic [ref=f4e194]:
- - toolbar "titlebar" [ref=f4e195]:
- - generic [ref=f4e202]: 涓皬浼佷笟鏀归�燽ug淇敼鍒楄〃
- - button "鍙兘鏌ョ湅" [ref=f4e216]
- - img "breadcrumb" [ref=f4e233]
- - generic [ref=f4e243]:
- - img "澶村儚" [ref=f4e246]
- - img "澶村儚" [ref=f4e251]
- - img "澶村儚" [ref=f4e256]
- - button "鐧诲綍鑵捐鏂囨。" [ref=f4e263]
- - toolbar "Toolbar" [ref=f4e269]:
- - tablist [ref=f4e271]:
- - tab "寮�濮�" [selected] [ref=f4e272]
- - tab "鎻掑叆" [ref=f4e273]
- - tab "鏁版嵁" [ref=f4e274]
- - tab "鍏紡" [ref=f4e275]
- - tab "鍗忎綔" [ref=f4e276]
- - tab "瑙嗗浘" [ref=f4e277]
- - tab "鏁堢巼宸ュ叿" [ref=f4e278]
- - tab "浼氬憳涓撲韩" [ref=f4e279]
- - tabpanel [ref=f4e281]:
- - toolbar "寮�濮�" [ref=f4e282]:
- - generic [ref=f4e283]:
- - generic [ref=f4e284]:
- - generic [ref=f4e285]:
- - button [disabled] [ref=f4e290]:
- - button [disabled] [ref=f4e292]
- - button [disabled] [ref=f4e298]:
- - button [disabled] [ref=f4e300]
- - generic [ref=f4e302]:
- - button [disabled] [ref=f4e307]:
- - button [disabled] [ref=f4e309]
- - button [disabled] [ref=f4e315]:
- - button [disabled] [ref=f4e317]
- - generic [ref=f4e320]:
- - generic [ref=f4e321]:
- - button [disabled] [ref=f4e329]:
- - generic [ref=f4e330]: 榛樿瀛椾綋
- - button [disabled] [ref=f4e341]:
- - generic [ref=f4e342]: "12"
- - group [disabled] [ref=f4e353]:
- - generic [ref=f4e354]:
- - button [disabled] [ref=f4e355]
- - button [disabled] [ref=f4e358]
- - button [disabled] [ref=f4e366]:
- - button [disabled] [ref=f4e368]
- - button [disabled] [ref=f4e379]:
- - generic [ref=f4e380]:
- - button [disabled] [ref=f4e381]
- - generic [ref=f4e383]: 琛ㄦ牸鏍峰紡
- - generic [ref=f4e386]:
- - button [disabled] [pressed] [ref=f4e391]:
- - button [disabled] [ref=f4e393]
- - button [disabled] [ref=f4e399]:
- - button [disabled] [ref=f4e401]
- - button [disabled] [ref=f4e407]:
- - button [disabled] [ref=f4e409]
- - button [disabled] [ref=f4e415]:
- - button [disabled] [ref=f4e417]
- - group [disabled] [ref=f4e426]:
- - generic [ref=f4e427]:
- - button [disabled] [ref=f4e428]
- - button [disabled] [ref=f4e432]
- - group [disabled] [ref=f4e440]:
- - generic [ref=f4e441]:
- - button [disabled] [ref=f4e442]
- - button [disabled] [ref=f4e446]
- - button [disabled] [ref=f4e454]:
- - generic [ref=f4e455]:
- - button [disabled] [ref=f4e456]
- - generic [ref=f4e458]: 鏉′欢鏍煎紡
- - button [ref=f4e470]:
- - button [ref=f4e472]
- - generic [ref=f4e476]: 瀛椾綋鏍峰紡
- - generic [ref=f4e478]:
- - generic [ref=f4e479]:
- - button [disabled] [ref=f4e487]:
- - button [disabled] [ref=f4e489]
- - button [disabled] [ref=f4e500]:
- - button [disabled] [ref=f4e502]
- - generic [ref=f4e506]:
- - button [disabled] [ref=f4e511]:
- - button [disabled] [ref=f4e513]
- - button [disabled] [pressed] [ref=f4e519]:
- - button [disabled] [ref=f4e521]
- - button [disabled] [ref=f4e527]:
- - button [disabled] [ref=f4e529]
- - generic [ref=f4e531]:
- - button [disabled] [ref=f4e537]:
- - generic [ref=f4e538]:
- - button [disabled] [ref=f4e539]
- - generic [ref=f4e541]: 鎹㈣
- - group [disabled] [ref=f4e550]:
- - generic [ref=f4e551]:
- - button [disabled] [ref=f4e552]
- - generic [ref=f4e554]: 鍚堝苟
- - button [disabled] [ref=f4e556]
- - button [ref=f4e566]:
- - button [ref=f4e568]
- - generic [ref=f4e572]: 瀵归綈鏂瑰紡
- - generic [ref=f4e574]:
- - button [disabled] [ref=f4e583]:
- - generic [ref=f4e584]: 甯歌
- - generic [ref=f4e588]:
- - button [disabled] [ref=f4e593]:
- - button [disabled] [ref=f4e595]
- - button [disabled] [ref=f4e601]:
- - button [disabled] [ref=f4e603]
- - button [ref=f4e614]:
- - button [ref=f4e616]
- - generic [ref=f4e620]: 鏁板瓧鏍煎紡
- - group [ref=f4e631]:
- - generic [ref=f4e632]:
- - button [ref=f4e633]
- - button [ref=f4e636]
- - generic [ref=f4e637]: 绛涢��
- - generic [ref=f4e638]:
- - generic [ref=f4e639]:
- - button [disabled] [ref=f4e647]:
- - generic [ref=f4e648]:
- - button [disabled] [ref=f4e649]
- - generic [ref=f4e651]: 鍐荤粨
- - group [disabled] [ref=f4e661]:
- - generic [ref=f4e662]:
- - button [disabled] [ref=f4e663]
- - generic [ref=f4e665]: 姹傚拰
- - button [disabled] [ref=f4e667]
- - generic [ref=f4e668]:
- - button [disabled] [ref=f4e676]:
- - generic [ref=f4e677]:
- - button [disabled] [ref=f4e678]
- - generic [ref=f4e680]: 鎺掑簭
- - button [disabled] [ref=f4e690]:
- - generic [ref=f4e691]:
- - button [disabled] [ref=f4e692]
- - generic [ref=f4e694]: 鏁版嵁
- - button [ref=f4e706]:
- - button [ref=f4e708]
- - generic [ref=f4e712]: 鏁版嵁
- - button [disabled] [ref=f4e722]:
- - button [disabled] [ref=f4e724]
- - generic [ref=f4e728]: 淇濇姢
- - button [disabled] [ref=f4e739]:
- - button [disabled] [ref=f4e741]
- - generic [ref=f4e745]: 鎻掑叆
- - button [disabled] [ref=f4e755]:
- - button [disabled] [ref=f4e757]
- - generic [ref=f4e761]: 鍥剧墖
- - generic [ref=f4e762]:
- - button [disabled] [ref=f4e771]:
- - generic [ref=f4e772]:
- - button [disabled] [ref=f4e773]
- - generic [ref=f4e775]: 鍥捐〃
- - button [disabled] [ref=f4e783]:
- - generic [ref=f4e784]:
- - button [disabled] [ref=f4e785]
- - generic [ref=f4e787]: 閫忚琛�
- - button [disabled] [ref=f4e797]:
- - button [disabled] [ref=f4e799]
- - generic [ref=f4e803]: 鎻掑叆
- - button [disabled] [ref=f4e814]:
- - button [disabled] [ref=f4e816]
- - generic [ref=f4e820]: 蹇嵎宸ュ叿
- - button [disabled] [ref=f4e827]:
- - button [disabled] [ref=f4e829]
- - generic [ref=f4e831]: 鐢熸垚鍥剧墖
- - generic [ref=f4e832]:
- - generic [ref=f4e833]:
- - button [ref=f4e838]:
- - generic [ref=f4e839]:
- - button [ref=f4e840]
- - generic [ref=f4e842]: 鐢熸垚鏌ヨ
- - button [ref=f4e847]:
- - generic [ref=f4e848]:
- - button [ref=f4e849]
- - generic [ref=f4e851]: 鐢熸垚鏅鸿兘琛�
- - generic [ref=f4e852]:
- - button [disabled] [ref=f4e857]:
- - generic [ref=f4e858]:
- - button [disabled] [ref=f4e859]
- - generic [ref=f4e861]: 鍥剧墖杞〃鏍�
- - button [disabled] [ref=f4e869]:
- - generic [ref=f4e870]:
- - button [disabled] [ref=f4e871]
- - generic [ref=f4e873]: PDF杞崲
- - button [ref=f4e885]:
- - button [ref=f4e887]
- - generic [ref=f4e891]: 蹇嵎宸ュ叿
- - button [ref=f4e899]:
- - button [ref=f4e901]
- - generic [ref=f4e903]: 鎵撳嵃
- - button [ref=f4e913]:
- - button [ref=f4e915]
- - generic [ref=f4e922]: 鏇村
- - generic [ref=f4e923]:
- - generic [ref=f4e924]:
- - generic [ref=f4e925]:
- - button "鎾ら攢" [disabled] [ref=f4e930]:
- - button [disabled] [ref=f4e932]
- - button "閲嶅仛" [disabled] [ref=f4e938]:
- - button [disabled] [ref=f4e940]
- - generic [ref=f4e942]:
- - button "鏍煎紡鍒凤紝鍙屽嚮鍙噸澶嶄娇鐢�" [disabled] [ref=f4e947]:
- - button [disabled] [ref=f4e949]
- - button "娓呴櫎鏍煎紡" [disabled] [ref=f4e955]:
- - button [disabled] [ref=f4e957]
- - generic [ref=f4e960]:
- - generic [ref=f4e961]:
- - button "榛樿瀛椾綋" [disabled] [ref=f4e969]
- - button "12" [disabled] [ref=f4e981]
- - group "杈规" [disabled] [ref=f4e993]:
- - generic [ref=f4e994]:
- - button "杈规" [disabled] [ref=f4e995]
- - button "杈规 鏇村閫夐」" [disabled] [ref=f4e998]
- - button "鍗曞厓鏍兼牱寮�" [disabled] [ref=f4e1006]:
- - button [disabled] [ref=f4e1008]
- - button "琛ㄦ牸鏍峰紡" [disabled] [ref=f4e1019]:
- - generic [ref=f4e1020]:
- - button [disabled] [ref=f4e1021]
- - generic [ref=f4e1023]: 琛ㄦ牸鏍峰紡
- - generic [ref=f4e1026]:
- - button "鍔犵矖" [disabled] [pressed] [ref=f4e1031]:
- - button [disabled] [ref=f4e1033]
- - button "鍊炬枩" [disabled] [ref=f4e1039]:
- - button [disabled] [ref=f4e1041]
- - button "涓嬪垝绾�" [disabled] [ref=f4e1047]:
- - button [disabled] [ref=f4e1049]
- - button "鍒犻櫎绾�" [disabled] [ref=f4e1055]:
- - button [disabled] [ref=f4e1057]
- - group "瀛椾綋棰滆壊" [disabled] [ref=f4e1066]:
- - generic [ref=f4e1067]:
- - button "瀛椾綋棰滆壊" [disabled] [ref=f4e1068]
- - button "瀛椾綋棰滆壊 鏇村閫夐」" [disabled] [ref=f4e1072]
- - group "濉厖棰滆壊" [disabled] [ref=f4e1080]:
- - generic [ref=f4e1081]:
- - button "濉厖棰滆壊" [disabled] [ref=f4e1082]
- - button "濉厖棰滆壊 鏇村閫夐」" [disabled] [ref=f4e1086]
- - button "鏉′欢鏍煎紡" [disabled] [ref=f4e1094]:
- - generic [ref=f4e1095]:
- - button [disabled] [ref=f4e1096]
- - generic [ref=f4e1098]: 鏉′欢鏍煎紡
- - generic [ref=f4e1102]:
- - generic [ref=f4e1103]:
- - button "鍨傜洿瀵归綈" [disabled] [ref=f4e1111]:
- - button [disabled] [ref=f4e1113]
- - button "鏂囧瓧鏂瑰悜" [disabled] [ref=f4e1124]:
- - button [disabled] [ref=f4e1126]
- - generic [ref=f4e1130]:
- - button "宸﹀榻�" [disabled] [ref=f4e1135]:
- - button [disabled] [ref=f4e1137]
- - button "灞呬腑瀵归綈" [disabled] [pressed] [ref=f4e1143]:
- - button [disabled] [ref=f4e1145]
- - button "鍙冲榻�" [disabled] [ref=f4e1151]:
- - button [disabled] [ref=f4e1153]
- - generic [ref=f4e1155]:
- - button "鎹㈣" [disabled] [ref=f4e1161]:
- - generic [ref=f4e1162]:
- - button [disabled] [ref=f4e1163]
- - generic [ref=f4e1165]: 鎹㈣
- - group "鍚堝苟" [disabled] [ref=f4e1174]:
- - generic [ref=f4e1175]:
- - button "鍚堝苟" [disabled] [ref=f4e1176]
- - generic [ref=f4e1178]: 鍚堝苟
- - button "鍚堝苟 鏇村閫夐」" [disabled] [ref=f4e1180]
- - generic [ref=f4e1182]:
- - button "甯歌" [disabled] [ref=f4e1191]
- - generic [ref=f4e1196]:
- - button "鐧惧垎姣旀牱寮�" [disabled] [ref=f4e1201]:
- - button [disabled] [ref=f4e1203]
- - button "鍗冧綅鍒嗛殧鏍峰紡" [disabled] [ref=f4e1209]:
- - button [disabled] [ref=f4e1211]
- - group "绛涢��" [ref=f4e1223]:
- - generic [ref=f4e1224]:
- - button "绛涢��" [ref=f4e1225]
- - button "绛涢�� 鏇村閫夐」" [ref=f4e1228]
- - generic [ref=f4e1230]:
- - generic [ref=f4e1231]:
- - button "鍐荤粨" [disabled] [ref=f4e1239]:
- - generic [ref=f4e1240]:
- - button [disabled] [ref=f4e1241]
- - generic [ref=f4e1243]: 鍐荤粨
- - group "姹傚拰" [disabled] [ref=f4e1253]:
- - generic [ref=f4e1254]:
- - button "姹傚拰" [disabled] [ref=f4e1255]
- - generic [ref=f4e1257]: 姹傚拰
- - button "姹傚拰 鏇村閫夐」" [disabled] [ref=f4e1259]
- - generic [ref=f4e1260]:
- - button "鎺掑簭" [disabled] [ref=f4e1268]:
- - generic [ref=f4e1269]:
- - button [disabled] [ref=f4e1270]
- - generic [ref=f4e1272]: 鎺掑簭
- - button "鏁版嵁" [disabled] [ref=f4e1282]:
- - generic [ref=f4e1283]:
- - button [disabled] [ref=f4e1284]
- - generic [ref=f4e1286]: 鏁版嵁
- - button "淇濇姢" [disabled] [ref=f4e1298]:
- - button [disabled] [ref=f4e1300]
- - button "鎻掑叆" [disabled] [ref=f4e1315]:
- - button [disabled] [ref=f4e1317]
- - button "鍥剧墖" [disabled] [ref=f4e1331]:
- - button [disabled] [ref=f4e1333]
- - generic [ref=f4e1338]:
- - button "鍥捐〃" [disabled] [ref=f4e1347]:
- - generic [ref=f4e1348]:
- - button [disabled] [ref=f4e1349]
- - generic [ref=f4e1351]: 鍥捐〃
- - button "閫忚琛�" [disabled] [ref=f4e1359]:
- - generic [ref=f4e1360]:
- - button [disabled] [ref=f4e1361]
- - generic [ref=f4e1363]: 閫忚琛�
- - button "蹇嵎宸ュ叿" [disabled] [ref=f4e1374]:
- - button [disabled] [ref=f4e1376]
- - button "鐢熸垚鍥剧墖" [disabled] [ref=f4e1387]:
- - button [disabled] [ref=f4e1389]
- - generic [ref=f4e1392]:
- - generic [ref=f4e1393]:
- - button "鐢熸垚鏌ヨ" [ref=f4e1398]:
- - generic [ref=f4e1399]:
- - button [ref=f4e1400]
- - generic [ref=f4e1402]: 鐢熸垚鏌ヨ
- - button "鐢熸垚鏅鸿兘琛�" [ref=f4e1407]:
- - generic [ref=f4e1408]:
- - button [ref=f4e1409]
- - generic [ref=f4e1411]: 鐢熸垚鏅鸿兘琛�
- - generic [ref=f4e1412]:
- - button "鍥剧墖杞〃鏍�" [disabled] [ref=f4e1417]:
- - generic [ref=f4e1418]:
- - button [disabled] [ref=f4e1419]
- - generic [ref=f4e1421]: 鍥剧墖杞〃鏍�
- - button "PDF杞崲" [disabled] [ref=f4e1429]:
- - generic [ref=f4e1430]:
- - button [disabled] [ref=f4e1431]
- - generic [ref=f4e1433]: PDF杞崲
- - button "鎵撳嵃" [ref=f4e1443]:
- - button [ref=f4e1445]
- - toolbar [ref=f4e1449]:
- - generic [ref=f4e1452]:
- - button "鏌ユ壘鏇挎崲" [ref=f4e1457]:
- - button [ref=f4e1459]
- - button "宸ュ叿鏍忓垏鎹�" [ref=f4e1468]:
- - button [ref=f4e1470]
- - generic [ref=f4e105]:
- - generic [ref=f4e1480]:
- - textbox [ref=f4e1481]
- - combobox [ref=f4e1482]:
- - paragraph [ref=f4e1483]
- - combobox [active] [ref=f4e1487]:
- - paragraph
- - toolbar "鐘舵�佹爮" [ref=f4e1494]:
- - button [ref=f4e1495]
- - button [ref=f4e1507]
- - button [ref=f4e1519]:
- - tablist "宸ヤ綔琛�" [ref=f4e1526]:
- - generic [ref=f4e1528]:
- - tab "杩涢攢瀛橀噸鏋�-NEW" [ref=f4e1530] [cursor=pointer]
- - tab "閾跺窛3绾OM绯荤粺" [selected] [ref=f4e1533] [cursor=pointer]
- - tab "OA闂琛�" [ref=f4e1536] [cursor=pointer]
- - tab "瀹佸-涓囬�氬缓鏉�" [ref=f4e1539] [cursor=pointer]
- - tab "娴疆" [ref=f4e1542] [cursor=pointer]
- - tab "閰掓硥楠屾敹闂" [ref=f4e1545] [cursor=pointer]
- - tab "婀熸按宄¢獙鏀堕棶棰樿〃" [ref=f4e1548] [cursor=pointer]
- - tab "澶╂触鈥斿弻濂囩偣" [ref=f4e1551] [cursor=pointer]
- - tab "澶╂触鈥斿啗娉颁紵涓�" [ref=f4e1554] [cursor=pointer]
- - tab "澶╂触--鍚涙瓕鍖栧伐" [ref=f4e1557] [cursor=pointer]
- - tab "澶╂触鈥旈槼鍏夊嵃鍒�" [ref=f4e1560] [cursor=pointer]
- - tab "楣ゅ鈥斿ぉ娌愮幓鐠�" [ref=f4e1563] [cursor=pointer]
- - tab "澶╂触鈥斿痉鐟炴柉褰辫" [ref=f4e1566] [cursor=pointer]
- - tab "婀栧崡鈥斿潳娉板寲宸�" [ref=f4e1569] [cursor=pointer]
- - tab "婀栧崡鈥旈箯鍒涚數瀛�" [ref=f4e1572] [cursor=pointer]
- - tab "瀹佸-涓洓寤烘潗" [ref=f4e1575] [cursor=pointer]
- - tab "闀挎不鈥斿仴榻块娇绉戝櫒鏉�" [ref=f4e1578] [cursor=pointer]
- - tab "闀挎不鈥斿畨閾佺啍鍓�" [ref=f4e1581] [cursor=pointer]
- - tab "闀挎不-绁ラ洦" [ref=f4e1584] [cursor=pointer]
- - tab "闀挎不-鏅嬪拰鍥�" [ref=f4e1587] [cursor=pointer]
- - tab "娌冲崡-楣ゅ" [ref=f4e1590] [cursor=pointer]
- - generic [ref=f4e1592]:
- - generic [ref=f4e1595]:
- - button [disabled]
- - button [ref=f4e1599]
- - button "100% 鍏紡璁$畻涓�..." [ref=f4e1600]:
- - generic [ref=f4e1606]:
- - generic [ref=f4e1608]: 100%
- - text: 鍏紡璁$畻涓�...
- - button "楂樹寒鎵�鍦ㄨ鍒�" [ref=f4e1609]
- - button [ref=f4e1621]
- - button "鍏ㄥ睆鏌ョ湅 缂╁皬,Ctrl+0鍙仮澶嶈嚦100% 鏀惧ぇ,Ctrl+0鍙仮澶嶈嚦100%" [ref=f4e1626]:
- - generic [ref=f4e1631]:
- - generic "鍏ㄥ睆鏌ョ湅" [ref=f4e1635]
- - generic "缂╁皬,Ctrl+0鍙仮澶嶈嚦100%" [ref=f4e1639]
- - combobox [ref=f4e1643]:
- - generic [ref=f4e1644]: 100%
- - generic "鏀惧ぇ,Ctrl+0鍙仮澶嶈嚦100%" [ref=f4e1649]
- - textbox [ref=f4e1650]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-21T07-14-13-732Z.png b/.playwright-mcp/page-2026-07-21T07-14-13-732Z.png
deleted file mode 100644
index e8d5476..0000000
--- a/.playwright-mcp/page-2026-07-21T07-14-13-732Z.png
+++ /dev/null
Binary files differ
diff --git a/.playwright-mcp/page-2026-07-21T07-14-34-792Z.png b/.playwright-mcp/page-2026-07-21T07-14-34-792Z.png
deleted file mode 100644
index fd43064..0000000
--- a/.playwright-mcp/page-2026-07-21T07-14-34-792Z.png
+++ /dev/null
Binary files differ
diff --git a/.playwright-mcp/page-2026-07-21T07-57-24-131Z.yml b/.playwright-mcp/page-2026-07-21T07-57-24-131Z.yml
deleted file mode 100644
index f980e72..0000000
--- a/.playwright-mcp/page-2026-07-21T07-57-24-131Z.yml
+++ /dev/null
@@ -1,84 +0,0 @@
-- generic [active] [ref=e1]:
- - generic [ref=e3]:
- - generic [ref=e4]:
- - generic [ref=e8]: 涓皬浼佷笟鏀归�燽ug淇敼鍒楄〃
- - button "鐧诲綍鑵捐鏂囨。" [ref=e12]
- - generic [ref=e13]:
- - generic [ref=e14]:
- - generic [ref=e15]: 寮�濮�
- - generic [ref=e16]: 鎻掑叆
- - generic [ref=e17]: 鏁版嵁
- - generic [ref=e18]: 鍏紡
- - generic [ref=e19]: 鍗忎綔
- - generic [ref=e20]: 瑙嗗浘
- - generic [ref=e21]:
- - generic [ref=e27]:
- - generic [ref=e28]: 榛樿瀛椾綋
- - generic [ref=e30]: "10"
- - generic [ref=e42]: 琛ㄦ牸鏍峰紡
- - generic [ref=e44]: 鏉′欢鏍煎紡
- - generic [ref=e53]: 鎹㈣
- - generic [ref=e55]: 鍚堝苟
- - generic [ref=e58]: 甯歌
- - generic [ref=e64]: 绛涢��
- - generic [ref=e66]: 鍐荤粨
- - generic [ref=e68]: 鎺掑簭
- - generic [ref=e70]: 姹傚拰
- - generic [ref=e72]: 鏁版嵁
- - generic [ref=e74]: 淇濇姢
- - generic [ref=e77]: 鎻掑叆
- - generic [ref=e79]: 鍥剧墖
- - generic [ref=e81]: 鍥捐〃
- - generic [ref=e83]: 閫忚琛�
- - generic [ref=e86]: 蹇嵎宸ュ叿
- - generic [ref=e88]: 鐢熸垚鍥剧墖
- - generic [ref=e90]: 鍏宠仈鏀堕泦琛�
- - generic [ref=e92]: 鍥剧墖杞〃鏍�
- - generic [ref=e94]: 鐢熸垚鏅鸿兘琛�
- - generic [ref=e96]: PDF杞崲
- - generic [ref=e99]: 鎵撳嵃
- - generic [ref=e105]: A1
- - generic [ref=e113]:
- - generic [ref=e116]:
- - link "杩涢攢瀛橀噸鏋�-NEW" [ref=e117]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=fs73ok&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - generic [ref=e120]: 閾跺窛3绾OM绯荤粺
- - link "OA闂琛�" [ref=e123]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=f64daq&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "瀹佸-涓囬�氬缓鏉�" [ref=e126]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=ept4mh&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "娴疆" [ref=e129]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=spyhmp&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "閰掓硥楠屾敹闂" [ref=e132]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=x00zho&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "婀熸按宄¢獙鏀堕棶棰樿〃" [ref=e135]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=h625nh&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "澶╂触鈥斿弻濂囩偣" [ref=e138]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=BB08J2&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "澶╂触鈥斿啗娉颁紵涓�" [ref=e141]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=lspijq&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "澶╂触--鍚涙瓕鍖栧伐" [ref=e144]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=mq8fx1&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "澶╂触鈥旈槼鍏夊嵃鍒�" [ref=e147]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=0l2zs6&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "楣ゅ鈥斿ぉ娌愮幓鐠�" [ref=e150]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=iwl1zq&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "澶╂触鈥斿痉鐟炴柉褰辫" [ref=e153]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=uw3s1s&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "婀栧崡鈥斿潳娉板寲宸�" [ref=e156]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=lhgufk&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "婀栧崡鈥旈箯鍒涚數瀛�" [ref=e159]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=qr1hgf&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "瀹佸-涓洓寤烘潗" [ref=e162]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=glpee8&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "闀挎不鈥斿仴榻块娇绉戝櫒鏉�" [ref=e165]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=f6oijb&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "闀挎不鈥斿畨閾佺啍鍓�" [ref=e168]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=27v3ks&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "闀挎不-绁ラ洦" [ref=e171]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=51i5b3&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "闀挎不-鏅嬪拰鍥�" [ref=e174]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=bo7qyg&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - link "娌冲崡-楣ゅ" [ref=e177]:
- - /url: https://docs.qq.com/sheet/DWWVMTEVSa1dVb3BF?aidPos=detail&no_promotion=1&is_blank_or_template=blank&tab=mkpiqo&_t=1784617837525&nlc=1&u=8829bcd3bce040719f56b04f14245507
- - generic [ref=e182]: 100%
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T06-40-35-404Z.yml b/.playwright-mcp/page-2026-07-29T06-40-35-404Z.yml
deleted file mode 100644
index 987bb5e..0000000
--- a/.playwright-mcp/page-2026-07-29T06-40-35-404Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T06-42-11-724Z.yml b/.playwright-mcp/page-2026-07-29T06-42-11-724Z.yml
deleted file mode 100644
index 987bb5e..0000000
--- a/.playwright-mcp/page-2026-07-29T06-42-11-724Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T06-42-36-804Z.yml b/.playwright-mcp/page-2026-07-29T06-42-36-804Z.yml
deleted file mode 100644
index b4e4c37..0000000
--- a/.playwright-mcp/page-2026-07-29T06-42-36-804Z.yml
+++ /dev/null
@@ -1,112 +0,0 @@
-- generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - link "宸ュ巶鏁板瓧鍖朚OM绯荤粺 宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=e18]
- - generic [ref=e19]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
- - menu [ref=e22]:
- - listitem [ref=e23]:
- - generic [ref=e24] [cursor=pointer]: 姒傝
- - listitem [ref=e34]:
- - generic [ref=e35] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e43]:
- - generic [ref=e44] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e50]:
- - generic [ref=e51] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e57]:
- - generic [ref=e58] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e65]:
- - generic [ref=e66] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e74]:
- - generic [ref=e75] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e82]:
- - generic [ref=e83] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e89]:
- - generic [ref=e90] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e96]:
- - generic [ref=e97] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e103]:
- - generic [ref=e104] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e110]:
- - generic [ref=e111] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e117]:
- - generic [ref=e118] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e131]:
- - generic [ref=e132]:
- - banner [ref=e133]:
- - button [ref=e134] [cursor=pointer]
- - button [ref=e137] [cursor=pointer]
- - navigation "breadcrumb" [ref=e142]:
- - list [ref=e143]:
- - listitem [ref=e144]:
- - link [ref=e145] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e152]
- - listitem [ref=e155]:
- - link "鎷涙爣璇︽儏" [disabled] [ref=e156]
- - generic [ref=e159]:
- - generic [ref=e161] [cursor=pointer]:
- - generic [ref=e165]: 鎼滅储
- - generic [ref=e166]: Ctrl K
- - button [ref=e168] [cursor=pointer]
- - button "dark" [ref=e173] [cursor=pointer]
- - button [ref=e182] [cursor=pointer]
- - button [ref=e188] [cursor=pointer]
- - button [ref=e191] [cursor=pointer]
- - button [ref=e197] [cursor=pointer]:
- - button [ref=e199]
- - button "宸ヤ綔鍙�" [ref=e203] [cursor=pointer]
- - button "婧愮爜" [ref=e207] [cursor=pointer]
- - generic [ref=e214]:
- - generic [ref=e219]:
- - generic [ref=e220] [cursor=pointer]: 鍒嗘瀽椤�
- - generic [ref=e238] [cursor=pointer]: 鎷涙爣璇︽儏
- - button [ref=e254] [cursor=pointer]
- - main [ref=e272]:
- - generic [ref=e275]:
- - generic [ref=e276]:
- - button [ref=e277] [cursor=pointer]
- - generic [ref=e280]: 娴嬭瘯椤圭洰
- - generic [ref=e281]: 娴嬭瘯缂栧彿
- - generic [ref=e282]: 璇勬爣涓�
- - generic [ref=e283]: 鍏紑鎷涙爣
- - button "鍒锋柊" [ref=e284] [cursor=pointer]
- - generic [ref=e290]:
- - generic:
- - generic "鑽夌"
- - generic "鍙戝竷"
- - generic "鎶曟爣涓�"
- - generic "璇勬爣涓�"
- - generic "宸插畾鏍�"
- - generic [ref=e291]:
- - generic [ref=e292]:
- - generic [ref=e293]: 棰勭畻閲戦
- - generic [ref=e294]: 15,000 鍏�
- - generic [ref=e295]:
- - generic [ref=e296]: 璐熻矗浜�
- - generic [ref=e297]: "-"
- - generic [ref=e298]:
- - generic [ref=e299]: 閲囪喘缁勭粐
- - generic [ref=e300]: "-"
- - generic [ref=e301]:
- - generic [ref=e302]: 寮�鏍囨椂闂�
- - generic [ref=e303]: 2026-07-29 11:20:11
- - generic [ref=e304]:
- - generic [ref=e305]: 寮�濮嬫椂闂�
- - generic [ref=e306]: 2026-07-29 11:13:02
- - generic [ref=e307]:
- - generic [ref=e308]: 鎴鏃堕棿
- - generic [ref=e309]: 2026-07-29 19:13:06
- - generic [ref=e313]:
- - tablist [ref=e314]:
- - generic [ref=e316]:
- - tab [ref=e318] [cursor=pointer]
- - tab [ref=e323] [cursor=pointer]
- - tab [ref=e328] [cursor=pointer]
- - tab [ref=e333] [cursor=pointer]
- - tab [ref=e338] [cursor=pointer]
- - tab [active] [selected] [ref=e343] [cursor=pointer]
- - tabpanel "瀹氭爣" [ref=e404]:
- - generic [ref=e405]:
- - generic "灏氭湭瀹氭爣"
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T06-43-35-225Z.yml b/.playwright-mcp/page-2026-07-29T06-43-35-225Z.yml
deleted file mode 100644
index 0dd6375..0000000
--- a/.playwright-mcp/page-2026-07-29T06-43-35-225Z.yml
+++ /dev/null
@@ -1,112 +0,0 @@
-- generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - link "宸ュ巶鏁板瓧鍖朚OM绯荤粺 宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=e18]
- - generic [ref=e19]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
- - menu [ref=e22]:
- - listitem [ref=e23]:
- - generic [ref=e24] [cursor=pointer]: 姒傝
- - listitem [ref=e34]:
- - generic [ref=e35] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e43]:
- - generic [ref=e44] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e50]:
- - generic [ref=e51] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e57]:
- - generic [ref=e58] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e65]:
- - generic [ref=e66] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e74]:
- - generic [ref=e75] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e82]:
- - generic [ref=e83] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e89]:
- - generic [ref=e90] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e96]:
- - generic [ref=e97] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e103]:
- - generic [ref=e104] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e110]:
- - generic [ref=e111] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e117]:
- - generic [ref=e118] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e131]:
- - generic [ref=e132]:
- - banner [ref=e133]:
- - button [ref=e134] [cursor=pointer]
- - button [ref=e137] [cursor=pointer]
- - navigation "breadcrumb" [ref=e142]:
- - list [ref=e143]:
- - listitem [ref=e144]:
- - link [ref=e145] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e152]
- - listitem [ref=e155]:
- - link "鎷涙爣璇︽儏" [disabled] [ref=e156]
- - generic [ref=e159]:
- - generic [ref=e161] [cursor=pointer]:
- - generic [ref=e165]: 鎼滅储
- - generic [ref=e166]: Ctrl K
- - button [ref=e168] [cursor=pointer]
- - button "dark" [ref=e173] [cursor=pointer]
- - button [ref=e182] [cursor=pointer]
- - button [ref=e188] [cursor=pointer]
- - button [ref=e191] [cursor=pointer]
- - button [ref=e197] [cursor=pointer]:
- - button [ref=e199]
- - button "宸ヤ綔鍙�" [ref=e203] [cursor=pointer]
- - button "婧愮爜" [ref=e207] [cursor=pointer]
- - generic [ref=e214]:
- - generic [ref=e219]:
- - generic [ref=e220] [cursor=pointer]: 鍒嗘瀽椤�
- - generic [ref=e238] [cursor=pointer]: 鎷涙爣璇︽儏
- - button [ref=e254] [cursor=pointer]
- - main [ref=e272]:
- - generic [ref=e275]:
- - generic [ref=e276]:
- - button [ref=e277] [cursor=pointer]
- - generic [ref=e280]: 娴嬭瘯椤圭洰
- - generic [ref=e281]: 娴嬭瘯缂栧彿
- - generic [ref=e282]: 璇勬爣涓�
- - generic [ref=e283]: 鍏紑鎷涙爣
- - button "鍒锋柊" [ref=e284] [cursor=pointer]
- - generic [ref=e290]:
- - generic:
- - generic "鑽夌"
- - generic "鍙戝竷"
- - generic "鎶曟爣涓�"
- - generic "璇勬爣涓�"
- - generic "宸插畾鏍�"
- - generic [ref=e291]:
- - generic [ref=e292]:
- - generic [ref=e293]: 棰勭畻閲戦
- - generic [ref=e294]: 15,000 鍏�
- - generic [ref=e295]:
- - generic [ref=e296]: 璐熻矗浜�
- - generic [ref=e297]: "-"
- - generic [ref=e298]:
- - generic [ref=e299]: 閲囪喘缁勭粐
- - generic [ref=e300]: "-"
- - generic [ref=e301]:
- - generic [ref=e302]: 寮�鏍囨椂闂�
- - generic [ref=e303]: 2026-07-29 11:20:11
- - generic [ref=e304]:
- - generic [ref=e305]: 寮�濮嬫椂闂�
- - generic [ref=e306]: 2026-07-29 11:13:02
- - generic [ref=e307]:
- - generic [ref=e308]: 鎴鏃堕棿
- - generic [ref=e309]: 2026-07-29 19:13:06
- - generic [ref=e313]:
- - tablist [ref=e314]:
- - generic [ref=e316]:
- - tab [ref=e318] [cursor=pointer]
- - tab [ref=e323] [cursor=pointer]
- - tab [ref=e328] [cursor=pointer]
- - tab [active] [selected] [ref=e333] [cursor=pointer]
- - tab [ref=e338] [cursor=pointer]
- - tab [ref=e343] [cursor=pointer]
- - tabpanel "寮�鏍�" [ref=e406]:
- - generic [ref=e407]:
- - generic "灏氭湭寮�鏍�"
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T06-47-24-223Z.yml b/.playwright-mcp/page-2026-07-29T06-47-24-223Z.yml
deleted file mode 100644
index 987bb5e..0000000
--- a/.playwright-mcp/page-2026-07-29T06-47-24-223Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T06-47-38-983Z.yml b/.playwright-mcp/page-2026-07-29T06-47-38-983Z.yml
deleted file mode 100644
index 75b64e4..0000000
--- a/.playwright-mcp/page-2026-07-29T06-47-38-983Z.yml
+++ /dev/null
@@ -1,113 +0,0 @@
-- generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - link "宸ュ巶鏁板瓧鍖朚OM绯荤粺 宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=f1e18]
- - generic [ref=f1e19]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
- - menu [ref=f1e22]:
- - listitem [ref=f1e23]:
- - generic [ref=f1e24] [cursor=pointer]: 姒傝
- - listitem [ref=f1e34]:
- - generic [ref=f1e35] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e43]:
- - generic [ref=f1e44] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e50]:
- - generic [ref=f1e51] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e57]:
- - generic [ref=f1e58] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e65]:
- - generic [ref=f1e66] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e74]:
- - generic [ref=f1e75] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e82]:
- - generic [ref=f1e83] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e89]:
- - generic [ref=f1e90] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e96]:
- - generic [ref=f1e97] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e103]:
- - generic [ref=f1e104] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e110]:
- - generic [ref=f1e111] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e117]:
- - generic [ref=f1e118] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e131]:
- - generic [ref=f1e132]:
- - banner [ref=f1e133]:
- - button [ref=f1e134] [cursor=pointer]
- - button [ref=f1e137] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e142]:
- - list [ref=f1e143]:
- - listitem [ref=f1e144]:
- - link [ref=f1e145] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e152]
- - listitem [ref=f1e155]:
- - link "鎷涙爣璇︽儏" [disabled] [ref=f1e156]
- - generic [ref=f1e159]:
- - generic [ref=f1e161] [cursor=pointer]:
- - generic [ref=f1e165]: 鎼滅储
- - generic [ref=f1e166]: Ctrl K
- - button [ref=f1e168] [cursor=pointer]
- - button "dark" [ref=f1e173] [cursor=pointer]
- - button [ref=f1e182] [cursor=pointer]
- - button [ref=f1e188] [cursor=pointer]
- - button [ref=f1e191] [cursor=pointer]
- - button [ref=f1e197] [cursor=pointer]:
- - button [ref=f1e199]
- - button "宸ヤ綔鍙�" [ref=f1e203] [cursor=pointer]
- - button "婧愮爜" [ref=f1e207] [cursor=pointer]
- - generic [ref=f1e214]:
- - generic [ref=f1e219]:
- - generic [ref=f1e220] [cursor=pointer]: 鍒嗘瀽椤�
- - generic [ref=f1e238] [cursor=pointer]: 鎷涙爣璇︽儏
- - button [ref=f1e254] [cursor=pointer]
- - main [ref=f1e272]:
- - generic [ref=f1e275]:
- - generic [ref=f1e276]:
- - button [ref=f1e277] [cursor=pointer]
- - generic [ref=f1e280]: 娴嬭瘯椤圭洰
- - generic [ref=f1e281]: 娴嬭瘯缂栧彿
- - generic [ref=f1e282]: 璇勬爣涓�
- - generic [ref=f1e283]: 鍏紑鎷涙爣
- - button "鍒锋柊" [ref=f1e284] [cursor=pointer]
- - generic [ref=f1e290]:
- - generic:
- - generic "鑽夌"
- - generic "鍙戝竷"
- - generic "鎶曟爣涓�"
- - generic "璇勬爣涓�"
- - generic "宸插畾鏍�"
- - generic [ref=f1e291]:
- - generic [ref=f1e292]:
- - generic [ref=f1e293]: 棰勭畻閲戦
- - generic [ref=f1e294]: 15,000 鍏�
- - generic [ref=f1e295]:
- - generic [ref=f1e296]: 璐熻矗浜�
- - generic [ref=f1e297]: "-"
- - generic [ref=f1e298]:
- - generic [ref=f1e299]: 閲囪喘缁勭粐
- - generic [ref=f1e300]: "-"
- - generic [ref=f1e301]:
- - generic [ref=f1e302]: 寮�鏍囨椂闂�
- - generic [ref=f1e303]: 2026-07-29 11:20:11
- - generic [ref=f1e304]:
- - generic [ref=f1e305]: 寮�濮嬫椂闂�
- - generic [ref=f1e306]: 2026-07-29 11:13:02
- - generic [ref=f1e307]:
- - generic [ref=f1e308]: 鎴鏃堕棿
- - generic [ref=f1e309]: 2026-07-29 19:13:06
- - generic [ref=f1e313]:
- - tablist [ref=f1e314]:
- - generic [ref=f1e316]:
- - tab [ref=f1e318] [cursor=pointer]
- - tab [ref=f1e323] [cursor=pointer]
- - tab [ref=f1e328] [cursor=pointer]
- - tab [ref=f1e333] [cursor=pointer]
- - tab [ref=f1e338] [cursor=pointer]
- - tab [active] [selected] [ref=f1e343] [cursor=pointer]
- - tabpanel "瀹氭爣" [ref=f1e404]:
- - generic [ref=f1e405]:
- - generic "灏氭湭瀹氭爣"
- - button "鍒涘缓瀹氭爣" [ref=f1e406] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T06-47-57-125Z.yml b/.playwright-mcp/page-2026-07-29T06-47-57-125Z.yml
deleted file mode 100644
index 3bbcfe5..0000000
--- a/.playwright-mcp/page-2026-07-29T06-47-57-125Z.yml
+++ /dev/null
@@ -1,152 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - link "宸ュ巶鏁板瓧鍖朚OM绯荤粺 宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=f1e18]
- - generic [ref=f1e19]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
- - menu [ref=f1e22]:
- - listitem [ref=f1e23]:
- - generic [ref=f1e24] [cursor=pointer]: 姒傝
- - listitem [ref=f1e34]:
- - generic [ref=f1e35] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e43]:
- - generic [ref=f1e44] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e50]:
- - generic [ref=f1e51] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e57]:
- - generic [ref=f1e58] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e65]:
- - generic [ref=f1e66] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e74]:
- - generic [ref=f1e75] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e82]:
- - generic [ref=f1e83] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e89]:
- - generic [ref=f1e90] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e96]:
- - generic [ref=f1e97] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e103]:
- - generic [ref=f1e104] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e110]:
- - generic [ref=f1e111] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e117]:
- - generic [ref=f1e118] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e131]:
- - generic [ref=f1e132]:
- - banner [ref=f1e133]:
- - button [ref=f1e134] [cursor=pointer]
- - button [ref=f1e137] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e142]:
- - list [ref=f1e143]:
- - listitem [ref=f1e144]:
- - link [ref=f1e145] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e152]
- - listitem [ref=f1e155]:
- - link "鎷涙爣璇︽儏" [disabled] [ref=f1e156]
- - generic [ref=f1e159]:
- - generic [ref=f1e161] [cursor=pointer]:
- - generic [ref=f1e165]: 鎼滅储
- - generic [ref=f1e166]: Ctrl K
- - button [ref=f1e168] [cursor=pointer]
- - button "dark" [ref=f1e173] [cursor=pointer]
- - button [ref=f1e182] [cursor=pointer]
- - button [ref=f1e188] [cursor=pointer]
- - button [ref=f1e191] [cursor=pointer]
- - button [ref=f1e197] [cursor=pointer]:
- - button [ref=f1e199]
- - button "宸ヤ綔鍙�" [ref=f1e203] [cursor=pointer]
- - button "婧愮爜" [ref=f1e207] [cursor=pointer]
- - generic [ref=f1e214]:
- - generic [ref=f1e219]:
- - generic [ref=f1e220] [cursor=pointer]: 鍒嗘瀽椤�
- - generic [ref=f1e238] [cursor=pointer]: 鎷涙爣璇︽儏
- - button [ref=f1e254] [cursor=pointer]
- - main [ref=f1e272]:
- - generic [ref=f1e275]:
- - generic [ref=f1e276]:
- - button [ref=f1e277] [cursor=pointer]
- - generic [ref=f1e280]: 娴嬭瘯椤圭洰
- - generic [ref=f1e281]: 娴嬭瘯缂栧彿
- - generic [ref=f1e282]: 璇勬爣涓�
- - generic [ref=f1e283]: 鍏紑鎷涙爣
- - button "鍒锋柊" [ref=f1e284] [cursor=pointer]
- - generic [ref=f1e290]:
- - generic:
- - generic "鑽夌"
- - generic "鍙戝竷"
- - generic "鎶曟爣涓�"
- - generic "璇勬爣涓�"
- - generic "宸插畾鏍�"
- - generic [ref=f1e291]:
- - generic [ref=f1e292]:
- - generic [ref=f1e293]: 棰勭畻閲戦
- - generic [ref=f1e294]: 15,000 鍏�
- - generic [ref=f1e295]:
- - generic [ref=f1e296]: 璐熻矗浜�
- - generic [ref=f1e297]: "-"
- - generic [ref=f1e298]:
- - generic [ref=f1e299]: 閲囪喘缁勭粐
- - generic [ref=f1e300]: "-"
- - generic [ref=f1e301]:
- - generic [ref=f1e302]: 寮�鏍囨椂闂�
- - generic [ref=f1e303]: 2026-07-29 11:20:11
- - generic [ref=f1e304]:
- - generic [ref=f1e305]: 寮�濮嬫椂闂�
- - generic [ref=f1e306]: 2026-07-29 11:13:02
- - generic [ref=f1e307]:
- - generic [ref=f1e308]: 鎴鏃堕棿
- - generic [ref=f1e309]: 2026-07-29 19:13:06
- - generic [ref=f1e313]:
- - tablist [ref=f1e314]:
- - generic [ref=f1e316]:
- - tab [ref=f1e318] [cursor=pointer]
- - tab [ref=f1e323] [cursor=pointer]
- - tab [ref=f1e328] [cursor=pointer]
- - tab [ref=f1e333] [cursor=pointer]
- - tab [ref=f1e338] [cursor=pointer]
- - tab [selected] [ref=f1e343] [cursor=pointer]
- - tabpanel "瀹氭爣" [ref=f1e404]:
- - generic [ref=f1e405]:
- - generic "灏氭湭瀹氭爣"
- - button "鍒涘缓瀹氭爣" [active] [ref=f1e406] [cursor=pointer]
- - dialog "鍒涘缓瀹氭爣" [ref=f1e412]:
- - document:
- - generic [ref=f1e413]:
- - button "Close" [ref=f1e414] [cursor=pointer]:
- - img "close" [ref=f1e416]
- - generic [ref=f1e419]: 鍒涘缓瀹氭爣
- - generic [ref=f1e422]:
- - generic [ref=f1e424]:
- - generic "瀹氭爣缂栧彿" [ref=f1e426]: "* 瀹氭爣缂栧彿"
- - textbox "濡� AWARD2024010001" [ref=f1e430]
- - generic [ref=f1e431]:
- - generic [ref=f1e434]:
- - generic "渚涘簲鍟�" [ref=f1e436]: "* 渚涘簲鍟�"
- - generic [ref=f1e441]:
- - combobox [ref=f1e443]
- - generic "0" [ref=f1e444]
- - generic [ref=f1e447]:
- - generic "鎶曟爣" [ref=f1e449]: "* 鎶曟爣"
- - generic [ref=f1e454]:
- - combobox [ref=f1e456]
- - generic "0" [ref=f1e457]
- - generic [ref=f1e459]:
- - generic "瀹氭爣閲戦" [ref=f1e461]: "* 瀹氭爣閲戦"
- - generic [ref=f1e466]:
- - generic [ref=f1e467]:
- - generic [ref=f1e468]:
- - button "Increase Value" [ref=f1e469] [cursor=pointer]:
- - img "up" [ref=f1e470]
- - button "Decrease Value" [ref=f1e473] [cursor=pointer]:
- - img "down" [ref=f1e474]
- - spinbutton "瀹氭爣閲戦" [ref=f1e478]
- - generic [ref=f1e479]: 鍏�
- - generic [ref=f1e481]:
- - generic "澶囨敞" [ref=f1e483]
- - textbox "濡傦細缁煎悎璇勬爣绗竴鍚�" [ref=f1e487]
- - generic [ref=f1e488]:
- - button "鍙� 娑�" [ref=f1e489] [cursor=pointer]
- - button "纭� 瀹�" [ref=f1e491] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T06-51-00-932Z.yml b/.playwright-mcp/page-2026-07-29T06-51-00-932Z.yml
deleted file mode 100644
index f4d9f7c..0000000
--- a/.playwright-mcp/page-2026-07-29T06-51-00-932Z.yml
+++ /dev/null
@@ -1,152 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - link "宸ュ巶鏁板瓧鍖朚OM绯荤粺 宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=f1e18]
- - generic [ref=f1e19]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
- - menu [ref=f1e22]:
- - listitem [ref=f1e23]:
- - generic [ref=f1e24] [cursor=pointer]: 姒傝
- - listitem [ref=f1e34]:
- - generic [ref=f1e35] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e43]:
- - generic [ref=f1e44] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e50]:
- - generic [ref=f1e51] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e57]:
- - generic [ref=f1e58] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e65]:
- - generic [ref=f1e66] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e74]:
- - generic [ref=f1e75] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e82]:
- - generic [ref=f1e83] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e89]:
- - generic [ref=f1e90] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e96]:
- - generic [ref=f1e97] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e103]:
- - generic [ref=f1e104] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e110]:
- - generic [ref=f1e111] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e117]:
- - generic [ref=f1e118] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e131]:
- - generic [ref=f1e132]:
- - banner [ref=f1e133]:
- - button [ref=f1e134] [cursor=pointer]
- - button [ref=f1e137] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e142]:
- - list [ref=f1e143]:
- - listitem [ref=f1e144]:
- - link [ref=f1e145] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e152]
- - listitem [ref=f1e155]:
- - link "鎷涙爣璇︽儏" [disabled] [ref=f1e156]
- - generic [ref=f1e159]:
- - generic [ref=f1e161] [cursor=pointer]:
- - generic [ref=f1e165]: 鎼滅储
- - generic [ref=f1e166]: Ctrl K
- - button [ref=f1e168] [cursor=pointer]
- - button "dark" [ref=f1e173] [cursor=pointer]
- - button [ref=f1e182] [cursor=pointer]
- - button [ref=f1e188] [cursor=pointer]
- - button [ref=f1e191] [cursor=pointer]
- - button [ref=f1e197] [cursor=pointer]:
- - button [ref=f1e199]
- - button "宸ヤ綔鍙�" [ref=f1e203] [cursor=pointer]
- - button "婧愮爜" [ref=f1e207] [cursor=pointer]
- - generic [ref=f1e214]:
- - generic [ref=f1e219]:
- - generic [ref=f1e220] [cursor=pointer]: 鍒嗘瀽椤�
- - generic [ref=f1e238] [cursor=pointer]: 鎷涙爣璇︽儏
- - button [ref=f1e254] [cursor=pointer]
- - main [ref=f1e272]:
- - generic [ref=f1e275]:
- - generic [ref=f1e276]:
- - button [ref=f1e277] [cursor=pointer]
- - generic [ref=f1e280]: 娴嬭瘯椤圭洰
- - generic [ref=f1e281]: 娴嬭瘯缂栧彿
- - generic [ref=f1e282]: 璇勬爣涓�
- - generic [ref=f1e283]: 鍏紑鎷涙爣
- - button "鍒锋柊" [ref=f1e284] [cursor=pointer]
- - generic [ref=f1e290]:
- - generic:
- - generic "鑽夌"
- - generic "鍙戝竷"
- - generic "鎶曟爣涓�"
- - generic "璇勬爣涓�"
- - generic "宸插畾鏍�"
- - generic [ref=f1e291]:
- - generic [ref=f1e292]:
- - generic [ref=f1e293]: 棰勭畻閲戦
- - generic [ref=f1e294]: 15,000 鍏�
- - generic [ref=f1e295]:
- - generic [ref=f1e296]: 璐熻矗浜�
- - generic [ref=f1e297]: "-"
- - generic [ref=f1e298]:
- - generic [ref=f1e299]: 閲囪喘缁勭粐
- - generic [ref=f1e300]: "-"
- - generic [ref=f1e301]:
- - generic [ref=f1e302]: 寮�鏍囨椂闂�
- - generic [ref=f1e303]: 2026-07-29 11:20:11
- - generic [ref=f1e304]:
- - generic [ref=f1e305]: 寮�濮嬫椂闂�
- - generic [ref=f1e306]: 2026-07-29 11:13:02
- - generic [ref=f1e307]:
- - generic [ref=f1e308]: 鎴鏃堕棿
- - generic [ref=f1e309]: 2026-07-29 19:13:06
- - generic [ref=f1e313]:
- - tablist [ref=f1e314]:
- - generic [ref=f1e316]:
- - tab [ref=f1e318] [cursor=pointer]
- - tab [ref=f1e323] [cursor=pointer]
- - tab [ref=f1e328] [cursor=pointer]
- - tab [ref=f1e333] [cursor=pointer]
- - tab [ref=f1e338] [cursor=pointer]
- - tab [selected] [ref=f1e343] [cursor=pointer]
- - tabpanel "瀹氭爣" [ref=f1e404]:
- - generic [ref=f1e405]:
- - generic "灏氭湭瀹氭爣"
- - button "鍒涘缓瀹氭爣" [ref=f1e406] [cursor=pointer]
- - dialog "鍒涘缓瀹氭爣" [ref=f1e412]:
- - document:
- - generic [ref=f1e413]:
- - button "Close" [ref=f1e414] [cursor=pointer]:
- - img "close" [ref=f1e416]
- - generic [ref=f1e419]: 鍒涘缓瀹氭爣
- - generic [ref=f1e422]:
- - generic [ref=f1e424]:
- - generic "瀹氭爣缂栧彿" [ref=f1e426]: "* 瀹氭爣缂栧彿"
- - textbox "濡� AWARD2024010001" [ref=f1e430]
- - generic [ref=f1e431]:
- - generic [ref=f1e434]:
- - generic "渚涘簲鍟�" [ref=f1e436]: "* 渚涘簲鍟�"
- - generic [ref=f1e441]:
- - combobox [ref=f1e443]
- - generic "0" [ref=f1e444]
- - generic [ref=f1e447]:
- - generic "鎶曟爣" [ref=f1e449]: "* 鎶曟爣"
- - generic [ref=f1e454]:
- - combobox [ref=f1e456]
- - generic "0" [ref=f1e457]
- - generic [ref=f1e459]:
- - generic "瀹氭爣閲戦" [ref=f1e461]: "* 瀹氭爣閲戦"
- - generic [ref=f1e466]:
- - generic [ref=f1e467]:
- - generic [ref=f1e468]:
- - button "Increase Value" [ref=f1e469] [cursor=pointer]:
- - img "up" [ref=f1e470]
- - button "Decrease Value" [ref=f1e473] [cursor=pointer]:
- - img "down" [ref=f1e474]
- - spinbutton "瀹氭爣閲戦" [ref=f1e478]
- - generic [ref=f1e479]: 鍏�
- - generic [ref=f1e481]:
- - generic "澶囨敞" [ref=f1e483]
- - textbox "濡傦細缁煎悎璇勬爣绗竴鍚�" [ref=f1e487]
- - generic [ref=f1e488]:
- - button "鍙� 娑�" [ref=f1e489] [cursor=pointer]
- - button "纭� 瀹�" [ref=f1e491] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T06-56-04-077Z.yml b/.playwright-mcp/page-2026-07-29T06-56-04-077Z.yml
deleted file mode 100644
index 987bb5e..0000000
--- a/.playwright-mcp/page-2026-07-29T06-56-04-077Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T06-56-14-335Z.yml b/.playwright-mcp/page-2026-07-29T06-56-14-335Z.yml
deleted file mode 100644
index 090f728..0000000
--- a/.playwright-mcp/page-2026-07-29T06-56-14-335Z.yml
+++ /dev/null
@@ -1,122 +0,0 @@
-- generic [ref=f2e7]:
- - complementary [ref=f2e8]:
- - generic [ref=f2e9]:
- - link "宸ュ巶鏁板瓧鍖朚OM绯荤粺 宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=f2e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=f2e18]
- - generic [ref=f2e19]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
- - menu [ref=f2e22]:
- - listitem [ref=f2e23]:
- - generic [ref=f2e24] [cursor=pointer]: 姒傝
- - listitem [ref=f2e34]:
- - generic [ref=f2e35] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f2e43]:
- - generic [ref=f2e44] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f2e50]:
- - generic [ref=f2e51] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f2e57]:
- - generic [ref=f2e58] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f2e65]:
- - generic [ref=f2e66] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f2e74]:
- - generic [ref=f2e75] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f2e82]:
- - generic [ref=f2e83] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f2e89]:
- - generic [ref=f2e90] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f2e96]:
- - generic [ref=f2e97] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f2e103]:
- - generic [ref=f2e104] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f2e110]:
- - generic [ref=f2e111] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f2e117]:
- - generic [ref=f2e118] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f2e131]:
- - generic [ref=f2e132]:
- - banner [ref=f2e133]:
- - button [ref=f2e134] [cursor=pointer]
- - button [ref=f2e137] [cursor=pointer]
- - navigation "breadcrumb" [ref=f2e142]:
- - list [ref=f2e143]:
- - listitem [ref=f2e144]:
- - link [ref=f2e145] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f2e152]
- - listitem [ref=f2e155]:
- - link "鎷涙爣璇︽儏" [disabled] [ref=f2e156]
- - generic [ref=f2e159]:
- - generic [ref=f2e161] [cursor=pointer]:
- - generic [ref=f2e165]: 鎼滅储
- - generic [ref=f2e166]: Ctrl K
- - button [ref=f2e168] [cursor=pointer]
- - button "dark" [ref=f2e173] [cursor=pointer]
- - button [ref=f2e182] [cursor=pointer]
- - button [ref=f2e188] [cursor=pointer]
- - button [ref=f2e191] [cursor=pointer]
- - button [ref=f2e197] [cursor=pointer]:
- - button [ref=f2e199]
- - button "宸ヤ綔鍙�" [ref=f2e203] [cursor=pointer]
- - button "婧愮爜" [ref=f2e207] [cursor=pointer]
- - generic [ref=f2e214]:
- - generic [ref=f2e219]:
- - generic [ref=f2e220] [cursor=pointer]: 鍒嗘瀽椤�
- - generic [ref=f2e238] [cursor=pointer]: 鎷涙爣璇︽儏
- - button [ref=f2e254] [cursor=pointer]
- - main [ref=f2e272]:
- - generic [ref=f2e275]:
- - generic [ref=f2e276]:
- - button [ref=f2e277] [cursor=pointer]
- - generic [ref=f2e280]: 娴嬭瘯椤圭洰
- - generic [ref=f2e281]: 娴嬭瘯缂栧彿
- - generic [ref=f2e282]: 宸插畾鏍�
- - generic [ref=f2e283]: 鍏紑鎷涙爣
- - button "鍒锋柊" [ref=f2e284] [cursor=pointer]
- - generic [ref=f2e290]:
- - generic:
- - generic "鑽夌"
- - generic "鍙戝竷"
- - generic "鎶曟爣涓�"
- - generic "璇勬爣涓�"
- - generic "宸插畾鏍�"
- - generic [ref=f2e291]:
- - generic [ref=f2e292]:
- - generic [ref=f2e293]: 棰勭畻閲戦
- - generic [ref=f2e294]: 15,000 鍏�
- - generic [ref=f2e295]:
- - generic [ref=f2e296]: 璐熻矗浜�
- - generic [ref=f2e297]: "-"
- - generic [ref=f2e298]:
- - generic [ref=f2e299]: 閲囪喘缁勭粐
- - generic [ref=f2e300]: "-"
- - generic [ref=f2e301]:
- - generic [ref=f2e302]: 寮�鏍囨椂闂�
- - generic [ref=f2e303]: 2026-07-29 11:20:11
- - generic [ref=f2e304]:
- - generic [ref=f2e305]: 寮�濮嬫椂闂�
- - generic [ref=f2e306]: 2026-07-29 11:13:02
- - generic [ref=f2e307]:
- - generic [ref=f2e308]: 鎴鏃堕棿
- - generic [ref=f2e309]: 2026-07-29 19:13:06
- - generic [ref=f2e313]:
- - tablist [ref=f2e314]:
- - generic [ref=f2e316]:
- - tab [ref=f2e318] [cursor=pointer]
- - tab [ref=f2e323] [cursor=pointer]
- - tab [ref=f2e328] [cursor=pointer]
- - tab [ref=f2e333] [cursor=pointer]
- - tab [ref=f2e338] [cursor=pointer]
- - tab [active] [selected] [ref=f2e343] [cursor=pointer]
- - tabpanel "瀹氭爣" [ref=f2e350]:
- - generic [ref=f2e351]:
- - generic [ref=f2e353]:
- - generic [ref=f2e354]: 宸插畾琛�
- - generic [ref=f2e355]: "12"
- - generic [ref=f2e357]: 10,000 鍏�
- - text: 2026-07-29 14:52:43
- - generic [ref=f2e358]: 宸插畾鏍�
- - text: 寰呯敓鎴愮患鍚堣瘎瀹�
- - generic [ref=f2e361]:
- - generic "瀹氭爣瀹屾垚"
- - button "鐢熸垚閲囪喘璁㈠崟" [ref=f2e362] [cursor=pointer]
- - button "鍒犻櫎瀹氭爣" [ref=f2e366] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T07-10-45-745Z.yml b/.playwright-mcp/page-2026-07-29T07-10-45-745Z.yml
deleted file mode 100644
index 987bb5e..0000000
--- a/.playwright-mcp/page-2026-07-29T07-10-45-745Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T07-12-31-548Z.yml b/.playwright-mcp/page-2026-07-29T07-12-31-548Z.yml
deleted file mode 100644
index 5dde7b1..0000000
--- a/.playwright-mcp/page-2026-07-29T07-12-31-548Z.yml
+++ /dev/null
@@ -1,121 +0,0 @@
-- generic [ref=f3e7]:
- - complementary [ref=f3e8]:
- - generic [ref=f3e9]:
- - link "宸ュ巶鏁板瓧鍖朚OM绯荤粺 宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=f3e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=f3e18]
- - generic [ref=f3e19]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
- - menu [ref=f3e22]:
- - listitem [ref=f3e23]:
- - generic [ref=f3e24] [cursor=pointer]: 姒傝
- - listitem [ref=f3e34]:
- - generic [ref=f3e35] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f3e43]:
- - generic [ref=f3e44] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f3e50]:
- - generic [ref=f3e51] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f3e57]:
- - generic [ref=f3e58] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f3e65]:
- - generic [ref=f3e66] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f3e74]:
- - generic [ref=f3e75] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f3e82]:
- - generic [ref=f3e83] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f3e89]:
- - generic [ref=f3e90] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f3e96]:
- - generic [ref=f3e97] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f3e103]:
- - generic [ref=f3e104] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f3e110]:
- - generic [ref=f3e111] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f3e117]:
- - generic [ref=f3e118] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f3e131]:
- - generic [ref=f3e132]:
- - banner [ref=f3e133]:
- - button [ref=f3e134] [cursor=pointer]
- - button [ref=f3e137] [cursor=pointer]
- - navigation "breadcrumb" [ref=f3e142]:
- - list [ref=f3e143]:
- - listitem [ref=f3e144]:
- - link [ref=f3e145] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f3e152]
- - listitem [ref=f3e155]:
- - link "鎷涙爣璇︽儏" [disabled] [ref=f3e156]
- - generic [ref=f3e159]:
- - generic [ref=f3e161] [cursor=pointer]:
- - generic [ref=f3e165]: 鎼滅储
- - generic [ref=f3e166]: Ctrl K
- - button [ref=f3e168] [cursor=pointer]
- - button "dark" [ref=f3e173] [cursor=pointer]
- - button [ref=f3e182] [cursor=pointer]
- - button [ref=f3e188] [cursor=pointer]
- - button [ref=f3e191] [cursor=pointer]
- - button [ref=f3e197] [cursor=pointer]:
- - button [ref=f3e199]
- - button "宸ヤ綔鍙�" [ref=f3e203] [cursor=pointer]
- - button "婧愮爜" [ref=f3e207] [cursor=pointer]
- - generic [ref=f3e214]:
- - generic [ref=f3e219]:
- - generic [ref=f3e220] [cursor=pointer]: 鍒嗘瀽椤�
- - generic [ref=f3e238] [cursor=pointer]: 鎷涙爣璇︽儏
- - button [ref=f3e254] [cursor=pointer]
- - main [ref=f3e272]:
- - generic [ref=f3e275]:
- - generic [ref=f3e276]:
- - button [ref=f3e277] [cursor=pointer]
- - generic [ref=f3e280]: 娴嬭瘯椤圭洰
- - generic [ref=f3e281]: 娴嬭瘯缂栧彿
- - generic [ref=f3e282]: 宸插畾鏍�
- - generic [ref=f3e283]: 鍏紑鎷涙爣
- - button "鍒锋柊" [ref=f3e284] [cursor=pointer]
- - generic [ref=f3e290]:
- - generic:
- - generic "鑽夌"
- - generic "鍙戝竷"
- - generic "鎶曟爣涓�"
- - generic "璇勬爣涓�"
- - generic "宸插畾鏍�"
- - generic [ref=f3e291]:
- - generic [ref=f3e292]:
- - generic [ref=f3e293]: 棰勭畻閲戦
- - generic [ref=f3e294]: 15,000 鍏�
- - generic [ref=f3e295]:
- - generic [ref=f3e296]: 璐熻矗浜�
- - generic [ref=f3e297]: "-"
- - generic [ref=f3e298]:
- - generic [ref=f3e299]: 閲囪喘缁勭粐
- - generic [ref=f3e300]: "-"
- - generic [ref=f3e301]:
- - generic [ref=f3e302]: 寮�鏍囨椂闂�
- - generic [ref=f3e303]: 2026-07-29 11:20:11
- - generic [ref=f3e304]:
- - generic [ref=f3e305]: 寮�濮嬫椂闂�
- - generic [ref=f3e306]: 2026-07-29 11:13:02
- - generic [ref=f3e307]:
- - generic [ref=f3e308]: 鎴鏃堕棿
- - generic [ref=f3e309]: 2026-07-29 19:13:06
- - generic [ref=f3e313]:
- - tablist [ref=f3e314]:
- - generic [ref=f3e316]:
- - tab [ref=f3e318] [cursor=pointer]
- - tab [ref=f3e323] [cursor=pointer]
- - tab [ref=f3e328] [cursor=pointer]
- - tab [ref=f3e333] [cursor=pointer]
- - tab [ref=f3e338] [cursor=pointer]
- - tab [active] [selected] [ref=f3e343] [cursor=pointer]
- - tabpanel "瀹氭爣" [ref=f3e404]:
- - generic [ref=f3e405]:
- - generic [ref=f3e407]:
- - generic [ref=f3e408]: 宸插畾琛�
- - generic [ref=f3e409]: "12"
- - generic [ref=f3e411]: 10,000 鍏�
- - text: 2026-07-29 14:52:43
- - generic [ref=f3e412]: 宸茬敓鎴愯鍗�
- - text: 18缁煎悎璇勫畾
- - generic [ref=f3e415]:
- - generic "璁㈠崟宸茬敓鎴�"
- - button "鍒犻櫎瀹氭爣" [ref=f3e416] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T07-14-24-445Z.yml b/.playwright-mcp/page-2026-07-29T07-14-24-445Z.yml
deleted file mode 100644
index 987bb5e..0000000
--- a/.playwright-mcp/page-2026-07-29T07-14-24-445Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T07-14-44-587Z.yml b/.playwright-mcp/page-2026-07-29T07-14-44-587Z.yml
deleted file mode 100644
index cff9162..0000000
--- a/.playwright-mcp/page-2026-07-29T07-14-44-587Z.yml
+++ /dev/null
@@ -1,121 +0,0 @@
-- generic [ref=f4e7]:
- - complementary [ref=f4e8]:
- - generic [ref=f4e9]:
- - link "宸ュ巶鏁板瓧鍖朚OM绯荤粺 宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=f4e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ュ巶鏁板瓧鍖朚OM绯荤粺" [ref=f4e18]
- - generic [ref=f4e19]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
- - menu [ref=f4e22]:
- - listitem [ref=f4e23]:
- - generic [ref=f4e24] [cursor=pointer]: 姒傝
- - listitem [ref=f4e34]:
- - generic [ref=f4e35] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f4e43]:
- - generic [ref=f4e44] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f4e50]:
- - generic [ref=f4e51] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f4e57]:
- - generic [ref=f4e58] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f4e65]:
- - generic [ref=f4e66] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f4e74]:
- - generic [ref=f4e75] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f4e82]:
- - generic [ref=f4e83] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f4e89]:
- - generic [ref=f4e90] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f4e96]:
- - generic [ref=f4e97] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f4e103]:
- - generic [ref=f4e104] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f4e110]:
- - generic [ref=f4e111] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f4e117]:
- - generic [ref=f4e118] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f4e131]:
- - generic [ref=f4e132]:
- - banner [ref=f4e133]:
- - button [ref=f4e134] [cursor=pointer]
- - button [ref=f4e137] [cursor=pointer]
- - navigation "breadcrumb" [ref=f4e142]:
- - list [ref=f4e143]:
- - listitem [ref=f4e144]:
- - link [ref=f4e145] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f4e152]
- - listitem [ref=f4e155]:
- - link "鎷涙爣璇︽儏" [disabled] [ref=f4e156]
- - generic [ref=f4e159]:
- - generic [ref=f4e161] [cursor=pointer]:
- - generic [ref=f4e165]: 鎼滅储
- - generic [ref=f4e166]: Ctrl K
- - button [ref=f4e168] [cursor=pointer]
- - button "dark" [ref=f4e173] [cursor=pointer]
- - button [ref=f4e182] [cursor=pointer]
- - button [ref=f4e188] [cursor=pointer]
- - button [ref=f4e191] [cursor=pointer]
- - button [ref=f4e197] [cursor=pointer]:
- - button [ref=f4e199]
- - button "宸ヤ綔鍙�" [ref=f4e203] [cursor=pointer]
- - button "婧愮爜" [ref=f4e207] [cursor=pointer]
- - generic [ref=f4e214]:
- - generic [ref=f4e219]:
- - generic [ref=f4e220] [cursor=pointer]: 鍒嗘瀽椤�
- - generic [ref=f4e238] [cursor=pointer]: 鎷涙爣璇︽儏
- - button [ref=f4e254] [cursor=pointer]
- - main [ref=f4e272]:
- - generic [ref=f4e275]:
- - generic [ref=f4e276]:
- - button [ref=f4e277] [cursor=pointer]
- - generic [ref=f4e280]: 娴嬭瘯椤圭洰
- - generic [ref=f4e281]: 娴嬭瘯缂栧彿
- - generic [ref=f4e282]: 宸插畾鏍�
- - generic [ref=f4e283]: 鍏紑鎷涙爣
- - button "鍒锋柊" [ref=f4e284] [cursor=pointer]
- - generic [ref=f4e290]:
- - generic:
- - generic "鑽夌"
- - generic "鍙戝竷"
- - generic "鎶曟爣涓�"
- - generic "璇勬爣涓�"
- - generic "宸插畾鏍�"
- - generic [ref=f4e291]:
- - generic [ref=f4e292]:
- - generic [ref=f4e293]: 棰勭畻閲戦
- - generic [ref=f4e294]: 15,000 鍏�
- - generic [ref=f4e295]:
- - generic [ref=f4e296]: 璐熻矗浜�
- - generic [ref=f4e297]: "-"
- - generic [ref=f4e298]:
- - generic [ref=f4e299]: 閲囪喘缁勭粐
- - generic [ref=f4e300]: "-"
- - generic [ref=f4e301]:
- - generic [ref=f4e302]: 寮�鏍囨椂闂�
- - generic [ref=f4e303]: 2026-07-29 11:20:11
- - generic [ref=f4e304]:
- - generic [ref=f4e305]: 寮�濮嬫椂闂�
- - generic [ref=f4e306]: 2026-07-29 11:13:02
- - generic [ref=f4e307]:
- - generic [ref=f4e308]: 鎴鏃堕棿
- - generic [ref=f4e309]: 2026-07-29 19:13:06
- - generic [ref=f4e313]:
- - tablist [ref=f4e314]:
- - generic [ref=f4e316]:
- - tab [ref=f4e318] [cursor=pointer]
- - tab [ref=f4e323] [cursor=pointer]
- - tab [ref=f4e328] [cursor=pointer]
- - tab [ref=f4e333] [cursor=pointer]
- - tab [ref=f4e338] [cursor=pointer]
- - tab [selected] [ref=f4e343] [cursor=pointer]
- - tabpanel "瀹氭爣" [active] [ref=f4e404]:
- - generic [ref=f4e405]:
- - generic [ref=f4e407]:
- - generic [ref=f4e408]: AWARD2024070001
- - generic [ref=f4e409]: "12"
- - generic [ref=f4e411]: 10,000 鍏�
- - text: 2026-07-29 14:52:43
- - generic [ref=f4e412]: 宸茬敓鎴愯鍗�
- - text: 18缁煎悎璇勫畾
- - generic [ref=f4e415]:
- - generic "璁㈠崟宸茬敓鎴�"
- - button "鍒犻櫎瀹氭爣" [ref=f4e416] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-07-29T07-14-58-476Z.yml b/.playwright-mcp/page-2026-07-29T07-14-58-476Z.yml
deleted file mode 100644
index 987bb5e..0000000
--- a/.playwright-mcp/page-2026-07-29T07-14-58-476Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ュ巶鏁板瓧鍖朚OM绯荤粺
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-03T09-16-38-621Z.yml b/.playwright-mcp/page-2026-08-03T09-16-38-621Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-03T09-16-38-621Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-03T09-20-27-740Z.yml b/.playwright-mcp/page-2026-08-03T09-20-27-740Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-03T09-20-27-740Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-03T09-20-36-226Z.yml b/.playwright-mcp/page-2026-08-03T09-20-36-226Z.yml
deleted file mode 100644
index bbd2f4e..0000000
--- a/.playwright-mcp/page-2026-08-03T09-20-36-226Z.yml
+++ /dev/null
@@ -1,154 +0,0 @@
-- generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e85]:
- - generic [ref=f1e86] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e92]:
- - generic [ref=f1e93] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e99]:
- - generic [ref=f1e100] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e106]:
- - generic [ref=f1e107] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e113]:
- - generic [ref=f1e114] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e120]:
- - generic [ref=f1e121] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e134]:
- - generic [ref=f1e135]:
- - banner [ref=f1e136]:
- - button [ref=f1e137] [cursor=pointer]
- - button [ref=f1e140] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e145]:
- - list [ref=f1e146]:
- - listitem [ref=f1e147]:
- - link [disabled] [ref=f1e148]
- - generic [ref=f1e155]:
- - generic [ref=f1e157] [cursor=pointer]:
- - generic [ref=f1e161]: 鎼滅储
- - generic [ref=f1e162]: Ctrl K
- - button [ref=f1e164] [cursor=pointer]
- - button "dark" [ref=f1e169] [cursor=pointer]
- - button [ref=f1e178] [cursor=pointer]
- - button [ref=f1e184] [cursor=pointer]
- - button [ref=f1e187] [cursor=pointer]
- - button [ref=f1e193] [cursor=pointer]:
- - button [ref=f1e195]
- - button "宸ヤ綔鍙�" [ref=f1e199] [cursor=pointer]
- - button [ref=f1e203] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f1e208]
- - generic [ref=f1e210]:
- - generic [ref=f1e211]: 棣栭〉
- - button [ref=f1e233] [cursor=pointer]
- - main [ref=f1e251]:
- - generic [ref=f1e254]:
- - generic [ref=f1e255]:
- - generic [ref=f1e256]:
- - heading "涓嬪崍濂斤紝娆㈣繋鍥炴潵" [level=1] [ref=f1e257]
- - paragraph [ref=f1e258]: 2026骞�8鏈�3鏃� 鏄熸湡涓�
- - generic [ref=f1e259]: 绯荤粺杩愯涓�
- - generic [ref=f1e264]:
- - generic [ref=f1e273] [cursor=pointer]:
- - generic [ref=f1e274]: 鐢熶骇璁㈠崟
- - generic [ref=f1e275]:
- - generic [ref=f1e276]: "25"
- - generic [ref=f1e278]: 杩涜涓�
- - generic [ref=f1e279]:
- - text: 寰呮帓浜� 15
- - generic [ref=f1e281]: "|"
- - text: 宸插畬鎴� 5
- - generic [ref=f1e293] [cursor=pointer]:
- - generic [ref=f1e294]: 浠婃棩浜ч噺
- - generic [ref=f1e295]:
- - generic [ref=f1e296]: "0"
- - generic [ref=f1e298]: 浠�
- - generic [ref=f1e299]: 鏄ㄦ棩 0 浠�
- - generic [ref=f1e310] [cursor=pointer]:
- - generic [ref=f1e311]: 璐ㄩ噺鍚堟牸鐜�
- - generic [ref=f1e312]:
- - generic [ref=f1e313]: "0.0"
- - generic [ref=f1e315]: "%"
- - generic [ref=f1e316]: 鍚堟牸 0 | 涓嶈壇 0
- - generic [ref=f1e328] [cursor=pointer]:
- - generic [ref=f1e329]: 璁惧杩愯鐜�
- - generic [ref=f1e330]:
- - generic [ref=f1e331]: "100.0"
- - generic [ref=f1e333]: "%"
- - generic [ref=f1e334]:
- - generic [ref=f1e335]: 鍋滄満 0
- - generic [ref=f1e336]: "|"
- - generic [ref=f1e337]: 缁存姢 0
- - generic [ref=f1e340]:
- - generic [ref=f1e350] [cursor=pointer]:
- - generic [ref=f1e351]: 閲囪喘璁㈠崟
- - generic [ref=f1e352]:
- - generic [ref=f1e353]: "14"
- - generic [ref=f1e355]: 绗�
- - generic [ref=f1e356]: ERP 閲囪喘绠$悊
- - generic [ref=f1e367] [cursor=pointer]:
- - generic [ref=f1e368]: 閿�鍞鍗�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: "22"
- - generic [ref=f1e372]: 绗�
- - generic [ref=f1e373]: ERP 閿�鍞鐞�
- - generic [ref=f1e385] [cursor=pointer]:
- - generic [ref=f1e386]: 鐗╂枡搴撳瓨
- - generic [ref=f1e387]:
- - generic [ref=f1e388]: "13"
- - generic [ref=f1e390]: 鏉�
- - generic [ref=f1e391]: MES 搴撳瓨鍙拌处
- - generic [ref=f1e403] [cursor=pointer]:
- - generic [ref=f1e404]: 鎴戠殑寰呭姙
- - generic [ref=f1e405]:
- - generic [ref=f1e406]: "1"
- - generic [ref=f1e408]: 椤�
- - generic [ref=f1e409]: BPM 寰呭鎵�
- - generic [ref=f1e413]:
- - heading "AI 鏅鸿兘鍒嗘瀽" [level=3] [ref=f1e414]
- - generic [ref=f1e415]: 25 涓伐鍗曞彲鍒嗘瀽
- - generic [ref=f1e416]:
- - heading "鐢熶骇瓒嬪娍锛堣繎7澶╋級" [level=3] [ref=f1e419]
- - generic [ref=f1e424]:
- - generic [ref=f1e425]:
- - generic [ref=f1e431] [cursor=pointer]:
- - generic [ref=f1e432]: 瀹夌伅鍛煎彨
- - generic [ref=f1e433]:
- - generic [ref=f1e434]: "0"
- - generic [ref=f1e436]: 鏈缃�
- - generic [ref=f1e442] [cursor=pointer]:
- - generic [ref=f1e443]: 缁翠慨宸ュ崟
- - generic [ref=f1e444]:
- - generic [ref=f1e445]: "0"
- - generic [ref=f1e447]: 寰呭鐞�
- - heading "宸ュ崟鐘舵�佸垎甯�" [level=4] [ref=f1e449]
- - generic [ref=f1e457]:
- - heading "蹇嵎鎿嶄綔" [level=3] [ref=f1e458]
- - generic [ref=f1e459]:
- - generic [ref=f1e460] [cursor=pointer]: 鐢熶骇宸ュ崟
- - generic [ref=f1e463] [cursor=pointer]: 鐢熶骇鎶ュ伐
- - generic [ref=f1e466] [cursor=pointer]: 璐ㄦ绠$悊
- - generic [ref=f1e469] [cursor=pointer]: 璁惧鐐规
- - generic [ref=f1e472] [cursor=pointer]: 鐢熶骇鎺掔▼
- - generic [ref=f1e475] [cursor=pointer]: 瀹夌伅鍛煎彨
- - generic [ref=f1e478] [cursor=pointer]: 鐗╂枡搴撳瓨
- - generic [ref=f1e481] [cursor=pointer]: 宸ヨ壓璺嚎
- - generic [ref=f1e484] [cursor=pointer]: 鏁版嵁鎶ヨ〃
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-03T09-22-30-620Z.yml b/.playwright-mcp/page-2026-08-03T09-22-30-620Z.yml
deleted file mode 100644
index a7a7ba4..0000000
--- a/.playwright-mcp/page-2026-08-03T09-22-30-620Z.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-- generic [ref=f2e3]:
- - generic [ref=f2e6]:
- - heading "鏃犳硶璁块棶姝ょ綉绔�" [level=1] [ref=f2e7]
- - paragraph [ref=f2e8]:
- - strong [ref=f2e9]: localhost
- - text: 鎷掔粷浜嗘垜浠殑杩炴帴璇锋眰銆�
- - generic [ref=f2e10]:
- - paragraph [ref=f2e11]: 璇疯瘯璇曚互涓嬪姙娉曪細
- - list [ref=f2e12]:
- - listitem [ref=f2e13]: 妫�鏌ョ綉缁滆繛鎺�
- - listitem [ref=f2e14]:
- - link "妫�鏌ヤ唬鐞嗘湇鍔″櫒鍜岄槻鐏" [ref=f2e15] [cursor=pointer]:
- - /url: "#buttons"
- - generic [ref=f2e16]: ERR_CONNECTION_REFUSED
- - generic [ref=f2e17]:
- - button "閲嶆柊鍔犺浇" [ref=f2e19] [cursor=pointer]
- - button "璇︽儏" [ref=f2e20] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-03T09-22-42-679Z.yml b/.playwright-mcp/page-2026-08-03T09-22-42-679Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-03T09-22-42-679Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-03T09-22-54-018Z.yml b/.playwright-mcp/page-2026-08-03T09-22-54-018Z.yml
deleted file mode 100644
index 74eaaf0..0000000
--- a/.playwright-mcp/page-2026-08-03T09-22-54-018Z.yml
+++ /dev/null
@@ -1,168 +0,0 @@
-- generic [ref=f3e7]:
- - complementary [ref=f3e8]:
- - generic [ref=f3e9]:
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f3e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f3e18]
- - generic [ref=f3e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f3e22]:
- - menuitem "棣栭〉" [ref=f3e23] [cursor=pointer]
- - listitem [ref=f3e30]:
- - generic [ref=f3e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f3e39]:
- - generic [ref=f3e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f3e46]:
- - generic [ref=f3e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f3e53]:
- - generic [ref=f3e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f3e61]:
- - generic [ref=f3e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f3e70]:
- - generic [ref=f3e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f3e78]:
- - generic [ref=f3e79] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f3e85]:
- - generic [ref=f3e86] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f3e92]:
- - generic [ref=f3e93] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f3e99]:
- - generic [ref=f3e100] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f3e106]:
- - generic [ref=f3e107] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f3e113]:
- - generic [ref=f3e114] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f3e120]:
- - generic [ref=f3e121] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f3e134]:
- - generic [ref=f3e135]:
- - banner [ref=f3e136]:
- - button [ref=f3e137] [cursor=pointer]
- - button [ref=f3e140] [cursor=pointer]
- - navigation "breadcrumb" [ref=f3e145]:
- - list [ref=f3e146]:
- - listitem [ref=f3e147]:
- - link [disabled] [ref=f3e148]
- - generic [ref=f3e155]:
- - generic [ref=f3e157] [cursor=pointer]:
- - generic [ref=f3e161]: 鎼滅储
- - generic [ref=f3e162]: Ctrl K
- - button [ref=f3e164] [cursor=pointer]
- - button "dark" [ref=f3e169] [cursor=pointer]
- - button [ref=f3e178] [cursor=pointer]
- - button [ref=f3e184] [cursor=pointer]
- - button [ref=f3e187] [cursor=pointer]
- - button [ref=f3e193] [cursor=pointer]:
- - button [ref=f3e195]
- - button "宸ヤ綔鍙�" [ref=f3e199] [cursor=pointer]
- - button [ref=f3e203] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f3e208]
- - generic [ref=f3e210]:
- - generic [ref=f3e211]: 棣栭〉
- - button [ref=f3e233] [cursor=pointer]
- - main [ref=f3e251]:
- - generic [ref=f3e254]:
- - generic [ref=f3e255]:
- - generic [ref=f3e256]:
- - heading "涓嬪崍濂斤紝娆㈣繋鍥炴潵" [level=1] [ref=f3e257]
- - paragraph [ref=f3e258]: 2026骞�8鏈�3鏃� 鏄熸湡涓�
- - generic [ref=f3e259]: 绯荤粺杩愯涓�
- - generic [ref=f3e264]:
- - generic [ref=f3e273] [cursor=pointer]:
- - generic [ref=f3e274]: 鐢熶骇璁㈠崟
- - generic [ref=f3e275]:
- - generic [ref=f3e276]: "25"
- - generic [ref=f3e278]: 杩涜涓�
- - generic [ref=f3e279]:
- - text: 寰呮帓浜� 15
- - generic [ref=f3e281]: "|"
- - text: 宸插畬鎴� 5
- - generic [ref=f3e293] [cursor=pointer]:
- - generic [ref=f3e294]: 浠婃棩浜ч噺
- - generic [ref=f3e295]:
- - generic [ref=f3e296]: "0"
- - generic [ref=f3e298]: 浠�
- - generic [ref=f3e299]: 鏄ㄦ棩 0 浠�
- - generic [ref=f3e310] [cursor=pointer]:
- - generic [ref=f3e311]: 璐ㄩ噺鍚堟牸鐜�
- - generic [ref=f3e312]:
- - generic [ref=f3e313]: "0.0"
- - generic [ref=f3e315]: "%"
- - generic [ref=f3e316]: 鍚堟牸 0 | 涓嶈壇 0
- - generic [ref=f3e328] [cursor=pointer]:
- - generic [ref=f3e329]: 璁惧杩愯鐜�
- - generic [ref=f3e330]:
- - generic [ref=f3e331]: "100.0"
- - generic [ref=f3e333]: "%"
- - generic [ref=f3e334]:
- - generic [ref=f3e335]: 鍋滄満 0
- - generic [ref=f3e336]: "|"
- - generic [ref=f3e337]: 缁存姢 0
- - generic [ref=f3e340]:
- - generic [ref=f3e350] [cursor=pointer]:
- - generic [ref=f3e351]: 閲囪喘璁㈠崟
- - generic [ref=f3e352]:
- - generic [ref=f3e353]: "14"
- - generic [ref=f3e355]: 绗�
- - generic [ref=f3e356]: ERP 閲囪喘绠$悊
- - generic [ref=f3e367] [cursor=pointer]:
- - generic [ref=f3e368]: 閿�鍞鍗�
- - generic [ref=f3e369]:
- - generic [ref=f3e370]: "22"
- - generic [ref=f3e372]: 绗�
- - generic [ref=f3e373]: ERP 閿�鍞鐞�
- - generic [ref=f3e385] [cursor=pointer]:
- - generic [ref=f3e386]: 鐗╂枡搴撳瓨
- - generic [ref=f3e387]:
- - generic [ref=f3e388]: "13"
- - generic [ref=f3e390]: 鏉�
- - generic [ref=f3e391]: MES 搴撳瓨鍙拌处
- - generic [ref=f3e403] [cursor=pointer]:
- - generic [ref=f3e404]: 鎴戠殑寰呭姙
- - generic [ref=f3e405]:
- - generic [ref=f3e406]: "1"
- - generic [ref=f3e408]: 椤�
- - generic [ref=f3e409]: BPM 寰呭鎵�
- - generic [ref=f3e412]:
- - generic [ref=f3e413]:
- - heading "AI 鏅鸿兘鍒嗘瀽" [level=3] [ref=f3e414]
- - generic [ref=f3e415]: 25 涓伐鍗曞彲鍒嗘瀽
- - generic [ref=f3e416]:
- - generic [ref=f3e424] [cursor=pointer]:
- - generic [ref=f3e425]: AI 鐗╂枡棰勬祴
- - generic [ref=f3e426]: 棰勬祴鐗╂枡闇�姹備笌鐭己椋庨櫓
- - generic [ref=f3e435] [cursor=pointer]:
- - generic [ref=f3e436]: AI 鏃堕暱棰勬祴
- - generic [ref=f3e437]: 棰勬祴鍚勫伐搴忕敓浜ц�楁椂
- - generic [ref=f3e444] [cursor=pointer]:
- - generic [ref=f3e445]: AI 椋庨櫓棰勬祴
- - generic [ref=f3e446]: 璇嗗埆娼滃湪鐢熶骇椋庨櫓骞剁粰鍑哄缓璁�
- - generic [ref=f3e456] [cursor=pointer]:
- - generic [ref=f3e457]: AI 浜や粯璇勪及
- - generic [ref=f3e458]: 璇勪及璁㈠崟浜や粯鍑嗘椂鐜囦笌寤舵湡鍥犵礌
- - generic [ref=f3e461]:
- - heading "鐢熶骇瓒嬪娍锛堣繎7澶╋級" [level=3] [ref=f3e464]
- - generic [ref=f3e469]:
- - generic [ref=f3e470]:
- - generic [ref=f3e476] [cursor=pointer]:
- - generic [ref=f3e477]: 瀹夌伅鍛煎彨
- - generic [ref=f3e478]:
- - generic [ref=f3e479]: "0"
- - generic [ref=f3e481]: 鏈缃�
- - generic [ref=f3e487] [cursor=pointer]:
- - generic [ref=f3e488]: 缁翠慨宸ュ崟
- - generic [ref=f3e489]:
- - generic [ref=f3e490]: "0"
- - generic [ref=f3e492]: 寰呭鐞�
- - heading "宸ュ崟鐘舵�佸垎甯�" [level=4] [ref=f3e494]
- - generic [ref=f3e502]:
- - heading "蹇嵎鎿嶄綔" [level=3] [ref=f3e503]
- - generic [ref=f3e504]:
- - generic [ref=f3e505] [cursor=pointer]: 鐢熶骇宸ュ崟
- - generic [ref=f3e512] [cursor=pointer]: 鐢熶骇鎶ュ伐
- - generic [ref=f3e519] [cursor=pointer]: 璐ㄦ绠$悊
- - generic [ref=f3e527] [cursor=pointer]: 璁惧鐐规
- - generic [ref=f3e534] [cursor=pointer]: 鐢熶骇鎺掔▼
- - generic [ref=f3e541] [cursor=pointer]: 瀹夌伅鍛煎彨
- - generic [ref=f3e546] [cursor=pointer]: 鐗╂枡搴撳瓨
- - generic [ref=f3e554] [cursor=pointer]: 宸ヨ壓璺嚎
- - generic [ref=f3e562] [cursor=pointer]: 鏁版嵁鎶ヨ〃
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-04T07-44-03-300Z.yml b/.playwright-mcp/page-2026-08-04T07-44-03-300Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-04T07-44-03-300Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-04T07-44-19-942Z.yml b/.playwright-mcp/page-2026-08-04T07-44-19-942Z.yml
deleted file mode 100644
index e398601..0000000
--- a/.playwright-mcp/page-2026-08-04T07-44-19-942Z.yml
+++ /dev/null
@@ -1,237 +0,0 @@
-- generic [ref=e403]:
- - banner [ref=e404]:
- - generic [ref=e408]:
- - generic [ref=e409]: 鐢熶骇宸ヤ綔鍙�
- - generic [ref=e410]: 鎷変笣1鍙峰伐浣滅珯
- - navigation [ref=e411]:
- - button "宸ュ崟璇︽儏" [ref=e412] [cursor=pointer]
- - button "鎶ュ伐" [ref=e417] [cursor=pointer]
- - button "鎶ュ伐璁板綍" [active] [ref=e420] [cursor=pointer]
- - button "鐢熶骇璁板綍鍙傛暟" [ref=e425] [cursor=pointer]
- - button "棰嗘枡" [ref=e430] [cursor=pointer]
- - button "閫�鏂�" [ref=e435] [cursor=pointer]
- - button "杩斿洖绯荤粺" [ref=e440] [cursor=pointer]
- - generic [ref=e444]:
- - complementary [ref=e445]:
- - generic [ref=e446]:
- - generic [ref=e447]:
- - generic [ref=e448]: 宸ヤ綔绔�
- - button "鍒囨崲" [ref=e454] [cursor=pointer]
- - generic [ref=e455]:
- - generic [ref=e456]: WS_002
- - generic [ref=e457]: 鎷変笣1鍙峰伐浣滅珯
- - generic [ref=e458]: 鎷変笣
- - generic [ref=e459]:
- - generic [ref=e460]:
- - generic [ref=e461]: 杞﹂棿
- - generic [ref=e462]: 娴嬭瘯鎷変笣杞﹂棿
- - generic [ref=e463]:
- - generic [ref=e464]: 鍦扮偣
- - generic [ref=e465]: 鈥�
- - button "涓婂伐" [ref=e467] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e471]:
- - generic [ref=e472]: 宸ュ崟鍒楄〃
- - generic [ref=e473]: "6"
- - textbox "璁㈠崟/浜у搧/宸ュ簭" [ref=e475]
- - generic [ref=e476]:
- - generic [ref=e479] [cursor=pointer]:
- - generic [ref=e480]:
- - generic [ref=e481]: TK_20260729002
- - generic [ref=e482]: 璐ㄦ
- - generic [ref=e483]: 鍊掑啿
- - generic [ref=e484]: 0%
- - generic [ref=e485]:
- - generic [ref=e486]: 鎶ュ伐杩涘害
- - generic [ref=e487]: 0 / 234
- - generic [ref=e489]:
- - generic [ref=e490]:
- - generic [ref=e491]: 璁㈠崟
- - generic [ref=e492]: WO1784883668267 鐢熶骇宸ュ崟-MPS20260724002
- - generic [ref=e493]:
- - generic [ref=e494]: 宸ュ簭
- - generic [ref=e495]: 鎷変笣
- - generic [ref=e496]:
- - generic [ref=e497]: 浜у搧
- - generic "閾濆崟绾�" [ref=e498]: ITEM_20260716005 閾濆崟绾�
- - generic [ref=e499]:
- - generic [ref=e500]: 鍙姤宸�
- - generic [ref=e501]: 224 鍗冨厠
- - generic [ref=e504] [cursor=pointer]:
- - generic [ref=e505]:
- - generic [ref=e506]: TK_20260729001
- - generic [ref=e507]: 璐ㄦ
- - generic [ref=e508]: 鍊掑啿
- - generic [ref=e509]: 0%
- - generic [ref=e510]:
- - generic [ref=e511]: 鎶ュ伐杩涘害
- - generic [ref=e512]: 0 / 61
- - generic [ref=e514]:
- - generic [ref=e515]:
- - generic [ref=e516]: 璁㈠崟
- - generic [ref=e517]: WO_20260724003 閰掓硥
- - generic [ref=e518]:
- - generic [ref=e519]: 宸ュ簭
- - generic [ref=e520]: 鎷変笣
- - generic [ref=e521]:
- - generic [ref=e522]: 浜у搧
- - generic "閾濆崟绾�" [ref=e523]: ITEM_20260716005 閾濆崟绾�
- - generic [ref=e524]:
- - generic [ref=e525]: 鍙姤宸�
- - generic [ref=e526]: 61 鍗冨厠
- - generic [ref=e529] [cursor=pointer]:
- - generic [ref=e530]:
- - generic [ref=e531]: TK_20260724001
- - generic [ref=e532]: 璐ㄦ
- - generic [ref=e533]: 鍊掑啿
- - generic [ref=e534]: 0%
- - generic [ref=e535]:
- - generic [ref=e536]: 鎶ュ伐杩涘害
- - generic [ref=e537]: 0 / 1
- - generic [ref=e539]:
- - generic [ref=e540]:
- - generic [ref=e541]: 璁㈠崟
- - generic [ref=e542]: WO_20260724003 閰掓硥
- - generic [ref=e543]:
- - generic [ref=e544]: 宸ュ簭
- - generic [ref=e545]: 鎷変笣
- - generic [ref=e546]:
- - generic [ref=e547]: 浜у搧
- - generic "閾濆崟绾�" [ref=e548]: ITEM_20260716005 閾濆崟绾�
- - generic [ref=e549]:
- - generic [ref=e550]: 鍙姤宸�
- - generic [ref=e551]: 0 鍗冨厠
- - generic [ref=e554] [cursor=pointer]:
- - generic [ref=e555]:
- - generic [ref=e556]: TK_20260723001
- - generic [ref=e557]: 璐ㄦ
- - generic [ref=e558]: 鍊掑啿
- - generic [ref=e559]: 27%
- - generic [ref=e560]:
- - generic [ref=e561]: 鎶ュ伐杩涘害
- - generic [ref=e562]: 27 / 100
- - generic [ref=e565]:
- - generic [ref=e566]:
- - generic [ref=e567]: 璁㈠崟
- - generic [ref=e568]: WO_20260722009 閰掓硥
- - generic [ref=e569]:
- - generic [ref=e570]: 宸ュ簭
- - generic [ref=e571]: 鎷変笣
- - generic [ref=e572]:
- - generic [ref=e573]: 浜у搧
- - generic "閾濆崟绾�" [ref=e574]: ITEM_20260716005 閾濆崟绾�
- - generic [ref=e575]:
- - generic [ref=e576]: 鍙姤宸�
- - generic [ref=e577]: 73 鍗冨厠
- - generic [ref=e580] [cursor=pointer]:
- - generic [ref=e581]:
- - generic [ref=e582]: TK_20260717001
- - generic [ref=e583]: 璐ㄦ
- - generic [ref=e584]: 鍊掑啿
- - generic [ref=e585]: 0.6%
- - generic [ref=e586]:
- - generic [ref=e587]: 鎶ュ伐杩涘害
- - generic [ref=e588]: 6 / 1000
- - generic [ref=e591]:
- - generic [ref=e592]:
- - generic [ref=e593]: 璁㈠崟
- - generic [ref=e594]: WO_20260716050 娴嬭瘯璁㈠崟
- - generic [ref=e595]:
- - generic [ref=e596]: 宸ュ簭
- - generic [ref=e597]: 鎷変笣
- - generic [ref=e598]:
- - generic [ref=e599]: 浜у搧
- - generic "閾濆崟绾�" [ref=e600]: ITEM_20260716005 閾濆崟绾�
- - generic [ref=e601]:
- - generic [ref=e602]: 鍙姤宸�
- - generic [ref=e603]: 994 鍗冨厠
- - generic [ref=e606] [cursor=pointer]:
- - generic [ref=e607]:
- - generic [ref=e608]: TK_20260716001
- - generic [ref=e609]: 璐ㄦ
- - generic [ref=e610]: 鍊掑啿
- - generic [ref=e611]: 0%
- - generic [ref=e612]:
- - generic [ref=e613]: 鎶ュ伐杩涘害
- - generic [ref=e614]: 0 / 12000
- - generic [ref=e616]:
- - generic [ref=e617]:
- - generic [ref=e618]: 璁㈠崟
- - generic [ref=e619]: WO_20260716050 娴嬭瘯璁㈠崟
- - generic [ref=e620]:
- - generic [ref=e621]: 宸ュ簭
- - generic [ref=e622]: 鎷変笣
- - generic [ref=e623]:
- - generic [ref=e624]: 浜у搧
- - generic "閽㈣姱閾濈粸绾�" [ref=e625]: ITEM_20260716006 閽㈣姱閾濈粸绾�
- - generic [ref=e626]:
- - generic [ref=e627]: 鍙姤宸�
- - generic [ref=e628]: 10000 鍗冨厠
- - main [ref=e631]:
- - generic [ref=e632]:
- - generic [ref=e633]: 鎶ュ伐璁板綍
- - generic [ref=e634]: 宸ュ崟 TK_20260729002
- - generic [ref=e725]:
- - generic [ref=e727]:
- - generic [ref=e728]: 鎶ュ伐璁板綍
- - generic [ref=e731]:
- - button "瞟�" [ref=e732] [cursor=pointer]
- - button "顪�" [ref=e734] [cursor=pointer]
- - button "顦�" [ref=e736] [cursor=pointer]
- - generic [ref=e743]:
- - generic [ref=e744]:
- - table [ref=e748]:
- - rowgroup [ref=e762]:
- - row [ref=e763]:
- - columnheader "鎶ヨ鍗曞彿" [ref=e764]
- - columnheader "浠诲姟缂栫爜" [ref=e769]
- - columnheader "宸ュ簭" [ref=e774]
- - columnheader "浜у搧" [ref=e779]
- - columnheader "鎶ュ伐鏁伴噺" [ref=e784]
- - columnheader "鍚堟牸鍝�" [ref=e789]
- - columnheader "涓嶈壇鍝�" [ref=e794]
- - columnheader "鎶ュ伐浜�" [ref=e799]
- - columnheader "瀹℃牳浜�" [ref=e804]
- - columnheader "鐘舵��" [ref=e809]
- - columnheader "鎶ュ伐鏃堕棿" [ref=e814]
- - table [ref=e822]:
- - rowgroup [ref=e836]:
- - row [ref=e837]:
- - cell [ref=e838]:
- - button "FB_20260804006" [ref=e841] [cursor=pointer]
- - cell "TK_20260729002" [ref=e843]
- - cell "鎷変笣" [ref=e847]
- - cell "閾濆崟绾�" [ref=e851]
- - cell "10" [ref=e855]
- - cell "0" [ref=e859]
- - cell "0" [ref=e863]
- - cell "瓒呯骇绠$悊鍛�" [ref=e867]
- - cell "test01" [ref=e871]
- - cell "瀹℃壒涓�" [ref=e875]
- - cell "2026-08-04 15:42:04" [ref=e879]
- - generic [ref=e883]:
- - table [ref=e886]:
- - rowgroup [ref=e900]:
- - row [ref=e901]:
- - columnheader "鎿嶄綔" [ref=e902]
- - table [ref=e909]:
- - rowgroup [ref=e912]:
- - row [ref=e913]:
- - cell [ref=e914]:
- - generic [ref=e917]:
- - button "鏌ョ湅" [ref=e919] [cursor=pointer]
- - button "瀹℃壒閫氳繃" [ref=e922] [cursor=pointer]
- - button "椹冲洖" [ref=e925] [cursor=pointer]
- - generic [ref=e933]:
- - generic [ref=e934]: 鍏� 1 鏉¤褰�
- - generic [ref=e936] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e937]:
- - textbox "璇烽�夋嫨" [ref=e938]: 20鏉�/椤�
- - generic [ref=e939]: 睿�
- - button "飱�" [ref=e942]
- - button "顧�" [ref=e944]
- - button "顫�" [ref=e946]
- - button "1" [ref=e949] [cursor=pointer]
- - button "顫�" [ref=e950]
- - button "顧�" [ref=e952]
- - button "顦�" [ref=e954]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-04T07-44-38-346Z.yml b/.playwright-mcp/page-2026-08-04T07-44-38-346Z.yml
deleted file mode 100644
index 61d73ec..0000000
--- a/.playwright-mcp/page-2026-08-04T07-44-38-346Z.yml
+++ /dev/null
@@ -1,273 +0,0 @@
-- generic [ref=e403]:
- - banner [ref=e404]:
- - generic [ref=e408]:
- - generic [ref=e409]: 鐢熶骇宸ヤ綔鍙�
- - generic [ref=e410]: 鎷変笣1鍙峰伐浣滅珯
- - navigation [ref=e411]:
- - button "宸ュ崟璇︽儏" [ref=e412] [cursor=pointer]
- - button "鎶ュ伐" [active] [ref=e417] [cursor=pointer]
- - button "鎶ュ伐璁板綍" [ref=e420] [cursor=pointer]
- - button "鐢熶骇璁板綍鍙傛暟" [ref=e425] [cursor=pointer]
- - button "棰嗘枡" [ref=e430] [cursor=pointer]
- - button "閫�鏂�" [ref=e435] [cursor=pointer]
- - button "杩斿洖绯荤粺" [ref=e440] [cursor=pointer]
- - generic [ref=e444]:
- - complementary [ref=e445]:
- - generic [ref=e446]:
- - generic [ref=e447]:
- - generic [ref=e448]: 宸ヤ綔绔�
- - button "鍒囨崲" [ref=e454] [cursor=pointer]
- - generic [ref=e455]:
- - generic [ref=e456]: WS_002
- - generic [ref=e457]: 鎷変笣1鍙峰伐浣滅珯
- - generic [ref=e458]: 鎷変笣
- - generic [ref=e459]:
- - generic [ref=e460]:
- - generic [ref=e461]: 杞﹂棿
- - generic [ref=e462]: 娴嬭瘯鎷変笣杞﹂棿
- - generic [ref=e463]:
- - generic [ref=e464]: 鍦扮偣
- - generic [ref=e465]: 鈥�
- - button "涓婂伐" [ref=e467] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e471]:
- - generic [ref=e472]: 宸ュ崟鍒楄〃
- - generic [ref=e473]: "6"
- - textbox "璁㈠崟/浜у搧/宸ュ簭" [ref=e475]
- - generic [ref=e476]:
- - generic [ref=e479] [cursor=pointer]:
- - generic [ref=e480]:
- - generic [ref=e481]: TK_20260729002
- - generic [ref=e482]: 璐ㄦ
- - generic [ref=e483]: 鍊掑啿
- - generic [ref=e484]: 0%
- - generic [ref=e485]:
- - generic [ref=e486]: 鎶ュ伐杩涘害
- - generic [ref=e487]: 0 / 234
- - generic [ref=e489]:
- - generic [ref=e490]:
- - generic [ref=e491]: 璁㈠崟
- - generic [ref=e492]: WO1784883668267 鐢熶骇宸ュ崟-MPS20260724002
- - generic [ref=e493]:
- - generic [ref=e494]: 宸ュ簭
- - generic [ref=e495]: 鎷変笣
- - generic [ref=e496]:
- - generic [ref=e497]: 浜у搧
- - generic "閾濆崟绾�" [ref=e498]: ITEM_20260716005 閾濆崟绾�
- - generic [ref=e499]:
- - generic [ref=e500]: 鍙姤宸�
- - generic [ref=e501]: 224 鍗冨厠
- - generic [ref=e504] [cursor=pointer]:
- - generic [ref=e505]:
- - generic [ref=e506]: TK_20260729001
- - generic [ref=e507]: 璐ㄦ
- - generic [ref=e508]: 鍊掑啿
- - generic [ref=e509]: 0%
- - generic [ref=e510]:
- - generic [ref=e511]: 鎶ュ伐杩涘害
- - generic [ref=e512]: 0 / 61
- - generic [ref=e514]:
- - generic [ref=e515]:
- - generic [ref=e516]: 璁㈠崟
- - generic [ref=e517]: WO_20260724003 閰掓硥
- - generic [ref=e518]:
- - generic [ref=e519]: 宸ュ簭
- - generic [ref=e520]: 鎷変笣
- - generic [ref=e521]:
- - generic [ref=e522]: 浜у搧
- - generic "閾濆崟绾�" [ref=e523]: ITEM_20260716005 閾濆崟绾�
- - generic [ref=e524]:
- - generic [ref=e525]: 鍙姤宸�
- - generic [ref=e526]: 61 鍗冨厠
- - generic [ref=e529] [cursor=pointer]:
- - generic [ref=e530]:
- - generic [ref=e531]: TK_20260724001
- - generic [ref=e532]: 璐ㄦ
- - generic [ref=e533]: 鍊掑啿
- - generic [ref=e534]: 0%
- - generic [ref=e535]:
- - generic [ref=e536]: 鎶ュ伐杩涘害
- - generic [ref=e537]: 0 / 1
- - generic [ref=e539]:
- - generic [ref=e540]:
- - generic [ref=e541]: 璁㈠崟
- - generic [ref=e542]: WO_20260724003 閰掓硥
- - generic [ref=e543]:
- - generic [ref=e544]: 宸ュ簭
- - generic [ref=e545]: 鎷変笣
- - generic [ref=e546]:
- - generic [ref=e547]: 浜у搧
- - generic "閾濆崟绾�" [ref=e548]: ITEM_20260716005 閾濆崟绾�
- - generic [ref=e549]:
- - generic [ref=e550]: 鍙姤宸�
- - generic [ref=e551]: 0 鍗冨厠
- - generic [ref=e554] [cursor=pointer]:
- - generic [ref=e555]:
- - generic [ref=e556]: TK_20260723001
- - generic [ref=e557]: 璐ㄦ
- - generic [ref=e558]: 鍊掑啿
- - generic [ref=e559]: 27%
- - generic [ref=e560]:
- - generic [ref=e561]: 鎶ュ伐杩涘害
- - generic [ref=e562]: 27 / 100
- - generic [ref=e565]:
- - generic [ref=e566]:
- - generic [ref=e567]: 璁㈠崟
- - generic [ref=e568]: WO_20260722009 閰掓硥
- - generic [ref=e569]:
- - generic [ref=e570]: 宸ュ簭
- - generic [ref=e571]: 鎷変笣
- - generic [ref=e572]:
- - generic [ref=e573]: 浜у搧
- - generic "閾濆崟绾�" [ref=e574]: ITEM_20260716005 閾濆崟绾�
- - generic [ref=e575]:
- - generic [ref=e576]: 鍙姤宸�
- - generic [ref=e577]: 73 鍗冨厠
- - generic [ref=e580] [cursor=pointer]:
- - generic [ref=e581]:
- - generic [ref=e582]: TK_20260717001
- - generic [ref=e583]: 璐ㄦ
- - generic [ref=e584]: 鍊掑啿
- - generic [ref=e585]: 0.6%
- - generic [ref=e586]:
- - generic [ref=e587]: 鎶ュ伐杩涘害
- - generic [ref=e588]: 6 / 1000
- - generic [ref=e591]:
- - generic [ref=e592]:
- - generic [ref=e593]: 璁㈠崟
- - generic [ref=e594]: WO_20260716050 娴嬭瘯璁㈠崟
- - generic [ref=e595]:
- - generic [ref=e596]: 宸ュ簭
- - generic [ref=e597]: 鎷変笣
- - generic [ref=e598]:
- - generic [ref=e599]: 浜у搧
- - generic "閾濆崟绾�" [ref=e600]: ITEM_20260716005 閾濆崟绾�
- - generic [ref=e601]:
- - generic [ref=e602]: 鍙姤宸�
- - generic [ref=e603]: 994 鍗冨厠
- - generic [ref=e606] [cursor=pointer]:
- - generic [ref=e607]:
- - generic [ref=e608]: TK_20260716001
- - generic [ref=e609]: 璐ㄦ
- - generic [ref=e610]: 鍊掑啿
- - generic [ref=e611]: 0%
- - generic [ref=e612]:
- - generic [ref=e613]: 鎶ュ伐杩涘害
- - generic [ref=e614]: 0 / 12000
- - generic [ref=e616]:
- - generic [ref=e617]:
- - generic [ref=e618]: 璁㈠崟
- - generic [ref=e619]: WO_20260716050 娴嬭瘯璁㈠崟
- - generic [ref=e620]:
- - generic [ref=e621]: 宸ュ簭
- - generic [ref=e622]: 鎷変笣
- - generic [ref=e623]:
- - generic [ref=e624]: 浜у搧
- - generic "閽㈣姱閾濈粸绾�" [ref=e625]: ITEM_20260716006 閽㈣姱閾濈粸绾�
- - generic [ref=e626]:
- - generic [ref=e627]: 鍙姤宸�
- - generic [ref=e628]: 10000 鍗冨厠
- - main [ref=e631]:
- - generic [ref=e632]:
- - generic [ref=e633]: 鎶ュ伐
- - generic [ref=e634]: 宸ュ崟 TK_20260729002
- - generic [ref=e956]:
- - generic [ref=e957]:
- - heading "鏂板缓鎶ュ伐" [level=3] [ref=e958]
- - generic [ref=e959]: "宸ュ崟: WO1784883668267 鐢熶骇宸ュ崟-MPS20260724002"
- - generic [ref=e961]:
- - generic [ref=e962]:
- - generic [ref=e963]:
- - generic [ref=e964]: "*"
- - text: 鎶ヨ鍗曞彿
- - generic [ref=e968]:
- - textbox "* 鎶ヨ鍗曞彿" [ref=e969]:
- - /placeholder: 璇疯緭鍏ユ姤璁㈠崟鍙�
- - text: FB_20260804009
- - button "鐢� 鎴�" [ref=e971] [cursor=pointer]
- - generic [ref=e973]:
- - generic [ref=e974]:
- - generic [ref=e975]: "*"
- - text: 鎶ュ伐绫诲瀷
- - generic [ref=e981] [cursor=pointer]:
- - combobox "* 鎶ュ伐绫诲瀷" [ref=e983]
- - generic "鑷鎶ュ伐" [ref=e984]
- - generic [ref=e985]:
- - generic [ref=e986]:
- - generic [ref=e987]: "*"
- - text: 鐢熶骇璁㈠崟
- - textbox "璇烽�夋嫨璁㈠崟" [ref=e994]: WO1784883668267
- - generic [ref=e1000]:
- - generic [ref=e1001]:
- - generic [ref=e1002]: "*"
- - text: 鐢熶骇浠诲姟
- - textbox "璇烽�夋嫨浠诲姟" [ref=e1009]: TK_20260729002
- - generic [ref=e1015]:
- - generic [ref=e1016]:
- - generic [ref=e1017]: "*"
- - text: 宸ヤ綔绔�
- - textbox "璇烽�夋嫨宸ヤ綔绔�" [ref=e1024]: 鎷変笣1鍙峰伐浣滅珯
- - generic [ref=e1030]:
- - generic [ref=e1031]: 浜у搧缂栫爜
- - textbox "浜у搧缂栫爜" [disabled] [ref=e1036]:
- - /placeholder: 璇疯緭鍏�
- - text: ITEM_20260716005
- - generic [ref=e1037]:
- - generic [ref=e1038]: 浜у搧鍚嶇О
- - textbox "浜у搧鍚嶇О" [disabled] [ref=e1043]:
- - /placeholder: 璇疯緭鍏�
- - text: 閾濆崟绾�
- - generic [ref=e1044]:
- - generic [ref=e1045]: 鍗曚綅
- - textbox "鍗曚綅" [disabled] [ref=e1050]:
- - /placeholder: 璇疯緭鍏�
- - text: 鍗冨厠
- - generic [ref=e1051]:
- - generic [ref=e1052]: 瑙勬牸
- - textbox "瑙勬牸" [disabled] [ref=e1057]:
- - /placeholder: 璇疯緭鍏�
- - text: L-1.72
- - generic [ref=e1058]:
- - generic [ref=e1059]:
- - generic [ref=e1060]: "*"
- - text: 鎶ュ伐鏁伴噺
- - generic [ref=e1065]:
- - generic [ref=e1066]:
- - button "Increase Value" [ref=e1067] [cursor=pointer]:
- - img "up" [ref=e1068]
- - button "Decrease Value" [ref=e1071] [cursor=pointer]:
- - img "down" [ref=e1072]
- - spinbutton "* 鎶ュ伐鏁伴噺" [ref=e1076]
- - generic [ref=e1077]:
- - generic [ref=e1078]:
- - generic [ref=e1079]: "*"
- - text: 鎶ュ伐浜�
- - generic [ref=e1085] [cursor=pointer]:
- - combobox "* 鎶ュ伐浜�" [ref=e1087]
- - generic "瓒呯骇绠$悊鍛�" [ref=e1088]
- - generic [ref=e1093]:
- - generic [ref=e1094]:
- - generic [ref=e1095]: "*"
- - text: 鎶ュ伐鏃堕棿
- - generic [ref=e1101]:
- - textbox "* 鎶ュ伐鏃堕棿" [ref=e1102]:
- - /placeholder: 璇烽�夋嫨鎶ュ伐鏃堕棿
- - text: Invalid Date
- - generic:
- - img "calendar"
- - button [ref=e1103] [cursor=pointer]:
- - img "close-circle" [ref=e1104]
- - generic [ref=e1107]:
- - generic [ref=e1108]:
- - generic [ref=e1109]: "*"
- - text: 瀹℃牳浜�
- - generic [ref=e1115] [cursor=pointer]:
- - combobox "* 瀹℃牳浜�" [ref=e1117]
- - generic: 璇烽�夋嫨瀹℃牳浜�
- - generic [ref=e1118]:
- - generic [ref=e1119]: 澶囨敞
- - textbox "澶囨敞" [ref=e1124]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e1125]:
- - button "淇� 瀛�" [ref=e1126] [cursor=pointer]
- - button "淇濆瓨骞舵彁浜�" [ref=e1128] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T07-36-48-990Z.yml b/.playwright-mcp/page-2026-08-05T07-36-48-990Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T07-36-48-990Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T07-36-56-155Z.png b/.playwright-mcp/page-2026-08-05T07-36-56-155Z.png
deleted file mode 100644
index 1b3d672..0000000
--- a/.playwright-mcp/page-2026-08-05T07-36-56-155Z.png
+++ /dev/null
Binary files differ
diff --git a/.playwright-mcp/page-2026-08-05T07-41-09-497Z.yml b/.playwright-mcp/page-2026-08-05T07-41-09-497Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T07-41-09-497Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T07-41-21-485Z.png b/.playwright-mcp/page-2026-08-05T07-41-21-485Z.png
deleted file mode 100644
index b068ab1..0000000
--- a/.playwright-mcp/page-2026-08-05T07-41-21-485Z.png
+++ /dev/null
Binary files differ
diff --git a/.playwright-mcp/page-2026-08-05T07-51-48-188Z.yml b/.playwright-mcp/page-2026-08-05T07-51-48-188Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T07-51-48-188Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T07-54-21-100Z.yml b/.playwright-mcp/page-2026-08-05T07-54-21-100Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T07-54-21-100Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T07-58-12-325Z.yml b/.playwright-mcp/page-2026-08-05T07-58-12-325Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T07-58-12-325Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T07-58-23-056Z.yml b/.playwright-mcp/page-2026-08-05T07-58-23-056Z.yml
deleted file mode 100644
index 4b89725..0000000
--- a/.playwright-mcp/page-2026-08-05T07-58-23-056Z.yml
+++ /dev/null
@@ -1,156 +0,0 @@
-- generic [ref=f9e7]:
- - complementary [ref=f9e8]:
- - generic [ref=f9e9]:
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f9e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f9e18]
- - generic [ref=f9e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f9e22]:
- - menuitem "棣栭〉" [ref=f9e23] [cursor=pointer]
- - listitem [ref=f9e30]:
- - generic [ref=f9e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f9e39]:
- - generic [ref=f9e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f9e46]:
- - generic [ref=f9e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f9e53]:
- - generic [ref=f9e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f9e61]:
- - generic [ref=f9e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f9e70]:
- - generic [ref=f9e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f9e78]:
- - generic [ref=f9e79] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f9e85]:
- - generic [ref=f9e86] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - list [ref=f9e92]:
- - menuitem "閲囪喘閿�鍞敭鍚庡ぇ灞�" [ref=f9e93] [cursor=pointer]
- - menuitem "浠撳簱澶у睆" [ref=f9e98] [cursor=pointer]
- - menuitem "鐢熶骇璁惧澶у睆" [ref=f9e102] [cursor=pointer]
- - menuitem "璐ㄩ噺澶у睆" [ref=f9e110] [cursor=pointer]
- - menuitem "浜鸿祫鍔炲叕澶у睆" [ref=f9e116] [cursor=pointer]
- - listitem [ref=f9e123]:
- - generic [ref=f9e124] [cursor=pointer]: 閰嶇疆绠$悊
- - listitem [ref=f9e130]:
- - generic [ref=f9e131] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f9e137]:
- - generic [ref=f9e138] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f9e144]:
- - generic [ref=f9e145] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f9e151]:
- - generic [ref=f9e152] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f9e158]:
- - generic [ref=f9e159] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f9e165]:
- - generic [ref=f9e166] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f9e179]:
- - generic [ref=f9e180]:
- - banner [ref=f9e181]:
- - button [ref=f9e182] [cursor=pointer]
- - button [ref=f9e185] [cursor=pointer]
- - navigation "breadcrumb" [ref=f9e190]:
- - list [ref=f9e191]:
- - listitem [ref=f9e192]:
- - link [ref=f9e193] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f9e197]
- - listitem [ref=f9e200]:
- - link [disabled] [ref=f9e201]
- - generic [ref=f9e206]:
- - generic [ref=f9e208] [cursor=pointer]:
- - generic [ref=f9e212]: 鎼滅储
- - generic [ref=f9e213]: Ctrl K
- - button [ref=f9e215] [cursor=pointer]
- - button "dark" [ref=f9e220] [cursor=pointer]
- - button [ref=f9e229] [cursor=pointer]
- - button [ref=f9e235] [cursor=pointer]
- - button [ref=f9e238] [cursor=pointer]
- - button [ref=f9e244] [cursor=pointer]:
- - button [ref=f9e246]
- - button "宸ヤ綔鍙�" [ref=f9e250] [cursor=pointer]
- - button "婧愮爜" [ref=f9e254] [cursor=pointer]
- - generic [ref=f9e261]:
- - generic [ref=f9e266]:
- - generic [ref=f9e267] [cursor=pointer]: 棣栭〉
- - generic [ref=f9e285] [cursor=pointer]: 閲囪喘閿�鍞敭鍚庡ぇ灞�
- - button [ref=f9e303] [cursor=pointer]
- - main [ref=f9e321]:
- - generic [ref=f9e325]:
- - generic [ref=f9e328]:
- - generic [ref=f9e336]:
- - heading "閲囪喘 路 閿�鍞� 路 鍞悗" [level=1] [ref=f9e337]
- - paragraph [ref=f9e338]: 渚涘簲閾惧叏閾捐矾缁忚惀鍐崇瓥鐪嬫澘
- - generic [ref=f9e339]:
- - generic [ref=f9e340]:
- - generic [ref=f9e341]: 15:58:22
- - generic [ref=f9e342]: 2026骞�8鏈�5鏃ユ槦鏈熶笁
- - generic [ref=f9e343]:
- - generic [ref=f9e347]: 瀹炴椂
- - generic [ref=f9e348]: 路 15:58:14
- - button "鍏ㄥ睆 (F11)" [ref=f9e349] [cursor=pointer]
- - generic [ref=f9e352]:
- - generic [ref=f9e355] [cursor=pointer]:
- - generic [ref=f9e356]: 閲囪喘璁㈠崟鎬绘暟
- - text: "14"
- - generic [ref=f9e361] [cursor=pointer]:
- - generic [ref=f9e362]: 閿�鍞鍗曟�绘暟
- - text: "22"
- - generic [ref=f9e367] [cursor=pointer]:
- - generic [ref=f9e368]: 瀹㈡埛鎬绘暟
- - text: "6"
- - generic [ref=f9e373] [cursor=pointer]:
- - generic [ref=f9e374]: 渚涘簲鍟嗘�绘暟
- - text: "1"
- - generic [ref=f9e377]:
- - heading "閲囪喘璁㈠崟鏈堝害瓒嬪娍" [level=3] [ref=f9e381]
- - heading "閿�鍞鍗曟湀搴﹁秼鍔�" [level=3] [ref=f9e388]
- - heading "閲囪喘璁㈠崟鐘舵�佸垎甯�" [level=3] [ref=f9e395]
- - generic [ref=f9e399]:
- - heading "鏈�杩戦噰璐鍗�" [level=3] [ref=f9e400]
- - table [ref=f9e402]:
- - rowgroup [ref=f9e403]:
- - row [ref=f9e404]:
- - columnheader "璁㈠崟鍙�" [ref=f9e405]
- - columnheader "閲戦" [ref=f9e406]
- - columnheader "涓嬪崟鏃堕棿" [ref=f9e407]
- - rowgroup [ref=f9e408]:
- - row [ref=f9e409]:
- - cell "CGDD20260731000002" [ref=f9e410]
- - cell "100000" [ref=f9e411]
- - cell "2026-07-31 13:40:23" [ref=f9e412]
- - row [ref=f9e413]:
- - cell "CGDD20260731000001" [ref=f9e414]
- - cell "100000" [ref=f9e415]
- - cell "2026-07-31 13:37:07" [ref=f9e416]
- - row [ref=f9e417]:
- - cell "CGDD20260730000002" [ref=f9e418]
- - cell "1510554.6" [ref=f9e419]
- - cell "2026-07-30 17:44:23" [ref=f9e420]
- - row [ref=f9e421]:
- - cell "CGDD20260730000007" [ref=f9e422]
- - cell "100700" [ref=f9e423]
- - cell "2026-07-30 13:05:50" [ref=f9e424]
- - row [ref=f9e425]:
- - cell "CGDD20260730000001" [ref=f9e426]
- - cell "1378000" [ref=f9e427]
- - cell "2026-07-30 09:22:11" [ref=f9e428]
- - row [ref=f9e429]:
- - cell "CGDD20260729000005" [ref=f9e430]
- - cell "101" [ref=f9e431]
- - cell "2026-07-29 15:32:16" [ref=f9e432]
- - row [ref=f9e433]:
- - cell "CGDD20260729000004" [ref=f9e434]
- - cell "1111" [ref=f9e435]
- - cell "2026-07-29 15:00:13" [ref=f9e436]
- - row [ref=f9e437]:
- - cell "CGDD20260724000002" [ref=f9e438]
- - cell "10.1" [ref=f9e439]
- - cell "2026-07-24 14:41:07" [ref=f9e440]
- - row [ref=f9e441]:
- - cell "CGDD20260724000001" [ref=f9e442]
- - cell "23" [ref=f9e443]
- - cell "2026-07-24 09:41:44" [ref=f9e444]
- - row [ref=f9e445]:
- - cell "CGDD20260723000001" [ref=f9e446]
- - cell "10.38" [ref=f9e447]
- - cell "2026-07-23 17:11:43" [ref=f9e448]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T08-54-54-463Z.yml b/.playwright-mcp/page-2026-08-05T08-54-54-463Z.yml
deleted file mode 100644
index e69de29..0000000
--- a/.playwright-mcp/page-2026-08-05T08-54-54-463Z.yml
+++ /dev/null
diff --git a/.playwright-mcp/page-2026-08-05T08-59-40-566Z.yml b/.playwright-mcp/page-2026-08-05T08-59-40-566Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T08-59-40-566Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-17-10-326Z.yml b/.playwright-mcp/page-2026-08-05T09-17-10-326Z.yml
deleted file mode 100644
index e8bedf7..0000000
--- a/.playwright-mcp/page-2026-08-05T09-17-10-326Z.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-- generic [active] [ref=f14e1]:
- - generic: 宸ヤ笟AI鏅洪�犲钩鍙�
- - generic [ref=f14e4]:
- - generic [ref=f14e5]:
- - generic [ref=f14e6]:
- - generic [ref=f14e7]:
- - generic:
- - button [ref=f14e8] [cursor=pointer]
- - button [ref=f14e12] [cursor=pointer]
- - button [ref=f14e14] [cursor=pointer]
- - button [ref=f14e16] [cursor=pointer]
- - button [ref=f14e18] [cursor=pointer]
- - button [ref=f14e20] [cursor=pointer]
- - button [ref=f14e22] [cursor=pointer]
- - button [ref=f14e24] [cursor=pointer]
- - button [ref=f14e31] [cursor=pointer]
- - button [ref=f14e35] [cursor=pointer]
- - button "dark" [ref=f14e41] [cursor=pointer]
- - generic [ref=f14e50]:
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f14e51]
- - paragraph [ref=f14e52]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - generic [ref=f14e56]:
- - img "87667-SVG8" [ref=f14e57]
- - generic [ref=f14e361]: 寮�绠卞嵆鐢ㄧ殑澶у瀷涓悗鍙扮鐞嗙郴缁�
- - generic [ref=f14e362]: 宸ョ▼鍖栥�侀珮鎬ц兘銆佽法缁勪欢搴撶殑鍓嶇妯$増
- - generic [ref=f14e363]:
- - generic [ref=f14e365]:
- - generic [ref=f14e366]:
- - heading "娆㈣繋鍥炴潵 馃憢馃徎" [level=2] [ref=f14e367]
- - paragraph [ref=f14e368]:
- - generic [ref=f14e369]: 璇疯緭鍏ユ偍鐨勮处鎴蜂俊鎭互寮�濮嬬鐞嗘偍鐨勯」鐩�
- - generic [ref=f14e371]:
- - textbox "璇疯緭鍏ョ敤鎴峰悕" [ref=f14e377]: admin
- - textbox "璇疯緭鍏ュ瘑鐮�" [ref=f14e384]: admin123
- - generic [ref=f14e393]:
- - checkbox "璁颁綇璐﹀彿" [ref=f14e394] [cursor=pointer]
- - generic [ref=f14e395] [cursor=pointer]: 璁颁綇璐﹀彿
- - button "login" [ref=f14e396] [cursor=pointer]: 鐧诲綍
- - generic [ref=f14e398]:
- - text: Copyright 漏 2024
- - link "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f14e399] [cursor=pointer]:
- - /url: https://gitee.com/yudaocode/yudao-ui-admin-vben
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-17-21-418Z.yml b/.playwright-mcp/page-2026-08-05T09-17-21-418Z.yml
deleted file mode 100644
index 260340f..0000000
--- a/.playwright-mcp/page-2026-08-05T09-17-21-418Z.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-- generic [ref=f14e4]:
- - generic [ref=f14e5]:
- - generic [ref=f14e6]:
- - generic [ref=f14e7]:
- - generic:
- - button [ref=f14e8] [cursor=pointer]
- - button [ref=f14e12] [cursor=pointer]
- - button [ref=f14e14] [cursor=pointer]
- - button [ref=f14e16] [cursor=pointer]
- - button [ref=f14e18] [cursor=pointer]
- - button [ref=f14e20] [cursor=pointer]
- - button [ref=f14e22] [cursor=pointer]
- - button [ref=f14e24] [cursor=pointer]
- - button [ref=f14e31] [cursor=pointer]
- - button [ref=f14e35] [cursor=pointer]
- - button "dark" [ref=f14e41] [cursor=pointer]
- - generic [ref=f14e50]:
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f14e51]
- - paragraph [ref=f14e52]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - generic [ref=f14e56]:
- - img "87667-SVG8" [ref=f14e57]
- - generic [ref=f14e361]: 寮�绠卞嵆鐢ㄧ殑澶у瀷涓悗鍙扮鐞嗙郴缁�
- - generic [ref=f14e362]: 宸ョ▼鍖栥�侀珮鎬ц兘銆佽法缁勪欢搴撶殑鍓嶇妯$増
- - generic [ref=f14e363]:
- - generic [ref=f14e365]:
- - generic [ref=f14e366]:
- - heading "娆㈣繋鍥炴潵 馃憢馃徎" [level=2] [ref=f14e367]
- - paragraph [ref=f14e368]:
- - generic [ref=f14e369]: 璇疯緭鍏ユ偍鐨勮处鎴蜂俊鎭互寮�濮嬬鐞嗘偍鐨勯」鐩�
- - generic [ref=f14e371]:
- - textbox "璇疯緭鍏ョ敤鎴峰悕" [ref=f14e377]: admin
- - textbox "璇疯緭鍏ュ瘑鐮�" [ref=f14e384]: admin123
- - generic [ref=f14e393]:
- - checkbox "璁颁綇璐﹀彿" [ref=f14e394] [cursor=pointer]
- - generic [ref=f14e395] [cursor=pointer]: 璁颁綇璐﹀彿
- - button "login" [disabled]: 鐧诲綍
- - generic [ref=f14e398]:
- - text: Copyright 漏 2024
- - link "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f14e399] [cursor=pointer]:
- - /url: https://gitee.com/yudaocode/yudao-ui-admin-vben
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-18-45-630Z.yml b/.playwright-mcp/page-2026-08-05T09-18-45-630Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T09-18-45-630Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-18-52-745Z.yml b/.playwright-mcp/page-2026-08-05T09-18-52-745Z.yml
deleted file mode 100644
index 6dd7f6b..0000000
--- a/.playwright-mcp/page-2026-08-05T09-18-52-745Z.yml
+++ /dev/null
@@ -1,231 +0,0 @@
-- generic [ref=f15e7]:
- - complementary [ref=f15e8]:
- - generic [ref=f15e9]:
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f15e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f15e18]
- - generic [ref=f15e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f15e22]:
- - menuitem "棣栭〉" [ref=f15e23] [cursor=pointer]
- - listitem [ref=f15e30]:
- - generic [ref=f15e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f15e39]:
- - generic [ref=f15e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f15e46]:
- - generic [ref=f15e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f15e53]:
- - generic [ref=f15e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f15e61]:
- - generic [ref=f15e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f15e70]:
- - generic [ref=f15e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f15e78]:
- - generic [ref=f15e79] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f15e85]:
- - generic [ref=f15e86] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - list [ref=f15e92]:
- - menuitem "閲囪喘閿�鍞敭鍚庡ぇ灞�" [ref=f15e93] [cursor=pointer]
- - menuitem "浠撳簱澶у睆" [ref=f15e98] [cursor=pointer]
- - menuitem "鐢熶骇璁惧澶у睆" [ref=f15e102] [cursor=pointer]
- - menuitem "璐ㄩ噺澶у睆" [ref=f15e110] [cursor=pointer]
- - menuitem "浜鸿祫鍔炲叕澶у睆" [ref=f15e116] [cursor=pointer]
- - listitem [ref=f15e123]:
- - generic [ref=f15e124] [cursor=pointer]: 閰嶇疆绠$悊
- - listitem [ref=f15e130]:
- - generic [ref=f15e131] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f15e137]:
- - generic [ref=f15e138] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f15e144]:
- - generic [ref=f15e145] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f15e151]:
- - generic [ref=f15e152] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f15e158]:
- - generic [ref=f15e159] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f15e165]:
- - generic [ref=f15e166] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f15e179]:
- - generic [ref=f15e180]:
- - banner [ref=f15e181]:
- - button [ref=f15e182] [cursor=pointer]
- - button [ref=f15e185] [cursor=pointer]
- - navigation "breadcrumb" [ref=f15e190]:
- - list [ref=f15e191]:
- - listitem [ref=f15e192]:
- - link [ref=f15e193] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f15e197]
- - listitem [ref=f15e200]:
- - link [disabled] [ref=f15e201]
- - generic [ref=f15e205]:
- - generic [ref=f15e207] [cursor=pointer]:
- - generic [ref=f15e211]: 鎼滅储
- - generic [ref=f15e212]: Ctrl K
- - button [ref=f15e214] [cursor=pointer]
- - button "dark" [ref=f15e219] [cursor=pointer]
- - button [ref=f15e228] [cursor=pointer]
- - button [ref=f15e234] [cursor=pointer]
- - button [ref=f15e237] [cursor=pointer]
- - button [ref=f15e243] [cursor=pointer]:
- - button [ref=f15e245]
- - button "宸ヤ綔鍙�" [ref=f15e249] [cursor=pointer]
- - button [ref=f15e253] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f15e258]
- - generic [ref=f15e260]:
- - generic [ref=f15e265]:
- - generic [ref=f15e266] [cursor=pointer]: 棣栭〉
- - generic [ref=f15e284] [cursor=pointer]: 浠撳簱澶у睆
- - button [ref=f15e301] [cursor=pointer]
- - main [ref=f15e319]:
- - generic [ref=f15e321]:
- - generic [ref=f15e322]:
- - generic [ref=f15e329]:
- - heading "浠撳偍鐗╂祦杩愯惀涓績" [level=1] [ref=f15e330]
- - paragraph [ref=f15e331]: 搴撳瓨鍛ㄨ浆 路 鏅鸿兘鍒嗘瀽 路 鐗╂祦鍗忓悓
- - generic [ref=f15e333]:
- - generic [ref=f15e334]:
- - generic [ref=f15e335]: 绯荤粺姝e父
- - generic [ref=f15e337]: 鏁版嵁鏇存柊
- - generic [ref=f15e339]:
- - generic [ref=f15e340]: 17:18:51
- - generic [ref=f15e341]: 2026骞�8鏈�5鏃ユ槦鏈熶笁
- - generic [ref=f15e342]:
- - generic [ref=f15e344]: 瀹炴椂
- - generic [ref=f15e345]: 路 17:18:47
- - button "鍏ㄥ睆" [ref=f15e346] [cursor=pointer]
- - generic [ref=f15e349]:
- - generic [ref=f15e357]:
- - generic [ref=f15e358]: 浠撳簱鏁伴噺
- - generic [ref=f15e359]: "3"
- - generic [ref=f15e366]:
- - generic [ref=f15e367]: 鐗╂枡搴撳瓨鍝佺鏁�
- - generic [ref=f15e368]: "13"
- - generic [ref=f15e376]:
- - generic [ref=f15e377]: 鍒拌揣閫氱煡鏁�
- - generic [ref=f15e378]: "12"
- - generic [ref=f15e383]:
- - generic [ref=f15e384]: 鍑鸿揣閫氱煡鏁�
- - generic [ref=f15e385]: "19"
- - generic [ref=f15e393]:
- - generic [ref=f15e394]: 搴撳瓨鍛ㄨ浆鐜�
- - generic [ref=f15e395]: "-1.01"
- - generic [ref=f15e396]:
- - generic [ref=f15e397]:
- - generic [ref=f15e398]: 搴撳瓨缁撴瀯鍒嗘瀽
- - generic [ref=f15e404]: 搴撳瓨瓒嬪娍
- - generic [ref=f15e410]:
- - generic [ref=f15e411]: 搴撳瓨棰勮
- - generic [ref=f15e413]:
- - generic [ref=f15e414]:
- - generic [ref=f15e415]: 浜у搧搴撳簱瀛�
- - generic [ref=f15e418]:
- - generic [ref=f15e419]: 搴撳瓨涓嶈冻
- - generic [ref=f15e420]: "0"
- - generic [ref=f15e421]:
- - generic [ref=f15e422]: 鐗╂枡搴撳簱瀛�
- - generic [ref=f15e425]:
- - generic [ref=f15e426]: 搴撳瓨姝e父
- - generic [ref=f15e427]: 51,502
- - generic [ref=f15e428]:
- - generic [ref=f15e429]: 铏氭嫙绾胯竟浠撳簱搴撳瓨
- - generic [ref=f15e432]:
- - generic [ref=f15e433]: 搴撳瓨涓嶈冻
- - generic [ref=f15e434]: "-23,013.8"
- - generic [ref=f15e436]:
- - generic [ref=f15e437]: 鍏ㄥ浗浠撳偍缃戠粶
- - generic [ref=f15e444]:
- - generic [ref=f15e445]:
- - generic [ref=f15e446]: 浠婃棩鍏ュ簱
- - text: 12,450
- - generic [ref=f15e447]:
- - generic [ref=f15e448]: 浠婃棩鍑哄簱
- - text: 18,750
- - generic [ref=f15e449]:
- - generic [ref=f15e450]: 鎬诲簱瀛�
- - text: 28,488.2
- - generic [ref=f15e451]:
- - generic [ref=f15e452]: 鍑哄叆搴撹秼鍔�
- - generic [ref=f15e458]: 搴撳瓨缁撴瀯
- - generic [ref=f15e464]:
- - generic [ref=f15e465]: 瀹炴椂鍔ㄦ��
- - generic [ref=f15e467]:
- - generic [ref=f15e468]:
- - generic [ref=f15e470]:
- - generic [ref=f15e471]: 17:18
- - generic [ref=f15e472]: CGDD20260731000002鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f15e473]: 鍒拌揣
- - generic [ref=f15e474]:
- - generic [ref=f15e476]:
- - generic [ref=f15e477]: 17:03
- - generic [ref=f15e478]: CGDD20260731000001鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f15e479]: 鍑鸿揣
- - generic [ref=f15e480]:
- - generic [ref=f15e482]:
- - generic [ref=f15e483]: 16:48
- - generic [ref=f15e484]: CGDD20260730000001鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f15e485]: 鍒拌揣
- - generic [ref=f15e486]:
- - generic [ref=f15e488]:
- - generic [ref=f15e489]: 16:33
- - generic [ref=f15e490]: CGDD20260723000001鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f15e491]: 鍑鸿揣
- - generic [ref=f15e492]:
- - generic [ref=f15e494]:
- - generic [ref=f15e495]: 16:18
- - generic [ref=f15e496]: CGDD20260716000012鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f15e497]: 鍒拌揣
- - generic [ref=f15e498]:
- - generic [ref=f15e500]:
- - generic [ref=f15e501]: 16:03
- - generic [ref=f15e502]: CGDD20260716000011鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f15e503]: 鍑鸿揣
- - generic [ref=f15e504]:
- - generic [ref=f15e505]:
- - text: 鏈�杩戝叆搴撹褰�
- - generic [ref=f15e507]: 瀹炴椂婊氬姩
- - table [ref=f15e509]:
- - rowgroup [ref=f15e510]:
- - row [ref=f15e511]:
- - columnheader "鍗曞彿" [ref=f15e512]
- - columnheader "鍚嶇О" [ref=f15e513]
- - columnheader "鍏ュ簱鏃ユ湡" [ref=f15e514]
- - rowgroup [ref=f15e515]:
- - row [ref=f15e516]:
- - cell "IR1785476459612" [ref=f15e517]
- - cell "CGDD20260731000002鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f15e518]
- - cell "2026-07-31 13:41:00" [ref=f15e519]
- - row [ref=f15e520]:
- - cell "IR1785476271992" [ref=f15e521]
- - cell "CGDD20260731000001鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f15e522]
- - cell "2026-07-31 13:37:52" [ref=f15e523]
- - row [ref=f15e524]:
- - cell "IR1785388980793" [ref=f15e525]
- - cell "CGDD20260730000001鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f15e526]
- - cell "2026-07-30 13:23:01" [ref=f15e527]
- - row [ref=f15e528]:
- - cell "IR1784797962589" [ref=f15e529]
- - cell "CGDD20260723000001鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f15e530]
- - cell "2026-07-23 17:12:43" [ref=f15e531]
- - row [ref=f15e532]:
- - cell "IR1784195133047" [ref=f15e533]
- - cell "CGDD20260716000012鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f15e534]
- - cell "2026-07-16 17:45:33" [ref=f15e535]
- - row [ref=f15e536]:
- - cell "IR1784194374037" [ref=f15e537]
- - cell "CGDD20260716000011鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f15e538]
- - cell "2026-07-16 17:32:54" [ref=f15e539]
- - row [ref=f15e540]:
- - cell "IR1784190584801" [ref=f15e541]
- - cell "CGDD20260716000010鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f15e542]
- - cell [ref=f15e543]
- - row [ref=f15e544]:
- - cell "IR1784190577802" [ref=f15e545]
- - cell "CGDD20260716000009鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f15e546]
- - cell [ref=f15e547]
- - row [ref=f15e548]:
- - cell "IR1784186867143" [ref=f15e549]
- - cell "CGDD20260716000008鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f15e550]
- - cell "2026-07-16 15:33:04" [ref=f15e551]
- - row [ref=f15e552]:
- - cell "IR1784186864769" [ref=f15e553]
- - cell "CGDD20260716000007鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f15e554]
- - cell "2026-07-16 15:36:10" [ref=f15e555]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-20-49-932Z.png b/.playwright-mcp/page-2026-08-05T09-20-49-932Z.png
deleted file mode 100644
index 809e8b0..0000000
--- a/.playwright-mcp/page-2026-08-05T09-20-49-932Z.png
+++ /dev/null
Binary files differ
diff --git a/.playwright-mcp/page-2026-08-05T09-25-58-846Z.yml b/.playwright-mcp/page-2026-08-05T09-25-58-846Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T09-25-58-846Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-27-33-763Z.yml b/.playwright-mcp/page-2026-08-05T09-27-33-763Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T09-27-33-763Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-27-39-409Z.yml b/.playwright-mcp/page-2026-08-05T09-27-39-409Z.yml
deleted file mode 100644
index 42421ad..0000000
--- a/.playwright-mcp/page-2026-08-05T09-27-39-409Z.yml
+++ /dev/null
@@ -1,208 +0,0 @@
-- generic [ref=f18e7]:
- - complementary [ref=f18e8]:
- - generic [ref=f18e9]:
- - link [ref=f18e12] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f18e15]
- - menu [ref=f18e18]:
- - menuitem [ref=f18e19] [cursor=pointer]
- - listitem [ref=f18e25]
- - listitem [ref=f18e32]
- - listitem [ref=f18e37]
- - listitem [ref=f18e42]
- - listitem [ref=f18e48]
- - listitem [ref=f18e55]
- - listitem [ref=f18e61]
- - listitem [ref=f18e66]
- - listitem [ref=f18e71]
- - listitem [ref=f18e76]
- - listitem [ref=f18e81]
- - listitem [ref=f18e86]
- - listitem [ref=f18e91]
- - listitem [ref=f18e96]
- - generic [ref=f18e108]:
- - generic [ref=f18e109]:
- - banner [ref=f18e110]:
- - button [ref=f18e111] [cursor=pointer]
- - button [ref=f18e114] [cursor=pointer]
- - navigation "breadcrumb" [ref=f18e119]:
- - list [ref=f18e120]:
- - listitem [ref=f18e121]:
- - link [ref=f18e122] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f18e126]
- - listitem [ref=f18e129]:
- - link [disabled] [ref=f18e130]
- - generic [ref=f18e134]:
- - generic [ref=f18e136] [cursor=pointer]:
- - generic [ref=f18e140]: 鎼滅储
- - generic [ref=f18e141]: Ctrl K
- - button [ref=f18e143] [cursor=pointer]
- - button "dark" [ref=f18e148] [cursor=pointer]
- - button [ref=f18e157] [cursor=pointer]
- - button [ref=f18e163] [cursor=pointer]
- - button [ref=f18e166] [cursor=pointer]
- - button [ref=f18e172] [cursor=pointer]:
- - button [ref=f18e174]
- - button "宸ヤ綔鍙�" [ref=f18e178] [cursor=pointer]
- - button [ref=f18e182] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f18e187]
- - generic [ref=f18e189]:
- - generic [ref=f18e194]:
- - generic [ref=f18e195] [cursor=pointer]: 棣栭〉
- - generic [ref=f18e213] [cursor=pointer]: 浠撳簱澶у睆
- - button [ref=f18e230] [cursor=pointer]
- - main [ref=f18e248]:
- - generic [ref=f18e250]:
- - generic [ref=f18e251]:
- - generic [ref=f18e258]:
- - heading "浠撳偍鐗╂祦杩愯惀涓績" [level=1] [ref=f18e259]
- - paragraph [ref=f18e260]: 搴撳瓨鍛ㄨ浆 路 鏅鸿兘鍒嗘瀽 路 鐗╂祦鍗忓悓
- - generic [ref=f18e262]:
- - generic [ref=f18e263]:
- - generic [ref=f18e264]: 绯荤粺姝e父
- - generic [ref=f18e266]: 鏁版嵁鏇存柊
- - generic [ref=f18e268]:
- - generic [ref=f18e269]: 17:27:38
- - generic [ref=f18e270]: 2026骞�8鏈�5鏃ユ槦鏈熶笁
- - generic [ref=f18e271]:
- - generic [ref=f18e273]: 瀹炴椂
- - generic [ref=f18e274]: 路 17:27:36
- - button "鍏ㄥ睆" [ref=f18e275] [cursor=pointer]
- - generic [ref=f18e278]:
- - generic [ref=f18e286]:
- - generic [ref=f18e287]: 浠撳簱鏁伴噺
- - generic [ref=f18e288]: "3"
- - generic [ref=f18e295]:
- - generic [ref=f18e296]: 鐗╂枡搴撳瓨鍝佺鏁�
- - generic [ref=f18e297]: "13"
- - generic [ref=f18e305]:
- - generic [ref=f18e306]: 鍒拌揣閫氱煡鏁�
- - generic [ref=f18e307]: "12"
- - generic [ref=f18e312]:
- - generic [ref=f18e313]: 鍑鸿揣閫氱煡鏁�
- - generic [ref=f18e314]: "19"
- - generic [ref=f18e322]:
- - generic [ref=f18e323]: 搴撳瓨鍛ㄨ浆鐜�
- - generic [ref=f18e324]: "0.38"
- - generic [ref=f18e325]:
- - generic [ref=f18e326]:
- - generic [ref=f18e327]: 搴撳瓨缁撴瀯鍒嗘瀽
- - generic [ref=f18e333]: 搴撳瓨瓒嬪娍
- - generic [ref=f18e339]:
- - generic [ref=f18e340]: 搴撳瓨棰勮
- - generic [ref=f18e342]:
- - generic [ref=f18e343]:
- - generic [ref=f18e344]: 浜у搧搴撳簱瀛�
- - generic [ref=f18e347]:
- - generic [ref=f18e348]: 搴撳瓨涓嶈冻
- - generic [ref=f18e349]: "0"
- - generic [ref=f18e350]:
- - generic [ref=f18e351]: 鐗╂枡搴撳簱瀛�
- - generic [ref=f18e354]:
- - generic [ref=f18e355]: 搴撳瓨姝e父
- - generic [ref=f18e356]: 51,502
- - generic [ref=f18e357]:
- - generic [ref=f18e358]: 铏氭嫙绾胯竟浠撳簱搴撳瓨
- - generic [ref=f18e361]:
- - generic [ref=f18e362]: 搴撳瓨涓嶈冻
- - generic [ref=f18e363]: "-23,013.8"
- - generic [ref=f18e365]:
- - generic [ref=f18e366]: 鍏ㄥ浗浠撳偍缃戠粶
- - generic [ref=f18e373]:
- - generic [ref=f18e374]:
- - generic [ref=f18e375]: 浠婃棩鍏ュ簱(浼�)
- - text: "4"
- - generic [ref=f18e376]:
- - generic [ref=f18e377]: 浠婃棩鍑哄簱(浼�)
- - text: "4"
- - generic [ref=f18e378]:
- - generic [ref=f18e379]: 鎬诲簱瀛�
- - text: 74,515.8
- - generic [ref=f18e380]:
- - generic [ref=f18e381]: 鍑哄叆搴撹秼鍔�
- - generic [ref=f18e387]: 搴撳瓨缁撴瀯
- - generic [ref=f18e393]:
- - generic [ref=f18e394]: 瀹炴椂鍔ㄦ��
- - generic [ref=f18e396]:
- - generic [ref=f18e397]:
- - generic [ref=f18e399]:
- - generic [ref=f18e400]: 17:27
- - generic [ref=f18e401]: CGDD20260731000002鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f18e402]: 鍒拌揣
- - generic [ref=f18e403]:
- - generic [ref=f18e405]:
- - generic [ref=f18e406]: 17:12
- - generic [ref=f18e407]: CGDD20260731000001鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f18e408]: 鍑鸿揣
- - generic [ref=f18e409]:
- - generic [ref=f18e411]:
- - generic [ref=f18e412]: 16:57
- - generic [ref=f18e413]: CGDD20260730000001鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f18e414]: 鍒拌揣
- - generic [ref=f18e415]:
- - generic [ref=f18e417]:
- - generic [ref=f18e418]: 16:42
- - generic [ref=f18e419]: CGDD20260723000001鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f18e420]: 鍑鸿揣
- - generic [ref=f18e421]:
- - generic [ref=f18e423]:
- - generic [ref=f18e424]: 16:27
- - generic [ref=f18e425]: CGDD20260716000012鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f18e426]: 鍒拌揣
- - generic [ref=f18e427]:
- - generic [ref=f18e429]:
- - generic [ref=f18e430]: 16:12
- - generic [ref=f18e431]: CGDD20260716000011鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f18e432]: 鍑鸿揣
- - generic [ref=f18e433]:
- - generic [ref=f18e434]:
- - text: 鏈�杩戝叆搴撹褰�
- - generic [ref=f18e436]: 瀹炴椂婊氬姩
- - table [ref=f18e438]:
- - rowgroup [ref=f18e439]:
- - row [ref=f18e440]:
- - columnheader "鍗曞彿" [ref=f18e441]
- - columnheader "鍚嶇О" [ref=f18e442]
- - columnheader "鍏ュ簱鏃ユ湡" [ref=f18e443]
- - rowgroup [ref=f18e444]:
- - row [ref=f18e445]:
- - cell "IR1785476459612" [ref=f18e446]
- - cell "CGDD20260731000002鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f18e447]
- - cell "2026-07-31 13:41:00" [ref=f18e448]
- - row [ref=f18e449]:
- - cell "IR1785476271992" [ref=f18e450]
- - cell "CGDD20260731000001鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f18e451]
- - cell "2026-07-31 13:37:52" [ref=f18e452]
- - row [ref=f18e453]:
- - cell "IR1785388980793" [ref=f18e454]
- - cell "CGDD20260730000001鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f18e455]
- - cell "2026-07-30 13:23:01" [ref=f18e456]
- - row [ref=f18e457]:
- - cell "IR1784797962589" [ref=f18e458]
- - cell "CGDD20260723000001鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f18e459]
- - cell "2026-07-23 17:12:43" [ref=f18e460]
- - row [ref=f18e461]:
- - cell "IR1784195133047" [ref=f18e462]
- - cell "CGDD20260716000012鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f18e463]
- - cell "2026-07-16 17:45:33" [ref=f18e464]
- - row [ref=f18e465]:
- - cell "IR1784194374037" [ref=f18e466]
- - cell "CGDD20260716000011鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f18e467]
- - cell "2026-07-16 17:32:54" [ref=f18e468]
- - row [ref=f18e469]:
- - cell "IR1784190584801" [ref=f18e470]
- - cell "CGDD20260716000010鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f18e471]
- - cell [ref=f18e472]
- - row [ref=f18e473]:
- - cell "IR1784190577802" [ref=f18e474]
- - cell "CGDD20260716000009鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f18e475]
- - cell [ref=f18e476]
- - row [ref=f18e477]:
- - cell "IR1784186867143" [ref=f18e478]
- - cell "CGDD20260716000008鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f18e479]
- - cell "2026-07-16 15:33:04" [ref=f18e480]
- - row [ref=f18e481]:
- - cell "IR1784186864769" [ref=f18e482]
- - cell "CGDD20260716000007鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f18e483]
- - cell "2026-07-16 15:36:10" [ref=f18e484]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-29-05-292Z.yml b/.playwright-mcp/page-2026-08-05T09-29-05-292Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T09-29-05-292Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-29-11-606Z.yml b/.playwright-mcp/page-2026-08-05T09-29-11-606Z.yml
deleted file mode 100644
index 1785df7..0000000
--- a/.playwright-mcp/page-2026-08-05T09-29-11-606Z.yml
+++ /dev/null
@@ -1,208 +0,0 @@
-- generic [ref=f19e7]:
- - complementary [ref=f19e8]:
- - generic [ref=f19e9]:
- - link [ref=f19e12] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f19e15]
- - menu [ref=f19e18]:
- - menuitem [ref=f19e19] [cursor=pointer]
- - listitem [ref=f19e25]
- - listitem [ref=f19e32]
- - listitem [ref=f19e37]
- - listitem [ref=f19e42]
- - listitem [ref=f19e48]
- - listitem [ref=f19e55]
- - listitem [ref=f19e61]
- - listitem [ref=f19e66]
- - listitem [ref=f19e71]
- - listitem [ref=f19e76]
- - listitem [ref=f19e81]
- - listitem [ref=f19e86]
- - listitem [ref=f19e91]
- - listitem [ref=f19e96]
- - generic [ref=f19e108]:
- - generic [ref=f19e109]:
- - banner [ref=f19e110]:
- - button [ref=f19e111] [cursor=pointer]
- - button [ref=f19e114] [cursor=pointer]
- - navigation "breadcrumb" [ref=f19e119]:
- - list [ref=f19e120]:
- - listitem [ref=f19e121]:
- - link [ref=f19e122] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f19e126]
- - listitem [ref=f19e129]:
- - link [disabled] [ref=f19e130]
- - generic [ref=f19e134]:
- - generic [ref=f19e136] [cursor=pointer]:
- - generic [ref=f19e140]: 鎼滅储
- - generic [ref=f19e141]: Ctrl K
- - button [ref=f19e143] [cursor=pointer]
- - button "dark" [ref=f19e148] [cursor=pointer]
- - button [ref=f19e157] [cursor=pointer]
- - button [ref=f19e163] [cursor=pointer]
- - button [ref=f19e166] [cursor=pointer]
- - button [ref=f19e172] [cursor=pointer]:
- - button [ref=f19e174]
- - button "宸ヤ綔鍙�" [ref=f19e178] [cursor=pointer]
- - button [ref=f19e182] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f19e187]
- - generic [ref=f19e189]:
- - generic [ref=f19e194]:
- - generic [ref=f19e195] [cursor=pointer]: 棣栭〉
- - generic [ref=f19e213] [cursor=pointer]: 浠撳簱澶у睆
- - button [ref=f19e230] [cursor=pointer]
- - main [ref=f19e248]:
- - generic [ref=f19e250]:
- - generic [ref=f19e251]:
- - generic [ref=f19e258]:
- - heading "浠撳偍鐗╂祦杩愯惀涓績" [level=1] [ref=f19e259]
- - paragraph [ref=f19e260]: 搴撳瓨鍛ㄨ浆 路 鏅鸿兘鍒嗘瀽 路 鐗╂祦鍗忓悓
- - generic [ref=f19e262]:
- - generic [ref=f19e263]:
- - generic [ref=f19e264]: 绯荤粺姝e父
- - generic [ref=f19e266]: 鏁版嵁鏇存柊
- - generic [ref=f19e268]:
- - generic [ref=f19e269]: 17:29:11
- - generic [ref=f19e270]: 2026骞�8鏈�5鏃ユ槦鏈熶笁
- - generic [ref=f19e271]:
- - generic [ref=f19e273]: 瀹炴椂
- - generic [ref=f19e274]: 路 17:29:07
- - button "鍏ㄥ睆" [ref=f19e275] [cursor=pointer]
- - generic [ref=f19e278]:
- - generic [ref=f19e286]:
- - generic [ref=f19e287]: 浠撳簱鏁伴噺
- - generic [ref=f19e288]: "3"
- - generic [ref=f19e295]:
- - generic [ref=f19e296]: 鐗╂枡搴撳瓨鍝佺鏁�
- - generic [ref=f19e297]: "13"
- - generic [ref=f19e305]:
- - generic [ref=f19e306]: 鍒拌揣閫氱煡鏁�
- - generic [ref=f19e307]: "12"
- - generic [ref=f19e312]:
- - generic [ref=f19e313]: 鍑鸿揣閫氱煡鏁�
- - generic [ref=f19e314]: "19"
- - generic [ref=f19e322]:
- - generic [ref=f19e323]: 搴撳瓨鍛ㄨ浆鐜�
- - generic [ref=f19e324]: "0.38"
- - generic [ref=f19e325]:
- - generic [ref=f19e326]:
- - generic [ref=f19e327]: 搴撳瓨缁撴瀯鍒嗘瀽
- - generic [ref=f19e333]: 搴撳瓨瓒嬪娍
- - generic [ref=f19e339]:
- - generic [ref=f19e340]: 搴撳瓨棰勮
- - generic [ref=f19e342]:
- - generic [ref=f19e343]:
- - generic [ref=f19e344]: 浜у搧搴撳簱瀛�
- - generic [ref=f19e347]:
- - generic [ref=f19e348]: 搴撳瓨涓嶈冻
- - generic [ref=f19e349]: "0"
- - generic [ref=f19e350]:
- - generic [ref=f19e351]: 鐗╂枡搴撳簱瀛�
- - generic [ref=f19e354]:
- - generic [ref=f19e355]: 搴撳瓨姝e父
- - generic [ref=f19e356]: 51,502
- - generic [ref=f19e357]:
- - generic [ref=f19e358]: 铏氭嫙绾胯竟浠撳簱搴撳瓨
- - generic [ref=f19e361]:
- - generic [ref=f19e362]: 搴撳瓨涓嶈冻
- - generic [ref=f19e363]: "-23,013.8"
- - generic [ref=f19e365]:
- - generic [ref=f19e366]: 鍏ㄥ浗浠撳偍缃戠粶
- - generic [ref=f19e373]:
- - generic [ref=f19e374]:
- - generic [ref=f19e375]: 浠婃棩鍏ュ簱(浼�)
- - text: "4"
- - generic [ref=f19e376]:
- - generic [ref=f19e377]: 浠婃棩鍑哄簱(浼�)
- - text: "4"
- - generic [ref=f19e378]:
- - generic [ref=f19e379]: 鎬诲簱瀛�
- - text: 74,515.8
- - generic [ref=f19e380]:
- - generic [ref=f19e381]: 鍑哄叆搴撹秼鍔�
- - generic [ref=f19e387]: 搴撳瓨缁撴瀯
- - generic [ref=f19e393]:
- - generic [ref=f19e394]: 瀹炴椂鍔ㄦ��
- - generic [ref=f19e396]:
- - generic [ref=f19e397]:
- - generic [ref=f19e399]:
- - generic [ref=f19e400]: 17:29
- - generic [ref=f19e401]: CGDD20260731000002鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f19e402]: 鍒拌揣
- - generic [ref=f19e403]:
- - generic [ref=f19e405]:
- - generic [ref=f19e406]: 17:14
- - generic [ref=f19e407]: CGDD20260731000001鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f19e408]: 鍑鸿揣
- - generic [ref=f19e409]:
- - generic [ref=f19e411]:
- - generic [ref=f19e412]: 16:59
- - generic [ref=f19e413]: CGDD20260730000001鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f19e414]: 鍒拌揣
- - generic [ref=f19e415]:
- - generic [ref=f19e417]:
- - generic [ref=f19e418]: 16:44
- - generic [ref=f19e419]: CGDD20260723000001鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f19e420]: 鍑鸿揣
- - generic [ref=f19e421]:
- - generic [ref=f19e423]:
- - generic [ref=f19e424]: 16:29
- - generic [ref=f19e425]: CGDD20260716000012鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f19e426]: 鍒拌揣
- - generic [ref=f19e427]:
- - generic [ref=f19e429]:
- - generic [ref=f19e430]: 16:14
- - generic [ref=f19e431]: CGDD20260716000011鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f19e432]: 鍑鸿揣
- - generic [ref=f19e433]:
- - generic [ref=f19e434]:
- - text: 鏈�杩戝叆搴撹褰�
- - generic [ref=f19e436]: 瀹炴椂婊氬姩
- - table [ref=f19e438]:
- - rowgroup [ref=f19e439]:
- - row [ref=f19e440]:
- - columnheader "鍗曞彿" [ref=f19e441]
- - columnheader "鍚嶇О" [ref=f19e442]
- - columnheader "鍏ュ簱鏃ユ湡" [ref=f19e443]
- - rowgroup [ref=f19e444]:
- - row [ref=f19e445]:
- - cell "IR1785476459612" [ref=f19e446]
- - cell "CGDD20260731000002鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f19e447]
- - cell "2026-07-31 13:41:00" [ref=f19e448]
- - row [ref=f19e449]:
- - cell "IR1785476271992" [ref=f19e450]
- - cell "CGDD20260731000001鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f19e451]
- - cell "2026-07-31 13:37:52" [ref=f19e452]
- - row [ref=f19e453]:
- - cell "IR1785388980793" [ref=f19e454]
- - cell "CGDD20260730000001鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f19e455]
- - cell "2026-07-30 13:23:01" [ref=f19e456]
- - row [ref=f19e457]:
- - cell "IR1784797962589" [ref=f19e458]
- - cell "CGDD20260723000001鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f19e459]
- - cell "2026-07-23 17:12:43" [ref=f19e460]
- - row [ref=f19e461]:
- - cell "IR1784195133047" [ref=f19e462]
- - cell "CGDD20260716000012鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f19e463]
- - cell "2026-07-16 17:45:33" [ref=f19e464]
- - row [ref=f19e465]:
- - cell "IR1784194374037" [ref=f19e466]
- - cell "CGDD20260716000011鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f19e467]
- - cell "2026-07-16 17:32:54" [ref=f19e468]
- - row [ref=f19e469]:
- - cell "IR1784190584801" [ref=f19e470]
- - cell "CGDD20260716000010鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f19e471]
- - cell [ref=f19e472]
- - row [ref=f19e473]:
- - cell "IR1784190577802" [ref=f19e474]
- - cell "CGDD20260716000009鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f19e475]
- - cell [ref=f19e476]
- - row [ref=f19e477]:
- - cell "IR1784186867143" [ref=f19e478]
- - cell "CGDD20260716000008鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f19e479]
- - cell "2026-07-16 15:33:04" [ref=f19e480]
- - row [ref=f19e481]:
- - cell "IR1784186864769" [ref=f19e482]
- - cell "CGDD20260716000007鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f19e483]
- - cell "2026-07-16 15:36:10" [ref=f19e484]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-33-00-314Z.yml b/.playwright-mcp/page-2026-08-05T09-33-00-314Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T09-33-00-314Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-39-43-280Z.yml b/.playwright-mcp/page-2026-08-05T09-39-43-280Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T09-39-43-280Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-39-54-145Z.yml b/.playwright-mcp/page-2026-08-05T09-39-54-145Z.yml
deleted file mode 100644
index f978150..0000000
--- a/.playwright-mcp/page-2026-08-05T09-39-54-145Z.yml
+++ /dev/null
@@ -1,139 +0,0 @@
-- generic [ref=f23e7]:
- - complementary [ref=f23e8]:
- - generic [ref=f23e9]:
- - link [ref=f23e12] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f23e15]
- - menu [ref=f23e18]:
- - menuitem [ref=f23e19] [cursor=pointer]
- - listitem [ref=f23e22]
- - listitem [ref=f23e26]
- - listitem [ref=f23e30]
- - listitem [ref=f23e34]
- - listitem [ref=f23e38]
- - listitem [ref=f23e42]
- - listitem [ref=f23e46]
- - listitem [ref=f23e50]
- - listitem [ref=f23e54]
- - listitem [ref=f23e58]
- - listitem [ref=f23e62]
- - listitem [ref=f23e66]
- - listitem [ref=f23e70]
- - listitem [ref=f23e74]
- - generic [ref=f23e84]:
- - generic [ref=f23e85]:
- - banner [ref=f23e86]:
- - button [ref=f23e87] [cursor=pointer]
- - button [ref=f23e89] [cursor=pointer]
- - navigation "breadcrumb" [ref=f23e94]:
- - list [ref=f23e95]:
- - listitem [ref=f23e96]:
- - link [ref=f23e97] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f23e100]
- - listitem [ref=f23e103]:
- - link [disabled] [ref=f23e104]
- - generic [ref=f23e108]:
- - generic [ref=f23e110] [cursor=pointer]:
- - generic [ref=f23e114]: 鎼滅储
- - generic [ref=f23e115]: Ctrl K
- - button [ref=f23e117] [cursor=pointer]
- - button "dark" [ref=f23e122] [cursor=pointer]
- - button [ref=f23e131] [cursor=pointer]
- - button [ref=f23e137] [cursor=pointer]
- - button [ref=f23e139] [cursor=pointer]
- - button [ref=f23e145] [cursor=pointer]:
- - button [ref=f23e147]
- - button "宸ヤ綔鍙�" [ref=f23e151] [cursor=pointer]
- - button [ref=f23e154] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f23e159]
- - generic [ref=f23e161]:
- - generic [ref=f23e166]:
- - generic [ref=f23e167] [cursor=pointer]: 棣栭〉
- - generic [ref=f23e182] [cursor=pointer]: 閲囪喘閿�鍞敭鍚庡ぇ灞�
- - button [ref=f23e199] [cursor=pointer]
- - main [ref=f23e217]:
- - generic [ref=f23e219]:
- - generic [ref=f23e220]:
- - generic [ref=f23e224]:
- - heading "閲囪喘 路 閿�鍞� 路 鍞悗" [level=1] [ref=f23e225]
- - paragraph [ref=f23e226]: 渚涘簲閾惧叏閾捐矾缁忚惀鍐崇瓥鐪嬫澘
- - generic [ref=f23e228]:
- - generic [ref=f23e229]:
- - generic [ref=f23e230]: 绯荤粺姝e父
- - generic [ref=f23e232]: 鏁版嵁鏇存柊
- - generic [ref=f23e234]:
- - generic [ref=f23e235]: 17:39:53
- - generic [ref=f23e236]: 2026骞�8鏈�5鏃ユ槦鏈熶笁
- - generic [ref=f23e237]:
- - generic [ref=f23e239]: 瀹炴椂
- - generic [ref=f23e292]: 路 17:39:46
- - button "鍏ㄥ睆" [ref=f23e240] [cursor=pointer]
- - generic [ref=f23e294]:
- - generic [ref=f23e302]:
- - generic [ref=f23e303]: 閲囪喘璁㈠崟鎬绘暟
- - generic [ref=f23e304]: "14"
- - generic [ref=f23e311]:
- - generic [ref=f23e312]: 閿�鍞鍗曟�绘暟
- - generic [ref=f23e313]: "22"
- - generic [ref=f23e318]:
- - generic [ref=f23e319]: 瀹㈡埛鎬绘暟
- - generic [ref=f23e320]: "6"
- - generic [ref=f23e325]:
- - generic [ref=f23e326]: 渚涘簲鍟嗘�绘暟
- - generic [ref=f23e327]: "1"
- - generic [ref=f23e328]:
- - generic [ref=f23e329]: 閲囪喘璁㈠崟鏈堝害瓒嬪娍
- - generic [ref=f23e337]: 閿�鍞鍗曟湀搴﹁秼鍔�
- - generic [ref=f23e345]: 閲囪喘璁㈠崟鐘舵�佸垎甯�
- - generic [ref=f23e353]:
- - generic [ref=f23e354]:
- - generic [ref=f23e356]: 鏈�杩戦噰璐鍗�
- - generic [ref=f23e357]: 瀹炴椂婊氬姩
- - table [ref=f23e359]:
- - rowgroup [ref=f23e360]:
- - row [ref=f23e361]:
- - columnheader "璁㈠崟鍙�" [ref=f23e362]
- - columnheader "閲戦" [ref=f23e363]
- - columnheader "涓嬪崟鏃堕棿" [ref=f23e364]
- - rowgroup [ref=f23e365]:
- - row [ref=f23e366]:
- - cell "CGDD20260731000002" [ref=f23e367]
- - cell "100000" [ref=f23e368]
- - cell "2026-07-31 13:40:23" [ref=f23e369]
- - row [ref=f23e370]:
- - cell "CGDD20260731000001" [ref=f23e371]
- - cell "100000" [ref=f23e372]
- - cell "2026-07-31 13:37:07" [ref=f23e373]
- - row [ref=f23e374]:
- - cell "CGDD20260730000002" [ref=f23e375]
- - cell "1510554.6" [ref=f23e376]
- - cell "2026-07-30 17:44:23" [ref=f23e377]
- - row [ref=f23e378]:
- - cell "CGDD20260730000007" [ref=f23e379]
- - cell "100700" [ref=f23e380]
- - cell "2026-07-30 13:05:50" [ref=f23e381]
- - row [ref=f23e382]:
- - cell "CGDD20260730000001" [ref=f23e383]
- - cell "1378000" [ref=f23e384]
- - cell "2026-07-30 09:22:11" [ref=f23e385]
- - row [ref=f23e386]:
- - cell "CGDD20260729000005" [ref=f23e387]
- - cell "101" [ref=f23e388]
- - cell "2026-07-29 15:32:16" [ref=f23e389]
- - row [ref=f23e390]:
- - cell "CGDD20260729000004" [ref=f23e391]
- - cell "1111" [ref=f23e392]
- - cell "2026-07-29 15:00:13" [ref=f23e393]
- - row [ref=f23e394]:
- - cell "CGDD20260724000002" [ref=f23e395]
- - cell "10.1" [ref=f23e396]
- - cell "2026-07-24 14:41:07" [ref=f23e397]
- - row [ref=f23e398]:
- - cell "CGDD20260724000001" [ref=f23e399]
- - cell "23" [ref=f23e400]
- - cell "2026-07-24 09:41:44" [ref=f23e401]
- - row [ref=f23e402]:
- - cell "CGDD20260723000001" [ref=f23e403]
- - cell "10.38" [ref=f23e404]
- - cell "2026-07-23 17:11:43" [ref=f23e405]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-40-09-408Z.yml b/.playwright-mcp/page-2026-08-05T09-40-09-408Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T09-40-09-408Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-40-13-937Z.yml b/.playwright-mcp/page-2026-08-05T09-40-13-937Z.yml
deleted file mode 100644
index 3c97327..0000000
--- a/.playwright-mcp/page-2026-08-05T09-40-13-937Z.yml
+++ /dev/null
@@ -1,147 +0,0 @@
-- generic [ref=f24e7]:
- - complementary [ref=f24e8]:
- - generic [ref=f24e9]:
- - link [ref=f24e12] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f24e15]
- - menu [ref=f24e18]:
- - menuitem [ref=f24e19] [cursor=pointer]
- - listitem [ref=f24e25]
- - listitem [ref=f24e32]
- - listitem [ref=f24e37]
- - listitem [ref=f24e42]
- - listitem [ref=f24e48]
- - listitem [ref=f24e55]
- - listitem [ref=f24e61]
- - listitem [ref=f24e66]
- - listitem [ref=f24e71]
- - listitem [ref=f24e76]
- - listitem [ref=f24e81]
- - listitem [ref=f24e86]
- - listitem [ref=f24e91]
- - listitem [ref=f24e96]
- - generic [ref=f24e108]:
- - generic [ref=f24e109]:
- - banner [ref=f24e110]:
- - button [ref=f24e111] [cursor=pointer]
- - button [ref=f24e114] [cursor=pointer]
- - navigation "breadcrumb" [ref=f24e119]:
- - list [ref=f24e120]:
- - listitem [ref=f24e121]:
- - link [ref=f24e122] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f24e126]
- - listitem [ref=f24e129]:
- - link [disabled] [ref=f24e130]
- - generic [ref=f24e138]:
- - generic [ref=f24e140] [cursor=pointer]:
- - generic [ref=f24e144]: 鎼滅储
- - generic [ref=f24e145]: Ctrl K
- - button [ref=f24e147] [cursor=pointer]
- - button "dark" [ref=f24e152] [cursor=pointer]
- - button [ref=f24e161] [cursor=pointer]
- - button [ref=f24e167] [cursor=pointer]
- - button [ref=f24e170] [cursor=pointer]
- - button [ref=f24e176] [cursor=pointer]:
- - button [ref=f24e178]
- - button "宸ヤ綔鍙�" [ref=f24e182] [cursor=pointer]
- - button [ref=f24e186] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f24e191]
- - generic [ref=f24e193]:
- - generic [ref=f24e198]:
- - generic [ref=f24e199] [cursor=pointer]: 棣栭〉
- - generic [ref=f24e217] [cursor=pointer]: 鐢熶骇璁惧澶у睆
- - button [ref=f24e238] [cursor=pointer]
- - main [ref=f24e256]:
- - generic [ref=f24e258]:
- - generic [ref=f24e259]:
- - generic [ref=f24e264]:
- - heading "鐢熶骇 路 璁惧" [level=1] [ref=f24e265]
- - paragraph [ref=f24e266]: 鐢熶骇鎵ц涓庤澶囪繍琛屾晥鐜囩湅鏉�
- - generic [ref=f24e268]:
- - generic [ref=f24e269]:
- - generic [ref=f24e270]: 绯荤粺姝e父
- - generic [ref=f24e272]: 鏁版嵁鏇存柊
- - generic [ref=f24e274]:
- - generic [ref=f24e275]: 17:40:13
- - generic [ref=f24e276]: 2026骞�8鏈�5鏃ユ槦鏈熶笁
- - generic [ref=f24e277]:
- - generic [ref=f24e279]: 瀹炴椂
- - generic [ref=f24e280]: 路 17:40:11
- - button "鍏ㄥ睆" [ref=f24e281] [cursor=pointer]
- - generic [ref=f24e284]:
- - generic [ref=f24e289]:
- - generic [ref=f24e290]: 宸ュ崟鎬绘暟
- - generic [ref=f24e291]: "47"
- - generic [ref=f24e299]:
- - generic [ref=f24e300]: 璁惧鎬绘暟
- - generic [ref=f24e301]: "1"
- - generic [ref=f24e306]:
- - generic [ref=f24e307]: 鏈湀鎶ュ伐鏁�
- - generic [ref=f24e308]: "5"
- - generic [ref=f24e309]:
- - generic [ref=f24e310]: 宸ュ崟瀹屾垚鐜�
- - generic [ref=f24e318]: 宸ュ崟鐘舵�佸垎甯�
- - generic [ref=f24e326]: 宸ュ崟绫诲瀷鍒嗗竷
- - generic [ref=f24e334]:
- - generic [ref=f24e335]:
- - generic [ref=f24e337]: 鏈�杩戝伐鍗曞垪琛�
- - generic [ref=f24e338]: 瀹炴椂婊氬姩
- - table [ref=f24e340]:
- - rowgroup [ref=f24e341]:
- - row [ref=f24e342]:
- - columnheader "宸ュ崟鍙�" [ref=f24e343]
- - columnheader "宸ュ崟鍚嶇О" [ref=f24e344]
- - columnheader "鐢熶骇鏁伴噺" [ref=f24e345]
- - columnheader "闇�姹傛棩鏈�" [ref=f24e346]
- - rowgroup [ref=f24e347]:
- - row [ref=f24e348]:
- - cell "WO_20260730001" [ref=f24e349]
- - cell "娴嬭瘯搴撳瓨瓒充笉瓒�" [ref=f24e350]
- - cell "1000" [ref=f24e351]
- - cell "2026-07-30 00:00:00" [ref=f24e352]
- - row [ref=f24e353]:
- - cell "WO1784883668267" [ref=f24e354]
- - cell "鐢熶骇宸ュ崟-MPS20260724002" [ref=f24e355]
- - cell "234" [ref=f24e356]
- - cell "2026-07-24 17:01:00" [ref=f24e357]
- - row [ref=f24e358]:
- - cell "WO1784883041005" [ref=f24e359]
- - cell "鐢熶骇宸ュ崟-MPS20260724001" [ref=f24e360]
- - cell "100" [ref=f24e361]
- - cell "2026-07-24 16:50:28" [ref=f24e362]
- - row [ref=f24e363]:
- - cell "WO_20260724003" [ref=f24e364]
- - cell "閰掓硥" [ref=f24e365]
- - cell "1" [ref=f24e366]
- - cell "2026-07-24 09:41:41" [ref=f24e367]
- - row [ref=f24e368]:
- - cell "WO_20260724002" [ref=f24e369]
- - cell "閰掓硥" [ref=f24e370]
- - cell "100" [ref=f24e371]
- - cell "2026-07-24 09:25:22" [ref=f24e372]
- - row [ref=f24e373]:
- - cell "WO_20260724001" [ref=f24e374]
- - cell "閰掓硥" [ref=f24e375]
- - cell "1" [ref=f24e376]
- - cell "2026-07-24 09:16:58" [ref=f24e377]
- - row [ref=f24e378]:
- - cell "WO_20260723002" [ref=f24e379]
- - cell "閰掓硥" [ref=f24e380]
- - cell "11" [ref=f24e381]
- - cell "2026-07-23 17:21:50" [ref=f24e382]
- - row [ref=f24e383]:
- - cell "WO_20260723001" [ref=f24e384]
- - cell "1213" [ref=f24e385]
- - cell "12" [ref=f24e386]
- - cell "2026-07-31 17:18:35" [ref=f24e387]
- - row [ref=f24e388]:
- - cell "12" [ref=f24e389]
- - cell "12" [ref=f24e390]
- - cell "12" [ref=f24e391]
- - cell "2026-07-31 17:14:31" [ref=f24e392]
- - row [ref=f24e393]:
- - cell "WO_20260722015" [ref=f24e394]
- - cell "閰掓硥" [ref=f24e395]
- - cell "12" [ref=f24e396]
- - cell "2026-07-22 17:36:18" [ref=f24e397]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-40-19-588Z.yml b/.playwright-mcp/page-2026-08-05T09-40-19-588Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T09-40-19-588Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-40-24-098Z.yml b/.playwright-mcp/page-2026-08-05T09-40-24-098Z.yml
deleted file mode 100644
index 0ad4f4b..0000000
--- a/.playwright-mcp/page-2026-08-05T09-40-24-098Z.yml
+++ /dev/null
@@ -1,147 +0,0 @@
-- generic [ref=f25e7]:
- - complementary [ref=f25e8]:
- - generic [ref=f25e9]:
- - link [ref=f25e12] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f25e15]
- - menu [ref=f25e18]:
- - menuitem [ref=f25e19] [cursor=pointer]
- - listitem [ref=f25e25]
- - listitem [ref=f25e32]
- - listitem [ref=f25e37]
- - listitem [ref=f25e42]
- - listitem [ref=f25e48]
- - listitem [ref=f25e55]
- - listitem [ref=f25e61]
- - listitem [ref=f25e66]
- - listitem [ref=f25e71]
- - listitem [ref=f25e76]
- - listitem [ref=f25e81]
- - listitem [ref=f25e86]
- - listitem [ref=f25e91]
- - listitem [ref=f25e96]
- - generic [ref=f25e108]:
- - generic [ref=f25e109]:
- - banner [ref=f25e110]:
- - button [ref=f25e111] [cursor=pointer]
- - button [ref=f25e114] [cursor=pointer]
- - navigation "breadcrumb" [ref=f25e119]:
- - list [ref=f25e120]:
- - listitem [ref=f25e121]:
- - link [ref=f25e122] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f25e126]
- - listitem [ref=f25e129]:
- - link [disabled] [ref=f25e130]
- - generic [ref=f25e136]:
- - generic [ref=f25e138] [cursor=pointer]:
- - generic [ref=f25e142]: 鎼滅储
- - generic [ref=f25e143]: Ctrl K
- - button [ref=f25e145] [cursor=pointer]
- - button "dark" [ref=f25e150] [cursor=pointer]
- - button [ref=f25e159] [cursor=pointer]
- - button [ref=f25e165] [cursor=pointer]
- - button [ref=f25e168] [cursor=pointer]
- - button [ref=f25e174] [cursor=pointer]:
- - button [ref=f25e176]
- - button "宸ヤ綔鍙�" [ref=f25e180] [cursor=pointer]
- - button [ref=f25e184] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f25e189]
- - generic [ref=f25e191]:
- - generic [ref=f25e196]:
- - generic [ref=f25e197] [cursor=pointer]: 棣栭〉
- - generic [ref=f25e215] [cursor=pointer]: 璐ㄩ噺澶у睆
- - button [ref=f25e234] [cursor=pointer]
- - main [ref=f25e252]:
- - generic [ref=f25e254]:
- - generic [ref=f25e255]:
- - generic [ref=f25e262]:
- - heading "璐ㄩ噺绠$悊" [level=1] [ref=f25e263]
- - paragraph [ref=f25e264]: 璐ㄦ杈炬爣涓庤川閲忚秼鍔跨洃鎺х湅鏉�
- - generic [ref=f25e266]:
- - generic [ref=f25e267]:
- - generic [ref=f25e268]: 绯荤粺姝e父
- - generic [ref=f25e270]: 鏁版嵁鏇存柊
- - generic [ref=f25e272]:
- - generic [ref=f25e273]: 17:40:23
- - generic [ref=f25e274]: 2026骞�8鏈�5鏃ユ槦鏈熶笁
- - generic [ref=f25e275]:
- - generic [ref=f25e277]: 瀹炴椂
- - generic [ref=f25e278]: 路 17:40:21
- - button "鍏ㄥ睆" [ref=f25e279] [cursor=pointer]
- - generic [ref=f25e282]:
- - generic [ref=f25e289]:
- - generic [ref=f25e290]: 鏉ユ枡妫�楠屾�绘暟
- - generic [ref=f25e291]: "3"
- - generic [ref=f25e298]:
- - generic [ref=f25e299]: 鍒剁▼妫�楠屾�绘暟
- - generic [ref=f25e300]: "7"
- - generic [ref=f25e307]:
- - generic [ref=f25e308]: 鍑鸿揣妫�楠屾�绘暟
- - generic [ref=f25e309]: "2"
- - generic [ref=f25e310]:
- - generic [ref=f25e311]: 鏉ユ枡鍚堟牸鐜�
- - generic [ref=f25e319]: 妫�楠岀被鍨嬪垎甯�
- - generic [ref=f25e327]: 鏈堝害妫�楠岃秼鍔�
- - generic [ref=f25e335]:
- - generic [ref=f25e336]:
- - generic [ref=f25e338]: 鏈�杩戞楠岃褰�
- - generic [ref=f25e339]: 瀹炴椂婊氬姩
- - table [ref=f25e341]:
- - rowgroup [ref=f25e342]:
- - row [ref=f25e343]:
- - columnheader "绫诲瀷" [ref=f25e344]
- - columnheader "鍗曞彿" [ref=f25e345]
- - columnheader "鍚嶇О" [ref=f25e346]
- - columnheader "妫�楠屾棩鏈�" [ref=f25e347]
- - rowgroup [ref=f25e348]:
- - row [ref=f25e349]:
- - cell "鍒剁▼妫�楠�" [ref=f25e350]
- - cell "IPQC_20260804002" [ref=f25e351]
- - cell "FB_20260804023 杩囩▼妫�楠屽崟" [ref=f25e352]
- - cell "2026-08-04 16:16:43" [ref=f25e353]
- - row [ref=f25e354]:
- - cell "鍒剁▼妫�楠�" [ref=f25e355]
- - cell "IPQC_20260804001" [ref=f25e356]
- - cell "FB_20260804006 杩囩▼妫�楠屽崟" [ref=f25e357]
- - cell "2026-08-04 15:53:27" [ref=f25e358]
- - row [ref=f25e359]:
- - cell "鍒剁▼妫�楠�" [ref=f25e360]
- - cell "IPQC_20260729002" [ref=f25e361]
- - cell "FB_20260729002 杩囩▼妫�楠屽崟" [ref=f25e362]
- - cell "2026-07-29 17:17:42" [ref=f25e363]
- - row [ref=f25e364]:
- - cell "鍒剁▼妫�楠�" [ref=f25e365]
- - cell "IPQC_20260729001" [ref=f25e366]
- - cell "鏂颁簯-缁垮笡閽欎笟" [ref=f25e367]
- - cell "2026-07-29 17:16:12" [ref=f25e368]
- - row [ref=f25e369]:
- - cell "鍒剁▼妫�楠�" [ref=f25e370]
- - cell "IPQC_20260723002" [ref=f25e371]
- - cell "FB_20260723016 杩囩▼妫�楠屽崟" [ref=f25e372]
- - cell "2026-07-23 17:37:26" [ref=f25e373]
- - row [ref=f25e374]:
- - cell "鍒剁▼妫�楠�" [ref=f25e375]
- - cell "IPQC_20260723001" [ref=f25e376]
- - cell "FB_20260723012 杩囩▼妫�楠屽崟" [ref=f25e377]
- - cell "2026-07-23 13:54:10" [ref=f25e378]
- - row [ref=f25e379]:
- - cell "鍑鸿揣妫�楠�" [ref=f25e380]
- - cell "OQC1784354388357" [ref=f25e381]
- - cell "SL_20260718008-鍑鸿揣妫�楠�" [ref=f25e382]
- - cell "2026-07-18 13:59:48" [ref=f25e383]
- - row [ref=f25e384]:
- - cell "鍑鸿揣妫�楠�" [ref=f25e385]
- - cell "OQC1784279196217" [ref=f25e386]
- - cell "SL_20260717002-鍑鸿揣妫�楠�" [ref=f25e387]
- - cell "2026-07-17 17:06:36" [ref=f25e388]
- - row [ref=f25e389]:
- - cell "鍒剁▼妫�楠�" [ref=f25e390]
- - cell "IPQC_20260717004" [ref=f25e391]
- - cell "娴嬭瘯鍗�" [ref=f25e392]
- - cell "2026-07-17 16:00:39" [ref=f25e393]
- - row [ref=f25e394]:
- - cell "鏉ユ枡妫�楠�" [ref=f25e395]
- - cell "IQC1784193321794" [ref=f25e396]
- - cell "AN1784193321719-鐗╂枡妫�楠�" [ref=f25e397]
- - cell "2026-07-16 17:29:19" [ref=f25e398]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-40-28-333Z.yml b/.playwright-mcp/page-2026-08-05T09-40-28-333Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T09-40-28-333Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-40-33-342Z.yml b/.playwright-mcp/page-2026-08-05T09-40-33-342Z.yml
deleted file mode 100644
index a8b7558..0000000
--- a/.playwright-mcp/page-2026-08-05T09-40-33-342Z.yml
+++ /dev/null
@@ -1,114 +0,0 @@
-- generic [ref=f26e7]:
- - complementary [ref=f26e8]:
- - generic [ref=f26e9]:
- - link [ref=f26e12] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f26e15]
- - menu [ref=f26e18]:
- - menuitem [ref=f26e19] [cursor=pointer]
- - listitem [ref=f26e25]
- - listitem [ref=f26e32]
- - listitem [ref=f26e37]
- - listitem [ref=f26e42]
- - listitem [ref=f26e48]
- - listitem [ref=f26e55]
- - listitem [ref=f26e61]
- - listitem [ref=f26e66]
- - listitem [ref=f26e71]
- - listitem [ref=f26e76]
- - listitem [ref=f26e81]
- - listitem [ref=f26e86]
- - listitem [ref=f26e91]
- - listitem [ref=f26e96]
- - generic [ref=f26e108]:
- - generic [ref=f26e109]:
- - banner [ref=f26e110]:
- - button [ref=f26e111] [cursor=pointer]
- - button [ref=f26e114] [cursor=pointer]
- - navigation "breadcrumb" [ref=f26e119]:
- - list [ref=f26e120]:
- - listitem [ref=f26e121]:
- - link [ref=f26e122] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f26e126]
- - listitem [ref=f26e129]:
- - link [disabled] [ref=f26e130]
- - generic [ref=f26e137]:
- - generic [ref=f26e139] [cursor=pointer]:
- - generic [ref=f26e143]: 鎼滅储
- - generic [ref=f26e144]: Ctrl K
- - button [ref=f26e146] [cursor=pointer]
- - button "dark" [ref=f26e151] [cursor=pointer]
- - button [ref=f26e160] [cursor=pointer]
- - button [ref=f26e166] [cursor=pointer]
- - button [ref=f26e169] [cursor=pointer]
- - button [ref=f26e175] [cursor=pointer]:
- - button [ref=f26e177]
- - button "宸ヤ綔鍙�" [ref=f26e181] [cursor=pointer]
- - button [ref=f26e185] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f26e190]
- - generic [ref=f26e192]:
- - generic [ref=f26e197]:
- - generic [ref=f26e198] [cursor=pointer]: 棣栭〉
- - generic [ref=f26e216] [cursor=pointer]: 浜鸿祫鍔炲叕澶у睆
- - button [ref=f26e236] [cursor=pointer]
- - main [ref=f26e254]:
- - generic [ref=f26e256]:
- - generic [ref=f26e257]:
- - generic [ref=f26e264]:
- - heading "浜哄姏璧勬簮 路 鍗忓悓鍔炲叕" [level=1] [ref=f26e265]
- - paragraph [ref=f26e266]: 缁勭粐鏁堣兘涓庡崗鍚屾晥鐜囧垎鏋愮湅鏉�
- - generic [ref=f26e268]:
- - generic [ref=f26e269]:
- - generic [ref=f26e270]: 绯荤粺姝e父
- - generic [ref=f26e272]: 鏁版嵁鏇存柊
- - generic [ref=f26e274]:
- - generic [ref=f26e275]: 17:40:32
- - generic [ref=f26e276]: 2026骞�8鏈�5鏃ユ槦鏈熶笁
- - generic [ref=f26e277]:
- - generic [ref=f26e279]: 瀹炴椂
- - generic [ref=f26e280]: 路 17:40:30
- - button "鍏ㄥ睆" [ref=f26e281] [cursor=pointer]
- - generic [ref=f26e284]:
- - generic [ref=f26e291]:
- - generic [ref=f26e292]: 鍦ㄨ亴鍛樺伐鏁�
- - generic [ref=f26e293]: "4"
- - generic [ref=f26e298]:
- - generic [ref=f26e299]: 璇峰亣鐢宠鏁�
- - generic [ref=f26e300]: "1"
- - generic [ref=f26e305]:
- - generic [ref=f26e306]: 鏈湀绂昏亴鏁�
- - generic [ref=f26e307]: "0"
- - generic [ref=f26e314]:
- - generic [ref=f26e315]: 鑰冨嫟寮傚父鏁�
- - generic [ref=f26e316]: "0"
- - generic [ref=f26e317]:
- - generic [ref=f26e318]: 閮ㄩ棬浜烘暟鍒嗗竷
- - generic [ref=f26e326]: 璇峰亣绫诲瀷鍒嗗竷
- - generic [ref=f26e334]:
- - generic [ref=f26e335]:
- - generic [ref=f26e337]: 鏈�杩戝叆鑱屽憳宸�
- - generic [ref=f26e338]: 瀹炴椂婊氬姩
- - table [ref=f26e340]:
- - rowgroup [ref=f26e341]:
- - row [ref=f26e342]:
- - columnheader "宸ュ彿" [ref=f26e343]
- - columnheader "濮撳悕" [ref=f26e344]
- - columnheader "鍏ヨ亴鏃ユ湡" [ref=f26e345]
- - rowgroup [ref=f26e346]:
- - row [ref=f26e347]:
- - cell "EMP202607310001" [ref=f26e348]
- - cell "222" [ref=f26e349]
- - cell "2026-07-30T16:00:00.000Z" [ref=f26e350]
- - row [ref=f26e351]:
- - cell "EMP202607060014" [ref=f26e352]
- - cell "澶ф槑鏄�" [ref=f26e353]
- - cell "2026-07-05T16:00:00.000Z" [ref=f26e354]
- - row [ref=f26e355]:
- - cell "EMP202607070002" [ref=f26e356]
- - cell "鏀惧亣" [ref=f26e357]
- - cell "2026-07-05T16:00:00.000Z" [ref=f26e358]
- - row [ref=f26e359]:
- - cell "EMP202607070001" [ref=f26e360]
- - cell "涓嶆兂涓婄彮" [ref=f26e361]
- - cell "2026-06-30T16:00:00.000Z" [ref=f26e362]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-40-42-217Z.yml b/.playwright-mcp/page-2026-08-05T09-40-42-217Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T09-40-42-217Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-40-49-786Z.yml b/.playwright-mcp/page-2026-08-05T09-40-49-786Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T09-40-49-786Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-53-15-917Z.yml b/.playwright-mcp/page-2026-08-05T09-53-15-917Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T09-53-15-917Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-53-22-647Z.yml b/.playwright-mcp/page-2026-08-05T09-53-22-647Z.yml
deleted file mode 100644
index 86b3316..0000000
--- a/.playwright-mcp/page-2026-08-05T09-53-22-647Z.yml
+++ /dev/null
@@ -1,139 +0,0 @@
-- generic [ref=f29e7]:
- - complementary [ref=f29e8]:
- - generic [ref=f29e9]:
- - link [ref=f29e12] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f29e15]
- - menu [ref=f29e18]:
- - menuitem [ref=f29e19] [cursor=pointer]
- - listitem [ref=f29e25]
- - listitem [ref=f29e32]
- - listitem [ref=f29e37]
- - listitem [ref=f29e42]
- - listitem [ref=f29e48]
- - listitem [ref=f29e55]
- - listitem [ref=f29e61]
- - listitem [ref=f29e66]
- - listitem [ref=f29e71]
- - listitem [ref=f29e76]
- - listitem [ref=f29e81]
- - listitem [ref=f29e86]
- - listitem [ref=f29e91]
- - listitem [ref=f29e96]
- - generic [ref=f29e108]:
- - generic [ref=f29e109]:
- - banner [ref=f29e110]:
- - button [ref=f29e111] [cursor=pointer]
- - button [ref=f29e114] [cursor=pointer]
- - navigation "breadcrumb" [ref=f29e119]:
- - list [ref=f29e120]:
- - listitem [ref=f29e121]:
- - link [ref=f29e122] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f29e126]
- - listitem [ref=f29e129]:
- - link [disabled] [ref=f29e130]
- - generic [ref=f29e135]:
- - generic [ref=f29e137] [cursor=pointer]:
- - generic [ref=f29e141]: 鎼滅储
- - generic [ref=f29e142]: Ctrl K
- - button [ref=f29e144] [cursor=pointer]
- - button "dark" [ref=f29e149] [cursor=pointer]
- - button [ref=f29e158] [cursor=pointer]
- - button [ref=f29e164] [cursor=pointer]
- - button [ref=f29e167] [cursor=pointer]
- - button [ref=f29e173] [cursor=pointer]:
- - button [ref=f29e175]
- - button "宸ヤ綔鍙�" [ref=f29e179] [cursor=pointer]
- - button [ref=f29e183] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f29e188]
- - generic [ref=f29e190]:
- - generic [ref=f29e195]:
- - generic [ref=f29e196] [cursor=pointer]: 棣栭〉
- - generic [ref=f29e214] [cursor=pointer]: 閲囪喘閿�鍞敭鍚庡ぇ灞�
- - button [ref=f29e232] [cursor=pointer]
- - main [ref=f29e250]:
- - generic [ref=f29e252]:
- - generic [ref=f29e253]:
- - generic [ref=f29e261]:
- - heading "閲囪喘 路 閿�鍞� 路 鍞悗" [level=1] [ref=f29e262]
- - paragraph [ref=f29e263]: 渚涘簲閾惧叏閾捐矾缁忚惀鍐崇瓥鐪嬫澘
- - generic [ref=f29e265]:
- - generic [ref=f29e266]:
- - generic [ref=f29e267]: 绯荤粺姝e父
- - generic [ref=f29e269]: 鏁版嵁鏇存柊
- - generic [ref=f29e271]:
- - generic [ref=f29e272]: 17:53:21
- - generic [ref=f29e273]: 2026骞�8鏈�5鏃ユ槦鏈熶笁
- - generic [ref=f29e274]:
- - generic [ref=f29e276]: 瀹炴椂
- - generic [ref=f29e277]: 路 17:53:18
- - button "鍏ㄥ睆" [ref=f29e278] [cursor=pointer]
- - generic [ref=f29e281]:
- - generic [ref=f29e289]:
- - generic [ref=f29e290]: 閲囪喘璁㈠崟鎬绘暟
- - generic [ref=f29e291]: "14"
- - generic [ref=f29e298]:
- - generic [ref=f29e299]: 閿�鍞鍗曟�绘暟
- - generic [ref=f29e300]: "22"
- - generic [ref=f29e305]:
- - generic [ref=f29e306]: 瀹㈡埛鎬绘暟
- - generic [ref=f29e307]: "6"
- - generic [ref=f29e312]:
- - generic [ref=f29e313]: 渚涘簲鍟嗘�绘暟
- - generic [ref=f29e314]: "1"
- - generic [ref=f29e315]:
- - generic [ref=f29e316]: 閲囪喘璁㈠崟鏈堝害瓒嬪娍
- - generic [ref=f29e324]: 閿�鍞鍗曟湀搴﹁秼鍔�
- - generic [ref=f29e332]: 閲囪喘璁㈠崟鐘舵�佸垎甯�
- - generic [ref=f29e340]:
- - generic [ref=f29e341]:
- - generic [ref=f29e343]: 鏈�杩戦噰璐鍗�
- - generic [ref=f29e344]: 瀹炴椂婊氬姩
- - table [ref=f29e346]:
- - rowgroup [ref=f29e347]:
- - row [ref=f29e348]:
- - columnheader "璁㈠崟鍙�" [ref=f29e349]
- - columnheader "閲戦" [ref=f29e350]
- - columnheader "涓嬪崟鏃堕棿" [ref=f29e351]
- - rowgroup [ref=f29e352]:
- - row [ref=f29e353]:
- - cell "CGDD20260731000002" [ref=f29e354]
- - cell "100000" [ref=f29e355]
- - cell "2026-07-31 13:40:23" [ref=f29e356]
- - row [ref=f29e357]:
- - cell "CGDD20260731000001" [ref=f29e358]
- - cell "100000" [ref=f29e359]
- - cell "2026-07-31 13:37:07" [ref=f29e360]
- - row [ref=f29e361]:
- - cell "CGDD20260730000002" [ref=f29e362]
- - cell "1510554.6" [ref=f29e363]
- - cell "2026-07-30 17:44:23" [ref=f29e364]
- - row [ref=f29e365]:
- - cell "CGDD20260730000007" [ref=f29e366]
- - cell "100700" [ref=f29e367]
- - cell "2026-07-30 13:05:50" [ref=f29e368]
- - row [ref=f29e369]:
- - cell "CGDD20260730000001" [ref=f29e370]
- - cell "1378000" [ref=f29e371]
- - cell "2026-07-30 09:22:11" [ref=f29e372]
- - row [ref=f29e373]:
- - cell "CGDD20260729000005" [ref=f29e374]
- - cell "101" [ref=f29e375]
- - cell "2026-07-29 15:32:16" [ref=f29e376]
- - row [ref=f29e377]:
- - cell "CGDD20260729000004" [ref=f29e378]
- - cell "1111" [ref=f29e379]
- - cell "2026-07-29 15:00:13" [ref=f29e380]
- - row [ref=f29e381]:
- - cell "CGDD20260724000002" [ref=f29e382]
- - cell "10.1" [ref=f29e383]
- - cell "2026-07-24 14:41:07" [ref=f29e384]
- - row [ref=f29e385]:
- - cell "CGDD20260724000001" [ref=f29e386]
- - cell "23" [ref=f29e387]
- - cell "2026-07-24 09:41:44" [ref=f29e388]
- - row [ref=f29e389]:
- - cell "CGDD20260723000001" [ref=f29e390]
- - cell "10.38" [ref=f29e391]
- - cell "2026-07-23 17:11:43" [ref=f29e392]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-53-30-790Z.yml b/.playwright-mcp/page-2026-08-05T09-53-30-790Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-05T09-53-30-790Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-05T09-53-35-271Z.yml b/.playwright-mcp/page-2026-08-05T09-53-35-271Z.yml
deleted file mode 100644
index c9af41c..0000000
--- a/.playwright-mcp/page-2026-08-05T09-53-35-271Z.yml
+++ /dev/null
@@ -1,208 +0,0 @@
-- generic [ref=f30e7]:
- - complementary [ref=f30e8]:
- - generic [ref=f30e9]:
- - link [ref=f30e12] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f30e15]
- - menu [ref=f30e18]:
- - menuitem [ref=f30e19] [cursor=pointer]
- - listitem [ref=f30e25]
- - listitem [ref=f30e32]
- - listitem [ref=f30e37]
- - listitem [ref=f30e42]
- - listitem [ref=f30e48]
- - listitem [ref=f30e55]
- - listitem [ref=f30e61]
- - listitem [ref=f30e66]
- - listitem [ref=f30e71]
- - listitem [ref=f30e76]
- - listitem [ref=f30e81]
- - listitem [ref=f30e86]
- - listitem [ref=f30e91]
- - listitem [ref=f30e96]
- - generic [ref=f30e108]:
- - generic [ref=f30e109]:
- - banner [ref=f30e110]:
- - button [ref=f30e111] [cursor=pointer]
- - button [ref=f30e114] [cursor=pointer]
- - navigation "breadcrumb" [ref=f30e119]:
- - list [ref=f30e120]:
- - listitem [ref=f30e121]:
- - link [ref=f30e122] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f30e126]
- - listitem [ref=f30e129]:
- - link [disabled] [ref=f30e130]
- - generic [ref=f30e134]:
- - generic [ref=f30e136] [cursor=pointer]:
- - generic [ref=f30e140]: 鎼滅储
- - generic [ref=f30e141]: Ctrl K
- - button [ref=f30e143] [cursor=pointer]
- - button "dark" [ref=f30e148] [cursor=pointer]
- - button [ref=f30e157] [cursor=pointer]
- - button [ref=f30e163] [cursor=pointer]
- - button [ref=f30e166] [cursor=pointer]
- - button [ref=f30e172] [cursor=pointer]:
- - button [ref=f30e174]
- - button "宸ヤ綔鍙�" [ref=f30e178] [cursor=pointer]
- - button [ref=f30e182] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f30e187]
- - generic [ref=f30e189]:
- - generic [ref=f30e194]:
- - generic [ref=f30e195] [cursor=pointer]: 棣栭〉
- - generic [ref=f30e213] [cursor=pointer]: 浠撳簱澶у睆
- - button [ref=f30e230] [cursor=pointer]
- - main [ref=f30e248]:
- - generic [ref=f30e250]:
- - generic [ref=f30e251]:
- - generic [ref=f30e258]:
- - heading "浠撳偍鐗╂祦杩愯惀涓績" [level=1] [ref=f30e259]
- - paragraph [ref=f30e260]: 搴撳瓨鍛ㄨ浆 路 鏅鸿兘鍒嗘瀽 路 鐗╂祦鍗忓悓
- - generic [ref=f30e262]:
- - generic [ref=f30e263]:
- - generic [ref=f30e264]: 绯荤粺姝e父
- - generic [ref=f30e266]: 鏁版嵁鏇存柊
- - generic [ref=f30e268]:
- - generic [ref=f30e269]: 17:53:34
- - generic [ref=f30e270]: 2026骞�8鏈�5鏃ユ槦鏈熶笁
- - generic [ref=f30e271]:
- - generic [ref=f30e273]: 瀹炴椂
- - generic [ref=f30e274]: 路 17:53:33
- - button "鍏ㄥ睆" [ref=f30e275] [cursor=pointer]
- - generic [ref=f30e278]:
- - generic [ref=f30e286]:
- - generic [ref=f30e287]: 浠撳簱鏁伴噺
- - generic [ref=f30e288]: "3"
- - generic [ref=f30e295]:
- - generic [ref=f30e296]: 鐗╂枡搴撳瓨鍝佺鏁�
- - generic [ref=f30e297]: "13"
- - generic [ref=f30e305]:
- - generic [ref=f30e306]: 鍒拌揣閫氱煡鏁�
- - generic [ref=f30e307]: "12"
- - generic [ref=f30e312]:
- - generic [ref=f30e313]: 鍑鸿揣閫氱煡鏁�
- - generic [ref=f30e314]: "19"
- - generic [ref=f30e322]:
- - generic [ref=f30e323]: 搴撳瓨鍛ㄨ浆鐜�
- - generic [ref=f30e324]: "0.38"
- - generic [ref=f30e325]:
- - generic [ref=f30e326]:
- - generic [ref=f30e327]: 搴撳瓨缁撴瀯鍒嗘瀽
- - generic [ref=f30e333]: 搴撳瓨瓒嬪娍
- - generic [ref=f30e339]:
- - generic [ref=f30e340]: 搴撳瓨棰勮
- - generic [ref=f30e342]:
- - generic [ref=f30e343]:
- - generic [ref=f30e344]: 浜у搧搴撳簱瀛�
- - generic [ref=f30e347]:
- - generic [ref=f30e348]: 搴撳瓨涓嶈冻
- - generic [ref=f30e349]: "0"
- - generic [ref=f30e350]:
- - generic [ref=f30e351]: 鐗╂枡搴撳簱瀛�
- - generic [ref=f30e354]:
- - generic [ref=f30e355]: 搴撳瓨姝e父
- - generic [ref=f30e356]: 51,502
- - generic [ref=f30e357]:
- - generic [ref=f30e358]: 铏氭嫙绾胯竟浠撳簱搴撳瓨
- - generic [ref=f30e361]:
- - generic [ref=f30e362]: 搴撳瓨涓嶈冻
- - generic [ref=f30e363]: "-23,013.8"
- - generic [ref=f30e365]:
- - generic [ref=f30e366]: 鍏ㄥ浗浠撳偍缃戠粶
- - generic [ref=f30e373]:
- - generic [ref=f30e374]:
- - generic [ref=f30e375]: 浠婃棩鍏ュ簱(浼�)
- - text: "4"
- - generic [ref=f30e376]:
- - generic [ref=f30e377]: 浠婃棩鍑哄簱(浼�)
- - text: "4"
- - generic [ref=f30e378]:
- - generic [ref=f30e379]: 鎬诲簱瀛�
- - text: 74,515.8
- - generic [ref=f30e380]:
- - generic [ref=f30e381]: 鍑哄叆搴撹秼鍔�
- - generic [ref=f30e387]: 搴撳瓨缁撴瀯
- - generic [ref=f30e393]:
- - generic [ref=f30e394]: 瀹炴椂鍔ㄦ��
- - generic [ref=f30e396]:
- - generic [ref=f30e397]:
- - generic [ref=f30e399]:
- - generic [ref=f30e400]: 17:53
- - generic [ref=f30e401]: CGDD20260731000002鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f30e402]: 鍒拌揣
- - generic [ref=f30e403]:
- - generic [ref=f30e405]:
- - generic [ref=f30e406]: 17:38
- - generic [ref=f30e407]: CGDD20260731000001鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f30e408]: 鍑鸿揣
- - generic [ref=f30e409]:
- - generic [ref=f30e411]:
- - generic [ref=f30e412]: 17:23
- - generic [ref=f30e413]: CGDD20260730000001鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f30e414]: 鍒拌揣
- - generic [ref=f30e415]:
- - generic [ref=f30e417]:
- - generic [ref=f30e418]: 17:08
- - generic [ref=f30e419]: CGDD20260723000001鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f30e420]: 鍑鸿揣
- - generic [ref=f30e421]:
- - generic [ref=f30e423]:
- - generic [ref=f30e424]: 16:53
- - generic [ref=f30e425]: CGDD20260716000012鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f30e426]: 鍒拌揣
- - generic [ref=f30e427]:
- - generic [ref=f30e429]:
- - generic [ref=f30e430]: 16:38
- - generic [ref=f30e431]: CGDD20260716000011鍒拌揣閫氱煡鍏ュ簱鍗�
- - generic [ref=f30e432]: 鍑鸿揣
- - generic [ref=f30e433]:
- - generic [ref=f30e434]:
- - text: 鏈�杩戝叆搴撹褰�
- - generic [ref=f30e436]: 瀹炴椂婊氬姩
- - table [ref=f30e438]:
- - rowgroup [ref=f30e439]:
- - row [ref=f30e440]:
- - columnheader "鍗曞彿" [ref=f30e441]
- - columnheader "鍚嶇О" [ref=f30e442]
- - columnheader "鍏ュ簱鏃ユ湡" [ref=f30e443]
- - rowgroup [ref=f30e444]:
- - row [ref=f30e445]:
- - cell "IR1785476459612" [ref=f30e446]
- - cell "CGDD20260731000002鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f30e447]
- - cell "2026-07-31 13:41:00" [ref=f30e448]
- - row [ref=f30e449]:
- - cell "IR1785476271992" [ref=f30e450]
- - cell "CGDD20260731000001鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f30e451]
- - cell "2026-07-31 13:37:52" [ref=f30e452]
- - row [ref=f30e453]:
- - cell "IR1785388980793" [ref=f30e454]
- - cell "CGDD20260730000001鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f30e455]
- - cell "2026-07-30 13:23:01" [ref=f30e456]
- - row [ref=f30e457]:
- - cell "IR1784797962589" [ref=f30e458]
- - cell "CGDD20260723000001鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f30e459]
- - cell "2026-07-23 17:12:43" [ref=f30e460]
- - row [ref=f30e461]:
- - cell "IR1784195133047" [ref=f30e462]
- - cell "CGDD20260716000012鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f30e463]
- - cell "2026-07-16 17:45:33" [ref=f30e464]
- - row [ref=f30e465]:
- - cell "IR1784194374037" [ref=f30e466]
- - cell "CGDD20260716000011鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f30e467]
- - cell "2026-07-16 17:32:54" [ref=f30e468]
- - row [ref=f30e469]:
- - cell "IR1784190584801" [ref=f30e470]
- - cell "CGDD20260716000010鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f30e471]
- - cell [ref=f30e472]
- - row [ref=f30e473]:
- - cell "IR1784190577802" [ref=f30e474]
- - cell "CGDD20260716000009鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f30e475]
- - cell [ref=f30e476]
- - row [ref=f30e477]:
- - cell "IR1784186867143" [ref=f30e478]
- - cell "CGDD20260716000008鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f30e479]
- - cell "2026-07-16 15:33:04" [ref=f30e480]
- - row [ref=f30e481]:
- - cell "IR1784186864769" [ref=f30e482]
- - cell "CGDD20260716000007鍒拌揣閫氱煡鍏ュ簱鍗�" [ref=f30e483]
- - cell "2026-07-16 15:36:10" [ref=f30e484]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-12T08-14-30-909Z.yml b/.playwright-mcp/page-2026-08-12T08-14-30-909Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-12T08-14-30-909Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-12T08-14-46-176Z.yml b/.playwright-mcp/page-2026-08-12T08-14-46-176Z.yml
deleted file mode 100644
index c0aa8b9..0000000
--- a/.playwright-mcp/page-2026-08-12T08-14-46-176Z.yml
+++ /dev/null
@@ -1,194 +0,0 @@
-- generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - list [ref=e577]:
- - menuitem "寰呭姙浜嬮」" [ref=e578] [cursor=pointer]
- - menuitem "绾跨储绠$悊" [ref=e583] [cursor=pointer]
- - menuitem "鍟嗘満绠$悊" [ref=e588] [cursor=pointer]
- - menuitem "閿�鍞姤浠�" [ref=e593] [cursor=pointer]
- - menuitem "鍚堝悓绠$悊" [ref=e599] [cursor=pointer]
- - menuitem "閿�鍞鍗�" [ref=e605] [cursor=pointer]
- - menuitem "瀹㈡埛绠$悊" [ref=e610] [cursor=pointer]
- - menuitem "鑱旂郴浜虹鐞�" [ref=e615] [cursor=pointer]
- - menuitem "瀹㈡埛鍏捣" [ref=e620] [cursor=pointer]
- - menuitem "寮�绁ㄧ鐞�" [ref=e625] [cursor=pointer]
- - menuitem "鍥炴绠$悊" [ref=e630] [cursor=pointer]
- - menuitem "鍥炴璁″垝" [ref=e637] [cursor=pointer]
- - menuitem "閿�鍞鍒�" [ref=e642] [cursor=pointer]
- - menuitem "杈炬垚鍒嗘瀽" [ref=e647] [cursor=pointer]
- - listitem [ref=e653]:
- - generic [ref=e654] [cursor=pointer]: 鏁版嵁缁熻
- - listitem [ref=e660]:
- - generic [ref=e661] [cursor=pointer]: 绯荤粺閰嶇疆
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e85]:
- - generic [ref=e86] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e92]:
- - generic [ref=e93] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e99]:
- - generic [ref=e100] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e106]:
- - generic [ref=e107] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e113]:
- - generic [ref=e114] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e120]:
- - generic [ref=e121] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e127]:
- - generic [ref=e128] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e136] [cursor=pointer]
- - generic [ref=e141]:
- - generic [ref=e142]:
- - banner [ref=e143]:
- - button [ref=e144] [cursor=pointer]
- - button [ref=e147] [cursor=pointer]
- - navigation "breadcrumb" [ref=e152]:
- - list [ref=e153]:
- - listitem [ref=e154]:
- - link "棣栭〉" [disabled] [ref=e155]
- - generic [ref=e162]:
- - generic [ref=e164] [cursor=pointer]:
- - generic [ref=e168]: 鎼滅储
- - generic [ref=e169]: Ctrl K
- - button [ref=e171] [cursor=pointer]
- - button "dark" [ref=e176] [cursor=pointer]
- - button [ref=e185] [cursor=pointer]
- - button [ref=e191] [cursor=pointer]
- - button [ref=e194] [cursor=pointer]
- - button [ref=e200] [cursor=pointer]:
- - button [ref=e202]
- - button "宸ヤ綔鍙�" [ref=e206] [cursor=pointer]
- - button [ref=e210] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=e215]
- - generic [ref=e217]:
- - generic [ref=e218]: 棣栭〉
- - generic [ref=e239]:
- - button [ref=e240] [cursor=pointer]
- - generic [ref=e247] [cursor=pointer]
- - generic [ref=e251] [cursor=pointer]
- - main [ref=e258]:
- - generic [ref=e261]:
- - generic [ref=e262]:
- - generic [ref=e263]:
- - heading "涓嬪崍濂斤紝娆㈣繋鍥炴潵" [level=1] [ref=e264]
- - paragraph [ref=e265]: 2026骞�8鏈�12鏃� 鏄熸湡涓�
- - generic [ref=e266]: 绯荤粺杩愯涓�
- - generic [ref=e271]:
- - generic [ref=e280] [cursor=pointer]:
- - generic [ref=e281]: 鐢熶骇璁㈠崟
- - generic [ref=e282]:
- - generic [ref=e283]: "25"
- - generic [ref=e285]: 杩涜涓�
- - generic [ref=e286]:
- - text: 寰呮帓浜� 15
- - generic [ref=e288]: "|"
- - text: 宸插畬鎴� 5
- - generic [ref=e300] [cursor=pointer]:
- - generic [ref=e301]: 浠婃棩浜ч噺
- - generic [ref=e302]:
- - generic [ref=e303]: "0"
- - generic [ref=e305]: 浠�
- - generic [ref=e306]: 鏄ㄦ棩 0 浠�
- - generic [ref=e317] [cursor=pointer]:
- - generic [ref=e318]: 璐ㄩ噺鍚堟牸鐜�
- - generic [ref=e319]:
- - generic [ref=e320]: "0.0"
- - generic [ref=e322]: "%"
- - generic [ref=e323]: 鍚堟牸 0 | 涓嶈壇 0
- - generic [ref=e335] [cursor=pointer]:
- - generic [ref=e336]: 璁惧杩愯鐜�
- - generic [ref=e337]:
- - generic [ref=e338]: "33.3"
- - generic [ref=e340]: "%"
- - generic [ref=e341]:
- - generic [ref=e342]: 鍋滄満 1
- - generic [ref=e343]: "|"
- - generic [ref=e344]: 缁存姢 1
- - generic [ref=e347]:
- - generic [ref=e357] [cursor=pointer]:
- - generic [ref=e358]: 閲囪喘璁㈠崟
- - generic [ref=e359]:
- - generic [ref=e360]: "10"
- - generic [ref=e362]: 绗�
- - generic [ref=e363]: ERP 閲囪喘绠$悊
- - generic [ref=e374] [cursor=pointer]:
- - generic [ref=e375]: 閿�鍞鍗�
- - generic [ref=e376]:
- - generic [ref=e377]: "22"
- - generic [ref=e379]: 绗�
- - generic [ref=e380]: ERP 閿�鍞鐞�
- - generic [ref=e392] [cursor=pointer]:
- - generic [ref=e393]: 鐗╂枡搴撳瓨
- - generic [ref=e394]:
- - generic [ref=e395]: "15"
- - generic [ref=e397]: 鏉�
- - generic [ref=e398]: MES 搴撳瓨鍙拌处
- - generic [ref=e410] [cursor=pointer]:
- - generic [ref=e411]: 鎴戠殑寰呭姙
- - generic [ref=e412]:
- - generic [ref=e413]: "1"
- - generic [ref=e415]: 椤�
- - generic [ref=e416]: BPM 寰呭鎵�
- - generic [ref=e419]:
- - generic [ref=e420]:
- - heading "AI 鏅鸿兘鍒嗘瀽" [level=3] [ref=e421]
- - generic [ref=e422]: 25 涓伐鍗曞彲鍒嗘瀽
- - generic [ref=e423]:
- - generic [ref=e431] [cursor=pointer]:
- - generic [ref=e432]: AI 鐗╂枡棰勬祴
- - generic [ref=e433]: 棰勬祴鐗╂枡闇�姹備笌鐭己椋庨櫓
- - generic [ref=e442] [cursor=pointer]:
- - generic [ref=e443]: AI 鏃堕暱棰勬祴
- - generic [ref=e444]: 棰勬祴鍚勫伐搴忕敓浜ц�楁椂
- - generic [ref=e451] [cursor=pointer]:
- - generic [ref=e452]: AI 椋庨櫓棰勬祴
- - generic [ref=e453]: 璇嗗埆娼滃湪鐢熶骇椋庨櫓骞剁粰鍑哄缓璁�
- - generic [ref=e463] [cursor=pointer]:
- - generic [ref=e464]: AI 浜や粯璇勪及
- - generic [ref=e465]: 璇勪及璁㈠崟浜や粯鍑嗘椂鐜囦笌寤舵湡鍥犵礌
- - generic [ref=e468]:
- - heading "鐢熶骇瓒嬪娍锛堣繎7澶╋級" [level=3] [ref=e471]
- - generic [ref=e476]:
- - generic [ref=e477]:
- - generic [ref=e483] [cursor=pointer]:
- - generic [ref=e484]: 瀹夌伅鍛煎彨
- - generic [ref=e485]:
- - generic [ref=e486]: "0"
- - generic [ref=e488]: 鏈缃�
- - generic [ref=e494] [cursor=pointer]:
- - generic [ref=e495]: 缁翠慨宸ュ崟
- - generic [ref=e496]:
- - generic [ref=e497]: "0"
- - generic [ref=e499]: 寰呭鐞�
- - heading "宸ュ崟鐘舵�佸垎甯�" [level=4] [ref=e501]
- - generic [ref=e509]:
- - heading "蹇嵎鎿嶄綔" [level=3] [ref=e510]
- - generic [ref=e511]:
- - generic [ref=e512] [cursor=pointer]: 鐢熶骇宸ュ崟
- - generic [ref=e519] [cursor=pointer]: 鐢熶骇鎶ュ伐
- - generic [ref=e526] [cursor=pointer]: 璐ㄦ绠$悊
- - generic [ref=e534] [cursor=pointer]: 璁惧鐐规
- - generic [ref=e541] [cursor=pointer]: 鐢熶骇鎺掔▼
- - generic [ref=e548] [cursor=pointer]: 瀹夌伅鍛煎彨
- - generic [ref=e553] [cursor=pointer]: 鐗╂枡搴撳瓨
- - generic [ref=e561] [cursor=pointer]: 宸ヨ壓璺嚎
- - generic [ref=e569] [cursor=pointer]: 鏁版嵁鎶ヨ〃
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-12T08-15-00-361Z.yml b/.playwright-mcp/page-2026-08-12T08-15-00-361Z.yml
deleted file mode 100644
index 6bf9c8e..0000000
--- a/.playwright-mcp/page-2026-08-12T08-15-00-361Z.yml
+++ /dev/null
@@ -1,215 +0,0 @@
-- generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - list [ref=e577]:
- - menuitem "寰呭姙浜嬮」" [ref=e578] [cursor=pointer]
- - menuitem "绾跨储绠$悊" [ref=e583] [cursor=pointer]
- - menuitem "鍟嗘満绠$悊" [ref=e588] [cursor=pointer]
- - menuitem "閿�鍞姤浠�" [ref=e593] [cursor=pointer]
- - menuitem "鍚堝悓绠$悊" [ref=e599] [cursor=pointer]
- - menuitem "閿�鍞鍗�" [ref=e605] [cursor=pointer]
- - menuitem "瀹㈡埛绠$悊" [ref=e610] [cursor=pointer]
- - menuitem "鑱旂郴浜虹鐞�" [ref=e615] [cursor=pointer]
- - menuitem "瀹㈡埛鍏捣" [ref=e620] [cursor=pointer]
- - menuitem "寮�绁ㄧ鐞�" [ref=e625] [cursor=pointer]
- - menuitem "鍥炴绠$悊" [ref=e630] [cursor=pointer]
- - menuitem "鍥炴璁″垝" [ref=e637] [cursor=pointer]
- - menuitem "閿�鍞鍒�" [ref=e642] [cursor=pointer]
- - menuitem "杈炬垚鍒嗘瀽" [active] [ref=e647] [cursor=pointer]
- - listitem [ref=e653]:
- - generic [ref=e654] [cursor=pointer]: 鏁版嵁缁熻
- - listitem [ref=e660]:
- - generic [ref=e661] [cursor=pointer]: 绯荤粺閰嶇疆
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e85]:
- - generic [ref=e86] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e92]:
- - generic [ref=e93] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e99]:
- - generic [ref=e100] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e106]:
- - generic [ref=e107] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e113]:
- - generic [ref=e114] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e120]:
- - generic [ref=e121] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e127]:
- - generic [ref=e128] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e136] [cursor=pointer]
- - generic [ref=e141]:
- - generic [ref=e142]:
- - banner [ref=e143]:
- - button [ref=e144] [cursor=pointer]
- - button [ref=e147] [cursor=pointer]
- - navigation "breadcrumb" [ref=e152]:
- - list [ref=e153]:
- - listitem [ref=e668]:
- - link "钀ラ攢绠$悊" [ref=e669] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e673]
- - listitem [ref=e676]:
- - link "杈炬垚鍒嗘瀽" [disabled] [ref=e677]
- - generic [ref=e162]:
- - generic [ref=e164] [cursor=pointer]:
- - generic [ref=e168]: 鎼滅储
- - generic [ref=e169]: Ctrl K
- - button [ref=e171] [cursor=pointer]
- - button "dark" [ref=e176] [cursor=pointer]
- - button [ref=e185] [cursor=pointer]
- - button [ref=e191] [cursor=pointer]
- - button [ref=e194] [cursor=pointer]
- - button [ref=e200] [cursor=pointer]:
- - button [ref=e202]
- - button "宸ヤ綔鍙�" [ref=e206] [cursor=pointer]
- - button [ref=e210] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=e215]
- - generic [ref=e217]:
- - generic [ref=e222]:
- - generic [ref=e223] [cursor=pointer]: 棣栭〉
- - generic [ref=e684] [cursor=pointer]: 杈炬垚鍒嗘瀽
- - generic [ref=e239]:
- - button [ref=e240] [cursor=pointer]
- - generic [ref=e247] [cursor=pointer]
- - generic [ref=e251] [cursor=pointer]
- - main [ref=e258]:
- - generic [ref=e705]:
- - generic [ref=e707]:
- - generic [ref=e708]:
- - generic [ref=e709]:
- - generic [ref=e710]: "*"
- - text: 鍛ㄦ湡绫诲瀷
- - generic [ref=e716] [cursor=pointer]:
- - combobox "* 鍛ㄦ湡绫诲瀷" [ref=e718]
- - generic "骞村害" [ref=e719]
- - generic [ref=e720]:
- - generic [ref=e721]:
- - generic [ref=e722]: "*"
- - text: 鍛ㄦ湡鍊�
- - textbox "* 鍛ㄦ湡鍊�" [ref=e727]:
- - /placeholder: 濡� 2026 / 2026-Q1 / 2026-07
- - text: "2026"
- - generic [ref=e728]:
- - generic [ref=e729]: 鐩爣缁村害
- - generic [ref=e735] [cursor=pointer]:
- - combobox "鐩爣缁村害" [ref=e737]
- - generic: 鍏ㄩ儴
- - generic [ref=e738]:
- - generic [ref=e739]: 鐘舵��
- - generic [ref=e745] [cursor=pointer]:
- - combobox "鐘舵��" [ref=e747]
- - generic: 鍏ㄩ儴
- - generic [ref=e748]:
- - button "閲� 缃�" [ref=e749] [cursor=pointer]
- - button "鏌� 璇�" [ref=e751] [cursor=pointer]
- - generic [ref=e753] [cursor=pointer]: 鏀惰捣
- - generic [ref=e758]:
- - tablist [ref=e759]:
- - generic [ref=e761]:
- - tab "鍚堝悓閲戦" [selected] [ref=e763] [cursor=pointer]
- - tab "鍥炴閲戦" [ref=e765] [cursor=pointer]
- - tab "鍟嗘満閲戦" [ref=e767] [cursor=pointer]
- - tab "鏂板瀹㈡埛" [ref=e769] [cursor=pointer]
- - tab "鏂板鍚堝悓" [ref=e771] [cursor=pointer]
- - generic:
- - generic:
- - tabpanel "鍚堝悓閲戦"
- - generic [ref=e784]:
- - generic [ref=e785]:
- - table [ref=e789]:
- - rowgroup [ref=e809]:
- - row [ref=e810]:
- - columnheader "鐩爣瀵硅薄" [ref=e811]
- - columnheader "鍚堝悓閲戦鐩爣" [ref=e816]
- - columnheader "瀹為檯鍚堝悓閲戦" [ref=e821]
- - columnheader "鍚堝悓杈炬垚鐜�(%)" [ref=e826]
- - columnheader "鍥炴閲戦鐩爣" [ref=e831]
- - columnheader "瀹為檯鍥炴閲戦" [ref=e836]
- - columnheader "鍥炴杈炬垚鐜�(%)" [ref=e841]
- - columnheader "鍟嗘満閲戦鐩爣" [ref=e846]
- - columnheader "瀹為檯鍟嗘満閲戦" [ref=e851]
- - columnheader "鍟嗘満杈炬垚鐜�(%)" [ref=e856]
- - columnheader "鏂板瀹㈡埛鐩爣" [ref=e861]
- - columnheader "瀹為檯鏂板瀹㈡埛" [ref=e866]
- - columnheader "瀹㈡埛杈炬垚鐜�(%)" [ref=e871]
- - columnheader "鏂板鍚堝悓鐩爣" [ref=e876]
- - columnheader "瀹為檯鏂板鍚堝悓" [ref=e881]
- - columnheader "鍚堝悓鏁拌揪鎴愮巼(%)" [ref=e886]
- - table [ref=e894]:
- - rowgroup [ref=e914]:
- - row [ref=e915]:
- - cell "瓒呯骇绠$悊鍛�" [ref=e916]
- - cell "10000.00" [ref=e919]
- - cell "32377.00" [ref=e923]
- - cell "323.77%" [ref=e927]
- - cell "10000.00" [ref=e930]
- - cell "100.00" [ref=e934]
- - cell "1%" [ref=e938]
- - cell "10000.00" [ref=e941]
- - cell "0.00" [ref=e945]
- - cell "0%" [ref=e949]
- - cell "10000" [ref=e952]
- - cell "3" [ref=e956]
- - cell "0.03%" [ref=e960]
- - cell "10000" [ref=e963]
- - cell "5" [ref=e967]
- - cell "0.05%" [ref=e971]
- - row [ref=e974]:
- - cell "瓒呯骇绠$悊鍛�" [ref=e975]
- - cell "500000.00" [ref=e978]
- - cell "32377.00" [ref=e982]
- - cell "6.48%" [ref=e986]
- - cell "300000.00" [ref=e989]
- - cell "100.00" [ref=e993]
- - cell "0.03%" [ref=e997]
- - cell "600000.00" [ref=e1000]
- - cell "0.00" [ref=e1004]
- - cell "0%" [ref=e1008]
- - cell "20" [ref=e1011]
- - cell "3" [ref=e1015]
- - cell "15%" [ref=e1019]
- - cell "30" [ref=e1022]
- - cell "5" [ref=e1026]
- - cell "16.67%" [ref=e1030]
- - generic:
- - generic [ref=e1033]:
- - table [ref=e1036]:
- - rowgroup [ref=e1056]:
- - row [ref=e1057]:
- - columnheader "鐩爣鍚嶇О" [ref=e1058]
- - table [ref=e1065]:
- - rowgroup [ref=e1068]:
- - row [ref=e1069]:
- - cell "閰掓硥" [ref=e1070]
- - row [ref=e1074]:
- - cell "2026骞村害閿�鍞洰鏍�-寮犱笁" [ref=e1075]
- - generic [ref=e1079]:
- - table [ref=e1082]:
- - rowgroup [ref=e1102]:
- - row [ref=e1103]:
- - columnheader "鐘舵��" [ref=e1104]
- - table [ref=e1111]:
- - rowgroup [ref=e1114]:
- - row [ref=e1115]:
- - cell "宸茬敓鏁�" [ref=e1116]
- - row [ref=e1120]:
- - cell "宸茬敓鏁�" [ref=e1121]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-12T08-16-45-289Z.yml b/.playwright-mcp/page-2026-08-12T08-16-45-289Z.yml
deleted file mode 100644
index 4b28c4d..0000000
--- a/.playwright-mcp/page-2026-08-12T08-16-45-289Z.yml
+++ /dev/null
@@ -1,215 +0,0 @@
-- generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - list [ref=e577]:
- - menuitem "寰呭姙浜嬮」" [ref=e578] [cursor=pointer]
- - menuitem "绾跨储绠$悊" [ref=e583] [cursor=pointer]
- - menuitem "鍟嗘満绠$悊" [ref=e588] [cursor=pointer]
- - menuitem "閿�鍞姤浠�" [ref=e593] [cursor=pointer]
- - menuitem "鍚堝悓绠$悊" [ref=e599] [cursor=pointer]
- - menuitem "閿�鍞鍗�" [ref=e605] [cursor=pointer]
- - menuitem "瀹㈡埛绠$悊" [ref=e610] [cursor=pointer]
- - menuitem "鑱旂郴浜虹鐞�" [ref=e615] [cursor=pointer]
- - menuitem "瀹㈡埛鍏捣" [ref=e620] [cursor=pointer]
- - menuitem "寮�绁ㄧ鐞�" [ref=e625] [cursor=pointer]
- - menuitem "鍥炴绠$悊" [ref=e630] [cursor=pointer]
- - menuitem "鍥炴璁″垝" [ref=e637] [cursor=pointer]
- - menuitem "閿�鍞鍒�" [ref=e642] [cursor=pointer]
- - menuitem "杈炬垚鍒嗘瀽" [ref=e647] [cursor=pointer]
- - listitem [ref=e653]:
- - generic [ref=e654] [cursor=pointer]: 鏁版嵁缁熻
- - listitem [ref=e660]:
- - generic [ref=e661] [cursor=pointer]: 绯荤粺閰嶇疆
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e85]:
- - generic [ref=e86] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e92]:
- - generic [ref=e93] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e99]:
- - generic [ref=e100] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e106]:
- - generic [ref=e107] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e113]:
- - generic [ref=e114] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e120]:
- - generic [ref=e121] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e127]:
- - generic [ref=e128] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e136] [cursor=pointer]
- - generic [ref=e141]:
- - generic [ref=e142]:
- - banner [ref=e143]:
- - button [ref=e144] [cursor=pointer]
- - button [ref=e147] [cursor=pointer]
- - navigation "breadcrumb" [ref=e152]:
- - list [ref=e153]:
- - listitem [ref=e668]:
- - link "钀ラ攢绠$悊" [ref=e669] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e673]
- - listitem [ref=e676]:
- - link "杈炬垚鍒嗘瀽" [disabled] [ref=e677]
- - generic [ref=e162]:
- - generic [ref=e164] [cursor=pointer]:
- - generic [ref=e168]: 鎼滅储
- - generic [ref=e169]: Ctrl K
- - button [ref=e171] [cursor=pointer]
- - button "dark" [ref=e176] [cursor=pointer]
- - button [ref=e185] [cursor=pointer]
- - button [ref=e191] [cursor=pointer]
- - button [ref=e194] [cursor=pointer]
- - button [ref=e200] [cursor=pointer]:
- - button [ref=e202]
- - button "宸ヤ綔鍙�" [ref=e206] [cursor=pointer]
- - button [ref=e210] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=e215]
- - generic [ref=e217]:
- - generic [ref=e222]:
- - generic [ref=e223] [cursor=pointer]: 棣栭〉
- - generic [ref=e684] [cursor=pointer]: 杈炬垚鍒嗘瀽
- - generic [ref=e239]:
- - button [ref=e240] [cursor=pointer]
- - generic [ref=e247] [cursor=pointer]
- - generic [ref=e251] [cursor=pointer]
- - main [ref=e258]:
- - generic [ref=e705]:
- - generic [ref=e707]:
- - generic [ref=e708]:
- - generic [ref=e709]:
- - generic [ref=e710]: "*"
- - text: 鍛ㄦ湡绫诲瀷
- - generic [ref=e716] [cursor=pointer]:
- - combobox "* 鍛ㄦ湡绫诲瀷" [ref=e718]
- - generic "骞村害" [ref=e719]
- - generic [ref=e720]:
- - generic [ref=e721]:
- - generic [ref=e722]: "*"
- - text: 鍛ㄦ湡鍊�
- - textbox "* 鍛ㄦ湡鍊�" [ref=e727]:
- - /placeholder: 濡� 2026 / 2026-Q1 / 2026-07
- - text: "2026"
- - generic [ref=e728]:
- - generic [ref=e729]: 鐩爣缁村害
- - generic [ref=e735] [cursor=pointer]:
- - combobox "鐩爣缁村害" [ref=e737]
- - generic: 鍏ㄩ儴
- - generic [ref=e738]:
- - generic [ref=e739]: 鐘舵��
- - generic [ref=e745] [cursor=pointer]:
- - combobox "鐘舵��" [ref=e747]
- - generic: 鍏ㄩ儴
- - generic [ref=e748]:
- - button "閲� 缃�" [ref=e749] [cursor=pointer]
- - button "鏌� 璇�" [ref=e751] [cursor=pointer]
- - generic [ref=e753] [cursor=pointer]: 鏀惰捣
- - generic [ref=e758]:
- - tablist [ref=e759]:
- - generic [ref=e761]:
- - tab "鍚堝悓閲戦" [ref=e763] [cursor=pointer]
- - tab "鍥炴閲戦" [active] [selected] [ref=e765] [cursor=pointer]
- - tab "鍟嗘満閲戦" [ref=e767] [cursor=pointer]
- - tab "鏂板瀹㈡埛" [ref=e769] [cursor=pointer]
- - tab "鏂板鍚堝悓" [ref=e771] [cursor=pointer]
- - generic:
- - generic:
- - tabpanel "鍥炴閲戦"
- - generic [ref=e784]:
- - generic [ref=e785]:
- - table [ref=e789]:
- - rowgroup [ref=e809]:
- - row [ref=e810]:
- - columnheader "鐩爣瀵硅薄" [ref=e811]
- - columnheader "鍚堝悓閲戦鐩爣" [ref=e816]
- - columnheader "瀹為檯鍚堝悓閲戦" [ref=e821]
- - columnheader "鍚堝悓杈炬垚鐜�(%)" [ref=e826]
- - columnheader "鍥炴閲戦鐩爣" [ref=e831]
- - columnheader "瀹為檯鍥炴閲戦" [ref=e836]
- - columnheader "鍥炴杈炬垚鐜�(%)" [ref=e841]
- - columnheader "鍟嗘満閲戦鐩爣" [ref=e846]
- - columnheader "瀹為檯鍟嗘満閲戦" [ref=e851]
- - columnheader "鍟嗘満杈炬垚鐜�(%)" [ref=e856]
- - columnheader "鏂板瀹㈡埛鐩爣" [ref=e861]
- - columnheader "瀹為檯鏂板瀹㈡埛" [ref=e866]
- - columnheader "瀹㈡埛杈炬垚鐜�(%)" [ref=e871]
- - columnheader "鏂板鍚堝悓鐩爣" [ref=e876]
- - columnheader "瀹為檯鏂板鍚堝悓" [ref=e881]
- - columnheader "鍚堝悓鏁拌揪鎴愮巼(%)" [ref=e886]
- - table [ref=e894]:
- - rowgroup [ref=e914]:
- - row [ref=e915]:
- - cell "瓒呯骇绠$悊鍛�" [ref=e916]
- - cell "10000.00" [ref=e919]
- - cell "32377.00" [ref=e923]
- - cell "323.77%" [ref=e927]
- - cell "10000.00" [ref=e930]
- - cell "100.00" [ref=e934]
- - cell "1%" [ref=e938]
- - cell "10000.00" [ref=e941]
- - cell "0.00" [ref=e945]
- - cell "0%" [ref=e949]
- - cell "10000" [ref=e952]
- - cell "3" [ref=e956]
- - cell "0.03%" [ref=e960]
- - cell "10000" [ref=e963]
- - cell "5" [ref=e967]
- - cell "0.05%" [ref=e971]
- - row [ref=e974]:
- - cell "瓒呯骇绠$悊鍛�" [ref=e975]
- - cell "500000.00" [ref=e978]
- - cell "32377.00" [ref=e982]
- - cell "6.48%" [ref=e986]
- - cell "300000.00" [ref=e989]
- - cell "100.00" [ref=e993]
- - cell "0.03%" [ref=e997]
- - cell "600000.00" [ref=e1000]
- - cell "0.00" [ref=e1004]
- - cell "0%" [ref=e1008]
- - cell "20" [ref=e1011]
- - cell "3" [ref=e1015]
- - cell "15%" [ref=e1019]
- - cell "30" [ref=e1022]
- - cell "5" [ref=e1026]
- - cell "16.67%" [ref=e1030]
- - generic:
- - generic [ref=e1033]:
- - table [ref=e1036]:
- - rowgroup [ref=e1056]:
- - row [ref=e1057]:
- - columnheader "鐩爣鍚嶇О" [ref=e1058]
- - table [ref=e1065]:
- - rowgroup [ref=e1068]:
- - row [ref=e1069]:
- - cell "閰掓硥" [ref=e1070]
- - row [ref=e1074]:
- - cell "2026骞村害閿�鍞洰鏍�-寮犱笁" [ref=e1075]
- - generic [ref=e1079]:
- - table [ref=e1082]:
- - rowgroup [ref=e1102]:
- - row [ref=e1103]:
- - columnheader "鐘舵��" [ref=e1104]
- - table [ref=e1111]:
- - rowgroup [ref=e1114]:
- - row [ref=e1115]:
- - cell "宸茬敓鏁�" [ref=e1116]
- - row [ref=e1120]:
- - cell "宸茬敓鏁�" [ref=e1121]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-14T05-18-36-135Z.yml b/.playwright-mcp/page-2026-08-14T05-18-36-135Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-14T05-18-36-135Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-14T05-18-50-100Z.yml b/.playwright-mcp/page-2026-08-14T05-18-50-100Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-14T05-18-50-100Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-14T05-19-08-995Z.yml b/.playwright-mcp/page-2026-08-14T05-19-08-995Z.yml
deleted file mode 100644
index 8384a0a..0000000
--- a/.playwright-mcp/page-2026-08-14T05-19-08-995Z.yml
+++ /dev/null
@@ -1,103 +0,0 @@
-- generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e85]:
- - generic [ref=f1e86] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e92]:
- - generic [ref=f1e93] [cursor=pointer]: 鍗忓悓鍔炲叕
- - list [ref=f1e99]:
- - listitem [ref=f1e100]:
- - generic [ref=f1e101] [cursor=pointer]: 娴佺▼绠$悊
- - list [ref=f1e107]:
- - menuitem "娴佺▼妯″瀷" [ref=f1e108] [cursor=pointer]
- - menuitem "娴佺▼琛ㄥ崟" [ref=f1e113] [cursor=pointer]
- - menuitem "娴佺▼鍒嗙被" [ref=f1e118] [cursor=pointer]
- - menuitem "鐢ㄦ埛鍒嗙粍" [ref=f1e123] [cursor=pointer]
- - menuitem "娴佺▼鐩戝惉鍣�" [ref=f1e128] [cursor=pointer]
- - menuitem "娴佺▼琛ㄨ揪寮�" [ref=f1e133] [cursor=pointer]
- - menuitem "娴佺▼瀹炰緥" [ref=f1e138] [cursor=pointer]
- - menuitem "娴佺▼浠诲姟" [ref=f1e143] [cursor=pointer]
- - listitem [ref=f1e148]:
- - generic [ref=f1e149] [cursor=pointer]: 瀹℃壒涓績
- - menuitem "API瀵嗛挜绠$悊" [ref=f1e155] [cursor=pointer]
- - menuitem "妯″瀷绠$悊" [ref=f1e161] [cursor=pointer]
- - menuitem "鐭ヨ瘑搴撶鐞�" [ref=f1e166] [cursor=pointer]
- - menuitem "閫氱煡鍏憡" [ref=f1e172] [cursor=pointer]
- - listitem [ref=f1e177]:
- - generic [ref=f1e178] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e184]:
- - generic [ref=f1e185] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e191]:
- - generic [ref=f1e192] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e198]:
- - generic [ref=f1e199] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e205]:
- - generic [ref=f1e206] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e214] [cursor=pointer]
- - generic [ref=f1e219]:
- - generic [ref=f1e220]:
- - banner [ref=f1e221]:
- - button [ref=f1e222] [cursor=pointer]
- - button [ref=f1e225] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e230]:
- - list [ref=f1e231]:
- - listitem [ref=f1e232]:
- - link "鍗忓悓鍔炲叕" [ref=f1e233] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e237]
- - listitem [ref=f1e240]:
- - link "娴佺▼绠$悊" [ref=f1e241] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e245]
- - listitem [ref=f1e248]:
- - link "娴佺▼妯″瀷" [disabled] [ref=f1e249]
- - generic [ref=f1e254]:
- - generic [ref=f1e256] [cursor=pointer]:
- - generic [ref=f1e260]: 鎼滅储
- - generic [ref=f1e261]: Ctrl K
- - button [ref=f1e263] [cursor=pointer]
- - button "dark" [ref=f1e268] [cursor=pointer]
- - button [ref=f1e277] [cursor=pointer]
- - button [ref=f1e283] [cursor=pointer]
- - button [ref=f1e286] [cursor=pointer]
- - button [ref=f1e292] [cursor=pointer]:
- - button [ref=f1e294]
- - button "宸ヤ綔鍙�" [ref=f1e299] [cursor=pointer]
- - button [ref=f1e303] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f1e308]
- - generic [ref=f1e310]:
- - generic [ref=f1e315]:
- - generic [ref=f1e316] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e334] [cursor=pointer]: 娴佺▼妯″瀷
- - generic [ref=f1e351]:
- - button [ref=f1e352] [cursor=pointer]
- - generic [ref=f1e359] [cursor=pointer]
- - generic [ref=f1e363] [cursor=pointer]
- - main [ref=f1e370]:
- - generic [ref=f1e376]:
- - generic [ref=f1e377]: 娴佺▼妯″瀷
- - generic [ref=f1e379]:
- - textbox "鎼滅储娴佺▼" [ref=f1e381]
- - button "鏂板缓妯″瀷" [ref=f1e383] [cursor=pointer]
- - button [ref=f1e387] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-08-16-647Z.yml b/.playwright-mcp/page-2026-08-18T08-08-16-647Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-18T08-08-16-647Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-08-37-184Z.yml b/.playwright-mcp/page-2026-08-18T08-08-37-184Z.yml
deleted file mode 100644
index 0a5ba4f..0000000
--- a/.playwright-mcp/page-2026-08-18T08-08-37-184Z.yml
+++ /dev/null
@@ -1,259 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [active] [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e739]:
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - generic [ref=e776]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-08-56-287Z.yml b/.playwright-mcp/page-2026-08-18T08-08-56-287Z.yml
deleted file mode 100644
index 260e658..0000000
--- a/.playwright-mcp/page-2026-08-18T08-08-56-287Z.yml
+++ /dev/null
@@ -1,267 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [active] [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e813]:
- - cell [ref=e814]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]
- - cell [ref=e825]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [ref=e831]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-09-14-099Z.yml b/.playwright-mcp/page-2026-08-18T08-09-14-099Z.yml
deleted file mode 100644
index 605ad61..0000000
--- a/.playwright-mcp/page-2026-08-18T08-09-14-099Z.yml
+++ /dev/null
@@ -1,492 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e813]:
- - cell [ref=e814]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]
- - cell [ref=e825]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [ref=e831]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
- - dialog "浜哄憳閫夋嫨" [ref=e845]:
- - document:
- - generic [ref=e846]:
- - button "Close" [ref=e847] [cursor=pointer]:
- - img "close" [ref=e849]
- - generic [ref=e852]: 浜哄憳閫夋嫨
- - generic [ref=e855]:
- - generic [ref=e857]:
- - textbox "鎼滅储閮ㄩ棬" [ref=e864]
- - tree [ref=e868]:
- - generic:
- - textbox "for screen reader"
- - generic [ref=e872]:
- - generic [ref=e873]:
- - img "caret-down" [ref=e875] [cursor=pointer]
- - generic "鎬诲叕鍙�" [ref=e878] [cursor=pointer]
- - generic [ref=e879]:
- - img "caret-down" [ref=e882] [cursor=pointer]
- - generic "娣卞湷鎬诲叕鍙�" [ref=e885] [cursor=pointer]
- - generic "鐮斿彂閮ㄩ棬" [ref=e889] [cursor=pointer]
- - generic "甯傚満閮ㄩ棬" [ref=e893] [cursor=pointer]
- - generic "娴嬭瘯閮ㄩ棬" [ref=e897] [cursor=pointer]
- - generic "璐㈠姟閮ㄩ棬" [ref=e901] [cursor=pointer]
- - generic "杩愮淮閮ㄩ棬" [ref=e905] [cursor=pointer]
- - generic [ref=e906]:
- - img "caret-down" [ref=e909] [cursor=pointer]
- - generic "闀挎矙鍒嗗叕鍙�" [ref=e912] [cursor=pointer]
- - generic "甯傚満閮ㄩ棬" [ref=e916] [cursor=pointer]
- - generic "璐㈠姟閮ㄩ棬" [ref=e920] [cursor=pointer]
- - generic "鏂伴儴闂�" [ref=e923] [cursor=pointer]
- - generic "椤剁骇閮ㄩ棬" [ref=e926] [cursor=pointer]
- - generic "鏌愪釜瀛愰儴闂�" [ref=e929] [cursor=pointer]
- - generic "鏌愪釜瀛愰儴闂� 2" [ref=e932] [cursor=pointer]
- - generic [ref=e935]:
- - generic [ref=e940]:
- - generic [ref=e941]:
- - generic [ref=e942]: 鐢ㄦ埛鍚嶇О
- - textbox "鐢ㄦ埛鍚嶇О" [ref=e948]:
- - /placeholder: 璇疯緭鍏ョ敤鎴峰悕绉�
- - generic [ref=e950]:
- - generic [ref=e951]: 鐢ㄦ埛鏄电О
- - textbox "鐢ㄦ埛鏄电О" [ref=e957]:
- - /placeholder: 璇疯緭鍏ョ敤鎴锋樀绉�
- - generic [ref=e959]:
- - generic [ref=e960]: 鎵嬫満鍙风爜
- - textbox "鎵嬫満鍙风爜" [ref=e966]:
- - /placeholder: 璇疯緭鍏ユ墜鏈哄彿鐮�
- - generic [ref=e968]:
- - generic [ref=e969]: 鐘舵��
- - generic [ref=e975] [cursor=pointer]:
- - combobox "鐘舵��" [ref=e977]
- - generic "寮�鍚�" [ref=e978]
- - generic [ref=e983]:
- - button "閲� 缃�" [ref=e984] [cursor=pointer]
- - button "鎼� 绱�" [ref=e986] [cursor=pointer]
- - generic [ref=e988] [cursor=pointer]: 鏀惰捣
- - generic [ref=e995]:
- - generic [ref=e997]:
- - generic [ref=e998]: 鐢ㄦ埛鍒楄〃
- - button "顫�" [ref=e1003] [cursor=pointer]
- - generic [ref=e1005]:
- - button "瞟�" [ref=e1006] [cursor=pointer]
- - button "顪�" [ref=e1008] [cursor=pointer]
- - button "顦�" [ref=e1010] [cursor=pointer]
- - generic [ref=e1018]:
- - table [ref=e1022]:
- - rowgroup [ref=e1030]:
- - row "鐢ㄦ埛缂栧彿 鐢ㄦ埛鍚嶇О 鐢ㄦ埛鏄电О 鎵嬫満鍙风爜 鐘舵��" [ref=e1031]:
- - columnheader [ref=e1032]
- - columnheader "鐢ㄦ埛缂栧彿" [ref=e1035]
- - columnheader "鐢ㄦ埛鍚嶇О" [ref=e1040]
- - columnheader "鐢ㄦ埛鏄电О" [ref=e1045]
- - columnheader "鎵嬫満鍙风爜" [ref=e1050]
- - columnheader "鐘舵��" [ref=e1055]
- - table [ref=e1063]:
- - rowgroup [ref=e1071]:
- - row [ref=e1072]:
- - cell "顭�" [ref=e1073]
- - cell "230" [ref=e1078]
- - cell "18333333333" [ref=e1082]
- - cell "222" [ref=e1086]
- - cell "18333333333" [ref=e1090]
- - cell "寮�鍚�" [ref=e1094]
- - row [ref=e1098]:
- - cell "顭�" [ref=e1099]
- - cell "229" [ref=e1104]
- - cell "15822054764" [ref=e1108]
- - cell "鏀惧亣" [ref=e1112]
- - cell "15822054764" [ref=e1116]
- - cell "寮�鍚�" [ref=e1120]
- - row [ref=e1124]:
- - cell "顭�" [ref=e1125]
- - cell "228" [ref=e1130]
- - cell "15822054766" [ref=e1134]
- - cell "涓嶆兂涓婄彮" [ref=e1138]
- - cell "15822054766" [ref=e1142]
- - cell "寮�鍚�" [ref=e1146]
- - row [ref=e1150]:
- - cell "顭�" [ref=e1151]
- - cell "227" [ref=e1156]
- - cell "15822054767" [ref=e1160]
- - cell "澶ф槑鏄�" [ref=e1164]
- - cell "15822054767" [ref=e1168]
- - cell "寮�鍚�" [ref=e1172]
- - row [ref=e1176]:
- - cell "顭�" [ref=e1177]
- - cell "226" [ref=e1182]
- - cell "15822054763" [ref=e1186]
- - cell "鍗冨厠" [ref=e1190]
- - cell "15822054763" [ref=e1194]
- - cell "寮�鍚�" [ref=e1198]
- - row [ref=e1202]:
- - cell "顭�" [ref=e1203]
- - cell "225" [ref=e1208]
- - cell "15822054762" [ref=e1212]
- - cell "鍗楃摐瀛�" [ref=e1216]
- - cell "15822054762" [ref=e1220]
- - cell "寮�鍚�" [ref=e1224]
- - row "顭� 144 aoteman001 aoteman00112 鍏抽棴" [ref=e1228]:
- - cell "顭�" [ref=e1229]
- - cell "144" [ref=e1234]
- - cell "aoteman001" [ref=e1238]
- - cell "aoteman00112" [ref=e1242]
- - cell [ref=e1246]
- - cell "鍏抽棴" [ref=e1250]
- - row "顭� 143 a00001 a00001 寮�鍚�" [ref=e1254]:
- - cell "顭�" [ref=e1255]
- - cell "143" [ref=e1260]
- - cell "a00001" [ref=e1264]
- - cell "a00001" [ref=e1268]
- - cell [ref=e1272]
- - cell "寮�鍚�" [ref=e1276]
- - row [ref=e1280]:
- - cell "顭�" [ref=e1281]
- - cell "142" [ref=e1286]
- - cell "test01" [ref=e1290]
- - cell "test01" [ref=e1294]
- - cell "19021719925" [ref=e1298]
- - cell "寮�鍚�" [ref=e1302]
- - row "顭� 141 admin1 鏂扮敤鎴� 寮�鍚�" [ref=e1306]:
- - cell "顭�" [ref=e1307]
- - cell "141" [ref=e1312]
- - cell "admin1" [ref=e1316]
- - cell "鏂扮敤鎴�" [ref=e1320]
- - cell [ref=e1324]
- - cell "寮�鍚�" [ref=e1328]
- - row "顭� 139 wwbwwb 灏忕澶� 寮�鍚�" [ref=e1332]:
- - cell "顭�" [ref=e1333]
- - cell "139" [ref=e1338]
- - cell "wwbwwb" [ref=e1342]
- - cell "灏忕澶�" [ref=e1346]
- - cell [ref=e1350]
- - cell "寮�鍚�" [ref=e1354]
- - row [ref=e1358]:
- - cell "顭�" [ref=e1359]
- - cell "118" [ref=e1364]
- - cell "goudan" [ref=e1368]
- - cell "鐙楄泲" [ref=e1372]
- - cell "15601691239" [ref=e1376]
- - cell "寮�鍚�" [ref=e1380]
- - row [ref=e1384]:
- - cell "顭�" [ref=e1385]
- - cell "117" [ref=e1390]
- - cell "admin123" [ref=e1394]
- - cell "娴嬭瘯鍙�02" [ref=e1398]
- - cell "15601691234" [ref=e1402]
- - cell "寮�鍚�" [ref=e1406]
- - row [ref=e1410]:
- - cell "顭�" [ref=e1411]
- - cell "115" [ref=e1416]
- - cell "aotemane" [ref=e1420]
- - cell "闃垮憜" [ref=e1424]
- - cell "15601691229" [ref=e1428]
- - cell "寮�鍚�" [ref=e1432]
- - row [ref=e1436]:
- - cell "顭�" [ref=e1437]
- - cell "114" [ref=e1442]
- - cell "hrmgr" [ref=e1446]
- - cell "hr 灏忓濮�" [ref=e1450]
- - cell "15601691236" [ref=e1454]
- - cell "寮�鍚�" [ref=e1458]
- - row [ref=e1462]:
- - cell "顭�" [ref=e1463]
- - cell "113" [ref=e1468]
- - cell "aoteman" [ref=e1472]
- - cell "绠$悊鍛�1" [ref=e1476]
- - cell "15601691300" [ref=e1480]
- - cell "寮�鍚�" [ref=e1484]
- - row [ref=e1488]:
- - cell "顭�" [ref=e1489]
- - cell "112" [ref=e1494]
- - cell "newobject" [ref=e1498]
- - cell "鏂板璞�" [ref=e1502]
- - cell "15601691235" [ref=e1506]
- - cell "寮�鍚�" [ref=e1510]
- - row "顭� 111 test 娴嬭瘯鐢ㄦ埛 寮�鍚�" [ref=e1514]:
- - cell "顭�" [ref=e1515]
- - cell "111" [ref=e1520]
- - cell "test" [ref=e1524]
- - cell "娴嬭瘯鐢ㄦ埛" [ref=e1528]
- - cell [ref=e1532]
- - cell "寮�鍚�" [ref=e1536]
- - row [ref=e1540]:
- - cell "顭�" [ref=e1541]
- - cell "1" [ref=e1546]
- - cell "admin" [ref=e1550]
- - cell "瓒呯骇绠$悊鍛�" [ref=e1554]
- - cell "18818260272" [ref=e1558]
- - cell "寮�鍚�" [ref=e1562]
- - generic [ref=e1573]:
- - generic [ref=e1574]: 鍏� 19 鏉¤褰�
- - generic [ref=e1576] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e1577]:
- - textbox "璇烽�夋嫨" [ref=e1578]: 20鏉�/椤�
- - generic [ref=e1579]: 睿�
- - button "飱�" [ref=e1582]
- - button "顧�" [ref=e1584]
- - button "顫�" [ref=e1586]
- - button "1" [ref=e1589] [cursor=pointer]
- - button "顫�" [ref=e1590]
- - button "顧�" [ref=e1592]
- - button "顦�" [ref=e1594]
- - generic [ref=e1596]:
- - button "鍙� 娑�" [ref=e1597] [cursor=pointer]
- - button "纭� 瀹�" [ref=e1599] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-09-33-409Z.yml b/.playwright-mcp/page-2026-08-18T08-09-33-409Z.yml
deleted file mode 100644
index f5c11b1..0000000
--- a/.playwright-mcp/page-2026-08-18T08-09-33-409Z.yml
+++ /dev/null
@@ -1,492 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e813]:
- - cell [ref=e814]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]
- - cell [ref=e825]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [ref=e831]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
- - dialog "浜哄憳閫夋嫨" [ref=e845]:
- - document:
- - generic [ref=e846]:
- - button "Close" [ref=e847] [cursor=pointer]:
- - img "close" [ref=e849]
- - generic [ref=e852]: 浜哄憳閫夋嫨
- - generic [ref=e855]:
- - generic [ref=e857]:
- - textbox "鎼滅储閮ㄩ棬" [ref=e864]
- - tree [ref=e868]:
- - generic:
- - textbox "for screen reader"
- - generic [ref=e872]:
- - generic [ref=e873]:
- - img "caret-down" [ref=e875] [cursor=pointer]
- - generic "鎬诲叕鍙�" [ref=e878] [cursor=pointer]
- - generic [ref=e879]:
- - img "caret-down" [ref=e882] [cursor=pointer]
- - generic "娣卞湷鎬诲叕鍙�" [ref=e885] [cursor=pointer]
- - generic "鐮斿彂閮ㄩ棬" [ref=e889] [cursor=pointer]
- - generic "甯傚満閮ㄩ棬" [ref=e893] [cursor=pointer]
- - generic "娴嬭瘯閮ㄩ棬" [ref=e897] [cursor=pointer]
- - generic "璐㈠姟閮ㄩ棬" [ref=e901] [cursor=pointer]
- - generic "杩愮淮閮ㄩ棬" [ref=e905] [cursor=pointer]
- - generic [ref=e906]:
- - img "caret-down" [ref=e909] [cursor=pointer]
- - generic "闀挎矙鍒嗗叕鍙�" [ref=e912] [cursor=pointer]
- - generic "甯傚満閮ㄩ棬" [ref=e916] [cursor=pointer]
- - generic "璐㈠姟閮ㄩ棬" [ref=e920] [cursor=pointer]
- - generic "鏂伴儴闂�" [ref=e923] [cursor=pointer]
- - generic "椤剁骇閮ㄩ棬" [ref=e926] [cursor=pointer]
- - generic "鏌愪釜瀛愰儴闂�" [ref=e929] [cursor=pointer]
- - generic "鏌愪釜瀛愰儴闂� 2" [ref=e932] [cursor=pointer]
- - generic [ref=e935]:
- - generic [ref=e940]:
- - generic [ref=e941]:
- - generic [ref=e942]: 鐢ㄦ埛鍚嶇О
- - textbox "鐢ㄦ埛鍚嶇О" [ref=e948]:
- - /placeholder: 璇疯緭鍏ョ敤鎴峰悕绉�
- - generic [ref=e950]:
- - generic [ref=e951]: 鐢ㄦ埛鏄电О
- - textbox "鐢ㄦ埛鏄电О" [ref=e957]:
- - /placeholder: 璇疯緭鍏ョ敤鎴锋樀绉�
- - generic [ref=e959]:
- - generic [ref=e960]: 鎵嬫満鍙风爜
- - textbox "鎵嬫満鍙风爜" [ref=e966]:
- - /placeholder: 璇疯緭鍏ユ墜鏈哄彿鐮�
- - generic [ref=e968]:
- - generic [ref=e969]: 鐘舵��
- - generic [ref=e975] [cursor=pointer]:
- - combobox "鐘舵��" [ref=e977]
- - generic "寮�鍚�" [ref=e978]
- - generic [ref=e983]:
- - button "閲� 缃�" [ref=e984] [cursor=pointer]
- - button "鎼� 绱�" [ref=e986] [cursor=pointer]
- - generic [ref=e988] [cursor=pointer]: 鏀惰捣
- - generic [ref=e995]:
- - generic [ref=e997]:
- - generic [ref=e998]: 鐢ㄦ埛鍒楄〃
- - button "顫�" [ref=e1003] [cursor=pointer]
- - generic [ref=e1005]:
- - button "瞟�" [ref=e1006] [cursor=pointer]
- - button "顪�" [ref=e1008] [cursor=pointer]
- - button "顦�" [ref=e1010] [cursor=pointer]
- - generic [ref=e1018]:
- - table [ref=e1022]:
- - rowgroup [ref=e1030]:
- - row "鐢ㄦ埛缂栧彿 鐢ㄦ埛鍚嶇О 鐢ㄦ埛鏄电О 鎵嬫満鍙风爜 鐘舵��" [ref=e1031]:
- - columnheader [ref=e1032]
- - columnheader "鐢ㄦ埛缂栧彿" [ref=e1035]
- - columnheader "鐢ㄦ埛鍚嶇О" [ref=e1040]
- - columnheader "鐢ㄦ埛鏄电О" [ref=e1045]
- - columnheader "鎵嬫満鍙风爜" [ref=e1050]
- - columnheader "鐘舵��" [ref=e1055]
- - table [ref=e1063]:
- - rowgroup [ref=e1071]:
- - row [ref=e1601]:
- - cell "顫�" [ref=e1602]
- - cell "230" [ref=e1078]
- - cell "18333333333" [ref=e1082]
- - cell "222" [ref=e1086]
- - cell "18333333333" [ref=e1090]
- - cell "寮�鍚�" [ref=e1094]
- - row [ref=e1098]:
- - cell "顭�" [ref=e1099]
- - cell "229" [ref=e1104]
- - cell "15822054764" [ref=e1108]
- - cell "鏀惧亣" [ref=e1112]
- - cell "15822054764" [ref=e1116]
- - cell "寮�鍚�" [ref=e1120]
- - row [ref=e1124]:
- - cell "顭�" [ref=e1125]
- - cell "228" [ref=e1130]
- - cell "15822054766" [ref=e1134]
- - cell "涓嶆兂涓婄彮" [ref=e1138]
- - cell "15822054766" [ref=e1142]
- - cell "寮�鍚�" [ref=e1146]
- - row [ref=e1150]:
- - cell "顭�" [ref=e1151]
- - cell "227" [ref=e1156]
- - cell "15822054767" [ref=e1160]
- - cell "澶ф槑鏄�" [ref=e1164]
- - cell "15822054767" [ref=e1168]
- - cell "寮�鍚�" [ref=e1172]
- - row [ref=e1176]:
- - cell "顭�" [ref=e1177]
- - cell "226" [ref=e1182]
- - cell "15822054763" [ref=e1186]
- - cell "鍗冨厠" [ref=e1190]
- - cell "15822054763" [ref=e1194]
- - cell "寮�鍚�" [ref=e1198]
- - row [ref=e1202]:
- - cell "顭�" [ref=e1203]
- - cell "225" [ref=e1208]
- - cell "15822054762" [ref=e1212]
- - cell "鍗楃摐瀛�" [ref=e1216]
- - cell "15822054762" [ref=e1220]
- - cell "寮�鍚�" [ref=e1224]
- - row "顭� 144 aoteman001 aoteman00112 鍏抽棴" [ref=e1228]:
- - cell "顭�" [ref=e1229]
- - cell "144" [ref=e1234]
- - cell "aoteman001" [ref=e1238]
- - cell "aoteman00112" [ref=e1242]
- - cell [ref=e1246]
- - cell "鍏抽棴" [ref=e1250]
- - row "顭� 143 a00001 a00001 寮�鍚�" [ref=e1254]:
- - cell "顭�" [ref=e1255]
- - cell "143" [ref=e1260]
- - cell "a00001" [ref=e1264]
- - cell "a00001" [ref=e1268]
- - cell [ref=e1272]
- - cell "寮�鍚�" [ref=e1276]
- - row [ref=e1280]:
- - cell "顭�" [ref=e1281]
- - cell "142" [ref=e1286]
- - cell "test01" [ref=e1290]
- - cell "test01" [ref=e1294]
- - cell "19021719925" [ref=e1298]
- - cell "寮�鍚�" [ref=e1302]
- - row "顭� 141 admin1 鏂扮敤鎴� 寮�鍚�" [ref=e1306]:
- - cell "顭�" [ref=e1307]
- - cell "141" [ref=e1312]
- - cell "admin1" [ref=e1316]
- - cell "鏂扮敤鎴�" [ref=e1320]
- - cell [ref=e1324]
- - cell "寮�鍚�" [ref=e1328]
- - row "顭� 139 wwbwwb 灏忕澶� 寮�鍚�" [ref=e1332]:
- - cell "顭�" [ref=e1333]
- - cell "139" [ref=e1338]
- - cell "wwbwwb" [ref=e1342]
- - cell "灏忕澶�" [ref=e1346]
- - cell [ref=e1350]
- - cell "寮�鍚�" [ref=e1354]
- - row [ref=e1358]:
- - cell "顭�" [ref=e1359]
- - cell "118" [ref=e1364]
- - cell "goudan" [ref=e1368]
- - cell "鐙楄泲" [ref=e1372]
- - cell "15601691239" [ref=e1376]
- - cell "寮�鍚�" [ref=e1380]
- - row [ref=e1384]:
- - cell "顭�" [ref=e1385]
- - cell "117" [ref=e1390]
- - cell "admin123" [ref=e1394]
- - cell "娴嬭瘯鍙�02" [ref=e1398]
- - cell "15601691234" [ref=e1402]
- - cell "寮�鍚�" [ref=e1406]
- - row [ref=e1410]:
- - cell "顭�" [ref=e1411]
- - cell "115" [ref=e1416]
- - cell "aotemane" [ref=e1420]
- - cell "闃垮憜" [ref=e1424]
- - cell "15601691229" [ref=e1428]
- - cell "寮�鍚�" [ref=e1432]
- - row [ref=e1436]:
- - cell "顭�" [ref=e1437]
- - cell "114" [ref=e1442]
- - cell "hrmgr" [ref=e1446]
- - cell "hr 灏忓濮�" [ref=e1450]
- - cell "15601691236" [ref=e1454]
- - cell "寮�鍚�" [ref=e1458]
- - row [ref=e1462]:
- - cell "顭�" [ref=e1463]
- - cell "113" [ref=e1468]
- - cell "aoteman" [ref=e1472]
- - cell "绠$悊鍛�1" [ref=e1476]
- - cell "15601691300" [ref=e1480]
- - cell "寮�鍚�" [ref=e1484]
- - row [ref=e1488]:
- - cell "顭�" [ref=e1489]
- - cell "112" [ref=e1494]
- - cell "newobject" [ref=e1498]
- - cell "鏂板璞�" [ref=e1502]
- - cell "15601691235" [ref=e1506]
- - cell "寮�鍚�" [ref=e1510]
- - row "顭� 111 test 娴嬭瘯鐢ㄦ埛 寮�鍚�" [ref=e1514]:
- - cell "顭�" [ref=e1515]
- - cell "111" [ref=e1520]
- - cell "test" [ref=e1524]
- - cell "娴嬭瘯鐢ㄦ埛" [ref=e1528]
- - cell [ref=e1532]
- - cell "寮�鍚�" [ref=e1536]
- - row [ref=e1540]:
- - cell "顭�" [ref=e1541]
- - cell "1" [ref=e1546]
- - cell "admin" [ref=e1550]
- - cell "瓒呯骇绠$悊鍛�" [ref=e1554]
- - cell "18818260272" [ref=e1558]
- - cell "寮�鍚�" [ref=e1562]
- - generic [ref=e1573]:
- - generic [ref=e1574]: 鍏� 19 鏉¤褰�
- - generic [ref=e1576] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e1577]:
- - textbox "璇烽�夋嫨" [ref=e1578]: 20鏉�/椤�
- - generic [ref=e1579]: 睿�
- - button "飱�" [ref=e1582]
- - button "顧�" [ref=e1584]
- - button "顫�" [ref=e1586]
- - button "1" [ref=e1589] [cursor=pointer]
- - button "顫�" [ref=e1590]
- - button "顧�" [ref=e1592]
- - button "顦�" [ref=e1594]
- - generic [ref=e1596]:
- - button "鍙� 娑�" [ref=e1597] [cursor=pointer]
- - button "纭� 瀹�" [ref=e1599] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-09-41-564Z.yml b/.playwright-mcp/page-2026-08-18T08-09-41-564Z.yml
deleted file mode 100644
index e635484..0000000
--- a/.playwright-mcp/page-2026-08-18T08-09-41-564Z.yml
+++ /dev/null
@@ -1,267 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e1603]:
- - cell [ref=e1604]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [active] [ref=e819]: "222"
- - cell [ref=e825]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [ref=e831]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-09-59-674Z.yml b/.playwright-mcp/page-2026-08-18T08-09-59-674Z.yml
deleted file mode 100644
index 0046de8..0000000
--- a/.playwright-mcp/page-2026-08-18T08-09-59-674Z.yml
+++ /dev/null
@@ -1,276 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e1603]:
- - cell [ref=e1604]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]: "222"
- - cell [ref=e825]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [expanded] [active] [ref=e831]:
- - listbox:
- - option "缁勯暱": "10"
- - option "鎿嶄綔宸�": "20"
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
- - generic [ref=e1610]:
- - generic "缁勯暱" [ref=e1611] [cursor=pointer]
- - generic "鎿嶄綔宸�" [ref=e1613] [cursor=pointer]
- - generic "鍖呰宸�" [ref=e1615] [cursor=pointer]
- - generic "璐ㄦ鍛�" [ref=e1617] [cursor=pointer]
- - generic "鍏朵粬" [ref=e1619] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-10-25-770Z.yml b/.playwright-mcp/page-2026-08-18T08-10-25-770Z.yml
deleted file mode 100644
index dfa23f0..0000000
--- a/.playwright-mcp/page-2026-08-18T08-10-25-770Z.yml
+++ /dev/null
@@ -1,269 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e1621]:
- - cell [ref=e1604]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]: "222"
- - cell "缁勯暱 缁勯暱" [ref=e1622]:
- - generic [ref=e828] [cursor=pointer]:
- - generic: 缁勯暱
- - generic [ref=e829]:
- - combobox [active] [ref=e831]
- - generic "缁勯暱" [ref=e1623]
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-10-38-848Z.yml b/.playwright-mcp/page-2026-08-18T08-10-38-848Z.yml
deleted file mode 100644
index d2f8047..0000000
--- a/.playwright-mcp/page-2026-08-18T08-10-38-848Z.yml
+++ /dev/null
@@ -1,399 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e1624]:
- - cell [ref=e1604]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]: "222"
- - cell "缁勯暱" [ref=e1625]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [ref=e831]
- - generic "缁勯暱" [ref=e1623]
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
- - dialog "鐗╂枡浜у搧閫夋嫨" [ref=e1627]:
- - document:
- - generic [ref=e1628]:
- - button "Close" [ref=e1629] [cursor=pointer]:
- - img "close" [ref=e1631]
- - generic [ref=e1634]: 鐗╂枡浜у搧閫夋嫨
- - generic [ref=e1637]:
- - generic [ref=e1640]:
- - textbox "鎼滅储鍒嗙被" [ref=e1647]
- - tree [ref=e1651]:
- - generic:
- - textbox "for screen reader"
- - generic [ref=e1655]:
- - generic "鍘熸潗鏂�" [ref=e1658] [cursor=pointer]
- - generic "鍗婃垚鍝�" [ref=e1661] [cursor=pointer]
- - generic [ref=e1662]:
- - img "caret-down" [ref=e1664] [cursor=pointer]
- - generic "鎴愬搧" [ref=e1667] [cursor=pointer]
- - generic [ref=e1668]:
- - img "caret-down" [ref=e1671] [cursor=pointer]
- - generic "1" [ref=e1674] [cursor=pointer]
- - generic [ref=e1675]:
- - img "caret-down" [ref=e1678] [cursor=pointer]
- - generic "2" [ref=e1681] [cursor=pointer]
- - generic "33" [ref=e1685] [cursor=pointer]
- - generic "杈呮枡" [ref=e1688] [cursor=pointer]
- - generic [ref=e1691]:
- - generic [ref=e1696]:
- - generic [ref=e1697]:
- - generic [ref=e1698]: 鐗╂枡缂栫爜
- - textbox "鐗╂枡缂栫爜" [ref=e1704]:
- - /placeholder: 璇疯緭鍏ョ墿鏂欑紪鐮�
- - generic [ref=e1706]:
- - generic [ref=e1707]: 鐗╂枡鍚嶇О
- - textbox "鐗╂枡鍚嶇О" [ref=e1713]:
- - /placeholder: 璇疯緭鍏ョ墿鏂欏悕绉�
- - generic [ref=e1715]:
- - button "閲� 缃�" [ref=e1716] [cursor=pointer]
- - button "鎼� 绱�" [ref=e1718] [cursor=pointer]
- - generic [ref=e1720] [cursor=pointer]: 鏀惰捣
- - generic [ref=e1727]:
- - generic [ref=e1729]:
- - generic [ref=e1730]: 鐗╂枡浜у搧鍒楄〃
- - button "顫�" [ref=e1735] [cursor=pointer]
- - generic [ref=e1737]:
- - button "瞟�" [ref=e1738] [cursor=pointer]
- - button "顪�" [ref=e1740] [cursor=pointer]
- - button "顦�" [ref=e1742] [cursor=pointer]
- - generic [ref=e1750]:
- - table [ref=e1754]:
- - rowgroup [ref=e1764]:
- - row "鐗╂枡缂栫爜 鐗╂枡鍚嶇О 瑙勬牸鍨嬪彿 鍗曚綅 鐗╂枡/浜у搧 鎵�灞炲垎绫� 鍒涘缓鏃堕棿" [ref=e1765]:
- - columnheader [ref=e1766]
- - columnheader "鐗╂枡缂栫爜" [ref=e1769]
- - columnheader "鐗╂枡鍚嶇О" [ref=e1774]
- - columnheader "瑙勬牸鍨嬪彿" [ref=e1779]
- - columnheader "鍗曚綅" [ref=e1784]
- - columnheader "鐗╂枡/浜у搧" [ref=e1789]
- - columnheader "鎵�灞炲垎绫�" [ref=e1794]
- - columnheader "鍒涘缓鏃堕棿" [ref=e1799]
- - table [ref=e1807]:
- - rowgroup [ref=e1817]:
- - row [ref=e1818]:
- - cell "顭�" [ref=e1819]
- - cell "ITEM_20260729001" [ref=e1824]
- - cell "閾濆悎瀵间綋" [ref=e1828]
- - cell "LH8030JY-10" [ref=e1832]
- - cell "鍗冪背" [ref=e1836]
- - cell "鐗╂枡" [ref=e1840]
- - cell "33" [ref=e1844]
- - cell "2026-07-29 14:19:03" [ref=e1848]
- - row [ref=e1852]:
- - cell "顭�" [ref=e1853]
- - cell "ITEM_20260720001" [ref=e1858]
- - cell "闇�瑕佺敓浜х殑鎴愬搧11" [ref=e1862]
- - cell "涓�" [ref=e1866]
- - cell "鍗冨厠" [ref=e1870]
- - cell "浜у搧" [ref=e1874]
- - cell "鎴愬搧" [ref=e1878]
- - cell "2026-07-20 09:17:13" [ref=e1882]
- - row [ref=e1886]:
- - cell "顭�" [ref=e1887]
- - cell "ITEM_20260716008" [ref=e1892]
- - cell "闀�閿岄挗绾�" [ref=e1896]
- - cell "JG3A-1*1.5" [ref=e1900]
- - cell "鍗冨厠" [ref=e1904]
- - cell "鐗╂枡" [ref=e1908]
- - cell "鍘熸潗鏂�" [ref=e1912]
- - cell "2026-07-16 16:51:57" [ref=e1916]
- - row [ref=e1920]:
- - cell "顭�" [ref=e1921]
- - cell "ITEM_20260716006" [ref=e1926]
- - cell "閽㈣姱閾濈粸绾�" [ref=e1930]
- - cell "JL/L1-40/10-6/1" [ref=e1934]
- - cell "鍗冨厠" [ref=e1938]
- - cell "浜у搧" [ref=e1942]
- - cell "鎴愬搧" [ref=e1946]
- - cell "2026-07-16 16:48:49" [ref=e1950]
- - row [ref=e1954]:
- - cell "顭�" [ref=e1955]
- - cell "ITEM_20260716005" [ref=e1960]
- - cell "閾濆崟绾�" [ref=e1964]
- - cell "L-1.72" [ref=e1968]
- - cell "鍗冨厠" [ref=e1972]
- - cell "鐗╂枡" [ref=e1976]
- - cell "鍗婃垚鍝�" [ref=e1980]
- - cell "2026-07-16 16:48:03" [ref=e1984]
- - row [ref=e1988]:
- - cell "顭�" [ref=e1989]
- - cell "ITEM_20260716004" [ref=e1994]
- - cell "閾濇潌" [ref=e1998]
- - cell "1A60" [ref=e2002]
- - cell "鍗冨厠" [ref=e2006]
- - cell "鐗╂枡" [ref=e2010]
- - cell "鍘熸潗鏂�" [ref=e2014]
- - cell "2026-07-16 16:45:13" [ref=e2018]
- - generic [ref=e2028]:
- - generic [ref=e2029]: 鍏� 6 鏉¤褰�
- - generic [ref=e2031] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e2032]:
- - textbox "璇烽�夋嫨" [ref=e2033]: 20鏉�/椤�
- - generic [ref=e2034]: 睿�
- - button "飱�" [ref=e2037]
- - button "顧�" [ref=e2039]
- - button "顫�" [ref=e2041]
- - button "1" [ref=e2044] [cursor=pointer]
- - button "顫�" [ref=e2045]
- - button "顧�" [ref=e2047]
- - button "顦�" [ref=e2049]
- - generic [ref=e2051]:
- - button "鍙� 娑�" [ref=e2052] [cursor=pointer]
- - button "纭� 瀹�" [ref=e2054] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-11-23-345Z.yml b/.playwright-mcp/page-2026-08-18T08-11-23-345Z.yml
deleted file mode 100644
index 4cbac42..0000000
--- a/.playwright-mcp/page-2026-08-18T08-11-23-345Z.yml
+++ /dev/null
@@ -1,399 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e1624]:
- - cell [ref=e1604]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]: "222"
- - cell "缁勯暱" [ref=e1625]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [ref=e831]
- - generic "缁勯暱" [ref=e1623]
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
- - dialog "鐗╂枡浜у搧閫夋嫨" [ref=e1627]:
- - document:
- - generic [ref=e1628]:
- - button "Close" [ref=e1629] [cursor=pointer]:
- - img "close" [ref=e1631]
- - generic [ref=e1634]: 鐗╂枡浜у搧閫夋嫨
- - generic [ref=e1637]:
- - generic [ref=e1640]:
- - textbox "鎼滅储鍒嗙被" [ref=e1647]
- - tree [ref=e1651]:
- - generic:
- - textbox "for screen reader"
- - generic [ref=e1655]:
- - generic "鍘熸潗鏂�" [ref=e1658] [cursor=pointer]
- - generic "鍗婃垚鍝�" [ref=e1661] [cursor=pointer]
- - generic [ref=e1662]:
- - img "caret-down" [ref=e1664] [cursor=pointer]
- - generic "鎴愬搧" [ref=e1667] [cursor=pointer]
- - generic [ref=e1668]:
- - img "caret-down" [ref=e1671] [cursor=pointer]
- - generic "1" [ref=e1674] [cursor=pointer]
- - generic [ref=e1675]:
- - img "caret-down" [ref=e1678] [cursor=pointer]
- - generic "2" [ref=e1681] [cursor=pointer]
- - generic "33" [ref=e1685] [cursor=pointer]
- - generic "杈呮枡" [ref=e1688] [cursor=pointer]
- - generic [ref=e1691]:
- - generic [ref=e1696]:
- - generic [ref=e1697]:
- - generic [ref=e1698]: 鐗╂枡缂栫爜
- - textbox "鐗╂枡缂栫爜" [ref=e1704]:
- - /placeholder: 璇疯緭鍏ョ墿鏂欑紪鐮�
- - generic [ref=e1706]:
- - generic [ref=e1707]: 鐗╂枡鍚嶇О
- - textbox "鐗╂枡鍚嶇О" [ref=e1713]:
- - /placeholder: 璇疯緭鍏ョ墿鏂欏悕绉�
- - generic [ref=e1715]:
- - button "閲� 缃�" [ref=e1716] [cursor=pointer]
- - button "鎼� 绱�" [ref=e1718] [cursor=pointer]
- - generic [ref=e1720] [cursor=pointer]: 鏀惰捣
- - generic [ref=e1727]:
- - generic [ref=e1729]:
- - generic [ref=e1730]: 鐗╂枡浜у搧鍒楄〃
- - button "顫�" [ref=e1735] [cursor=pointer]
- - generic [ref=e1737]:
- - button "瞟�" [ref=e1738] [cursor=pointer]
- - button "顪�" [ref=e1740] [cursor=pointer]
- - button "顦�" [ref=e1742] [cursor=pointer]
- - generic [ref=e1750]:
- - table [ref=e1754]:
- - rowgroup [ref=e1764]:
- - row "鐗╂枡缂栫爜 鐗╂枡鍚嶇О 瑙勬牸鍨嬪彿 鍗曚綅 鐗╂枡/浜у搧 鎵�灞炲垎绫� 鍒涘缓鏃堕棿" [ref=e1765]:
- - columnheader [ref=e1766]
- - columnheader "鐗╂枡缂栫爜" [ref=e1769]
- - columnheader "鐗╂枡鍚嶇О" [ref=e1774]
- - columnheader "瑙勬牸鍨嬪彿" [ref=e1779]
- - columnheader "鍗曚綅" [ref=e1784]
- - columnheader "鐗╂枡/浜у搧" [ref=e1789]
- - columnheader "鎵�灞炲垎绫�" [ref=e1794]
- - columnheader "鍒涘缓鏃堕棿" [ref=e1799]
- - table [ref=e1807]:
- - rowgroup [ref=e1817]:
- - row [ref=e2056]:
- - cell "顫�" [ref=e2057]
- - cell "ITEM_20260729001" [ref=e1824]
- - cell "閾濆悎瀵间綋" [ref=e1828]
- - cell "LH8030JY-10" [ref=e1832]
- - cell "鍗冪背" [ref=e1836]
- - cell "鐗╂枡" [ref=e1840]
- - cell "33" [ref=e1844]
- - cell "2026-07-29 14:19:03" [ref=e1848]
- - row [ref=e1852]:
- - cell "顭�" [ref=e1853]
- - cell "ITEM_20260720001" [ref=e1858]
- - cell "闇�瑕佺敓浜х殑鎴愬搧11" [ref=e1862]
- - cell "涓�" [ref=e1866]
- - cell "鍗冨厠" [ref=e1870]
- - cell "浜у搧" [ref=e1874]
- - cell "鎴愬搧" [ref=e1878]
- - cell "2026-07-20 09:17:13" [ref=e1882]
- - row [ref=e1886]:
- - cell "顭�" [ref=e1887]
- - cell "ITEM_20260716008" [ref=e1892]
- - cell "闀�閿岄挗绾�" [ref=e1896]
- - cell "JG3A-1*1.5" [ref=e1900]
- - cell "鍗冨厠" [ref=e1904]
- - cell "鐗╂枡" [ref=e1908]
- - cell "鍘熸潗鏂�" [ref=e1912]
- - cell "2026-07-16 16:51:57" [ref=e1916]
- - row [ref=e1920]:
- - cell "顭�" [ref=e1921]
- - cell "ITEM_20260716006" [ref=e1926]
- - cell "閽㈣姱閾濈粸绾�" [ref=e1930]
- - cell "JL/L1-40/10-6/1" [ref=e1934]
- - cell "鍗冨厠" [ref=e1938]
- - cell "浜у搧" [ref=e1942]
- - cell "鎴愬搧" [ref=e1946]
- - cell "2026-07-16 16:48:49" [ref=e1950]
- - row [ref=e1954]:
- - cell "顭�" [ref=e1955]
- - cell "ITEM_20260716005" [ref=e1960]
- - cell "閾濆崟绾�" [ref=e1964]
- - cell "L-1.72" [ref=e1968]
- - cell "鍗冨厠" [ref=e1972]
- - cell "鐗╂枡" [ref=e1976]
- - cell "鍗婃垚鍝�" [ref=e1980]
- - cell "2026-07-16 16:48:03" [ref=e1984]
- - row [ref=e1988]:
- - cell "顭�" [ref=e1989]
- - cell "ITEM_20260716004" [ref=e1994]
- - cell "閾濇潌" [ref=e1998]
- - cell "1A60" [ref=e2002]
- - cell "鍗冨厠" [ref=e2006]
- - cell "鐗╂枡" [ref=e2010]
- - cell "鍘熸潗鏂�" [ref=e2014]
- - cell "2026-07-16 16:45:13" [ref=e2018]
- - generic [ref=e2028]:
- - generic [ref=e2029]: 鍏� 6 鏉¤褰�
- - generic [ref=e2031] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e2032]:
- - textbox "璇烽�夋嫨" [ref=e2033]: 20鏉�/椤�
- - generic [ref=e2034]: 睿�
- - button "飱�" [ref=e2037]
- - button "顧�" [ref=e2039]
- - button "顫�" [ref=e2041]
- - button "1" [ref=e2044] [cursor=pointer]
- - button "顫�" [ref=e2045]
- - button "顧�" [ref=e2047]
- - button "顦�" [ref=e2049]
- - generic [ref=e2051]:
- - button "鍙� 娑�" [ref=e2052] [cursor=pointer]
- - button "纭� 瀹�" [ref=e2054] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-11-29-772Z.yml b/.playwright-mcp/page-2026-08-18T08-11-29-772Z.yml
deleted file mode 100644
index 7cab386..0000000
--- a/.playwright-mcp/page-2026-08-18T08-11-29-772Z.yml
+++ /dev/null
@@ -1,267 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [active] [ref=e661]: 閾濆悎瀵间綋
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e1624]:
- - cell [ref=e1604]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]: "222"
- - cell "缁勯暱" [ref=e1625]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [ref=e831]
- - generic "缁勯暱" [ref=e1623]
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-11-35-526Z.yml b/.playwright-mcp/page-2026-08-18T08-11-35-526Z.yml
deleted file mode 100644
index 7c641c9..0000000
--- a/.playwright-mcp/page-2026-08-18T08-11-35-526Z.yml
+++ /dev/null
@@ -1,277 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]: 閾濆悎瀵间綋
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [expanded] [active] [ref=e677]:
- - listbox:
- - option "1"
- - option "2"
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e1624]:
- - cell [ref=e1604]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]: "222"
- - cell "缁勯暱" [ref=e1625]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [ref=e831]
- - generic "缁勯暱" [ref=e1623]
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
- - generic [ref=e2063]:
- - generic [ref=e2066] [cursor=pointer]:
- - generic [ref=e2067]: 浜х嚎涓�
- - generic [ref=e2068]: one
- - generic [ref=e2071] [cursor=pointer]:
- - generic [ref=e2072]: 浜х嚎浜�
- - generic [ref=e2073]: two
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-11-46-362Z.yml b/.playwright-mcp/page-2026-08-18T08-11-46-362Z.yml
deleted file mode 100644
index 7c641c9..0000000
--- a/.playwright-mcp/page-2026-08-18T08-11-46-362Z.yml
+++ /dev/null
@@ -1,277 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]: 閾濆悎瀵间綋
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [expanded] [active] [ref=e677]:
- - listbox:
- - option "1"
- - option "2"
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e1624]:
- - cell [ref=e1604]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]: "222"
- - cell "缁勯暱" [ref=e1625]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [ref=e831]
- - generic "缁勯暱" [ref=e1623]
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
- - generic [ref=e2063]:
- - generic [ref=e2066] [cursor=pointer]:
- - generic [ref=e2067]: 浜х嚎涓�
- - generic [ref=e2068]: one
- - generic [ref=e2071] [cursor=pointer]:
- - generic [ref=e2072]: 浜х嚎浜�
- - generic [ref=e2073]: two
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-12-10-057Z.yml b/.playwright-mcp/page-2026-08-18T08-12-10-057Z.yml
deleted file mode 100644
index 7c641c9..0000000
--- a/.playwright-mcp/page-2026-08-18T08-12-10-057Z.yml
+++ /dev/null
@@ -1,277 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]: 閾濆悎瀵间綋
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [expanded] [active] [ref=e677]:
- - listbox:
- - option "1"
- - option "2"
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e1624]:
- - cell [ref=e1604]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]: "222"
- - cell "缁勯暱" [ref=e1625]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [ref=e831]
- - generic "缁勯暱" [ref=e1623]
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
- - generic [ref=e2063]:
- - generic [ref=e2066] [cursor=pointer]:
- - generic [ref=e2067]: 浜х嚎涓�
- - generic [ref=e2068]: one
- - generic [ref=e2071] [cursor=pointer]:
- - generic [ref=e2072]: 浜х嚎浜�
- - generic [ref=e2073]: two
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-12-24-644Z.yml b/.playwright-mcp/page-2026-08-18T08-12-24-644Z.yml
deleted file mode 100644
index 8667530..0000000
--- a/.playwright-mcp/page-2026-08-18T08-12-24-644Z.yml
+++ /dev/null
@@ -1,271 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]: 閾濆悎瀵间綋
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e674] [cursor=pointer]:
- - generic: "2"
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [active] [ref=e677]
- - generic [ref=e2075]:
- - generic [ref=e2076]: 浜х嚎浜�
- - generic [ref=e2077]: two
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e1624]:
- - cell [ref=e1604]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]: "222"
- - cell "缁勯暱" [ref=e1625]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [ref=e831]
- - generic "缁勯暱" [ref=e1623]
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-13-07-718Z.yml b/.playwright-mcp/page-2026-08-18T08-13-07-718Z.yml
deleted file mode 100644
index adf8d6b..0000000
--- a/.playwright-mcp/page-2026-08-18T08-13-07-718Z.yml
+++ /dev/null
@@ -1,272 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]: 閾濆悎瀵间綋
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic [ref=e2075]:
- - generic [ref=e2076]: 浜х嚎浜�
- - generic [ref=e2077]: two
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [active] [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - text: 2026-08-18 08:00:00
- - generic:
- - img "calendar"
- - button [ref=e2082] [cursor=pointer]:
- - img "close-circle" [ref=e2083]
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e1624]:
- - cell [ref=e1604]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]: "222"
- - cell "缁勯暱" [ref=e1625]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [ref=e831]
- - generic "缁勯暱" [ref=e1623]
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-13-18-864Z.yml b/.playwright-mcp/page-2026-08-18T08-13-18-864Z.yml
deleted file mode 100644
index 9a46f89..0000000
--- a/.playwright-mcp/page-2026-08-18T08-13-18-864Z.yml
+++ /dev/null
@@ -1,497 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]: 閾濆悎瀵间綋
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic [ref=e2075]:
- - generic [ref=e2076]: 浜х嚎浜�
- - generic [ref=e2077]: two
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - text: 2026-08-18 08:00:00
- - generic:
- - img "calendar"
- - button [ref=e2082] [cursor=pointer]:
- - img "close-circle" [ref=e2083]
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]: "100.00"
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]: 瓒呯骇绠$悊鍛�
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e1624]:
- - cell [ref=e1604]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]: "222"
- - cell "缁勯暱" [ref=e1625]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [ref=e831]
- - generic "缁勯暱" [ref=e1623]
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
- - dialog "浜哄憳閫夋嫨" [ref=e2090]:
- - document:
- - generic [ref=e2091]:
- - button "Close" [ref=e2092] [cursor=pointer]:
- - img "close" [ref=e2094]
- - generic [ref=e2097]: 浜哄憳閫夋嫨
- - generic [ref=e2100]:
- - generic [ref=e2102]:
- - textbox "鎼滅储閮ㄩ棬" [ref=e2109]
- - tree [ref=e2113]:
- - generic:
- - textbox "for screen reader"
- - generic [ref=e2117]:
- - generic [ref=e2118]:
- - img "caret-down" [ref=e2120] [cursor=pointer]
- - generic "鎬诲叕鍙�" [ref=e2123] [cursor=pointer]
- - generic [ref=e2124]:
- - img "caret-down" [ref=e2127] [cursor=pointer]
- - generic "娣卞湷鎬诲叕鍙�" [ref=e2130] [cursor=pointer]
- - generic "鐮斿彂閮ㄩ棬" [ref=e2134] [cursor=pointer]
- - generic "甯傚満閮ㄩ棬" [ref=e2138] [cursor=pointer]
- - generic "娴嬭瘯閮ㄩ棬" [ref=e2142] [cursor=pointer]
- - generic "璐㈠姟閮ㄩ棬" [ref=e2146] [cursor=pointer]
- - generic "杩愮淮閮ㄩ棬" [ref=e2150] [cursor=pointer]
- - generic [ref=e2151]:
- - img "caret-down" [ref=e2154] [cursor=pointer]
- - generic "闀挎矙鍒嗗叕鍙�" [ref=e2157] [cursor=pointer]
- - generic "甯傚満閮ㄩ棬" [ref=e2161] [cursor=pointer]
- - generic "璐㈠姟閮ㄩ棬" [ref=e2165] [cursor=pointer]
- - generic "鏂伴儴闂�" [ref=e2168] [cursor=pointer]
- - generic "椤剁骇閮ㄩ棬" [ref=e2171] [cursor=pointer]
- - generic "鏌愪釜瀛愰儴闂�" [ref=e2174] [cursor=pointer]
- - generic "鏌愪釜瀛愰儴闂� 2" [ref=e2177] [cursor=pointer]
- - generic [ref=e2180]:
- - generic [ref=e2185]:
- - generic [ref=e2186]:
- - generic [ref=e2187]: 鐢ㄦ埛鍚嶇О
- - textbox "鐢ㄦ埛鍚嶇О" [ref=e2193]:
- - /placeholder: 璇疯緭鍏ョ敤鎴峰悕绉�
- - generic [ref=e2195]:
- - generic [ref=e2196]: 鐢ㄦ埛鏄电О
- - textbox "鐢ㄦ埛鏄电О" [ref=e2202]:
- - /placeholder: 璇疯緭鍏ョ敤鎴锋樀绉�
- - generic [ref=e2204]:
- - generic [ref=e2205]: 鎵嬫満鍙风爜
- - textbox "鎵嬫満鍙风爜" [ref=e2211]:
- - /placeholder: 璇疯緭鍏ユ墜鏈哄彿鐮�
- - generic [ref=e2213]:
- - generic [ref=e2214]: 鐘舵��
- - generic [ref=e2220] [cursor=pointer]:
- - combobox "鐘舵��" [ref=e2222]
- - generic "寮�鍚�" [ref=e2223]
- - generic [ref=e2228]:
- - button "閲� 缃�" [ref=e2229] [cursor=pointer]
- - button "鎼� 绱�" [ref=e2231] [cursor=pointer]
- - generic [ref=e2233] [cursor=pointer]: 鏀惰捣
- - generic [ref=e2240]:
- - generic [ref=e2242]:
- - generic [ref=e2243]: 鐢ㄦ埛鍒楄〃
- - button "顫�" [ref=e2248] [cursor=pointer]
- - generic [ref=e2250]:
- - button "瞟�" [ref=e2251] [cursor=pointer]
- - button "顪�" [ref=e2253] [cursor=pointer]
- - button "顦�" [ref=e2255] [cursor=pointer]
- - generic [ref=e2263]:
- - table [ref=e2267]:
- - rowgroup [ref=e2275]:
- - row "鐢ㄦ埛缂栧彿 鐢ㄦ埛鍚嶇О 鐢ㄦ埛鏄电О 鎵嬫満鍙风爜 鐘舵��" [ref=e2276]:
- - columnheader [ref=e2277]
- - columnheader "鐢ㄦ埛缂栧彿" [ref=e2280]
- - columnheader "鐢ㄦ埛鍚嶇О" [ref=e2285]
- - columnheader "鐢ㄦ埛鏄电О" [ref=e2290]
- - columnheader "鎵嬫満鍙风爜" [ref=e2295]
- - columnheader "鐘舵��" [ref=e2300]
- - table [ref=e2308]:
- - rowgroup [ref=e2316]:
- - row [ref=e2317]:
- - cell "顭�" [ref=e2318]
- - cell "230" [ref=e2323]
- - cell "18333333333" [ref=e2327]
- - cell "222" [ref=e2331]
- - cell "18333333333" [ref=e2335]
- - cell "寮�鍚�" [ref=e2339]
- - row [ref=e2343]:
- - cell "顭�" [ref=e2344]
- - cell "229" [ref=e2349]
- - cell "15822054764" [ref=e2353]
- - cell "鏀惧亣" [ref=e2357]
- - cell "15822054764" [ref=e2361]
- - cell "寮�鍚�" [ref=e2365]
- - row [ref=e2369]:
- - cell "顭�" [ref=e2370]
- - cell "228" [ref=e2375]
- - cell "15822054766" [ref=e2379]
- - cell "涓嶆兂涓婄彮" [ref=e2383]
- - cell "15822054766" [ref=e2387]
- - cell "寮�鍚�" [ref=e2391]
- - row [ref=e2395]:
- - cell "顭�" [ref=e2396]
- - cell "227" [ref=e2401]
- - cell "15822054767" [ref=e2405]
- - cell "澶ф槑鏄�" [ref=e2409]
- - cell "15822054767" [ref=e2413]
- - cell "寮�鍚�" [ref=e2417]
- - row [ref=e2421]:
- - cell "顭�" [ref=e2422]
- - cell "226" [ref=e2427]
- - cell "15822054763" [ref=e2431]
- - cell "鍗冨厠" [ref=e2435]
- - cell "15822054763" [ref=e2439]
- - cell "寮�鍚�" [ref=e2443]
- - row [ref=e2447]:
- - cell "顭�" [ref=e2448]
- - cell "225" [ref=e2453]
- - cell "15822054762" [ref=e2457]
- - cell "鍗楃摐瀛�" [ref=e2461]
- - cell "15822054762" [ref=e2465]
- - cell "寮�鍚�" [ref=e2469]
- - row "顭� 144 aoteman001 aoteman00112 鍏抽棴" [ref=e2473]:
- - cell "顭�" [ref=e2474]
- - cell "144" [ref=e2479]
- - cell "aoteman001" [ref=e2483]
- - cell "aoteman00112" [ref=e2487]
- - cell [ref=e2491]
- - cell "鍏抽棴" [ref=e2495]
- - row "顭� 143 a00001 a00001 寮�鍚�" [ref=e2499]:
- - cell "顭�" [ref=e2500]
- - cell "143" [ref=e2505]
- - cell "a00001" [ref=e2509]
- - cell "a00001" [ref=e2513]
- - cell [ref=e2517]
- - cell "寮�鍚�" [ref=e2521]
- - row [ref=e2525]:
- - cell "顭�" [ref=e2526]
- - cell "142" [ref=e2531]
- - cell "test01" [ref=e2535]
- - cell "test01" [ref=e2539]
- - cell "19021719925" [ref=e2543]
- - cell "寮�鍚�" [ref=e2547]
- - row "顭� 141 admin1 鏂扮敤鎴� 寮�鍚�" [ref=e2551]:
- - cell "顭�" [ref=e2552]
- - cell "141" [ref=e2557]
- - cell "admin1" [ref=e2561]
- - cell "鏂扮敤鎴�" [ref=e2565]
- - cell [ref=e2569]
- - cell "寮�鍚�" [ref=e2573]
- - row "顭� 139 wwbwwb 灏忕澶� 寮�鍚�" [ref=e2577]:
- - cell "顭�" [ref=e2578]
- - cell "139" [ref=e2583]
- - cell "wwbwwb" [ref=e2587]
- - cell "灏忕澶�" [ref=e2591]
- - cell [ref=e2595]
- - cell "寮�鍚�" [ref=e2599]
- - row [ref=e2603]:
- - cell "顭�" [ref=e2604]
- - cell "118" [ref=e2609]
- - cell "goudan" [ref=e2613]
- - cell "鐙楄泲" [ref=e2617]
- - cell "15601691239" [ref=e2621]
- - cell "寮�鍚�" [ref=e2625]
- - row [ref=e2629]:
- - cell "顭�" [ref=e2630]
- - cell "117" [ref=e2635]
- - cell "admin123" [ref=e2639]
- - cell "娴嬭瘯鍙�02" [ref=e2643]
- - cell "15601691234" [ref=e2647]
- - cell "寮�鍚�" [ref=e2651]
- - row [ref=e2655]:
- - cell "顭�" [ref=e2656]
- - cell "115" [ref=e2661]
- - cell "aotemane" [ref=e2665]
- - cell "闃垮憜" [ref=e2669]
- - cell "15601691229" [ref=e2673]
- - cell "寮�鍚�" [ref=e2677]
- - row [ref=e2681]:
- - cell "顭�" [ref=e2682]
- - cell "114" [ref=e2687]
- - cell "hrmgr" [ref=e2691]
- - cell "hr 灏忓濮�" [ref=e2695]
- - cell "15601691236" [ref=e2699]
- - cell "寮�鍚�" [ref=e2703]
- - row [ref=e2707]:
- - cell "顭�" [ref=e2708]
- - cell "113" [ref=e2713]
- - cell "aoteman" [ref=e2717]
- - cell "绠$悊鍛�1" [ref=e2721]
- - cell "15601691300" [ref=e2725]
- - cell "寮�鍚�" [ref=e2729]
- - row [ref=e2733]:
- - cell "顭�" [ref=e2734]
- - cell "112" [ref=e2739]
- - cell "newobject" [ref=e2743]
- - cell "鏂板璞�" [ref=e2747]
- - cell "15601691235" [ref=e2751]
- - cell "寮�鍚�" [ref=e2755]
- - row "顭� 111 test 娴嬭瘯鐢ㄦ埛 寮�鍚�" [ref=e2759]:
- - cell "顭�" [ref=e2760]
- - cell "111" [ref=e2765]
- - cell "test" [ref=e2769]
- - cell "娴嬭瘯鐢ㄦ埛" [ref=e2773]
- - cell [ref=e2777]
- - cell "寮�鍚�" [ref=e2781]
- - row [ref=e2785]:
- - cell "顭�" [ref=e2786]
- - cell "1" [ref=e2791]
- - cell "admin" [ref=e2795]
- - cell "瓒呯骇绠$悊鍛�" [ref=e2799]
- - cell "18818260272" [ref=e2803]
- - cell "寮�鍚�" [ref=e2807]
- - generic [ref=e2818]:
- - generic [ref=e2819]: 鍏� 19 鏉¤褰�
- - generic [ref=e2821] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e2822]:
- - textbox "璇烽�夋嫨" [ref=e2823]: 20鏉�/椤�
- - generic [ref=e2824]: 睿�
- - button "飱�" [ref=e2827]
- - button "顧�" [ref=e2829]
- - button "顫�" [ref=e2831]
- - button "1" [ref=e2834] [cursor=pointer]
- - button "顫�" [ref=e2835]
- - button "顧�" [ref=e2837]
- - button "顦�" [ref=e2839]
- - generic [ref=e2841]:
- - button "鍙� 娑�" [ref=e2842] [cursor=pointer]
- - button "纭� 瀹�" [ref=e2844] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-13-38-423Z.yml b/.playwright-mcp/page-2026-08-18T08-13-38-423Z.yml
deleted file mode 100644
index b266bc3..0000000
--- a/.playwright-mcp/page-2026-08-18T08-13-38-423Z.yml
+++ /dev/null
@@ -1,275 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=e250] [cursor=pointer]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - generic [ref=e2847]:
- - img "exclamation-circle" [ref=e2848]
- - text: 璇疯嚦灏戦厤缃竴鍚嶇敓浜т汉鍛�
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]: 閾濆悎瀵间綋
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic [ref=e2075]:
- - generic [ref=e2076]: 浜х嚎浜�
- - generic [ref=e2077]: two
- - generic [ref=e678]:
- - generic [ref=e679]:
- - generic [ref=e680]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e686]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e687]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - text: 2026-08-18 08:00:00
- - generic:
- - img "calendar"
- - button [ref=e2082] [cursor=pointer]:
- - img "close-circle" [ref=e2083]
- - generic [ref=e688]:
- - generic [ref=e689]: 璁″垝鏁伴噺
- - generic [ref=e694]:
- - generic [ref=e695]:
- - button "Increase Value" [ref=e696] [cursor=pointer]:
- - img "up" [ref=e697]
- - button "Decrease Value" [ref=e700] [cursor=pointer]:
- - img "down" [ref=e701]
- - spinbutton "璁″垝鏁伴噺" [ref=e705]: "100.00"
- - generic [ref=e706]:
- - generic [ref=e707]:
- - generic [ref=e708]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e715]: 瓒呯骇绠$悊鍛�
- - generic [ref=e721]:
- - generic [ref=e722]: 澶囨敞
- - textbox "澶囨敞" [ref=e727]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e728]:
- - generic [ref=e729]:
- - generic [ref=e730]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e731] [cursor=pointer]
- - generic [ref=e743]:
- - table [ref=e747]:
- - rowgroup [ref=e753]:
- - row [ref=e754]:
- - columnheader "鐢熶骇浜哄憳" [ref=e755]
- - columnheader "宀椾綅绫诲瀷" [ref=e760]
- - columnheader "澶囨敞" [ref=e765]
- - columnheader "鎿嶄綔" [ref=e770]
- - table [ref=e806]:
- - rowgroup [ref=e812]:
- - row [ref=e1624]:
- - cell [ref=e1604]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e819]: "222"
- - cell "缁勯暱" [ref=e1625]:
- - generic [ref=e829] [cursor=pointer]:
- - combobox [ref=e831]
- - generic "缁勯暱" [ref=e1623]
- - cell [ref=e832]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e835]
- - cell [ref=e836]:
- - button "鍒犻櫎" [ref=e842] [cursor=pointer]
- - button [ref=e786] [cursor=pointer]
- - generic [ref=e796]:
- - button "纭� 璁�" [active] [ref=e797] [cursor=pointer]
- - button "鍙� 娑�" [ref=e800] [cursor=pointer]
- - button [ref=e802] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-19-51-138Z.yml b/.playwright-mcp/page-2026-08-18T08-19-51-138Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-18T08-19-51-138Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-21-00-151Z.yml b/.playwright-mcp/page-2026-08-18T08-21-00-151Z.yml
deleted file mode 100644
index 575f5f5..0000000
--- a/.playwright-mcp/page-2026-08-18T08-21-00-151Z.yml
+++ /dev/null
@@ -1,197 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [active] [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - generic [ref=f1e885]:
- - img "exclamation-circle" [ref=f1e886]
- - text: 璇疯嚦灏戦厤缃竴鍚嶇敓浜т汉鍛�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-21-47-467Z.yml b/.playwright-mcp/page-2026-08-18T08-21-47-467Z.yml
deleted file mode 100644
index 46e6ac0..0000000
--- a/.playwright-mcp/page-2026-08-18T08-21-47-467Z.yml
+++ /dev/null
@@ -1,267 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=f1e906]
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [ref=f1e922]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [active] [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e1058]:
- - cell [ref=f1e1059]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]
- - cell [ref=f1e1070]:
- - generic [ref=f1e1074] [cursor=pointer]:
- - combobox [ref=f1e1076]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-22-01-568Z.yml b/.playwright-mcp/page-2026-08-18T08-22-01-568Z.yml
deleted file mode 100644
index 0753b92..0000000
--- a/.playwright-mcp/page-2026-08-18T08-22-01-568Z.yml
+++ /dev/null
@@ -1,399 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [active] [ref=f1e906]
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [ref=f1e922]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e1058]:
- - cell [ref=f1e1059]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]
- - cell [ref=f1e1070]:
- - generic [ref=f1e1074] [cursor=pointer]:
- - combobox [ref=f1e1076]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
- - dialog "鐗╂枡浜у搧閫夋嫨" [ref=f1e1090]:
- - document:
- - generic [ref=f1e1091]:
- - button "Close" [ref=f1e1092] [cursor=pointer]:
- - img "close" [ref=f1e1094]
- - generic [ref=f1e1097]: 鐗╂枡浜у搧閫夋嫨
- - generic [ref=f1e1100]:
- - generic [ref=f1e1103]:
- - textbox "鎼滅储鍒嗙被" [ref=f1e1110]
- - tree [ref=f1e1114]:
- - generic:
- - textbox "for screen reader"
- - generic [ref=f1e1118]:
- - generic "鍘熸潗鏂�" [ref=f1e1121] [cursor=pointer]
- - generic "鍗婃垚鍝�" [ref=f1e1124] [cursor=pointer]
- - generic [ref=f1e1125]:
- - img "caret-down" [ref=f1e1127] [cursor=pointer]
- - generic "鎴愬搧" [ref=f1e1130] [cursor=pointer]
- - generic [ref=f1e1131]:
- - img "caret-down" [ref=f1e1134] [cursor=pointer]
- - generic "1" [ref=f1e1137] [cursor=pointer]
- - generic [ref=f1e1138]:
- - img "caret-down" [ref=f1e1141] [cursor=pointer]
- - generic "2" [ref=f1e1144] [cursor=pointer]
- - generic "33" [ref=f1e1148] [cursor=pointer]
- - generic "杈呮枡" [ref=f1e1151] [cursor=pointer]
- - generic [ref=f1e1154]:
- - generic [ref=f1e1159]:
- - generic [ref=f1e1160]:
- - generic [ref=f1e1161]: 鐗╂枡缂栫爜
- - textbox "鐗╂枡缂栫爜" [ref=f1e1167]:
- - /placeholder: 璇疯緭鍏ョ墿鏂欑紪鐮�
- - generic [ref=f1e1169]:
- - generic [ref=f1e1170]: 鐗╂枡鍚嶇О
- - textbox "鐗╂枡鍚嶇О" [ref=f1e1176]:
- - /placeholder: 璇疯緭鍏ョ墿鏂欏悕绉�
- - generic [ref=f1e1178]:
- - button "閲� 缃�" [ref=f1e1179] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e1181] [cursor=pointer]
- - generic [ref=f1e1183] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e1190]:
- - generic [ref=f1e1192]:
- - generic [ref=f1e1193]: 鐗╂枡浜у搧鍒楄〃
- - button "顫�" [ref=f1e1198] [cursor=pointer]
- - generic [ref=f1e1200]:
- - button "瞟�" [ref=f1e1201] [cursor=pointer]
- - button "顪�" [ref=f1e1203] [cursor=pointer]
- - button "顦�" [ref=f1e1205] [cursor=pointer]
- - generic [ref=f1e1213]:
- - table [ref=f1e1217]:
- - rowgroup [ref=f1e1227]:
- - row "鐗╂枡缂栫爜 鐗╂枡鍚嶇О 瑙勬牸鍨嬪彿 鍗曚綅 鐗╂枡/浜у搧 鎵�灞炲垎绫� 鍒涘缓鏃堕棿" [ref=f1e1228]:
- - columnheader [ref=f1e1229]
- - columnheader "鐗╂枡缂栫爜" [ref=f1e1232]
- - columnheader "鐗╂枡鍚嶇О" [ref=f1e1237]
- - columnheader "瑙勬牸鍨嬪彿" [ref=f1e1242]
- - columnheader "鍗曚綅" [ref=f1e1247]
- - columnheader "鐗╂枡/浜у搧" [ref=f1e1252]
- - columnheader "鎵�灞炲垎绫�" [ref=f1e1257]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e1262]
- - table [ref=f1e1270]:
- - rowgroup [ref=f1e1280]:
- - row [ref=f1e1281]:
- - cell "顭�" [ref=f1e1282]
- - cell "ITEM_20260729001" [ref=f1e1287]
- - cell "閾濆悎瀵间綋" [ref=f1e1291]
- - cell "LH8030JY-10" [ref=f1e1295]
- - cell "鍗冪背" [ref=f1e1299]
- - cell "鐗╂枡" [ref=f1e1303]
- - cell "33" [ref=f1e1307]
- - cell "2026-07-29 14:19:03" [ref=f1e1311]
- - row [ref=f1e1315]:
- - cell "顭�" [ref=f1e1316]
- - cell "ITEM_20260720001" [ref=f1e1321]
- - cell "闇�瑕佺敓浜х殑鎴愬搧11" [ref=f1e1325]
- - cell "涓�" [ref=f1e1329]
- - cell "鍗冨厠" [ref=f1e1333]
- - cell "浜у搧" [ref=f1e1337]
- - cell "鎴愬搧" [ref=f1e1341]
- - cell "2026-07-20 09:17:13" [ref=f1e1345]
- - row [ref=f1e1349]:
- - cell "顭�" [ref=f1e1350]
- - cell "ITEM_20260716008" [ref=f1e1355]
- - cell "闀�閿岄挗绾�" [ref=f1e1359]
- - cell "JG3A-1*1.5" [ref=f1e1363]
- - cell "鍗冨厠" [ref=f1e1367]
- - cell "鐗╂枡" [ref=f1e1371]
- - cell "鍘熸潗鏂�" [ref=f1e1375]
- - cell "2026-07-16 16:51:57" [ref=f1e1379]
- - row [ref=f1e1383]:
- - cell "顭�" [ref=f1e1384]
- - cell "ITEM_20260716006" [ref=f1e1389]
- - cell "閽㈣姱閾濈粸绾�" [ref=f1e1393]
- - cell "JL/L1-40/10-6/1" [ref=f1e1397]
- - cell "鍗冨厠" [ref=f1e1401]
- - cell "浜у搧" [ref=f1e1405]
- - cell "鎴愬搧" [ref=f1e1409]
- - cell "2026-07-16 16:48:49" [ref=f1e1413]
- - row [ref=f1e1417]:
- - cell "顭�" [ref=f1e1418]
- - cell "ITEM_20260716005" [ref=f1e1423]
- - cell "閾濆崟绾�" [ref=f1e1427]
- - cell "L-1.72" [ref=f1e1431]
- - cell "鍗冨厠" [ref=f1e1435]
- - cell "鐗╂枡" [ref=f1e1439]
- - cell "鍗婃垚鍝�" [ref=f1e1443]
- - cell "2026-07-16 16:48:03" [ref=f1e1447]
- - row [ref=f1e1451]:
- - cell "顭�" [ref=f1e1452]
- - cell "ITEM_20260716004" [ref=f1e1457]
- - cell "閾濇潌" [ref=f1e1461]
- - cell "1A60" [ref=f1e1465]
- - cell "鍗冨厠" [ref=f1e1469]
- - cell "鐗╂枡" [ref=f1e1473]
- - cell "鍘熸潗鏂�" [ref=f1e1477]
- - cell "2026-07-16 16:45:13" [ref=f1e1481]
- - generic [ref=f1e1491]:
- - generic [ref=f1e1492]: 鍏� 6 鏉¤褰�
- - generic [ref=f1e1494] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e1495]:
- - textbox "璇烽�夋嫨" [ref=f1e1496]: 20鏉�/椤�
- - generic [ref=f1e1497]: 睿�
- - button "飱�" [ref=f1e1500]
- - button "顧�" [ref=f1e1502]
- - button "顫�" [ref=f1e1504]
- - button "1" [ref=f1e1507] [cursor=pointer]
- - button "顫�" [ref=f1e1508]
- - button "顧�" [ref=f1e1510]
- - button "顦�" [ref=f1e1512]
- - generic [ref=f1e1514]:
- - button "鍙� 娑�" [ref=f1e1515] [cursor=pointer]
- - button "纭� 瀹�" [ref=f1e1517] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-23-09-413Z.yml b/.playwright-mcp/page-2026-08-18T08-23-09-413Z.yml
deleted file mode 100644
index 0cbd147..0000000
--- a/.playwright-mcp/page-2026-08-18T08-23-09-413Z.yml
+++ /dev/null
@@ -1,399 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=f1e906]
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [ref=f1e922]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e1058]:
- - cell [ref=f1e1059]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]
- - cell [ref=f1e1070]:
- - generic [ref=f1e1074] [cursor=pointer]:
- - combobox [ref=f1e1076]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
- - dialog "鐗╂枡浜у搧閫夋嫨" [ref=f1e1090]:
- - document:
- - generic [ref=f1e1091]:
- - button "Close" [ref=f1e1092] [cursor=pointer]:
- - img "close" [ref=f1e1094]
- - generic [ref=f1e1097]: 鐗╂枡浜у搧閫夋嫨
- - generic [ref=f1e1100]:
- - generic [ref=f1e1103]:
- - textbox "鎼滅储鍒嗙被" [ref=f1e1110]
- - tree [ref=f1e1114]:
- - generic:
- - textbox "for screen reader"
- - generic [ref=f1e1118]:
- - generic "鍘熸潗鏂�" [ref=f1e1121] [cursor=pointer]
- - generic "鍗婃垚鍝�" [ref=f1e1124] [cursor=pointer]
- - generic [ref=f1e1125]:
- - img "caret-down" [ref=f1e1127] [cursor=pointer]
- - generic "鎴愬搧" [ref=f1e1130] [cursor=pointer]
- - generic [ref=f1e1131]:
- - img "caret-down" [ref=f1e1134] [cursor=pointer]
- - generic "1" [ref=f1e1137] [cursor=pointer]
- - generic [ref=f1e1138]:
- - img "caret-down" [ref=f1e1141] [cursor=pointer]
- - generic "2" [ref=f1e1144] [cursor=pointer]
- - generic "33" [ref=f1e1148] [cursor=pointer]
- - generic "杈呮枡" [ref=f1e1151] [cursor=pointer]
- - generic [ref=f1e1154]:
- - generic [ref=f1e1159]:
- - generic [ref=f1e1160]:
- - generic [ref=f1e1161]: 鐗╂枡缂栫爜
- - textbox "鐗╂枡缂栫爜" [ref=f1e1167]:
- - /placeholder: 璇疯緭鍏ョ墿鏂欑紪鐮�
- - generic [ref=f1e1169]:
- - generic [ref=f1e1170]: 鐗╂枡鍚嶇О
- - textbox "鐗╂枡鍚嶇О" [ref=f1e1176]:
- - /placeholder: 璇疯緭鍏ョ墿鏂欏悕绉�
- - generic [ref=f1e1178]:
- - button "閲� 缃�" [ref=f1e1179] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e1181] [cursor=pointer]
- - generic [ref=f1e1183] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e1190]:
- - generic [ref=f1e1192]:
- - generic [ref=f1e1193]: 鐗╂枡浜у搧鍒楄〃
- - button "顫�" [ref=f1e1198] [cursor=pointer]
- - generic [ref=f1e1200]:
- - button "瞟�" [ref=f1e1201] [cursor=pointer]
- - button "顪�" [ref=f1e1203] [cursor=pointer]
- - button "顦�" [ref=f1e1205] [cursor=pointer]
- - generic [ref=f1e1213]:
- - table [ref=f1e1217]:
- - rowgroup [ref=f1e1227]:
- - row "鐗╂枡缂栫爜 鐗╂枡鍚嶇О 瑙勬牸鍨嬪彿 鍗曚綅 鐗╂枡/浜у搧 鎵�灞炲垎绫� 鍒涘缓鏃堕棿" [ref=f1e1228]:
- - columnheader [ref=f1e1229]
- - columnheader "鐗╂枡缂栫爜" [ref=f1e1232]
- - columnheader "鐗╂枡鍚嶇О" [ref=f1e1237]
- - columnheader "瑙勬牸鍨嬪彿" [ref=f1e1242]
- - columnheader "鍗曚綅" [ref=f1e1247]
- - columnheader "鐗╂枡/浜у搧" [ref=f1e1252]
- - columnheader "鎵�灞炲垎绫�" [ref=f1e1257]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e1262]
- - table [ref=f1e1270]:
- - rowgroup [ref=f1e1280]:
- - row [ref=f1e1281]:
- - cell "顭�" [ref=f1e1282]
- - cell "ITEM_20260729001" [ref=f1e1287]
- - cell "閾濆悎瀵间綋" [ref=f1e1291]
- - cell "LH8030JY-10" [ref=f1e1295]
- - cell "鍗冪背" [ref=f1e1299]
- - cell "鐗╂枡" [ref=f1e1303]
- - cell "33" [ref=f1e1307]
- - cell "2026-07-29 14:19:03" [ref=f1e1311]
- - row [ref=f1e1315]:
- - cell "顭�" [ref=f1e1316]
- - cell "ITEM_20260720001" [ref=f1e1321]
- - cell "闇�瑕佺敓浜х殑鎴愬搧11" [ref=f1e1325]
- - cell "涓�" [ref=f1e1329]
- - cell "鍗冨厠" [ref=f1e1333]
- - cell "浜у搧" [ref=f1e1337]
- - cell "鎴愬搧" [ref=f1e1341]
- - cell "2026-07-20 09:17:13" [ref=f1e1345]
- - row [ref=f1e1349]:
- - cell "顭�" [ref=f1e1350]
- - cell "ITEM_20260716008" [ref=f1e1355]
- - cell "闀�閿岄挗绾�" [ref=f1e1359]
- - cell "JG3A-1*1.5" [ref=f1e1363]
- - cell "鍗冨厠" [ref=f1e1367]
- - cell "鐗╂枡" [ref=f1e1371]
- - cell "鍘熸潗鏂�" [ref=f1e1375]
- - cell "2026-07-16 16:51:57" [ref=f1e1379]
- - row [ref=f1e1519]:
- - cell "顫�" [ref=f1e1520]
- - cell "ITEM_20260716006" [ref=f1e1389]
- - cell "閽㈣姱閾濈粸绾�" [ref=f1e1393]
- - cell "JL/L1-40/10-6/1" [ref=f1e1397]
- - cell "鍗冨厠" [ref=f1e1401]
- - cell "浜у搧" [ref=f1e1405]
- - cell "鎴愬搧" [ref=f1e1409]
- - cell "2026-07-16 16:48:49" [ref=f1e1413]
- - row [ref=f1e1417]:
- - cell "顭�" [ref=f1e1418]
- - cell "ITEM_20260716005" [ref=f1e1423]
- - cell "閾濆崟绾�" [ref=f1e1427]
- - cell "L-1.72" [ref=f1e1431]
- - cell "鍗冨厠" [ref=f1e1435]
- - cell "鐗╂枡" [ref=f1e1439]
- - cell "鍗婃垚鍝�" [ref=f1e1443]
- - cell "2026-07-16 16:48:03" [ref=f1e1447]
- - row [ref=f1e1451]:
- - cell "顭�" [ref=f1e1452]
- - cell "ITEM_20260716004" [ref=f1e1457]
- - cell "閾濇潌" [ref=f1e1461]
- - cell "1A60" [ref=f1e1465]
- - cell "鍗冨厠" [ref=f1e1469]
- - cell "鐗╂枡" [ref=f1e1473]
- - cell "鍘熸潗鏂�" [ref=f1e1477]
- - cell "2026-07-16 16:45:13" [ref=f1e1481]
- - generic [ref=f1e1491]:
- - generic [ref=f1e1492]: 鍏� 6 鏉¤褰�
- - generic [ref=f1e1494] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e1495]:
- - textbox "璇烽�夋嫨" [ref=f1e1496]: 20鏉�/椤�
- - generic [ref=f1e1497]: 睿�
- - button "飱�" [ref=f1e1500]
- - button "顧�" [ref=f1e1502]
- - button "顫�" [ref=f1e1504]
- - button "1" [ref=f1e1507] [cursor=pointer]
- - button "顫�" [ref=f1e1508]
- - button "顧�" [ref=f1e1510]
- - button "顦�" [ref=f1e1512]
- - generic [ref=f1e1514]:
- - button "鍙� 娑�" [ref=f1e1515] [cursor=pointer]
- - button "纭� 瀹�" [ref=f1e1517] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-23-20-161Z.yml b/.playwright-mcp/page-2026-08-18T08-23-20-161Z.yml
deleted file mode 100644
index 68e5fbb..0000000
--- a/.playwright-mcp/page-2026-08-18T08-23-20-161Z.yml
+++ /dev/null
@@ -1,451 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=f1e906]: 閽㈣姱閾濈粸绾�
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [ref=f1e922]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e1058]:
- - cell [ref=f1e1059]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]
- - cell [ref=f1e1070]:
- - generic [ref=f1e1074] [cursor=pointer]:
- - combobox [ref=f1e1076]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
- - dialog "鐗╂枡浜у搧閫夋嫨" [ref=f1e1090]:
- - document:
- - generic:
- - generic:
- - button "Close":
- - generic:
- - img "close"
- - generic: 鐗╂枡浜у搧閫夋嫨
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - textbox "鎼滅储鍒嗙被"
- - generic:
- - generic:
- - tree:
- - generic:
- - textbox "for screen reader"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic "鍘熸潗鏂�"
- - generic:
- - generic "鍗婃垚鍝�"
- - generic:
- - generic:
- - img "caret-down"
- - generic "鎴愬搧"
- - generic:
- - generic:
- - img "caret-down"
- - generic "1"
- - generic:
- - generic:
- - img "caret-down"
- - generic "2"
- - generic:
- - generic "33"
- - generic:
- - generic "杈呮枡"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 鐗╂枡缂栫爜
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - textbox "鐗╂枡缂栫爜":
- - /placeholder: 璇疯緭鍏ョ墿鏂欑紪鐮�
- - generic:
- - generic: 鐗╂枡鍚嶇О
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - textbox "鐗╂枡鍚嶇О":
- - /placeholder: 璇疯緭鍏ョ墿鏂欏悕绉�
- - generic:
- - button "閲� 缃�"
- - button "鎼� 绱�"
- - generic: 鏀惰捣
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 鐗╂枡浜у搧鍒楄〃
- - generic:
- - generic:
- - button "顫�"
- - generic:
- - button "瞟�"
- - button "顪�"
- - button "顦�"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - table:
- - rowgroup:
- - row "鐗╂枡缂栫爜 鐗╂枡鍚嶇О 瑙勬牸鍨嬪彿 鍗曚綅 鐗╂枡/浜у搧 鎵�灞炲垎绫� 鍒涘缓鏃堕棿":
- - columnheader
- - columnheader "鐗╂枡缂栫爜"
- - columnheader "鐗╂枡鍚嶇О"
- - columnheader "瑙勬牸鍨嬪彿"
- - columnheader "鍗曚綅"
- - columnheader "鐗╂枡/浜у搧"
- - columnheader "鎵�灞炲垎绫�"
- - columnheader "鍒涘缓鏃堕棿"
- - generic:
- - generic:
- - table:
- - rowgroup:
- - row "顭� ITEM_20260729001 閾濆悎瀵间綋 LH8030JY-10 鍗冪背 鐗╂枡 33 2026-07-29 14:19:03":
- - cell "顭�"
- - cell "ITEM_20260729001"
- - cell "閾濆悎瀵间綋"
- - cell "LH8030JY-10"
- - cell "鍗冪背"
- - cell "鐗╂枡"
- - cell "33"
- - cell "2026-07-29 14:19:03"
- - row "顭� ITEM_20260720001 闇�瑕佺敓浜х殑鎴愬搧11 涓� 鍗冨厠 浜у搧 鎴愬搧 2026-07-20 09:17:13":
- - cell "顭�"
- - cell "ITEM_20260720001"
- - cell "闇�瑕佺敓浜х殑鎴愬搧11"
- - cell "涓�"
- - cell "鍗冨厠"
- - cell "浜у搧"
- - cell "鎴愬搧"
- - cell "2026-07-20 09:17:13"
- - row "顭� ITEM_20260716008 闀�閿岄挗绾� JG3A-1*1.5 鍗冨厠 鐗╂枡 鍘熸潗鏂� 2026-07-16 16:51:57":
- - cell "顭�"
- - cell "ITEM_20260716008"
- - cell "闀�閿岄挗绾�"
- - cell "JG3A-1*1.5"
- - cell "鍗冨厠"
- - cell "鐗╂枡"
- - cell "鍘熸潗鏂�"
- - cell "2026-07-16 16:51:57"
- - row "顫� ITEM_20260716006 閽㈣姱閾濈粸绾� JL/L1-40/10-6/1 鍗冨厠 浜у搧 鎴愬搧 2026-07-16 16:48:49":
- - cell "顫�"
- - cell "ITEM_20260716006"
- - cell "閽㈣姱閾濈粸绾�"
- - cell "JL/L1-40/10-6/1"
- - cell "鍗冨厠"
- - cell "浜у搧"
- - cell "鎴愬搧"
- - cell "2026-07-16 16:48:49"
- - row "顭� ITEM_20260716005 閾濆崟绾� L-1.72 鍗冨厠 鐗╂枡 鍗婃垚鍝� 2026-07-16 16:48:03":
- - cell "顭�"
- - cell "ITEM_20260716005"
- - cell "閾濆崟绾�"
- - cell "L-1.72"
- - cell "鍗冨厠"
- - cell "鐗╂枡"
- - cell "鍗婃垚鍝�"
- - cell "2026-07-16 16:48:03"
- - row "顭� ITEM_20260716004 閾濇潌 1A60 鍗冨厠 鐗╂枡 鍘熸潗鏂� 2026-07-16 16:45:13":
- - cell "顭�"
- - cell "ITEM_20260716004"
- - cell "閾濇潌"
- - cell "1A60"
- - cell "鍗冨厠"
- - cell "鐗╂枡"
- - cell "鍘熸潗鏂�"
- - cell "2026-07-16 16:45:13"
- - generic:
- - generic:
- - generic:
- - generic: 鍏� 6 鏉¤褰�
- - generic:
- - generic:
- - generic "20鏉�/椤�":
- - textbox "璇烽�夋嫨": 20鏉�/椤�
- - generic: 睿�
- - button "飱�"
- - button "顧�"
- - button "顫�"
- - generic:
- - button "1"
- - button "顫�"
- - button "顧�"
- - button "顦�"
- - generic:
- - button "鍙� 娑�"
- - button "纭� 瀹�" [active]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-23-34-308Z.yml b/.playwright-mcp/page-2026-08-18T08-23-34-308Z.yml
deleted file mode 100644
index c6db8d7..0000000
--- a/.playwright-mcp/page-2026-08-18T08-23-34-308Z.yml
+++ /dev/null
@@ -1,288 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=f1e906]: 閽㈣姱閾濈粸绾�
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [expanded] [active] [ref=f1e922]:
- - listbox:
- - option "1"
- - option "2"
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e1058]:
- - cell [ref=f1e1059]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]
- - cell [ref=f1e1070]:
- - generic [ref=f1e1074] [cursor=pointer]:
- - combobox [ref=f1e1076]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 浜х嚎涓�
- - generic: one
- - generic:
- - generic:
- - generic:
- - generic: 浜х嚎浜�
- - generic: two
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-23-42-579Z.yml b/.playwright-mcp/page-2026-08-18T08-23-42-579Z.yml
deleted file mode 100644
index 65817e8..0000000
--- a/.playwright-mcp/page-2026-08-18T08-23-42-579Z.yml
+++ /dev/null
@@ -1,292 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=f1e906]: 閽㈣姱閾濈粸绾�
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e919] [cursor=pointer]:
- - generic: "2"
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [active] [ref=f1e922]:
- - listbox:
- - option "1"
- - option "2" [selected]
- - generic [ref=f1e1522]:
- - generic [ref=f1e1523]: 浜х嚎浜�
- - generic [ref=f1e1524]: two
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e1058]:
- - cell [ref=f1e1059]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]
- - cell [ref=f1e1070]:
- - generic [ref=f1e1074] [cursor=pointer]:
- - combobox [ref=f1e1076]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 浜х嚎涓�
- - generic: one
- - generic:
- - generic:
- - generic:
- - generic: 浜х嚎浜�
- - generic: two
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-23-57-412Z.yml b/.playwright-mcp/page-2026-08-18T08-23-57-412Z.yml
deleted file mode 100644
index 5598bd6..0000000
--- a/.playwright-mcp/page-2026-08-18T08-23-57-412Z.yml
+++ /dev/null
@@ -1,643 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=f1e906]: 閽㈣姱閾濈粸绾�
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [ref=f1e922]
- - generic [ref=f1e1522]:
- - generic [ref=f1e1523]: 浜х嚎浜�
- - generic [ref=f1e1524]: two
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [active] [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e1058]:
- - cell [ref=f1e1059]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]
- - cell [ref=f1e1070]:
- - generic [ref=f1e1074] [cursor=pointer]:
- - combobox [ref=f1e1076]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - button
- - button
- - generic:
- - button "2026骞�"
- - button "8鏈�"
- - button
- - button
- - generic:
- - table:
- - rowgroup:
- - row "涓� 浜� 涓� 鍥� 浜� 鍏� 鏃�":
- - columnheader "涓�"
- - columnheader "浜�"
- - columnheader "涓�"
- - columnheader "鍥�"
- - columnheader "浜�"
- - columnheader "鍏�"
- - columnheader "鏃�"
- - rowgroup:
- - row "27 28 29 30 31 1 2":
- - cell "27"
- - cell "28"
- - cell "29"
- - cell "30"
- - cell "31"
- - cell "1"
- - cell "2"
- - row "3 4 5 6 7 8 9":
- - cell "3"
- - cell "4"
- - cell "5"
- - cell "6"
- - cell "7"
- - cell "8"
- - cell "9"
- - row "10 11 12 13 14 15 16":
- - cell "10"
- - cell "11"
- - cell "12"
- - cell "13"
- - cell "14"
- - cell "15"
- - cell "16"
- - row "17 18 19 20 21 22 23":
- - cell "17"
- - cell "18"
- - cell "19"
- - cell "20"
- - cell "21"
- - cell "22"
- - cell "23"
- - row "24 25 26 27 28 29 30":
- - cell "24"
- - cell "25"
- - cell "26"
- - cell "27"
- - cell "28"
- - cell "29"
- - cell "30"
- - row "31 1 2 3 4 5 6":
- - cell "31"
- - cell "1"
- - cell "2"
- - cell "3"
- - cell "4"
- - cell "5"
- - cell "6"
- - generic:
- - generic:
- - list:
- - listitem:
- - generic: "00"
- - listitem:
- - generic: "01"
- - listitem:
- - generic: "02"
- - listitem:
- - generic: "03"
- - listitem:
- - generic: "04"
- - listitem:
- - generic: "05"
- - listitem:
- - generic: "06"
- - listitem:
- - generic: "07"
- - listitem:
- - generic: "08"
- - listitem:
- - generic: "09"
- - listitem:
- - generic: "10"
- - listitem:
- - generic: "11"
- - listitem:
- - generic: "12"
- - listitem:
- - generic: "13"
- - listitem:
- - generic: "14"
- - listitem:
- - generic: "15"
- - listitem:
- - generic: "16"
- - listitem:
- - generic: "17"
- - listitem:
- - generic: "18"
- - listitem:
- - generic: "19"
- - listitem:
- - generic: "20"
- - listitem:
- - generic: "21"
- - listitem:
- - generic: "22"
- - listitem:
- - generic: "23"
- - list:
- - listitem:
- - generic: "00"
- - listitem:
- - generic: "01"
- - listitem:
- - generic: "02"
- - listitem:
- - generic: "03"
- - listitem:
- - generic: "04"
- - listitem:
- - generic: "05"
- - listitem:
- - generic: "06"
- - listitem:
- - generic: "07"
- - listitem:
- - generic: "08"
- - listitem:
- - generic: "09"
- - listitem:
- - generic: "10"
- - listitem:
- - generic: "11"
- - listitem:
- - generic: "12"
- - listitem:
- - generic: "13"
- - listitem:
- - generic: "14"
- - listitem:
- - generic: "15"
- - listitem:
- - generic: "16"
- - listitem:
- - generic: "17"
- - listitem:
- - generic: "18"
- - listitem:
- - generic: "19"
- - listitem:
- - generic: "20"
- - listitem:
- - generic: "21"
- - listitem:
- - generic: "22"
- - listitem:
- - generic: "23"
- - listitem:
- - generic: "24"
- - listitem:
- - generic: "25"
- - listitem:
- - generic: "26"
- - listitem:
- - generic: "27"
- - listitem:
- - generic: "28"
- - listitem:
- - generic: "29"
- - listitem:
- - generic: "30"
- - listitem:
- - generic: "31"
- - listitem:
- - generic: "32"
- - listitem:
- - generic: "33"
- - listitem:
- - generic: "34"
- - listitem:
- - generic: "35"
- - listitem:
- - generic: "36"
- - listitem:
- - generic: "37"
- - listitem:
- - generic: "38"
- - listitem:
- - generic: "39"
- - listitem:
- - generic: "40"
- - listitem:
- - generic: "41"
- - listitem:
- - generic: "42"
- - listitem:
- - generic: "43"
- - listitem:
- - generic: "44"
- - listitem:
- - generic: "45"
- - listitem:
- - generic: "46"
- - listitem:
- - generic: "47"
- - listitem:
- - generic: "48"
- - listitem:
- - generic: "49"
- - listitem:
- - generic: "50"
- - listitem:
- - generic: "51"
- - listitem:
- - generic: "52"
- - listitem:
- - generic: "53"
- - listitem:
- - generic: "54"
- - listitem:
- - generic: "55"
- - listitem:
- - generic: "56"
- - listitem:
- - generic: "57"
- - listitem:
- - generic: "58"
- - listitem:
- - generic: "59"
- - list:
- - listitem:
- - generic: "00"
- - listitem:
- - generic: "01"
- - listitem:
- - generic: "02"
- - listitem:
- - generic: "03"
- - listitem:
- - generic: "04"
- - listitem:
- - generic: "05"
- - listitem:
- - generic: "06"
- - listitem:
- - generic: "07"
- - listitem:
- - generic: "08"
- - listitem:
- - generic: "09"
- - listitem:
- - generic: "10"
- - listitem:
- - generic: "11"
- - listitem:
- - generic: "12"
- - listitem:
- - generic: "13"
- - listitem:
- - generic: "14"
- - listitem:
- - generic: "15"
- - listitem:
- - generic: "16"
- - listitem:
- - generic: "17"
- - listitem:
- - generic: "18"
- - listitem:
- - generic: "19"
- - listitem:
- - generic: "20"
- - listitem:
- - generic: "21"
- - listitem:
- - generic: "22"
- - listitem:
- - generic: "23"
- - listitem:
- - generic: "24"
- - listitem:
- - generic: "25"
- - listitem:
- - generic: "26"
- - listitem:
- - generic: "27"
- - listitem:
- - generic: "28"
- - listitem:
- - generic: "29"
- - listitem:
- - generic: "30"
- - listitem:
- - generic: "31"
- - listitem:
- - generic: "32"
- - listitem:
- - generic: "33"
- - listitem:
- - generic: "34"
- - listitem:
- - generic: "35"
- - listitem:
- - generic: "36"
- - listitem:
- - generic: "37"
- - listitem:
- - generic: "38"
- - listitem:
- - generic: "39"
- - listitem:
- - generic: "40"
- - listitem:
- - generic: "41"
- - listitem:
- - generic: "42"
- - listitem:
- - generic: "43"
- - listitem:
- - generic: "44"
- - listitem:
- - generic: "45"
- - listitem:
- - generic: "46"
- - listitem:
- - generic: "47"
- - listitem:
- - generic: "48"
- - listitem:
- - generic: "49"
- - listitem:
- - generic: "50"
- - listitem:
- - generic: "51"
- - listitem:
- - generic: "52"
- - listitem:
- - generic: "53"
- - listitem:
- - generic: "54"
- - listitem:
- - generic: "55"
- - listitem:
- - generic: "56"
- - listitem:
- - generic: "57"
- - listitem:
- - generic: "58"
- - listitem:
- - generic: "59"
- - generic:
- - list:
- - listitem: 姝ゅ埢
- - listitem:
- - button "纭� 瀹�" [disabled]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-24-05-557Z.yml b/.playwright-mcp/page-2026-08-18T08-24-05-557Z.yml
deleted file mode 100644
index bf1f170..0000000
--- a/.playwright-mcp/page-2026-08-18T08-24-05-557Z.yml
+++ /dev/null
@@ -1,647 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=f1e906]: 閽㈣姱閾濈粸绾�
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [ref=f1e922]
- - generic [ref=f1e1522]:
- - generic [ref=f1e1523]: 浜х嚎浜�
- - generic [ref=f1e1524]: two
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [active] [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - text: 2026-08-18 08:00:00
- - generic:
- - img "calendar"
- - button [ref=f1e1529] [cursor=pointer]:
- - img "close-circle" [ref=f1e1530]
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e1058]:
- - cell [ref=f1e1059]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]
- - cell [ref=f1e1070]:
- - generic [ref=f1e1074] [cursor=pointer]:
- - combobox [ref=f1e1076]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - button
- - button
- - generic:
- - button "2026骞�"
- - button "8鏈�"
- - button
- - button
- - generic:
- - table:
- - rowgroup:
- - row "涓� 浜� 涓� 鍥� 浜� 鍏� 鏃�":
- - columnheader "涓�"
- - columnheader "浜�"
- - columnheader "涓�"
- - columnheader "鍥�"
- - columnheader "浜�"
- - columnheader "鍏�"
- - columnheader "鏃�"
- - rowgroup:
- - row "27 28 29 30 31 1 2":
- - cell "27"
- - cell "28"
- - cell "29"
- - cell "30"
- - cell "31"
- - cell "1"
- - cell "2"
- - row "3 4 5 6 7 8 9":
- - cell "3"
- - cell "4"
- - cell "5"
- - cell "6"
- - cell "7"
- - cell "8"
- - cell "9"
- - row "10 11 12 13 14 15 16":
- - cell "10"
- - cell "11"
- - cell "12"
- - cell "13"
- - cell "14"
- - cell "15"
- - cell "16"
- - row "17 18 19 20 21 22 23":
- - cell "17"
- - cell "18"
- - cell "19"
- - cell "20"
- - cell "21"
- - cell "22"
- - cell "23"
- - row "24 25 26 27 28 29 30":
- - cell "24"
- - cell "25"
- - cell "26"
- - cell "27"
- - cell "28"
- - cell "29"
- - cell "30"
- - row "31 1 2 3 4 5 6":
- - cell "31"
- - cell "1"
- - cell "2"
- - cell "3"
- - cell "4"
- - cell "5"
- - cell "6"
- - generic:
- - generic: 2026-08-18 08:00:00
- - generic:
- - list:
- - listitem:
- - generic: "00"
- - listitem:
- - generic: "01"
- - listitem:
- - generic: "02"
- - listitem:
- - generic: "03"
- - listitem:
- - generic: "04"
- - listitem:
- - generic: "05"
- - listitem:
- - generic: "06"
- - listitem:
- - generic: "07"
- - listitem:
- - generic: "08"
- - listitem:
- - generic: "09"
- - listitem:
- - generic: "10"
- - listitem:
- - generic: "11"
- - listitem:
- - generic: "12"
- - listitem:
- - generic: "13"
- - listitem:
- - generic: "14"
- - listitem:
- - generic: "15"
- - listitem:
- - generic: "16"
- - listitem:
- - generic: "17"
- - listitem:
- - generic: "18"
- - listitem:
- - generic: "19"
- - listitem:
- - generic: "20"
- - listitem:
- - generic: "21"
- - listitem:
- - generic: "22"
- - listitem:
- - generic: "23"
- - list:
- - listitem:
- - generic: "00"
- - listitem:
- - generic: "01"
- - listitem:
- - generic: "02"
- - listitem:
- - generic: "03"
- - listitem:
- - generic: "04"
- - listitem:
- - generic: "05"
- - listitem:
- - generic: "06"
- - listitem:
- - generic: "07"
- - listitem:
- - generic: "08"
- - listitem:
- - generic: "09"
- - listitem:
- - generic: "10"
- - listitem:
- - generic: "11"
- - listitem:
- - generic: "12"
- - listitem:
- - generic: "13"
- - listitem:
- - generic: "14"
- - listitem:
- - generic: "15"
- - listitem:
- - generic: "16"
- - listitem:
- - generic: "17"
- - listitem:
- - generic: "18"
- - listitem:
- - generic: "19"
- - listitem:
- - generic: "20"
- - listitem:
- - generic: "21"
- - listitem:
- - generic: "22"
- - listitem:
- - generic: "23"
- - listitem:
- - generic: "24"
- - listitem:
- - generic: "25"
- - listitem:
- - generic: "26"
- - listitem:
- - generic: "27"
- - listitem:
- - generic: "28"
- - listitem:
- - generic: "29"
- - listitem:
- - generic: "30"
- - listitem:
- - generic: "31"
- - listitem:
- - generic: "32"
- - listitem:
- - generic: "33"
- - listitem:
- - generic: "34"
- - listitem:
- - generic: "35"
- - listitem:
- - generic: "36"
- - listitem:
- - generic: "37"
- - listitem:
- - generic: "38"
- - listitem:
- - generic: "39"
- - listitem:
- - generic: "40"
- - listitem:
- - generic: "41"
- - listitem:
- - generic: "42"
- - listitem:
- - generic: "43"
- - listitem:
- - generic: "44"
- - listitem:
- - generic: "45"
- - listitem:
- - generic: "46"
- - listitem:
- - generic: "47"
- - listitem:
- - generic: "48"
- - listitem:
- - generic: "49"
- - listitem:
- - generic: "50"
- - listitem:
- - generic: "51"
- - listitem:
- - generic: "52"
- - listitem:
- - generic: "53"
- - listitem:
- - generic: "54"
- - listitem:
- - generic: "55"
- - listitem:
- - generic: "56"
- - listitem:
- - generic: "57"
- - listitem:
- - generic: "58"
- - listitem:
- - generic: "59"
- - list:
- - listitem:
- - generic: "00"
- - listitem:
- - generic: "01"
- - listitem:
- - generic: "02"
- - listitem:
- - generic: "03"
- - listitem:
- - generic: "04"
- - listitem:
- - generic: "05"
- - listitem:
- - generic: "06"
- - listitem:
- - generic: "07"
- - listitem:
- - generic: "08"
- - listitem:
- - generic: "09"
- - listitem:
- - generic: "10"
- - listitem:
- - generic: "11"
- - listitem:
- - generic: "12"
- - listitem:
- - generic: "13"
- - listitem:
- - generic: "14"
- - listitem:
- - generic: "15"
- - listitem:
- - generic: "16"
- - listitem:
- - generic: "17"
- - listitem:
- - generic: "18"
- - listitem:
- - generic: "19"
- - listitem:
- - generic: "20"
- - listitem:
- - generic: "21"
- - listitem:
- - generic: "22"
- - listitem:
- - generic: "23"
- - listitem:
- - generic: "24"
- - listitem:
- - generic: "25"
- - listitem:
- - generic: "26"
- - listitem:
- - generic: "27"
- - listitem:
- - generic: "28"
- - listitem:
- - generic: "29"
- - listitem:
- - generic: "30"
- - listitem:
- - generic: "31"
- - listitem:
- - generic: "32"
- - listitem:
- - generic: "33"
- - listitem:
- - generic: "34"
- - listitem:
- - generic: "35"
- - listitem:
- - generic: "36"
- - listitem:
- - generic: "37"
- - listitem:
- - generic: "38"
- - listitem:
- - generic: "39"
- - listitem:
- - generic: "40"
- - listitem:
- - generic: "41"
- - listitem:
- - generic: "42"
- - listitem:
- - generic: "43"
- - listitem:
- - generic: "44"
- - listitem:
- - generic: "45"
- - listitem:
- - generic: "46"
- - listitem:
- - generic: "47"
- - listitem:
- - generic: "48"
- - listitem:
- - generic: "49"
- - listitem:
- - generic: "50"
- - listitem:
- - generic: "51"
- - listitem:
- - generic: "52"
- - listitem:
- - generic: "53"
- - listitem:
- - generic: "54"
- - listitem:
- - generic: "55"
- - listitem:
- - generic: "56"
- - listitem:
- - generic: "57"
- - listitem:
- - generic: "58"
- - listitem:
- - generic: "59"
- - generic:
- - list:
- - listitem: 姝ゅ埢
- - listitem:
- - button "纭� 瀹�"
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-24-41-010Z.yml b/.playwright-mcp/page-2026-08-18T08-24-41-010Z.yml
deleted file mode 100644
index 7a1ddfe..0000000
--- a/.playwright-mcp/page-2026-08-18T08-24-41-010Z.yml
+++ /dev/null
@@ -1,497 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=f1e906]: 閽㈣姱閾濈粸绾�
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [ref=f1e922]
- - generic [ref=f1e1522]:
- - generic [ref=f1e1523]: 浜х嚎浜�
- - generic [ref=f1e1524]: two
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - text: 2026-08-18 08:00:00
- - generic:
- - img "calendar"
- - button [ref=f1e1529] [cursor=pointer]:
- - img "close-circle" [ref=f1e1530]
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e1058]:
- - cell [ref=f1e1059]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]
- - cell [ref=f1e1070]:
- - generic [ref=f1e1074] [cursor=pointer]:
- - combobox [ref=f1e1076]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
- - dialog "浜哄憳閫夋嫨" [ref=f1e1534]:
- - document:
- - generic [ref=f1e1535]:
- - button "Close" [ref=f1e1536] [cursor=pointer]:
- - img "close" [ref=f1e1538]
- - generic [ref=f1e1541]: 浜哄憳閫夋嫨
- - generic [ref=f1e1544]:
- - generic [ref=f1e1546]:
- - textbox "鎼滅储閮ㄩ棬" [ref=f1e1553]
- - tree [ref=f1e1557]:
- - generic:
- - textbox "for screen reader"
- - generic [ref=f1e1561]:
- - generic [ref=f1e1562]:
- - img "caret-down" [ref=f1e1564] [cursor=pointer]
- - generic "鎬诲叕鍙�" [ref=f1e1567] [cursor=pointer]
- - generic [ref=f1e1568]:
- - img "caret-down" [ref=f1e1571] [cursor=pointer]
- - generic "娣卞湷鎬诲叕鍙�" [ref=f1e1574] [cursor=pointer]
- - generic "鐮斿彂閮ㄩ棬" [ref=f1e1578] [cursor=pointer]
- - generic "甯傚満閮ㄩ棬" [ref=f1e1582] [cursor=pointer]
- - generic "娴嬭瘯閮ㄩ棬" [ref=f1e1586] [cursor=pointer]
- - generic "璐㈠姟閮ㄩ棬" [ref=f1e1590] [cursor=pointer]
- - generic "杩愮淮閮ㄩ棬" [ref=f1e1594] [cursor=pointer]
- - generic [ref=f1e1595]:
- - img "caret-down" [ref=f1e1598] [cursor=pointer]
- - generic "闀挎矙鍒嗗叕鍙�" [ref=f1e1601] [cursor=pointer]
- - generic "甯傚満閮ㄩ棬" [ref=f1e1605] [cursor=pointer]
- - generic "璐㈠姟閮ㄩ棬" [ref=f1e1609] [cursor=pointer]
- - generic "鏂伴儴闂�" [ref=f1e1612] [cursor=pointer]
- - generic "椤剁骇閮ㄩ棬" [ref=f1e1615] [cursor=pointer]
- - generic "鏌愪釜瀛愰儴闂�" [ref=f1e1618] [cursor=pointer]
- - generic "鏌愪釜瀛愰儴闂� 2" [ref=f1e1621] [cursor=pointer]
- - generic [ref=f1e1624]:
- - generic [ref=f1e1629]:
- - generic [ref=f1e1630]:
- - generic [ref=f1e1631]: 鐢ㄦ埛鍚嶇О
- - textbox "鐢ㄦ埛鍚嶇О" [ref=f1e1637]:
- - /placeholder: 璇疯緭鍏ョ敤鎴峰悕绉�
- - generic [ref=f1e1639]:
- - generic [ref=f1e1640]: 鐢ㄦ埛鏄电О
- - textbox "鐢ㄦ埛鏄电О" [ref=f1e1646]:
- - /placeholder: 璇疯緭鍏ョ敤鎴锋樀绉�
- - generic [ref=f1e1648]:
- - generic [ref=f1e1649]: 鎵嬫満鍙风爜
- - textbox "鎵嬫満鍙风爜" [ref=f1e1655]:
- - /placeholder: 璇疯緭鍏ユ墜鏈哄彿鐮�
- - generic [ref=f1e1657]:
- - generic [ref=f1e1658]: 鐘舵��
- - generic [ref=f1e1664] [cursor=pointer]:
- - combobox "鐘舵��" [ref=f1e1666]
- - generic "寮�鍚�" [ref=f1e1667]
- - generic [ref=f1e1672]:
- - button "閲� 缃�" [ref=f1e1673] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e1675] [cursor=pointer]
- - generic [ref=f1e1677] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e1684]:
- - generic [ref=f1e1686]:
- - generic [ref=f1e1687]: 鐢ㄦ埛鍒楄〃
- - button "顫�" [ref=f1e1692] [cursor=pointer]
- - generic [ref=f1e1694]:
- - button "瞟�" [ref=f1e1695] [cursor=pointer]
- - button "顪�" [ref=f1e1697] [cursor=pointer]
- - button "顦�" [ref=f1e1699] [cursor=pointer]
- - generic [ref=f1e1707]:
- - table [ref=f1e1711]:
- - rowgroup [ref=f1e1719]:
- - row "鐢ㄦ埛缂栧彿 鐢ㄦ埛鍚嶇О 鐢ㄦ埛鏄电О 鎵嬫満鍙风爜 鐘舵��" [ref=f1e1720]:
- - columnheader [ref=f1e1721]
- - columnheader "鐢ㄦ埛缂栧彿" [ref=f1e1724]
- - columnheader "鐢ㄦ埛鍚嶇О" [ref=f1e1729]
- - columnheader "鐢ㄦ埛鏄电О" [ref=f1e1734]
- - columnheader "鎵嬫満鍙风爜" [ref=f1e1739]
- - columnheader "鐘舵��" [ref=f1e1744]
- - table [ref=f1e1752]:
- - rowgroup [ref=f1e1760]:
- - row [ref=f1e1761]:
- - cell "顭�" [ref=f1e1762]
- - cell "230" [ref=f1e1767]
- - cell "18333333333" [ref=f1e1771]
- - cell "222" [ref=f1e1775]
- - cell "18333333333" [ref=f1e1779]
- - cell "寮�鍚�" [ref=f1e1783]
- - row [ref=f1e1787]:
- - cell "顭�" [ref=f1e1788]
- - cell "229" [ref=f1e1793]
- - cell "15822054764" [ref=f1e1797]
- - cell "鏀惧亣" [ref=f1e1801]
- - cell "15822054764" [ref=f1e1805]
- - cell "寮�鍚�" [ref=f1e1809]
- - row [ref=f1e1813]:
- - cell "顭�" [ref=f1e1814]
- - cell "228" [ref=f1e1819]
- - cell "15822054766" [ref=f1e1823]
- - cell "涓嶆兂涓婄彮" [ref=f1e1827]
- - cell "15822054766" [ref=f1e1831]
- - cell "寮�鍚�" [ref=f1e1835]
- - row [ref=f1e1839]:
- - cell "顭�" [ref=f1e1840]
- - cell "227" [ref=f1e1845]
- - cell "15822054767" [ref=f1e1849]
- - cell "澶ф槑鏄�" [ref=f1e1853]
- - cell "15822054767" [ref=f1e1857]
- - cell "寮�鍚�" [ref=f1e1861]
- - row [ref=f1e1865]:
- - cell "顭�" [ref=f1e1866]
- - cell "226" [ref=f1e1871]
- - cell "15822054763" [ref=f1e1875]
- - cell "鍗冨厠" [ref=f1e1879]
- - cell "15822054763" [ref=f1e1883]
- - cell "寮�鍚�" [ref=f1e1887]
- - row [ref=f1e1891]:
- - cell "顭�" [ref=f1e1892]
- - cell "225" [ref=f1e1897]
- - cell "15822054762" [ref=f1e1901]
- - cell "鍗楃摐瀛�" [ref=f1e1905]
- - cell "15822054762" [ref=f1e1909]
- - cell "寮�鍚�" [ref=f1e1913]
- - row "顭� 144 aoteman001 aoteman00112 鍏抽棴" [ref=f1e1917]:
- - cell "顭�" [ref=f1e1918]
- - cell "144" [ref=f1e1923]
- - cell "aoteman001" [ref=f1e1927]
- - cell "aoteman00112" [ref=f1e1931]
- - cell [ref=f1e1935]
- - cell "鍏抽棴" [ref=f1e1939]
- - row "顭� 143 a00001 a00001 寮�鍚�" [ref=f1e1943]:
- - cell "顭�" [ref=f1e1944]
- - cell "143" [ref=f1e1949]
- - cell "a00001" [ref=f1e1953]
- - cell "a00001" [ref=f1e1957]
- - cell [ref=f1e1961]
- - cell "寮�鍚�" [ref=f1e1965]
- - row [ref=f1e1969]:
- - cell "顭�" [ref=f1e1970]
- - cell "142" [ref=f1e1975]
- - cell "test01" [ref=f1e1979]
- - cell "test01" [ref=f1e1983]
- - cell "19021719925" [ref=f1e1987]
- - cell "寮�鍚�" [ref=f1e1991]
- - row "顭� 141 admin1 鏂扮敤鎴� 寮�鍚�" [ref=f1e1995]:
- - cell "顭�" [ref=f1e1996]
- - cell "141" [ref=f1e2001]
- - cell "admin1" [ref=f1e2005]
- - cell "鏂扮敤鎴�" [ref=f1e2009]
- - cell [ref=f1e2013]
- - cell "寮�鍚�" [ref=f1e2017]
- - row "顭� 139 wwbwwb 灏忕澶� 寮�鍚�" [ref=f1e2021]:
- - cell "顭�" [ref=f1e2022]
- - cell "139" [ref=f1e2027]
- - cell "wwbwwb" [ref=f1e2031]
- - cell "灏忕澶�" [ref=f1e2035]
- - cell [ref=f1e2039]
- - cell "寮�鍚�" [ref=f1e2043]
- - row [ref=f1e2047]:
- - cell "顭�" [ref=f1e2048]
- - cell "118" [ref=f1e2053]
- - cell "goudan" [ref=f1e2057]
- - cell "鐙楄泲" [ref=f1e2061]
- - cell "15601691239" [ref=f1e2065]
- - cell "寮�鍚�" [ref=f1e2069]
- - row [ref=f1e2073]:
- - cell "顭�" [ref=f1e2074]
- - cell "117" [ref=f1e2079]
- - cell "admin123" [ref=f1e2083]
- - cell "娴嬭瘯鍙�02" [ref=f1e2087]
- - cell "15601691234" [ref=f1e2091]
- - cell "寮�鍚�" [ref=f1e2095]
- - row [ref=f1e2099]:
- - cell "顭�" [ref=f1e2100]
- - cell "115" [ref=f1e2105]
- - cell "aotemane" [ref=f1e2109]
- - cell "闃垮憜" [ref=f1e2113]
- - cell "15601691229" [ref=f1e2117]
- - cell "寮�鍚�" [ref=f1e2121]
- - row [ref=f1e2125]:
- - cell "顭�" [ref=f1e2126]
- - cell "114" [ref=f1e2131]
- - cell "hrmgr" [ref=f1e2135]
- - cell "hr 灏忓濮�" [ref=f1e2139]
- - cell "15601691236" [ref=f1e2143]
- - cell "寮�鍚�" [ref=f1e2147]
- - row [ref=f1e2151]:
- - cell "顭�" [ref=f1e2152]
- - cell "113" [ref=f1e2157]
- - cell "aoteman" [ref=f1e2161]
- - cell "绠$悊鍛�1" [ref=f1e2165]
- - cell "15601691300" [ref=f1e2169]
- - cell "寮�鍚�" [ref=f1e2173]
- - row [ref=f1e2177]:
- - cell "顭�" [ref=f1e2178]
- - cell "112" [ref=f1e2183]
- - cell "newobject" [ref=f1e2187]
- - cell "鏂板璞�" [ref=f1e2191]
- - cell "15601691235" [ref=f1e2195]
- - cell "寮�鍚�" [ref=f1e2199]
- - row "顭� 111 test 娴嬭瘯鐢ㄦ埛 寮�鍚�" [ref=f1e2203]:
- - cell "顭�" [ref=f1e2204]
- - cell "111" [ref=f1e2209]
- - cell "test" [ref=f1e2213]
- - cell "娴嬭瘯鐢ㄦ埛" [ref=f1e2217]
- - cell [ref=f1e2221]
- - cell "寮�鍚�" [ref=f1e2225]
- - row [ref=f1e2290]:
- - cell "顫�" [ref=f1e2291]
- - cell "1" [ref=f1e2235]
- - cell "admin" [ref=f1e2239]
- - cell "瓒呯骇绠$悊鍛�" [ref=f1e2243]
- - cell "18818260272" [ref=f1e2247]
- - cell "寮�鍚�" [ref=f1e2251]
- - generic [ref=f1e2262]:
- - generic [ref=f1e2263]: 鍏� 19 鏉¤褰�
- - generic [ref=f1e2265] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e2266]:
- - textbox "璇烽�夋嫨" [ref=f1e2267]: 20鏉�/椤�
- - generic [ref=f1e2268]: 睿�
- - button "飱�" [ref=f1e2271]
- - button "顧�" [ref=f1e2273]
- - button "顫�" [ref=f1e2275]
- - button "1" [ref=f1e2278] [cursor=pointer]
- - button "顫�" [ref=f1e2279]
- - button "顧�" [ref=f1e2281]
- - button "顦�" [ref=f1e2283]
- - generic [ref=f1e2285]:
- - button "鍙� 娑�" [ref=f1e2286] [cursor=pointer]
- - button "纭� 瀹�" [ref=f1e2288] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-24-47-027Z.yml b/.playwright-mcp/page-2026-08-18T08-24-47-027Z.yml
deleted file mode 100644
index f447251..0000000
--- a/.playwright-mcp/page-2026-08-18T08-24-47-027Z.yml
+++ /dev/null
@@ -1,566 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]: 瓒呯骇绠$悊鍛�
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=f1e906]: 閽㈣姱閾濈粸绾�
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [ref=f1e922]
- - generic [ref=f1e1522]:
- - generic [ref=f1e1523]: 浜х嚎浜�
- - generic [ref=f1e1524]: two
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - text: 2026-08-18 08:00:00
- - generic:
- - img "calendar"
- - button [ref=f1e1529] [cursor=pointer]:
- - img "close-circle" [ref=f1e1530]
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e1058]:
- - cell [ref=f1e1059]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]
- - cell [ref=f1e1070]:
- - generic [ref=f1e1074] [cursor=pointer]:
- - combobox [ref=f1e1076]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
- - dialog "浜哄憳閫夋嫨" [ref=f1e1534]:
- - document:
- - generic:
- - generic:
- - button "Close":
- - generic:
- - img "close"
- - generic: 浜哄憳閫夋嫨
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - textbox "鎼滅储閮ㄩ棬"
- - generic:
- - generic:
- - tree:
- - generic:
- - textbox "for screen reader"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - img "caret-down"
- - generic "鎬诲叕鍙�"
- - generic:
- - generic:
- - img "caret-down"
- - generic "娣卞湷鎬诲叕鍙�"
- - generic:
- - generic "鐮斿彂閮ㄩ棬"
- - generic:
- - generic "甯傚満閮ㄩ棬"
- - generic:
- - generic "娴嬭瘯閮ㄩ棬"
- - generic:
- - generic "璐㈠姟閮ㄩ棬"
- - generic:
- - generic "杩愮淮閮ㄩ棬"
- - generic:
- - generic:
- - img "caret-down"
- - generic "闀挎矙鍒嗗叕鍙�"
- - generic:
- - generic "甯傚満閮ㄩ棬"
- - generic:
- - generic "璐㈠姟閮ㄩ棬"
- - generic:
- - generic "鏂伴儴闂�"
- - generic:
- - generic "椤剁骇閮ㄩ棬"
- - generic:
- - generic "鏌愪釜瀛愰儴闂�"
- - generic:
- - generic "鏌愪釜瀛愰儴闂� 2"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 鐢ㄦ埛鍚嶇О
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - textbox "鐢ㄦ埛鍚嶇О":
- - /placeholder: 璇疯緭鍏ョ敤鎴峰悕绉�
- - generic:
- - generic: 鐢ㄦ埛鏄电О
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - textbox "鐢ㄦ埛鏄电О":
- - /placeholder: 璇疯緭鍏ョ敤鎴锋樀绉�
- - generic:
- - generic: 鎵嬫満鍙风爜
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - textbox "鎵嬫満鍙风爜":
- - /placeholder: 璇疯緭鍏ユ墜鏈哄彿鐮�
- - generic:
- - generic: 鐘舵��
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - combobox "鐘舵��"
- - generic "寮�鍚�"
- - generic:
- - button "閲� 缃�"
- - button "鎼� 绱�"
- - generic: 鏀惰捣
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 鐢ㄦ埛鍒楄〃
- - generic:
- - generic:
- - button "顫�"
- - generic:
- - button "瞟�"
- - button "顪�"
- - button "顦�"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - table:
- - rowgroup:
- - row "鐢ㄦ埛缂栧彿 鐢ㄦ埛鍚嶇О 鐢ㄦ埛鏄电О 鎵嬫満鍙风爜 鐘舵��":
- - columnheader
- - columnheader "鐢ㄦ埛缂栧彿"
- - columnheader "鐢ㄦ埛鍚嶇О"
- - columnheader "鐢ㄦ埛鏄电О"
- - columnheader "鎵嬫満鍙风爜"
- - columnheader "鐘舵��"
- - generic:
- - generic:
- - table:
- - rowgroup:
- - row "顭� 230 18333333333 222 18333333333 寮�鍚�":
- - cell "顭�"
- - cell "230"
- - cell "18333333333"
- - cell "222"
- - cell "18333333333"
- - cell "寮�鍚�"
- - row "顭� 229 15822054764 鏀惧亣 15822054764 寮�鍚�":
- - cell "顭�"
- - cell "229"
- - cell "15822054764"
- - cell "鏀惧亣"
- - cell "15822054764"
- - cell "寮�鍚�"
- - row "顭� 228 15822054766 涓嶆兂涓婄彮 15822054766 寮�鍚�":
- - cell "顭�"
- - cell "228"
- - cell "15822054766"
- - cell "涓嶆兂涓婄彮"
- - cell "15822054766"
- - cell "寮�鍚�"
- - row "顭� 227 15822054767 澶ф槑鏄� 15822054767 寮�鍚�":
- - cell "顭�"
- - cell "227"
- - cell "15822054767"
- - cell "澶ф槑鏄�"
- - cell "15822054767"
- - cell "寮�鍚�"
- - row "顭� 226 15822054763 鍗冨厠 15822054763 寮�鍚�":
- - cell "顭�"
- - cell "226"
- - cell "15822054763"
- - cell "鍗冨厠"
- - cell "15822054763"
- - cell "寮�鍚�"
- - row "顭� 225 15822054762 鍗楃摐瀛� 15822054762 寮�鍚�":
- - cell "顭�"
- - cell "225"
- - cell "15822054762"
- - cell "鍗楃摐瀛�"
- - cell "15822054762"
- - cell "寮�鍚�"
- - row "顭� 144 aoteman001 aoteman00112 鍏抽棴":
- - cell "顭�"
- - cell "144"
- - cell "aoteman001"
- - cell "aoteman00112"
- - cell
- - cell "鍏抽棴"
- - row "顭� 143 a00001 a00001 寮�鍚�":
- - cell "顭�"
- - cell "143"
- - cell "a00001"
- - cell "a00001"
- - cell
- - cell "寮�鍚�"
- - row "顭� 142 test01 test01 19021719925 寮�鍚�":
- - cell "顭�"
- - cell "142"
- - cell "test01"
- - cell "test01"
- - cell "19021719925"
- - cell "寮�鍚�"
- - row "顭� 141 admin1 鏂扮敤鎴� 寮�鍚�":
- - cell "顭�"
- - cell "141"
- - cell "admin1"
- - cell "鏂扮敤鎴�"
- - cell
- - cell "寮�鍚�"
- - row "顭� 139 wwbwwb 灏忕澶� 寮�鍚�":
- - cell "顭�"
- - cell "139"
- - cell "wwbwwb"
- - cell "灏忕澶�"
- - cell
- - cell "寮�鍚�"
- - row "顭� 118 goudan 鐙楄泲 15601691239 寮�鍚�":
- - cell "顭�"
- - cell "118"
- - cell "goudan"
- - cell "鐙楄泲"
- - cell "15601691239"
- - cell "寮�鍚�"
- - row "顭� 117 admin123 娴嬭瘯鍙�02 15601691234 寮�鍚�":
- - cell "顭�"
- - cell "117"
- - cell "admin123"
- - cell "娴嬭瘯鍙�02"
- - cell "15601691234"
- - cell "寮�鍚�"
- - row "顭� 115 aotemane 闃垮憜 15601691229 寮�鍚�":
- - cell "顭�"
- - cell "115"
- - cell "aotemane"
- - cell "闃垮憜"
- - cell "15601691229"
- - cell "寮�鍚�"
- - row "顭� 114 hrmgr hr 灏忓濮� 15601691236 寮�鍚�":
- - cell "顭�"
- - cell "114"
- - cell "hrmgr"
- - cell "hr 灏忓濮�"
- - cell "15601691236"
- - cell "寮�鍚�"
- - row "顭� 113 aoteman 绠$悊鍛�1 15601691300 寮�鍚�":
- - cell "顭�"
- - cell "113"
- - cell "aoteman"
- - cell "绠$悊鍛�1"
- - cell "15601691300"
- - cell "寮�鍚�"
- - row "顭� 112 newobject 鏂板璞� 15601691235 寮�鍚�":
- - cell "顭�"
- - cell "112"
- - cell "newobject"
- - cell "鏂板璞�"
- - cell "15601691235"
- - cell "寮�鍚�"
- - row "顭� 111 test 娴嬭瘯鐢ㄦ埛 寮�鍚�":
- - cell "顭�"
- - cell "111"
- - cell "test"
- - cell "娴嬭瘯鐢ㄦ埛"
- - cell
- - cell "寮�鍚�"
- - row "顫� 1 admin 瓒呯骇绠$悊鍛� 18818260272 寮�鍚�":
- - cell "顫�"
- - cell "1"
- - cell "admin"
- - cell "瓒呯骇绠$悊鍛�"
- - cell "18818260272"
- - cell "寮�鍚�"
- - generic:
- - generic:
- - generic:
- - generic: 鍏� 19 鏉¤褰�
- - generic:
- - generic:
- - generic "20鏉�/椤�":
- - textbox "璇烽�夋嫨": 20鏉�/椤�
- - generic: 睿�
- - button "飱�"
- - button "顧�"
- - button "顫�"
- - generic:
- - button "1"
- - button "顫�"
- - button "顧�"
- - button "顦�"
- - generic:
- - button "鍙� 娑�"
- - button "纭� 瀹�" [active]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-25-41-120Z.yml b/.playwright-mcp/page-2026-08-18T08-25-41-120Z.yml
deleted file mode 100644
index c5ea970..0000000
--- a/.playwright-mcp/page-2026-08-18T08-25-41-120Z.yml
+++ /dev/null
@@ -1,497 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]: 瓒呯骇绠$悊鍛�
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=f1e906]: 閽㈣姱閾濈粸绾�
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [ref=f1e922]
- - generic [ref=f1e1522]:
- - generic [ref=f1e1523]: 浜х嚎浜�
- - generic [ref=f1e1524]: two
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - text: 2026-08-18 08:00:00
- - generic:
- - img "calendar"
- - button [ref=f1e1529] [cursor=pointer]:
- - img "close-circle" [ref=f1e1530]
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e1058]:
- - cell [ref=f1e1059]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]
- - cell [ref=f1e1070]:
- - generic [ref=f1e1074] [cursor=pointer]:
- - combobox [ref=f1e1076]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
- - dialog "浜哄憳閫夋嫨" [ref=f1e2293]:
- - document:
- - generic [ref=f1e2294]:
- - button "Close" [ref=f1e2295] [cursor=pointer]:
- - img "close" [ref=f1e2297]
- - generic [ref=f1e2300]: 浜哄憳閫夋嫨
- - generic [ref=f1e2303]:
- - generic [ref=f1e2305]:
- - textbox "鎼滅储閮ㄩ棬" [ref=f1e2312]
- - tree [ref=f1e2316]:
- - generic:
- - textbox "for screen reader"
- - generic [ref=f1e2320]:
- - generic [ref=f1e2321]:
- - img "caret-down" [ref=f1e2323] [cursor=pointer]
- - generic "鎬诲叕鍙�" [ref=f1e2326] [cursor=pointer]
- - generic [ref=f1e2327]:
- - img "caret-down" [ref=f1e2330] [cursor=pointer]
- - generic "娣卞湷鎬诲叕鍙�" [ref=f1e2333] [cursor=pointer]
- - generic "鐮斿彂閮ㄩ棬" [ref=f1e2337] [cursor=pointer]
- - generic "甯傚満閮ㄩ棬" [ref=f1e2341] [cursor=pointer]
- - generic "娴嬭瘯閮ㄩ棬" [ref=f1e2345] [cursor=pointer]
- - generic "璐㈠姟閮ㄩ棬" [ref=f1e2349] [cursor=pointer]
- - generic "杩愮淮閮ㄩ棬" [ref=f1e2353] [cursor=pointer]
- - generic [ref=f1e2354]:
- - img "caret-down" [ref=f1e2357] [cursor=pointer]
- - generic "闀挎矙鍒嗗叕鍙�" [ref=f1e2360] [cursor=pointer]
- - generic "甯傚満閮ㄩ棬" [ref=f1e2364] [cursor=pointer]
- - generic "璐㈠姟閮ㄩ棬" [ref=f1e2368] [cursor=pointer]
- - generic "鏂伴儴闂�" [ref=f1e2371] [cursor=pointer]
- - generic "椤剁骇閮ㄩ棬" [ref=f1e2374] [cursor=pointer]
- - generic "鏌愪釜瀛愰儴闂�" [ref=f1e2377] [cursor=pointer]
- - generic "鏌愪釜瀛愰儴闂� 2" [ref=f1e2380] [cursor=pointer]
- - generic [ref=f1e2383]:
- - generic [ref=f1e2388]:
- - generic [ref=f1e2389]:
- - generic [ref=f1e2390]: 鐢ㄦ埛鍚嶇О
- - textbox "鐢ㄦ埛鍚嶇О" [ref=f1e2396]:
- - /placeholder: 璇疯緭鍏ョ敤鎴峰悕绉�
- - generic [ref=f1e2398]:
- - generic [ref=f1e2399]: 鐢ㄦ埛鏄电О
- - textbox "鐢ㄦ埛鏄电О" [ref=f1e2405]:
- - /placeholder: 璇疯緭鍏ョ敤鎴锋樀绉�
- - generic [ref=f1e2407]:
- - generic [ref=f1e2408]: 鎵嬫満鍙风爜
- - textbox "鎵嬫満鍙风爜" [ref=f1e2414]:
- - /placeholder: 璇疯緭鍏ユ墜鏈哄彿鐮�
- - generic [ref=f1e2416]:
- - generic [ref=f1e2417]: 鐘舵��
- - generic [ref=f1e2423] [cursor=pointer]:
- - combobox "鐘舵��" [ref=f1e2425]
- - generic "寮�鍚�" [ref=f1e2426]
- - generic [ref=f1e2431]:
- - button "閲� 缃�" [ref=f1e2432] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e2434] [cursor=pointer]
- - generic [ref=f1e2436] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e2443]:
- - generic [ref=f1e2445]:
- - generic [ref=f1e2446]: 鐢ㄦ埛鍒楄〃
- - button "顫�" [ref=f1e2451] [cursor=pointer]
- - generic [ref=f1e2453]:
- - button "瞟�" [ref=f1e2454] [cursor=pointer]
- - button "顪�" [ref=f1e2456] [cursor=pointer]
- - button "顦�" [ref=f1e2458] [cursor=pointer]
- - generic [ref=f1e2466]:
- - table [ref=f1e2470]:
- - rowgroup [ref=f1e2478]:
- - row "鐢ㄦ埛缂栧彿 鐢ㄦ埛鍚嶇О 鐢ㄦ埛鏄电О 鎵嬫満鍙风爜 鐘舵��" [ref=f1e2479]:
- - columnheader [ref=f1e2480]
- - columnheader "鐢ㄦ埛缂栧彿" [ref=f1e2483]
- - columnheader "鐢ㄦ埛鍚嶇О" [ref=f1e2488]
- - columnheader "鐢ㄦ埛鏄电О" [ref=f1e2493]
- - columnheader "鎵嬫満鍙风爜" [ref=f1e2498]
- - columnheader "鐘舵��" [ref=f1e2503]
- - table [ref=f1e2511]:
- - rowgroup [ref=f1e2519]:
- - row [ref=f1e3049]:
- - cell "顫�" [ref=f1e3050]
- - cell "230" [ref=f1e2526]
- - cell "18333333333" [ref=f1e2530]
- - cell "222" [ref=f1e2534]
- - cell "18333333333" [ref=f1e2538]
- - cell "寮�鍚�" [ref=f1e2542]
- - row [ref=f1e2546]:
- - cell "顭�" [ref=f1e2547]
- - cell "229" [ref=f1e2552]
- - cell "15822054764" [ref=f1e2556]
- - cell "鏀惧亣" [ref=f1e2560]
- - cell "15822054764" [ref=f1e2564]
- - cell "寮�鍚�" [ref=f1e2568]
- - row [ref=f1e2572]:
- - cell "顭�" [ref=f1e2573]
- - cell "228" [ref=f1e2578]
- - cell "15822054766" [ref=f1e2582]
- - cell "涓嶆兂涓婄彮" [ref=f1e2586]
- - cell "15822054766" [ref=f1e2590]
- - cell "寮�鍚�" [ref=f1e2594]
- - row [ref=f1e2598]:
- - cell "顭�" [ref=f1e2599]
- - cell "227" [ref=f1e2604]
- - cell "15822054767" [ref=f1e2608]
- - cell "澶ф槑鏄�" [ref=f1e2612]
- - cell "15822054767" [ref=f1e2616]
- - cell "寮�鍚�" [ref=f1e2620]
- - row [ref=f1e2624]:
- - cell "顭�" [ref=f1e2625]
- - cell "226" [ref=f1e2630]
- - cell "15822054763" [ref=f1e2634]
- - cell "鍗冨厠" [ref=f1e2638]
- - cell "15822054763" [ref=f1e2642]
- - cell "寮�鍚�" [ref=f1e2646]
- - row [ref=f1e2650]:
- - cell "顭�" [ref=f1e2651]
- - cell "225" [ref=f1e2656]
- - cell "15822054762" [ref=f1e2660]
- - cell "鍗楃摐瀛�" [ref=f1e2664]
- - cell "15822054762" [ref=f1e2668]
- - cell "寮�鍚�" [ref=f1e2672]
- - row "顭� 144 aoteman001 aoteman00112 鍏抽棴" [ref=f1e2676]:
- - cell "顭�" [ref=f1e2677]
- - cell "144" [ref=f1e2682]
- - cell "aoteman001" [ref=f1e2686]
- - cell "aoteman00112" [ref=f1e2690]
- - cell [ref=f1e2694]
- - cell "鍏抽棴" [ref=f1e2698]
- - row "顭� 143 a00001 a00001 寮�鍚�" [ref=f1e2702]:
- - cell "顭�" [ref=f1e2703]
- - cell "143" [ref=f1e2708]
- - cell "a00001" [ref=f1e2712]
- - cell "a00001" [ref=f1e2716]
- - cell [ref=f1e2720]
- - cell "寮�鍚�" [ref=f1e2724]
- - row [ref=f1e2728]:
- - cell "顭�" [ref=f1e2729]
- - cell "142" [ref=f1e2734]
- - cell "test01" [ref=f1e2738]
- - cell "test01" [ref=f1e2742]
- - cell "19021719925" [ref=f1e2746]
- - cell "寮�鍚�" [ref=f1e2750]
- - row "顭� 141 admin1 鏂扮敤鎴� 寮�鍚�" [ref=f1e2754]:
- - cell "顭�" [ref=f1e2755]
- - cell "141" [ref=f1e2760]
- - cell "admin1" [ref=f1e2764]
- - cell "鏂扮敤鎴�" [ref=f1e2768]
- - cell [ref=f1e2772]
- - cell "寮�鍚�" [ref=f1e2776]
- - row "顭� 139 wwbwwb 灏忕澶� 寮�鍚�" [ref=f1e2780]:
- - cell "顭�" [ref=f1e2781]
- - cell "139" [ref=f1e2786]
- - cell "wwbwwb" [ref=f1e2790]
- - cell "灏忕澶�" [ref=f1e2794]
- - cell [ref=f1e2798]
- - cell "寮�鍚�" [ref=f1e2802]
- - row [ref=f1e2806]:
- - cell "顭�" [ref=f1e2807]
- - cell "118" [ref=f1e2812]
- - cell "goudan" [ref=f1e2816]
- - cell "鐙楄泲" [ref=f1e2820]
- - cell "15601691239" [ref=f1e2824]
- - cell "寮�鍚�" [ref=f1e2828]
- - row [ref=f1e2832]:
- - cell "顭�" [ref=f1e2833]
- - cell "117" [ref=f1e2838]
- - cell "admin123" [ref=f1e2842]
- - cell "娴嬭瘯鍙�02" [ref=f1e2846]
- - cell "15601691234" [ref=f1e2850]
- - cell "寮�鍚�" [ref=f1e2854]
- - row [ref=f1e2858]:
- - cell "顭�" [ref=f1e2859]
- - cell "115" [ref=f1e2864]
- - cell "aotemane" [ref=f1e2868]
- - cell "闃垮憜" [ref=f1e2872]
- - cell "15601691229" [ref=f1e2876]
- - cell "寮�鍚�" [ref=f1e2880]
- - row [ref=f1e2884]:
- - cell "顭�" [ref=f1e2885]
- - cell "114" [ref=f1e2890]
- - cell "hrmgr" [ref=f1e2894]
- - cell "hr 灏忓濮�" [ref=f1e2898]
- - cell "15601691236" [ref=f1e2902]
- - cell "寮�鍚�" [ref=f1e2906]
- - row [ref=f1e2910]:
- - cell "顭�" [ref=f1e2911]
- - cell "113" [ref=f1e2916]
- - cell "aoteman" [ref=f1e2920]
- - cell "绠$悊鍛�1" [ref=f1e2924]
- - cell "15601691300" [ref=f1e2928]
- - cell "寮�鍚�" [ref=f1e2932]
- - row [ref=f1e2936]:
- - cell "顭�" [ref=f1e2937]
- - cell "112" [ref=f1e2942]
- - cell "newobject" [ref=f1e2946]
- - cell "鏂板璞�" [ref=f1e2950]
- - cell "15601691235" [ref=f1e2954]
- - cell "寮�鍚�" [ref=f1e2958]
- - row "顭� 111 test 娴嬭瘯鐢ㄦ埛 寮�鍚�" [ref=f1e2962]:
- - cell "顭�" [ref=f1e2963]
- - cell "111" [ref=f1e2968]
- - cell "test" [ref=f1e2972]
- - cell "娴嬭瘯鐢ㄦ埛" [ref=f1e2976]
- - cell [ref=f1e2980]
- - cell "寮�鍚�" [ref=f1e2984]
- - row [ref=f1e2988]:
- - cell "顭�" [ref=f1e2989]
- - cell "1" [ref=f1e2994]
- - cell "admin" [ref=f1e2998]
- - cell "瓒呯骇绠$悊鍛�" [ref=f1e3002]
- - cell "18818260272" [ref=f1e3006]
- - cell "寮�鍚�" [ref=f1e3010]
- - generic [ref=f1e3021]:
- - generic [ref=f1e3022]: 鍏� 19 鏉¤褰�
- - generic [ref=f1e3024] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e3025]:
- - textbox "璇烽�夋嫨" [ref=f1e3026]: 20鏉�/椤�
- - generic [ref=f1e3027]: 睿�
- - button "飱�" [ref=f1e3030]
- - button "顧�" [ref=f1e3032]
- - button "顫�" [ref=f1e3034]
- - button "1" [ref=f1e3037] [cursor=pointer]
- - button "顫�" [ref=f1e3038]
- - button "顧�" [ref=f1e3040]
- - button "顦�" [ref=f1e3042]
- - generic [ref=f1e3044]:
- - button "鍙� 娑�" [ref=f1e3045] [cursor=pointer]
- - button "纭� 瀹�" [ref=f1e3047] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-25-58-788Z.yml b/.playwright-mcp/page-2026-08-18T08-25-58-788Z.yml
deleted file mode 100644
index 649886a..0000000
--- a/.playwright-mcp/page-2026-08-18T08-25-58-788Z.yml
+++ /dev/null
@@ -1,272 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]: 瓒呯骇绠$悊鍛�
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=f1e906]: 閽㈣姱閾濈粸绾�
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [ref=f1e922]
- - generic [ref=f1e1522]:
- - generic [ref=f1e1523]: 浜х嚎浜�
- - generic [ref=f1e1524]: two
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [active] [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - text: 2026-08-18 08:00:00
- - generic:
- - img "calendar"
- - button [ref=f1e1529] [cursor=pointer]:
- - img "close-circle" [ref=f1e1530]
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e3051]:
- - cell [ref=f1e3052]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]: "222"
- - cell [ref=f1e1070]:
- - generic [ref=f1e1074] [cursor=pointer]:
- - combobox [ref=f1e1076]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-26-27-866Z.yml b/.playwright-mcp/page-2026-08-18T08-26-27-866Z.yml
deleted file mode 100644
index 500b1a7..0000000
--- a/.playwright-mcp/page-2026-08-18T08-26-27-866Z.yml
+++ /dev/null
@@ -1,288 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]: 瓒呯骇绠$悊鍛�
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=f1e906]: 閽㈣姱閾濈粸绾�
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [ref=f1e922]
- - generic [ref=f1e1522]:
- - generic [ref=f1e1523]: 浜х嚎浜�
- - generic [ref=f1e1524]: two
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - text: 2026-08-18 08:00:00
- - generic:
- - img "calendar"
- - button [ref=f1e1529] [cursor=pointer]:
- - img "close-circle" [ref=f1e1530]
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e3051]:
- - cell [ref=f1e3052]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]: "222"
- - cell [ref=f1e1070]:
- - generic [ref=f1e1074] [cursor=pointer]:
- - combobox [expanded] [active] [ref=f1e1076]:
- - listbox:
- - option "缁勯暱": "10"
- - option "鎿嶄綔宸�": "20"
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic "缁勯暱"
- - generic "鎿嶄綔宸�"
- - generic "鍖呰宸�"
- - generic "璐ㄦ鍛�"
- - generic "鍏朵粬"
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-26-48-898Z.yml b/.playwright-mcp/page-2026-08-18T08-26-48-898Z.yml
deleted file mode 100644
index 78a5bd0..0000000
--- a/.playwright-mcp/page-2026-08-18T08-26-48-898Z.yml
+++ /dev/null
@@ -1,290 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]: 瓒呯骇绠$悊鍛�
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=f1e906]: 閽㈣姱閾濈粸绾�
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [ref=f1e922]
- - generic [ref=f1e1522]:
- - generic [ref=f1e1523]: 浜х嚎浜�
- - generic [ref=f1e1524]: two
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - text: 2026-08-18 08:00:00
- - generic:
- - img "calendar"
- - button [ref=f1e1529] [cursor=pointer]:
- - img "close-circle" [ref=f1e1530]
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e3069]:
- - cell [ref=f1e3052]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]: "222"
- - cell "缁勯暱 缁勯暱 缁勯暱" [ref=f1e3070]:
- - generic [ref=f1e1073] [cursor=pointer]:
- - generic: 缁勯暱
- - generic [ref=f1e1074]:
- - combobox [active] [ref=f1e1076]:
- - listbox:
- - option "缁勯暱" [selected]: "10"
- - option "鎿嶄綔宸�": "20"
- - generic "缁勯暱" [ref=f1e3071]
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic "缁勯暱"
- - generic "鎿嶄綔宸�"
- - generic "鍖呰宸�"
- - generic "璐ㄦ鍛�"
- - generic "鍏朵粬"
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-27-07-283Z.yml b/.playwright-mcp/page-2026-08-18T08-27-07-283Z.yml
deleted file mode 100644
index 73b3a70..0000000
--- a/.playwright-mcp/page-2026-08-18T08-27-07-283Z.yml
+++ /dev/null
@@ -1,274 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e7]:
- - complementary [ref=f1e8]:
- - generic [ref=f1e9]:
- - generic [ref=f1e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e18]
- - generic [ref=f1e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e22]:
- - menuitem "棣栭〉" [ref=f1e23] [cursor=pointer]
- - listitem [ref=f1e30]:
- - generic [ref=f1e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e39]:
- - generic [ref=f1e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=f1e46]:
- - generic [ref=f1e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=f1e53]:
- - generic [ref=f1e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=f1e61]:
- - generic [ref=f1e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e70]:
- - generic [ref=f1e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=f1e78]:
- - generic [ref=f1e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e104] [cursor=pointer]
- - listitem [ref=f1e111]:
- - generic [ref=f1e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e118]:
- - generic [ref=f1e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=f1e125]:
- - generic [ref=f1e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=f1e132]:
- - generic [ref=f1e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=f1e139]:
- - generic [ref=f1e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=f1e146]:
- - generic [ref=f1e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=f1e153]:
- - generic [ref=f1e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=f1e160]:
- - generic [ref=f1e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=f1e169] [cursor=pointer]
- - generic [ref=f1e174]:
- - generic [ref=f1e175]:
- - banner [ref=f1e176]:
- - button [ref=f1e177] [cursor=pointer]
- - button [ref=f1e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e185]:
- - list [ref=f1e186]:
- - listitem [ref=f1e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e192]
- - listitem [ref=f1e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e196]
- - generic [ref=f1e201]:
- - generic [ref=f1e203] [cursor=pointer]:
- - generic [ref=f1e207]: 鎼滅储
- - generic [ref=f1e208]: Ctrl K
- - button [ref=f1e210] [cursor=pointer]
- - button "dark" [ref=f1e215] [cursor=pointer]
- - button [ref=f1e224] [cursor=pointer]
- - button [ref=f1e230] [cursor=pointer]
- - button [ref=f1e233] [cursor=pointer]
- - button [ref=f1e239] [cursor=pointer]:
- - button [ref=f1e241]
- - button "宸ヤ綔鍙�" [ref=f1e246] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e250] [cursor=pointer]
- - generic [ref=f1e257]:
- - generic [ref=f1e262]:
- - generic [ref=f1e263] [cursor=pointer]: 棣栭〉
- - generic [ref=f1e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e298]:
- - button [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e306] [cursor=pointer]
- - generic [ref=f1e310] [cursor=pointer]
- - main [ref=f1e317]:
- - generic [ref=f1e322]:
- - generic [ref=f1e327]:
- - generic [ref=f1e328]:
- - generic [ref=f1e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e337]:
- - generic [ref=f1e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e345]
- - generic [ref=f1e351]:
- - generic [ref=f1e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e360]:
- - generic [ref=f1e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e369]:
- - generic [ref=f1e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e377]: 瓒呯骇绠$悊鍛�
- - generic [ref=f1e383]:
- - generic [ref=f1e384]: 鎵规鐘舵��
- - generic [ref=f1e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e393]:
- - generic [ref=f1e394]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e403]:
- - img "swap-right" [ref=f1e404]
- - textbox "缁撴潫鏃堕棿" [ref=f1e408]
- - generic:
- - img "calendar"
- - generic [ref=f1e409]:
- - generic [ref=f1e410]: 鍒涘缓鏃堕棿
- - generic [ref=f1e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e419]:
- - img "swap-right" [ref=f1e420]
- - textbox "缁撴潫鏃堕棿" [ref=f1e424]
- - generic:
- - img "calendar"
- - generic [ref=f1e425]:
- - button "閲� 缃�" [ref=f1e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e428] [cursor=pointer]
- - generic [ref=f1e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e437]:
- - generic [ref=f1e439]:
- - generic [ref=f1e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e444]:
- - generic [ref=f1e446]:
- - button "鏂板鎵规" [ref=f1e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e453] [cursor=pointer]
- - button "顫�" [ref=f1e459] [cursor=pointer]
- - generic [ref=f1e461]:
- - button "瞟�" [ref=f1e462] [cursor=pointer]
- - button "顪�" [ref=f1e464] [cursor=pointer]
- - button "顦�" [ref=f1e466] [cursor=pointer]
- - generic [ref=f1e470]:
- - generic [ref=f1e473]:
- - generic [ref=f1e474]:
- - table [ref=f1e478]:
- - rowgroup [ref=f1e493]:
- - row [ref=f1e494]:
- - columnheader "鍝佺缂栫爜" [ref=f1e495]
- - columnheader "鍝佺鍚嶇О" [ref=f1e500]
- - columnheader "浜х嚎缂栫爜" [ref=f1e505]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e515]
- - columnheader "璁″垝鏁伴噺" [ref=f1e520]
- - columnheader "璐d换浜�" [ref=f1e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e535]
- - columnheader "鎵规鐘舵��" [ref=f1e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e545]
- - generic [ref=f1e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=f1e553]:
- - table [ref=f1e556]:
- - rowgroup [ref=f1e571]:
- - row [ref=f1e572]:
- - columnheader "鎵规鍙�" [ref=f1e573]
- - generic [ref=f1e579]:
- - table:
- - rowgroup
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎿嶄綔" [ref=f1e600]
- - generic [ref=f1e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=f1e621]:
- - generic [ref=f1e622]: 鍏� 0 鏉¤褰�
- - generic [ref=f1e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e625]:
- - textbox "璇烽�夋嫨" [ref=f1e626]: 20鏉�/椤�
- - generic [ref=f1e627]: 睿�
- - button "飱�" [ref=f1e630]
- - button "顧�" [ref=f1e632]
- - button "顫�" [ref=f1e634]
- - button "1" [ref=f1e637] [cursor=pointer]
- - button "顫�" [ref=f1e638]
- - button "顧�" [ref=f1e640]
- - button "顦�" [ref=f1e642]
- - dialog [ref=f1e890]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f1e892]
- - generic [ref=f1e894]:
- - generic [ref=f1e896]:
- - generic [ref=f1e897]:
- - generic [ref=f1e898]:
- - generic [ref=f1e899]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=f1e906]: 閽㈣姱閾濈粸绾�
- - generic [ref=f1e912]:
- - generic [ref=f1e913]:
- - generic [ref=f1e914]: "*"
- - text: 浜х嚎
- - generic [ref=f1e920]:
- - combobox "* 浜х嚎" [ref=f1e922]
- - generic [ref=f1e1522]:
- - generic [ref=f1e1523]: 浜х嚎浜�
- - generic [ref=f1e1524]: two
- - generic [ref=f1e923]:
- - generic [ref=f1e924]:
- - generic [ref=f1e925]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f1e931]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=f1e932]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - text: 2026-08-18 08:00:00
- - generic:
- - img "calendar"
- - button [ref=f1e1529] [cursor=pointer]:
- - img "close-circle" [ref=f1e1530]
- - generic [ref=f1e933]:
- - generic [ref=f1e934]: 璁″垝鏁伴噺
- - generic [ref=f1e939]:
- - generic [ref=f1e940]:
- - button "Increase Value" [ref=f1e941] [cursor=pointer]:
- - img "up" [ref=f1e942]
- - button "Decrease Value" [ref=f1e945] [cursor=pointer]:
- - img "down" [ref=f1e946]
- - spinbutton "璁″垝鏁伴噺" [ref=f1e950]
- - generic [ref=f1e951]:
- - generic [ref=f1e952]:
- - generic [ref=f1e953]: "*"
- - text: 璐d换浜�
- - generic [ref=f1e954]:
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e960]
- - alert [ref=f1e3074]: 璇烽�夋嫨璐d换浜�
- - generic [ref=f1e966]:
- - generic [ref=f1e967]: 澶囨敞
- - textbox "澶囨敞" [ref=f1e972]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f1e973]:
- - generic [ref=f1e974]:
- - generic [ref=f1e975]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f1e976] [cursor=pointer]
- - generic [ref=f1e988]:
- - table [ref=f1e992]:
- - rowgroup [ref=f1e998]:
- - row [ref=f1e999]:
- - columnheader "鐢熶骇浜哄憳" [ref=f1e1000]
- - columnheader "宀椾綅绫诲瀷" [ref=f1e1005]
- - columnheader "澶囨敞" [ref=f1e1010]
- - columnheader "鎿嶄綔" [ref=f1e1015]
- - table [ref=f1e1051]:
- - rowgroup [ref=f1e1057]:
- - row [ref=f1e3075]:
- - cell [ref=f1e3052]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=f1e1064]: "222"
- - cell "缁勯暱" [ref=f1e3076]:
- - generic [ref=f1e1074] [cursor=pointer]:
- - combobox [ref=f1e1076]
- - generic "缁勯暱" [ref=f1e3071]
- - cell [ref=f1e1077]:
- - textbox "璇疯緭鍏ュ娉�" [ref=f1e1080]
- - cell [ref=f1e1081]:
- - button "鍒犻櫎" [ref=f1e1087] [cursor=pointer]
- - button [ref=f1e1031] [cursor=pointer]
- - generic [ref=f1e1041]:
- - button "纭� 璁�" [active] [ref=f1e1042] [cursor=pointer]
- - button "鍙� 娑�" [ref=f1e1045] [cursor=pointer]
- - button [ref=f1e1047] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-39-14-991Z.yml b/.playwright-mcp/page-2026-08-18T08-39-14-991Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-18T08-39-14-991Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-39-53-074Z.yml b/.playwright-mcp/page-2026-08-18T08-39-53-074Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-18T08-39-53-074Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-40-08-857Z.yml b/.playwright-mcp/page-2026-08-18T08-40-08-857Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-18T08-40-08-857Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-41-15-036Z.yml b/.playwright-mcp/page-2026-08-18T08-41-15-036Z.yml
deleted file mode 100644
index 024f241..0000000
--- a/.playwright-mcp/page-2026-08-18T08-41-15-036Z.yml
+++ /dev/null
@@ -1,284 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button [ref=e250] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=e255]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]: 閽㈣姱閾濈粸绾�
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic [ref=e679]:
- - generic [ref=e680]: 浜х嚎涓�
- - generic [ref=e681]: one
- - generic [ref=e686]:
- - generic [ref=e687]:
- - generic [ref=e688]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e694]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e695]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - text: 2026-08-18 16:40:39
- - generic:
- - img "calendar"
- - button [ref=e696] [cursor=pointer]:
- - img "close-circle" [ref=e697]
- - generic [ref=e700]:
- - generic [ref=e701]: 璁″垝鏁伴噺
- - generic [ref=e706]:
- - generic [ref=e707]:
- - button "Increase Value" [ref=e708] [cursor=pointer]:
- - img "up" [ref=e709]
- - button "Decrease Value" [ref=e712] [cursor=pointer]:
- - img "down" [ref=e713]
- - spinbutton "璁″垝鏁伴噺" [ref=e717]
- - generic [ref=e718]:
- - generic [ref=e719]:
- - generic [ref=e720]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e727]: 涓嶆兂涓婄彮
- - generic [ref=e733]:
- - generic [ref=e734]: 澶囨敞
- - textbox "澶囨敞" [ref=e739]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e740]:
- - generic [ref=e741]:
- - generic [ref=e742]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [active] [ref=e743] [cursor=pointer]
- - generic [ref=e755]:
- - table [ref=e759]:
- - rowgroup [ref=e765]:
- - row [ref=e766]:
- - columnheader "鐢熶骇浜哄憳" [ref=e767]
- - columnheader "宀椾綅绫诲瀷" [ref=e772]
- - columnheader "澶囨敞" [ref=e777]
- - columnheader "鎿嶄綔" [ref=e782]
- - table [ref=e790]:
- - rowgroup [ref=e796]:
- - row [ref=e849]:
- - cell [ref=e850]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e803]
- - cell [ref=e851]:
- - generic [ref=e813] [cursor=pointer]:
- - combobox [ref=e815]
- - generic: 璇烽�夋嫨宀椾綅绫诲瀷
- - cell [ref=e817]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e820]
- - cell [ref=e821]:
- - button "鍒犻櫎" [ref=e827] [cursor=pointer]
- - row [ref=e852]:
- - cell [ref=e853]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e858]: "222"
- - cell "缁勯暱" [ref=e864]:
- - generic [ref=e868] [cursor=pointer]:
- - combobox [ref=e870]
- - generic "缁勯暱" [ref=e871]
- - cell [ref=e872]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e875]
- - cell [ref=e876]:
- - button "鍒犻櫎" [ref=e882] [cursor=pointer]
- - button [ref=e829] [cursor=pointer]
- - generic [ref=e839]:
- - button "纭� 璁�" [ref=e840] [cursor=pointer]
- - button "鍙� 娑�" [ref=e843] [cursor=pointer]
- - button [ref=e845] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-42-30-730Z.yml b/.playwright-mcp/page-2026-08-18T08-42-30-730Z.yml
deleted file mode 100644
index 34318c7..0000000
--- a/.playwright-mcp/page-2026-08-18T08-42-30-730Z.yml
+++ /dev/null
@@ -1,273 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button [ref=e250] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=e255]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - generic [ref=e551]:
- - table:
- - rowgroup
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - generic [ref=e579]:
- - table:
- - rowgroup
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - generic [ref=e606]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 0 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
- - dialog [ref=e645]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=e647]
- - generic [ref=e649]:
- - generic [ref=e651]:
- - generic [ref=e652]:
- - generic [ref=e653]:
- - generic [ref=e654]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佺墿鏂欙級" [ref=e661]: 閽㈣姱閾濈粸绾�
- - generic [ref=e667]:
- - generic [ref=e668]:
- - generic [ref=e669]: "*"
- - text: 浜х嚎
- - generic [ref=e675]:
- - combobox "* 浜х嚎" [ref=e677]
- - generic [ref=e679]:
- - generic [ref=e680]: 浜х嚎涓�
- - generic [ref=e681]: one
- - generic [ref=e686]:
- - generic [ref=e687]:
- - generic [ref=e688]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=e694]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=e695]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - text: 2026-08-18 16:40:39
- - generic:
- - img "calendar"
- - button [ref=e696] [cursor=pointer]:
- - img "close-circle" [ref=e697]
- - generic [ref=e700]:
- - generic [ref=e701]: 璁″垝鏁伴噺
- - generic [ref=e706]:
- - generic [ref=e707]:
- - button "Increase Value" [ref=e708] [cursor=pointer]:
- - img "up" [ref=e709]
- - button "Decrease Value" [ref=e712] [cursor=pointer]:
- - img "down" [ref=e713]
- - spinbutton "璁″垝鏁伴噺" [ref=e717]
- - generic [ref=e718]:
- - generic [ref=e719]:
- - generic [ref=e720]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e727]: 涓嶆兂涓婄彮
- - generic [ref=e733]:
- - generic [ref=e734]: 澶囨敞
- - textbox "澶囨敞" [ref=e739]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=e740]:
- - generic [ref=e741]:
- - generic [ref=e742]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=e743] [cursor=pointer]
- - generic [ref=e755]:
- - table [ref=e759]:
- - rowgroup [ref=e765]:
- - row [ref=e766]:
- - columnheader "鐢熶骇浜哄憳" [ref=e767]
- - columnheader "宀椾綅绫诲瀷" [ref=e772]
- - columnheader "澶囨敞" [ref=e777]
- - columnheader "鎿嶄綔" [ref=e782]
- - table [ref=e790]:
- - rowgroup [ref=e796]:
- - row [ref=e884]:
- - cell [ref=e885]:
- - textbox "璇烽�夋嫨鐢熶骇浜哄憳" [ref=e803]: "222"
- - cell "缁勯暱" [ref=e886]:
- - generic [ref=e813] [cursor=pointer]:
- - combobox [ref=e815]
- - generic "缁勯暱" [ref=e816]
- - cell [ref=e817]:
- - textbox "璇疯緭鍏ュ娉�" [ref=e820]
- - cell [ref=e821]:
- - button "鍒犻櫎" [active] [ref=e827] [cursor=pointer]
- - button [ref=e829] [cursor=pointer]
- - generic [ref=e839]:
- - button "纭� 璁�" [ref=e840] [cursor=pointer]
- - button "鍙� 娑�" [ref=e843] [cursor=pointer]
- - button [ref=e845] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-18T08-42-38-843Z.yml b/.playwright-mcp/page-2026-08-18T08-42-38-843Z.yml
deleted file mode 100644
index 5c0d900..0000000
--- a/.playwright-mcp/page-2026-08-18T08-42-38-843Z.yml
+++ /dev/null
@@ -1,211 +0,0 @@
-- generic [ref=e7]:
- - complementary [ref=e8]:
- - generic [ref=e9]:
- - generic [ref=e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e18]
- - generic [ref=e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e22]:
- - menuitem "棣栭〉" [ref=e23] [cursor=pointer]
- - listitem [ref=e30]:
- - generic [ref=e31] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e39]:
- - generic [ref=e40] [cursor=pointer]: 閲囪喘绠$悊
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 钀ラ攢绠$悊
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璁惧绠$悊
- - listitem [ref=e61]:
- - generic [ref=e62] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e70]:
- - generic [ref=e71] [cursor=pointer]: 鐢熶骇绠℃帶
- - listitem [ref=e78]:
- - generic [ref=e79] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e85]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e86] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e91] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e97] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e104] [cursor=pointer]
- - listitem [ref=e111]:
- - generic [ref=e112] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e118]:
- - generic [ref=e119] [cursor=pointer]: 鍐崇瓥BI澶у睆
- - listitem [ref=e125]:
- - generic [ref=e126] [cursor=pointer]: 鍗忓悓鍔炲叕
- - listitem [ref=e132]:
- - generic [ref=e133] [cursor=pointer]: 浜哄姏璧勬簮
- - listitem [ref=e139]:
- - generic [ref=e140] [cursor=pointer]: 鍞悗绠$悊
- - listitem [ref=e146]:
- - generic [ref=e147] [cursor=pointer]: 鍩虹璁炬柦
- - listitem [ref=e153]:
- - generic [ref=e154] [cursor=pointer]: 绯荤粺绠$悊
- - listitem [ref=e160]:
- - generic [ref=e161] [cursor=pointer]: IM 鍗虫椂閫氳
- - generic [ref=e169] [cursor=pointer]
- - generic [ref=e174]:
- - generic [ref=e175]:
- - banner [ref=e176]:
- - button [ref=e177] [cursor=pointer]
- - button [ref=e180] [cursor=pointer]
- - navigation "breadcrumb" [ref=e185]:
- - list [ref=e186]:
- - listitem [ref=e187]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e188] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e192]
- - listitem [ref=e195]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e196]
- - generic [ref=e201]:
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e207]: 鎼滅储
- - generic [ref=e208]: Ctrl K
- - button [ref=e210] [cursor=pointer]
- - button "dark" [ref=e215] [cursor=pointer]
- - button [ref=e224] [cursor=pointer]
- - button [ref=e230] [cursor=pointer]
- - button [ref=e233] [cursor=pointer]
- - button [ref=e239] [cursor=pointer]:
- - button [ref=e241]
- - button "宸ヤ綔鍙�" [ref=e246] [cursor=pointer]
- - button [ref=e250] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=e255]
- - generic [ref=e257]:
- - generic [ref=e262]:
- - generic [ref=e263] [cursor=pointer]: 棣栭〉
- - generic [ref=e281] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e298]:
- - button [ref=e299] [cursor=pointer]
- - generic [ref=e306] [cursor=pointer]
- - generic [ref=e310] [cursor=pointer]
- - main [ref=e317]:
- - generic [ref=e322]:
- - generic [ref=e327]:
- - generic [ref=e328]:
- - generic [ref=e329]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e335]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e337]:
- - generic [ref=e338]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e345]
- - generic [ref=e351]:
- - generic [ref=e352]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e358]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e360]:
- - generic [ref=e361]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e367]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e369]:
- - generic [ref=e370]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e377]
- - generic [ref=e383]:
- - generic [ref=e384]: 鎵规鐘舵��
- - generic [ref=e390] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e392]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e393]:
- - generic [ref=e394]: 鐢熶骇鏃ユ湡
- - generic [ref=e399]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e401]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e403]:
- - img "swap-right" [ref=e404]
- - textbox "缁撴潫鏃堕棿" [ref=e408]
- - generic:
- - img "calendar"
- - generic [ref=e409]:
- - generic [ref=e410]: 鍒涘缓鏃堕棿
- - generic [ref=e415]:
- - textbox "鍒涘缓鏃堕棿" [ref=e417]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e419]:
- - img "swap-right" [ref=e420]
- - textbox "缁撴潫鏃堕棿" [ref=e424]
- - generic:
- - img "calendar"
- - generic [ref=e425]:
- - button "閲� 缃�" [ref=e426] [cursor=pointer]
- - button "鎼� 绱�" [ref=e428] [cursor=pointer]
- - generic [ref=e430] [cursor=pointer]: 鏀惰捣
- - generic [ref=e437]:
- - generic [ref=e439]:
- - generic [ref=e440]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e444]:
- - generic [ref=e446]:
- - button "鏂板鎵规" [active] [ref=e448] [cursor=pointer]
- - button "瀵煎嚭" [ref=e453] [cursor=pointer]
- - button "顫�" [ref=e459] [cursor=pointer]
- - generic [ref=e461]:
- - button "瞟�" [ref=e462] [cursor=pointer]
- - button "顪�" [ref=e464] [cursor=pointer]
- - button "顦�" [ref=e466] [cursor=pointer]
- - generic [ref=e473]:
- - generic [ref=e474]:
- - table [ref=e478]:
- - rowgroup [ref=e493]:
- - row [ref=e494]:
- - columnheader "鍝佺缂栫爜" [ref=e495]
- - columnheader "鍝佺鍚嶇О" [ref=e500]
- - columnheader "浜х嚎缂栫爜" [ref=e505]
- - columnheader "浜х嚎鍚嶇О" [ref=e510]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e515]
- - columnheader "璁″垝鏁伴噺" [ref=e520]
- - columnheader "璐d换浜�" [ref=e525]
- - columnheader "琚嬬爜鏁伴噺" [ref=e530]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e535]
- - columnheader "鎵规鐘舵��" [ref=e540]
- - columnheader "鍒涘缓鏃堕棿" [ref=e545]
- - table [ref=e887]:
- - rowgroup [ref=e902]:
- - row "ITEM_20260716006 閽㈣姱閾濈粸绾� one 浜х嚎涓� 2026-08-18 16:40:39 涓嶆兂涓婄彮 0 0 鑽夌 2026-08-18 16:42:33" [ref=e903]:
- - cell "ITEM_20260716006" [ref=e904]
- - cell "閽㈣姱閾濈粸绾�" [ref=e908]
- - cell "one" [ref=e912]
- - cell "浜х嚎涓�" [ref=e916]
- - cell "2026-08-18 16:40:39" [ref=e920]
- - cell [ref=e924]
- - cell "涓嶆兂涓婄彮" [ref=e928]
- - cell "0" [ref=e932]
- - cell "0" [ref=e936]
- - cell "鑽夌" [ref=e940]
- - cell "2026-08-18 16:42:33" [ref=e944]
- - generic:
- - generic [ref=e553]:
- - table [ref=e556]:
- - rowgroup [ref=e571]:
- - row [ref=e572]:
- - columnheader "鎵规鍙�" [ref=e573]
- - table [ref=e948]:
- - rowgroup [ref=e951]:
- - row [ref=e952]:
- - cell [ref=e953]:
- - button "PC20260818oneITEM_002" [ref=e956] [cursor=pointer]
- - generic [ref=e580]:
- - table [ref=e583]:
- - rowgroup [ref=e598]:
- - row [ref=e599]:
- - columnheader "鎿嶄綔" [ref=e600]
- - table [ref=e958]:
- - rowgroup [ref=e961]:
- - row [ref=e962]:
- - cell [ref=e963]:
- - generic [ref=e966]:
- - generic [ref=e967]:
- - button "淇敼" [ref=e969] [cursor=pointer]
- - button "鍒犻櫎" [ref=e976] [cursor=pointer]
- - button "鏇村" [ref=e980] [cursor=pointer]
- - generic [ref=e621]:
- - generic [ref=e622]: 鍏� 1 鏉¤褰�
- - generic [ref=e624] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e625]:
- - textbox "璇烽�夋嫨" [ref=e626]: 20鏉�/椤�
- - generic [ref=e627]: 睿�
- - button "飱�" [ref=e630]
- - button "顧�" [ref=e632]
- - button "顫�" [ref=e634]
- - button "1" [ref=e637] [cursor=pointer]
- - button "顫�" [ref=e638]
- - button "顧�" [ref=e640]
- - button "顦�" [ref=e642]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-17-17-019Z.yml b/.playwright-mcp/page-2026-08-19T02-17-17-019Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-19T02-17-17-019Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-17-32-337Z.yml b/.playwright-mcp/page-2026-08-19T02-17-32-337Z.yml
deleted file mode 100644
index a8e824b..0000000
--- a/.playwright-mcp/page-2026-08-19T02-17-32-337Z.yml
+++ /dev/null
@@ -1,111 +0,0 @@
-- generic [ref=e4]:
- - generic [ref=e413]:
- - complementary [ref=e414]:
- - generic [ref=e415]:
- - generic [ref=e416] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e421] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=e424]
- - generic [ref=e425]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=e428]:
- - menuitem "棣栭〉" [ref=e429] [cursor=pointer]
- - menuitem "鍩虹鏁版嵁涓庝竴琚嬩竴鐮�" [active] [ref=e436] [cursor=pointer]
- - listitem [ref=e441]:
- - generic [ref=e442] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e450]:
- - generic [ref=e451] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - listitem [ref=e457]:
- - generic [ref=e458] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=e465] [cursor=pointer]
- - generic [ref=e470]:
- - generic [ref=e471]:
- - banner [ref=e472]:
- - button [ref=e473] [cursor=pointer]
- - button [ref=e476] [cursor=pointer]
- - navigation "breadcrumb" [ref=e481]:
- - list [ref=e482]:
- - listitem [ref=e906]:
- - link "鍩虹鏁版嵁涓庝竴琚嬩竴鐮�" [disabled] [ref=e907]
- - generic [ref=e491]:
- - generic [ref=e493] [cursor=pointer]:
- - generic [ref=e497]: 鎼滅储
- - generic [ref=e498]: Ctrl K
- - button [ref=e500] [cursor=pointer]
- - button "dark" [ref=e505] [cursor=pointer]
- - button [ref=e514] [cursor=pointer]
- - button [ref=e520] [cursor=pointer]
- - button [ref=e523] [cursor=pointer]
- - button [ref=e529] [cursor=pointer]:
- - button [ref=e531]
- - button "宸ヤ綔鍙�" [ref=e535] [cursor=pointer]
- - button "鐞嗗憳" [ref=e539] [cursor=pointer]
- - generic [ref=e546]:
- - generic [ref=e551]:
- - generic [ref=e552] [cursor=pointer]: 棣栭〉
- - generic [ref=e913] [cursor=pointer]: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - generic [ref=e568]:
- - button [ref=e569] [cursor=pointer]
- - generic [ref=e576] [cursor=pointer]
- - generic [ref=e580] [cursor=pointer]
- - main [ref=e587]:
- - generic [ref=e931]:
- - generic [ref=e932]:
- - generic [ref=e942] [cursor=pointer]:
- - generic [ref=e943]: 鍝佺鎬绘暟
- - generic [ref=e944]: "0"
- - generic [ref=e955] [cursor=pointer]:
- - generic [ref=e956]: MES 鍝佺
- - generic [ref=e957]: "0"
- - generic [ref=e968] [cursor=pointer]:
- - generic [ref=e969]: 鍝佺鍒嗙被
- - generic [ref=e970]: "0"
- - generic [ref=e979] [cursor=pointer]:
- - generic [ref=e980]: 璁¢噺鍗曚綅
- - generic [ref=e981]: "0"
- - generic [ref=e983]:
- - generic [ref=e991] [cursor=pointer]:
- - generic [ref=e992]: 浜х嚎
- - generic [ref=e993]: "0"
- - generic [ref=e1005] [cursor=pointer]:
- - generic [ref=e1006]: 鐢熶骇鎵规
- - generic [ref=e1007]: "0"
- - generic [ref=e1016] [cursor=pointer]:
- - generic [ref=e1017]: 琚嬬爜
- - generic [ref=e1018]: "0"
- - generic [ref=e1029] [cursor=pointer]:
- - generic [ref=e1030]: 鎵樼洏鐮�
- - generic [ref=e1031]: "0"
- - generic [ref=e1033]:
- - generic [ref=e1037]:
- - generic [ref=e1038]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=e1040]:
- - generic [ref=e1041] [cursor=pointer]:
- - generic [ref=e1042]:
- - radio "杩� 7 澶�" [checked]
- - generic [ref=e1043]: 杩� 7 澶�
- - generic [ref=e1044] [cursor=pointer]:
- - generic [ref=e1045]:
- - radio "杩� 30 澶�"
- - generic [ref=e1046]: 杩� 30 澶�
- - generic [ref=e1049]: 鎵规鐘舵�佸垎甯�
- - generic [ref=e1056]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=e1063]:
- - generic [ref=e1064]: 蹇嵎鍏ュ彛
- - generic [ref=e1068]:
- - generic [ref=e1069]: 鐗╂枡绠$悊
- - generic [ref=e1077]: 鐢熶骇鐗╂枡
- - generic [ref=e1085]: 鍝佺鍒嗙被
- - generic [ref=e1093]: 璁¢噺鍗曚綅
- - generic [ref=e1099]: 浜х嚎缁存姢
- - generic [ref=e1105]: 鎵规鐢熶骇
- - generic [ref=e1114]: 璧嬬爜绠$悊
- - generic [ref=e1120]: 鎵樼洏鐮佺鐞�
- - generic:
- - generic:
- - generic:
- - generic [ref=e1129]:
- - img "close-circle" [ref=e1130]
- - text: 璇锋眰鍦板潃涓嶅瓨鍦�:admin-api/mes/bag-code-home-statistics/trend
- - generic [ref=e1134]:
- - img "close-circle" [ref=e1135]
- - text: 璇锋眰鍦板潃涓嶅瓨鍦�:admin-api/mes/bag-code-home-statistics/summary
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-22-56-693Z.yml b/.playwright-mcp/page-2026-08-19T02-22-56-693Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-19T02-22-56-693Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-23-31-534Z.yml b/.playwright-mcp/page-2026-08-19T02-23-31-534Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-19T02-23-31-534Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-23-37-571Z.yml b/.playwright-mcp/page-2026-08-19T02-23-37-571Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-19T02-23-37-571Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-24-27-322Z.yml b/.playwright-mcp/page-2026-08-19T02-24-27-322Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-19T02-24-27-322Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-25-12-056Z.yml b/.playwright-mcp/page-2026-08-19T02-25-12-056Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-19T02-25-12-056Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-25-31-773Z.yml b/.playwright-mcp/page-2026-08-19T02-25-31-773Z.yml
deleted file mode 100644
index 7eb5342..0000000
--- a/.playwright-mcp/page-2026-08-19T02-25-31-773Z.yml
+++ /dev/null
@@ -1,155 +0,0 @@
-- generic [ref=f5e7]:
- - complementary [ref=f5e8]:
- - generic [ref=f5e9]:
- - generic [ref=f5e10] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f5e15] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f5e18]
- - generic [ref=f5e19]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f5e22]:
- - menuitem "棣栭〉" [ref=f5e23] [cursor=pointer]
- - menuitem "鍩虹鏁版嵁涓庝竴琚嬩竴鐮�" [active] [ref=f5e30] [cursor=pointer]
- - listitem [ref=f5e35]:
- - generic [ref=f5e36] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f5e44]:
- - generic [ref=f5e45] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - listitem [ref=f5e51]:
- - generic [ref=f5e52] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f5e59] [cursor=pointer]
- - generic [ref=f5e64]:
- - generic [ref=f5e65]:
- - banner [ref=f5e66]:
- - button [ref=f5e67] [cursor=pointer]
- - button [ref=f5e70] [cursor=pointer]
- - navigation "breadcrumb" [ref=f5e75]:
- - list [ref=f5e76]:
- - listitem [ref=f5e500]:
- - link "鍩虹鏁版嵁涓庝竴琚嬩竴鐮�" [disabled] [ref=f5e501]
- - generic [ref=f5e85]:
- - generic [ref=f5e87] [cursor=pointer]:
- - generic [ref=f5e91]: 鎼滅储
- - generic [ref=f5e92]: Ctrl K
- - button [ref=f5e94] [cursor=pointer]
- - button "dark" [ref=f5e99] [cursor=pointer]
- - button [ref=f5e108] [cursor=pointer]
- - button [ref=f5e114] [cursor=pointer]
- - button [ref=f5e117] [cursor=pointer]
- - button [ref=f5e123] [cursor=pointer]:
- - button [ref=f5e125]
- - button "宸ヤ綔鍙�" [ref=f5e129] [cursor=pointer]
- - button "鐞嗗憳" [ref=f5e133] [cursor=pointer]
- - generic [ref=f5e140]:
- - generic [ref=f5e145]:
- - generic [ref=f5e146] [cursor=pointer]: 棣栭〉
- - generic [ref=f5e507] [cursor=pointer]: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - generic [ref=f5e162]:
- - button [ref=f5e163] [cursor=pointer]
- - generic [ref=f5e170] [cursor=pointer]
- - generic [ref=f5e174] [cursor=pointer]
- - main [ref=f5e181]:
- - generic [ref=f5e184]:
- - generic [ref=f5e185]:
- - generic [ref=f5e186]:
- - heading "涓婂崍濂斤紝娆㈣繋鍥炴潵" [level=1] [ref=f5e187]
- - paragraph [ref=f5e188]: 2026骞�8鏈�19鏃� 鏄熸湡涓�
- - generic [ref=f5e189]: 绯荤粺杩愯涓�
- - generic [ref=f5e194]:
- - generic [ref=f5e203] [cursor=pointer]:
- - generic [ref=f5e204]: 鐢熶骇璁㈠崟
- - generic [ref=f5e205]:
- - generic [ref=f5e206]: "0"
- - generic [ref=f5e208]: 杩涜涓�
- - generic [ref=f5e209]:
- - text: 寰呮帓浜� 0
- - generic [ref=f5e211]: "|"
- - text: 宸插畬鎴� 0
- - generic [ref=f5e223] [cursor=pointer]:
- - generic [ref=f5e224]: 浠婃棩浜ч噺
- - generic [ref=f5e225]:
- - generic [ref=f5e226]: "0"
- - generic [ref=f5e228]: 浠�
- - generic [ref=f5e229]: 鏄ㄦ棩 0 浠�
- - generic [ref=f5e240] [cursor=pointer]:
- - generic [ref=f5e241]: 璐ㄩ噺鍚堟牸鐜�
- - generic [ref=f5e242]:
- - generic [ref=f5e243]: "0.0"
- - generic [ref=f5e245]: "%"
- - generic [ref=f5e246]: 鍚堟牸 0 | 涓嶈壇 0
- - generic [ref=f5e258] [cursor=pointer]:
- - generic [ref=f5e259]: 璁惧杩愯鐜�
- - generic [ref=f5e260]:
- - generic [ref=f5e261]: "33.3"
- - generic [ref=f5e263]: "%"
- - generic [ref=f5e264]:
- - generic [ref=f5e265]: 鍋滄満 1
- - generic [ref=f5e266]: "|"
- - generic [ref=f5e267]: 缁存姢 1
- - generic [ref=f5e270]:
- - generic [ref=f5e280] [cursor=pointer]:
- - generic [ref=f5e281]: 閲囪喘璁㈠崟
- - generic [ref=f5e282]:
- - generic [ref=f5e283]: "0"
- - generic [ref=f5e285]: 绗�
- - generic [ref=f5e286]: ERP 閲囪喘绠$悊
- - generic [ref=f5e297] [cursor=pointer]:
- - generic [ref=f5e298]: 閿�鍞鍗�
- - generic [ref=f5e299]:
- - generic [ref=f5e300]: "0"
- - generic [ref=f5e302]: 绗�
- - generic [ref=f5e303]: ERP 閿�鍞鐞�
- - generic [ref=f5e315] [cursor=pointer]:
- - generic [ref=f5e316]: 鐗╂枡搴撳瓨
- - generic [ref=f5e317]:
- - generic [ref=f5e318]: "0"
- - generic [ref=f5e320]: 鏉�
- - generic [ref=f5e321]: MES 搴撳瓨鍙拌处
- - generic [ref=f5e333] [cursor=pointer]:
- - generic [ref=f5e334]: 鎴戠殑寰呭姙
- - generic [ref=f5e335]:
- - generic [ref=f5e336]: "0"
- - generic [ref=f5e338]: 椤�
- - generic [ref=f5e339]: BPM 寰呭鎵�
- - generic [ref=f5e342]:
- - generic [ref=f5e343]:
- - heading "AI 鏅鸿兘鍒嗘瀽" [level=3] [ref=f5e344]
- - generic [ref=f5e345]: 0 涓伐鍗曞彲鍒嗘瀽
- - generic [ref=f5e346]:
- - generic [ref=f5e354] [cursor=pointer]:
- - generic [ref=f5e355]: AI 鐗╂枡棰勬祴
- - generic [ref=f5e356]: 棰勬祴鐗╂枡闇�姹備笌鐭己椋庨櫓
- - generic [ref=f5e365] [cursor=pointer]:
- - generic [ref=f5e366]: AI 鏃堕暱棰勬祴
- - generic [ref=f5e367]: 棰勬祴鍚勫伐搴忕敓浜ц�楁椂
- - generic [ref=f5e374] [cursor=pointer]:
- - generic [ref=f5e375]: AI 椋庨櫓棰勬祴
- - generic [ref=f5e376]: 璇嗗埆娼滃湪鐢熶骇椋庨櫓骞剁粰鍑哄缓璁�
- - generic [ref=f5e386] [cursor=pointer]:
- - generic [ref=f5e387]: AI 浜や粯璇勪及
- - generic [ref=f5e388]: 璇勪及璁㈠崟浜や粯鍑嗘椂鐜囦笌寤舵湡鍥犵礌
- - generic [ref=f5e391]:
- - heading "鐢熶骇瓒嬪娍锛堣繎7澶╋級" [level=3] [ref=f5e394]
- - generic [ref=f5e399]:
- - generic [ref=f5e400]:
- - generic [ref=f5e406] [cursor=pointer]:
- - generic [ref=f5e407]: 瀹夌伅鍛煎彨
- - generic [ref=f5e408]:
- - generic [ref=f5e409]: "0"
- - generic [ref=f5e411]: 鏈缃�
- - generic [ref=f5e417] [cursor=pointer]:
- - generic [ref=f5e418]: 缁翠慨宸ュ崟
- - generic [ref=f5e419]:
- - generic [ref=f5e420]: "0"
- - generic [ref=f5e422]: 寰呭鐞�
- - heading "宸ュ崟鐘舵�佸垎甯�" [level=4] [ref=f5e424]
- - generic [ref=f5e432]:
- - heading "蹇嵎鎿嶄綔" [level=3] [ref=f5e433]
- - generic [ref=f5e434]:
- - generic [ref=f5e435] [cursor=pointer]: 鐢熶骇宸ュ崟
- - generic [ref=f5e442] [cursor=pointer]: 鐢熶骇鎶ュ伐
- - generic [ref=f5e449] [cursor=pointer]: 璐ㄦ绠$悊
- - generic [ref=f5e457] [cursor=pointer]: 璁惧鐐规
- - generic [ref=f5e464] [cursor=pointer]: 鐢熶骇鎺掔▼
- - generic [ref=f5e471] [cursor=pointer]: 瀹夌伅鍛煎彨
- - generic [ref=f5e476] [cursor=pointer]: 鐗╂枡搴撳瓨
- - generic [ref=f5e484] [cursor=pointer]: 宸ヨ壓璺嚎
- - generic [ref=f5e492] [cursor=pointer]: 鏁版嵁鎶ヨ〃
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-26-06-325Z.yml b/.playwright-mcp/page-2026-08-19T02-26-06-325Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-19T02-26-06-325Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-26-42-507Z.yml b/.playwright-mcp/page-2026-08-19T02-26-42-507Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-19T02-26-42-507Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-28-43-496Z.yml b/.playwright-mcp/page-2026-08-19T02-28-43-496Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-19T02-28-43-496Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-28-56-514Z.yml b/.playwright-mcp/page-2026-08-19T02-28-56-514Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-19T02-28-56-514Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-29-21-301Z.yml b/.playwright-mcp/page-2026-08-19T02-29-21-301Z.yml
deleted file mode 100644
index 43566c5..0000000
--- a/.playwright-mcp/page-2026-08-19T02-29-21-301Z.yml
+++ /dev/null
@@ -1,114 +0,0 @@
-- generic [ref=f12e1]:
- - generic [ref=f12e4]:
- - complementary [ref=f12e6]:
- - generic [ref=f12e7]:
- - generic [ref=f12e8] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f12e13] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f12e16]
- - generic [ref=f12e17]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f12e20]:
- - menuitem "鍩虹鏁版嵁涓庝竴琚嬩竴鐮�" [ref=f12e21] [cursor=pointer]
- - listitem [ref=f12e26]:
- - generic [ref=f12e27] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f12e35]:
- - generic [ref=f12e36] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - listitem [ref=f12e42]:
- - generic [ref=f12e43] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f12e50] [cursor=pointer]
- - generic [ref=f12e55]:
- - generic [ref=f12e56]:
- - banner [ref=f12e57]:
- - button [ref=f12e58] [cursor=pointer]
- - button [ref=f12e61] [cursor=pointer]
- - navigation "breadcrumb" [ref=f12e66]:
- - list [ref=f12e67]:
- - listitem [ref=f12e68]:
- - link "鍩虹鏁版嵁涓庝竴琚嬩竴鐮�" [disabled] [ref=f12e69]
- - generic [ref=f12e74]:
- - generic [ref=f12e76] [cursor=pointer]:
- - generic [ref=f12e80]: 鎼滅储
- - generic [ref=f12e81]: Ctrl K
- - button [ref=f12e83] [cursor=pointer]
- - button "dark" [ref=f12e88] [cursor=pointer]
- - button [ref=f12e97] [cursor=pointer]
- - button [ref=f12e103] [cursor=pointer]
- - button [ref=f12e106] [cursor=pointer]
- - button [ref=f12e112] [cursor=pointer]:
- - button [ref=f12e114]
- - button "宸ヤ綔鍙�" [ref=f12e118] [cursor=pointer]
- - button "鐞嗗憳" [ref=f12e122] [cursor=pointer]
- - generic [ref=f12e129]:
- - generic [ref=f12e134]:
- - generic [ref=f12e135] [cursor=pointer]: 棣栭〉
- - generic [ref=f12e153] [cursor=pointer]: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - generic [ref=f12e170]:
- - button [expanded] [active] [ref=f12e171] [cursor=pointer]
- - generic [ref=f12e178] [cursor=pointer]
- - generic [ref=f12e182] [cursor=pointer]
- - main [ref=f12e189]:
- - generic [ref=f12e192]:
- - generic [ref=f12e193]:
- - generic [ref=f12e203] [cursor=pointer]:
- - generic [ref=f12e204]: 鍝佺鎬绘暟
- - generic [ref=f12e205]: "0"
- - generic [ref=f12e216] [cursor=pointer]:
- - generic [ref=f12e217]: MES 鍝佺
- - generic [ref=f12e218]: "0"
- - generic [ref=f12e229] [cursor=pointer]:
- - generic [ref=f12e230]: 鍝佺鍒嗙被
- - generic [ref=f12e231]: "0"
- - generic [ref=f12e240] [cursor=pointer]:
- - generic [ref=f12e241]: 璁¢噺鍗曚綅
- - generic [ref=f12e242]: "0"
- - generic [ref=f12e244]:
- - generic [ref=f12e252] [cursor=pointer]:
- - generic [ref=f12e253]: 浜х嚎
- - generic [ref=f12e254]: "0"
- - generic [ref=f12e266] [cursor=pointer]:
- - generic [ref=f12e267]: 鐢熶骇鎵规
- - generic [ref=f12e268]: "0"
- - generic [ref=f12e277] [cursor=pointer]:
- - generic [ref=f12e278]: 琚嬬爜
- - generic [ref=f12e279]: "0"
- - generic [ref=f12e290] [cursor=pointer]:
- - generic [ref=f12e291]: 鎵樼洏鐮�
- - generic [ref=f12e292]: "0"
- - generic [ref=f12e294]:
- - generic [ref=f12e298]:
- - generic [ref=f12e299]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=f12e301]:
- - generic [ref=f12e302] [cursor=pointer]:
- - generic [ref=f12e303]:
- - radio "杩� 7 澶�" [checked]
- - generic [ref=f12e304]: 杩� 7 澶�
- - generic [ref=f12e305] [cursor=pointer]:
- - generic [ref=f12e306]:
- - radio "杩� 30 澶�"
- - generic [ref=f12e307]: 杩� 30 澶�
- - generic [ref=f12e312]: 鎵规鐘舵�佸垎甯�
- - generic [ref=f12e321]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=f12e330]:
- - generic [ref=f12e331]: 蹇嵎鍏ュ彛
- - generic [ref=f12e335]:
- - generic [ref=f12e336]: 鐗╂枡绠$悊
- - generic [ref=f12e344]: 鐢熶骇鐗╂枡
- - generic [ref=f12e352]: 鍝佺鍒嗙被
- - generic [ref=f12e360]: 璁¢噺鍗曚綅
- - generic [ref=f12e366]: 浜х嚎缁存姢
- - generic [ref=f12e372]: 鎵规鐢熶骇
- - generic [ref=f12e381]: 璧嬬爜绠$悊
- - generic [ref=f12e387]: 鎵樼洏鐮佺鐞�
- - menu [ref=f12e396]:
- - group [ref=f12e397]:
- - menuitem "鍏抽棴" [ref=f12e398] [cursor=pointer]
- - menuitem "鍥哄畾" [ref=f12e399] [cursor=pointer]
- - menuitem "鏈�澶у寲" [ref=f12e400] [cursor=pointer]
- - menuitem "閲嶆柊鍔犺浇" [ref=f12e401] [cursor=pointer]
- - menuitem "鍦ㄦ柊绐楀彛鎵撳紑" [ref=f12e402] [cursor=pointer]
- - separator [ref=f12e403]
- - menuitem "鍏抽棴宸︿晶鏍囩椤�" [disabled]
- - menuitem "鍏抽棴鍙充晶鏍囩椤�" [disabled]
- - separator [ref=f12e404]
- - menuitem "鍏抽棴鍏跺畠鏍囩椤�" [disabled]
- - menuitem "鍏抽棴鍏ㄩ儴鏍囩椤�" [ref=f12e405] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-29-31-299Z.yml b/.playwright-mcp/page-2026-08-19T02-29-31-299Z.yml
deleted file mode 100644
index 323b7db..0000000
--- a/.playwright-mcp/page-2026-08-19T02-29-31-299Z.yml
+++ /dev/null
@@ -1,169 +0,0 @@
-- generic:
- - generic:
- - generic:
- - generic:
- - complementary:
- - generic:
- - generic:
- - generic:
- - link:
- - /url: javascript:void 0
- - generic: 宸ヤ笟AI鏅洪�犲钩鍙�
- - generic:
- - generic:
- - menu:
- - menuitem:
- - generic: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - listitem:
- - generic: 鍩虹鏁版嵁
- - listitem:
- - generic: 涓�琚嬩竴鐮佺鐞�
- - listitem:
- - generic: 绯荤粺绠$悊
- - generic:
- - generic:
- - banner:
- - button
- - button
- - generic:
- - navigation:
- - list:
- - listitem:
- - link [disabled]:
- - generic: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - generic:
- - generic:
- - generic:
- - generic: 鎼滅储
- - generic: Ctrl K
- - generic:
- - button
- - generic:
- - button "dark"
- - generic:
- - button
- - generic:
- - button
- - button
- - button:
- - generic:
- - button
- - button:
- - generic: 宸ヤ綔鍙�
- - button [expanded] [active]:
- - generic: 鐞嗗憳
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 棣栭〉
- - generic: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - generic:
- - button
- - main:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 鍝佺鎬绘暟
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: MES 鍝佺
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 鍝佺鍒嗙被
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 璁¢噺鍗曚綅
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 浜х嚎
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 鐢熶骇鎵规
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 琚嬬爜
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 鎵樼洏鐮�
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 琚嬬爜鐢熸垚瓒嬪娍
- - generic:
- - generic:
- - generic: 杩� 7 澶�
- - generic: 杩� 30 澶�
- - generic: 鎵规鐘舵�佸垎甯�
- - generic: 琚嬬爜鐘舵�佸垎甯�
- - generic:
- - generic: 蹇嵎鍏ュ彛
- - generic:
- - generic:
- - generic: 鐗╂枡绠$悊
- - generic: 鐢熶骇鐗╂枡
- - generic: 鍝佺鍒嗙被
- - generic: 璁¢噺鍗曚綅
- - generic: 浜х嚎缁存姢
- - generic: 鎵规鐢熶骇
- - generic: 璧嬬爜绠$悊
- - generic: 鎵樼洏鐮佺鐞�
- - menu "瓒呯骇绠$悊鍛� 鐞嗗憳" [ref=f12e406]:
- - generic [ref=f12e407]:
- - generic [ref=f12e408]:
- - generic [ref=f12e409]: 鐞嗗憳
- - generic [ref=f12e413]:
- - generic [ref=f12e414]:
- - text: 瓒呯骇绠$悊鍛�
- - generic [ref=f12e415]: admin
- - generic [ref=f12e416]: 13aoteman@126.com
- - separator [ref=f12e417]
- - menuitem "涓汉涓績" [ref=f12e418] [cursor=pointer]
- - separator [ref=f12e419]
- - menuitem "閿佸畾灞忓箷 Alt L" [ref=f12e420] [cursor=pointer]:
- - text: 閿佸畾灞忓箷
- - generic [ref=f12e421]: Alt L
- - separator [ref=f12e422]
- - menuitem "閫�鍑虹櫥褰� Alt Q" [ref=f12e423] [cursor=pointer]:
- - text: 閫�鍑虹櫥褰�
- - generic [ref=f12e424]: Alt Q
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-29-38-624Z.yml b/.playwright-mcp/page-2026-08-19T02-29-38-624Z.yml
deleted file mode 100644
index ad117ee..0000000
--- a/.playwright-mcp/page-2026-08-19T02-29-38-624Z.yml
+++ /dev/null
@@ -1,124 +0,0 @@
-- generic [ref=f12e1]:
- - generic [ref=f12e4]:
- - complementary [ref=f12e6]:
- - generic [ref=f12e7]:
- - generic [ref=f12e8] [cursor=pointer]
- - link [ref=f12e425] [cursor=pointer]:
- - /url: javascript:void 0
- - generic [ref=f12e17]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f12e20]:
- - menuitem [ref=f12e427] [cursor=pointer]:
- - generic [ref=f12e22]: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - listitem [ref=f12e26]:
- - generic [ref=f12e27] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f12e35]:
- - generic [ref=f12e36] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - listitem [ref=f12e42]:
- - generic [ref=f12e43] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f12e50] [cursor=pointer]
- - generic [ref=f12e55]:
- - generic [ref=f12e56]:
- - banner [ref=f12e57]:
- - button [ref=f12e58] [cursor=pointer]
- - button [ref=f12e61] [cursor=pointer]
- - navigation [ref=f12e428]:
- - list [ref=f12e67]:
- - listitem [ref=f12e68]:
- - link [disabled] [ref=f12e429]:
- - generic [ref=f12e70]: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - generic [ref=f12e74]:
- - generic [ref=f12e76] [cursor=pointer]:
- - generic [ref=f12e80]: 鎼滅储
- - generic [ref=f12e81]: Ctrl K
- - button [ref=f12e83] [cursor=pointer]
- - button "dark" [ref=f12e88] [cursor=pointer]
- - button [ref=f12e97] [cursor=pointer]
- - button [ref=f12e103] [cursor=pointer]
- - button [ref=f12e106] [cursor=pointer]
- - button [ref=f12e112] [cursor=pointer]:
- - button [ref=f12e114]
- - button [ref=f12e430] [cursor=pointer]:
- - generic [ref=f12e121]: 宸ヤ綔鍙�
- - button [ref=f12e431] [cursor=pointer]:
- - generic [ref=f12e123]: 鐞嗗憳
- - generic [ref=f12e129]:
- - generic [ref=f12e134]:
- - generic [ref=f12e135] [cursor=pointer]: 棣栭〉
- - generic [ref=f12e153] [cursor=pointer]: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - generic [ref=f12e170]:
- - button [ref=f12e171] [cursor=pointer]
- - generic [ref=f12e178] [cursor=pointer]
- - generic [ref=f12e182] [cursor=pointer]
- - main [ref=f12e189]:
- - generic [ref=f12e192]:
- - generic [ref=f12e193]:
- - generic [ref=f12e203] [cursor=pointer]:
- - generic [ref=f12e204]: 鍝佺鎬绘暟
- - generic [ref=f12e205]: "0"
- - generic [ref=f12e216] [cursor=pointer]:
- - generic [ref=f12e217]: MES 鍝佺
- - generic [ref=f12e218]: "0"
- - generic [ref=f12e229] [cursor=pointer]:
- - generic [ref=f12e230]: 鍝佺鍒嗙被
- - generic [ref=f12e231]: "0"
- - generic [ref=f12e240] [cursor=pointer]:
- - generic [ref=f12e241]: 璁¢噺鍗曚綅
- - generic [ref=f12e242]: "0"
- - generic [ref=f12e244]:
- - generic [ref=f12e252] [cursor=pointer]:
- - generic [ref=f12e253]: 浜х嚎
- - generic [ref=f12e254]: "0"
- - generic [ref=f12e266] [cursor=pointer]:
- - generic [ref=f12e267]: 鐢熶骇鎵规
- - generic [ref=f12e268]: "0"
- - generic [ref=f12e277] [cursor=pointer]:
- - generic [ref=f12e278]: 琚嬬爜
- - generic [ref=f12e279]: "0"
- - generic [ref=f12e290] [cursor=pointer]:
- - generic [ref=f12e291]: 鎵樼洏鐮�
- - generic [ref=f12e292]: "0"
- - generic [ref=f12e294]:
- - generic [ref=f12e298]:
- - generic [ref=f12e299]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=f12e301]:
- - generic [ref=f12e302] [cursor=pointer]: 杩� 7 澶�
- - generic [ref=f12e305] [cursor=pointer]: 杩� 30 澶�
- - generic [ref=f12e312]: 鎵规鐘舵�佸垎甯�
- - generic [ref=f12e321]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=f12e330]:
- - generic [ref=f12e331]: 蹇嵎鍏ュ彛
- - generic [ref=f12e335]:
- - generic [ref=f12e336]: 鐗╂枡绠$悊
- - generic [ref=f12e344]: 鐢熶骇鐗╂枡
- - generic [ref=f12e352]: 鍝佺鍒嗙被
- - generic [ref=f12e360]: 璁¢噺鍗曚綅
- - generic [ref=f12e366]: 浜х嚎缁存姢
- - generic [ref=f12e372]: 鎵规鐢熶骇
- - generic [ref=f12e381]: 璧嬬爜绠$悊
- - generic [ref=f12e387]: 鎵樼洏鐮佺鐞�
- - dialog [ref=f12e433]:
- - heading "鎻愮ず" [level=2] [ref=f12e435]
- - generic [ref=f12e437]: 鏄惁閫�鍑虹櫥褰曪紵
- - generic [ref=f12e438]:
- - button "鍙� 娑�" [ref=f12e439] [cursor=pointer]
- - button "纭� 璁�" [ref=f12e441] [cursor=pointer]
- - button [ref=f12e443] [cursor=pointer]
- - menu "瓒呯骇绠$悊鍛� 鐞嗗憳" [ref=f12e406]:
- - generic [ref=f12e407]:
- - generic [ref=f12e408]:
- - generic [ref=f12e409]: 鐞嗗憳
- - generic [ref=f12e413]:
- - generic [ref=f12e414]:
- - text: 瓒呯骇绠$悊鍛�
- - generic [ref=f12e415]: admin
- - generic [ref=f12e416]: 13aoteman@126.com
- - separator [ref=f12e417]
- - menuitem "涓汉涓績" [ref=f12e418] [cursor=pointer]
- - separator [ref=f12e419]
- - menuitem "閿佸畾灞忓箷 Alt L" [ref=f12e420] [cursor=pointer]:
- - text: 閿佸畾灞忓箷
- - generic [ref=f12e421]: Alt L
- - separator [ref=f12e422]
- - menuitem "閫�鍑虹櫥褰� Alt Q" [active] [ref=f12e423] [cursor=pointer]:
- - text: 閫�鍑虹櫥褰�
- - generic [ref=f12e424]: Alt Q
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-29-47-885Z.yml b/.playwright-mcp/page-2026-08-19T02-29-47-885Z.yml
deleted file mode 100644
index 8d49d71..0000000
--- a/.playwright-mcp/page-2026-08-19T02-29-47-885Z.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-- generic [ref=f12e455]:
- - generic [ref=f12e456]:
- - generic [ref=f12e457]:
- - generic [ref=f12e458]:
- - generic:
- - button [ref=f12e459] [cursor=pointer]
- - button [ref=f12e463] [cursor=pointer]
- - button [ref=f12e465] [cursor=pointer]
- - button [ref=f12e467] [cursor=pointer]
- - button [ref=f12e469] [cursor=pointer]
- - button [ref=f12e471] [cursor=pointer]
- - button [ref=f12e473] [cursor=pointer]
- - button [ref=f12e475] [cursor=pointer]
- - button [ref=f12e482] [cursor=pointer]
- - button [ref=f12e486] [cursor=pointer]
- - button "dark" [ref=f12e492] [cursor=pointer]
- - generic [ref=f12e501]:
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f12e502]
- - paragraph [ref=f12e503]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - generic [ref=f12e507]:
- - img "87667-SVG8" [ref=f12e508]
- - generic [ref=f12e812]: 寮�绠卞嵆鐢ㄧ殑澶у瀷涓悗鍙扮鐞嗙郴缁�
- - generic [ref=f12e813]: 宸ョ▼鍖栥�侀珮鎬ц兘銆佽法缁勪欢搴撶殑鍓嶇妯$増
- - generic [ref=f12e814]:
- - generic [ref=f12e816]:
- - generic [ref=f12e817]:
- - heading "娆㈣繋鍥炴潵 馃憢馃徎" [level=2] [ref=f12e818]
- - paragraph [ref=f12e819]:
- - generic [ref=f12e820]: 璇疯緭鍏ユ偍鐨勮处鎴蜂俊鎭互寮�濮嬬鐞嗘偍鐨勯」鐩�
- - generic [ref=f12e822]:
- - textbox "璇疯緭鍏ョ敤鎴峰悕" [ref=f12e828]: admin
- - generic [ref=f12e834]:
- - textbox "璇疯緭鍏ュ瘑鐮�" [ref=f12e835]: admin123
- - generic [ref=f12e836] [cursor=pointer]
- - generic [ref=f12e844]:
- - checkbox "璁颁綇璐﹀彿" [ref=f12e845] [cursor=pointer]
- - generic [ref=f12e846] [cursor=pointer]: 璁颁綇璐﹀彿
- - button "login" [ref=f12e847] [cursor=pointer]: 鐧诲綍
- - generic [ref=f12e849]:
- - text: Copyright 漏 2024
- - link "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f12e850] [cursor=pointer]:
- - /url: https://gitee.com/yudaocode/yudao-ui-admin-vben
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-31-28-342Z.yml b/.playwright-mcp/page-2026-08-19T02-31-28-342Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-19T02-31-28-342Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-31-43-280Z.yml b/.playwright-mcp/page-2026-08-19T02-31-43-280Z.yml
deleted file mode 100644
index 7123842..0000000
--- a/.playwright-mcp/page-2026-08-19T02-31-43-280Z.yml
+++ /dev/null
@@ -1,163 +0,0 @@
-- generic:
- - generic:
- - generic:
- - generic:
- - complementary:
- - generic:
- - generic:
- - generic:
- - link:
- - /url: javascript:void 0
- - generic: 宸ヤ笟AI鏅洪�犲钩鍙�
- - generic:
- - generic:
- - menu:
- - menuitem:
- - generic: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - listitem:
- - generic: 鍩虹鏁版嵁
- - listitem:
- - generic: 涓�琚嬩竴鐮佺鐞�
- - listitem:
- - generic: 绯荤粺绠$悊
- - generic:
- - generic:
- - banner:
- - button
- - button
- - generic:
- - navigation:
- - list:
- - listitem:
- - link [disabled]:
- - generic: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - generic:
- - generic:
- - generic:
- - generic: 鎼滅储
- - generic: Ctrl K
- - generic:
- - button
- - generic:
- - button "dark"
- - generic:
- - button
- - generic:
- - button
- - button
- - button:
- - generic:
- - button
- - button:
- - generic: 宸ヤ綔鍙�
- - button [expanded] [active]:
- - generic: 鐞嗗憳
- - generic:
- - generic: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - generic:
- - button
- - main:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 鍝佺鎬绘暟
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: MES 鍝佺
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 鍝佺鍒嗙被
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 璁¢噺鍗曚綅
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 浜х嚎
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 鐢熶骇鎵规
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 琚嬬爜
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 鎵樼洏鐮�
- - generic: "0"
- - generic:
- - generic:
- - generic:
- - generic:
- - generic:
- - generic: 琚嬬爜鐢熸垚瓒嬪娍
- - generic:
- - generic:
- - generic: 杩� 7 澶�
- - generic: 杩� 30 澶�
- - generic: 鎵规鐘舵�佸垎甯�
- - generic: 琚嬬爜鐘舵�佸垎甯�
- - generic:
- - generic: 蹇嵎鍏ュ彛
- - generic:
- - generic:
- - generic: 鐗╂枡绠$悊
- - generic: 鐢熶骇鐗╂枡
- - generic: 鍝佺鍒嗙被
- - generic: 璁¢噺鍗曚綅
- - generic: 浜х嚎缁存姢
- - generic: 鎵规鐢熶骇
- - generic: 璧嬬爜绠$悊
- - generic: 鎵樼洏鐮佺鐞�
- - menu "瓒呯骇绠$悊鍛� 鐞嗗憳" [ref=f14e377]:
- - generic [ref=f14e378]:
- - generic [ref=f14e379]:
- - generic [ref=f14e380]: 鐞嗗憳
- - generic [ref=f14e384]:
- - generic [ref=f14e385]:
- - text: 瓒呯骇绠$悊鍛�
- - generic [ref=f14e386]: admin
- - generic [ref=f14e387]: 13aoteman@126.com
- - separator [ref=f14e388]
- - menuitem "涓汉涓績" [ref=f14e389] [cursor=pointer]
- - separator [ref=f14e390]
- - menuitem "閿佸畾灞忓箷 Alt L" [ref=f14e391] [cursor=pointer]:
- - text: 閿佸畾灞忓箷
- - generic [ref=f14e392]: Alt L
- - separator [ref=f14e393]
- - menuitem "閫�鍑虹櫥褰� Alt Q" [ref=f14e394] [cursor=pointer]:
- - text: 閫�鍑虹櫥褰�
- - generic [ref=f14e395]: Alt Q
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-31-49-797Z.yml b/.playwright-mcp/page-2026-08-19T02-31-49-797Z.yml
deleted file mode 100644
index 417b55c..0000000
--- a/.playwright-mcp/page-2026-08-19T02-31-49-797Z.yml
+++ /dev/null
@@ -1,122 +0,0 @@
-- generic [ref=f14e4]:
- - generic [ref=f14e7]:
- - complementary [ref=f14e9]:
- - generic [ref=f14e10]:
- - generic [ref=f14e11] [cursor=pointer]
- - link [ref=f14e396] [cursor=pointer]:
- - /url: javascript:void 0
- - generic [ref=f14e20]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f14e23]:
- - menuitem [ref=f14e398] [cursor=pointer]:
- - generic [ref=f14e25]: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - listitem [ref=f14e29]:
- - generic [ref=f14e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f14e38]:
- - generic [ref=f14e39] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - listitem [ref=f14e45]:
- - generic [ref=f14e46] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f14e53] [cursor=pointer]
- - generic [ref=f14e58]:
- - generic [ref=f14e59]:
- - banner [ref=f14e60]:
- - button [ref=f14e61] [cursor=pointer]
- - button [ref=f14e64] [cursor=pointer]
- - navigation [ref=f14e399]:
- - list [ref=f14e70]:
- - listitem [ref=f14e71]:
- - link [disabled] [ref=f14e400]:
- - generic [ref=f14e73]: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - generic [ref=f14e77]:
- - generic [ref=f14e79] [cursor=pointer]:
- - generic [ref=f14e83]: 鎼滅储
- - generic [ref=f14e84]: Ctrl K
- - button [ref=f14e86] [cursor=pointer]
- - button "dark" [ref=f14e91] [cursor=pointer]
- - button [ref=f14e100] [cursor=pointer]
- - button [ref=f14e106] [cursor=pointer]
- - button [ref=f14e109] [cursor=pointer]
- - button [ref=f14e115] [cursor=pointer]:
- - button [ref=f14e117]
- - button [ref=f14e401] [cursor=pointer]:
- - generic [ref=f14e124]: 宸ヤ綔鍙�
- - button [ref=f14e402] [cursor=pointer]:
- - generic [ref=f14e126]: 鐞嗗憳
- - generic [ref=f14e132]:
- - generic [ref=f14e133]: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - generic [ref=f14e152]:
- - button [ref=f14e153] [cursor=pointer]
- - generic [ref=f14e160] [cursor=pointer]
- - generic [ref=f14e164] [cursor=pointer]
- - main [ref=f14e171]:
- - generic [ref=f14e174]:
- - generic [ref=f14e175]:
- - generic [ref=f14e185] [cursor=pointer]:
- - generic [ref=f14e186]: 鍝佺鎬绘暟
- - generic [ref=f14e187]: "0"
- - generic [ref=f14e198] [cursor=pointer]:
- - generic [ref=f14e199]: MES 鍝佺
- - generic [ref=f14e200]: "0"
- - generic [ref=f14e211] [cursor=pointer]:
- - generic [ref=f14e212]: 鍝佺鍒嗙被
- - generic [ref=f14e213]: "0"
- - generic [ref=f14e222] [cursor=pointer]:
- - generic [ref=f14e223]: 璁¢噺鍗曚綅
- - generic [ref=f14e224]: "0"
- - generic [ref=f14e226]:
- - generic [ref=f14e234] [cursor=pointer]:
- - generic [ref=f14e235]: 浜х嚎
- - generic [ref=f14e236]: "0"
- - generic [ref=f14e248] [cursor=pointer]:
- - generic [ref=f14e249]: 鐢熶骇鎵规
- - generic [ref=f14e250]: "0"
- - generic [ref=f14e259] [cursor=pointer]:
- - generic [ref=f14e260]: 琚嬬爜
- - generic [ref=f14e261]: "0"
- - generic [ref=f14e272] [cursor=pointer]:
- - generic [ref=f14e273]: 鎵樼洏鐮�
- - generic [ref=f14e274]: "0"
- - generic [ref=f14e276]:
- - generic [ref=f14e280]:
- - generic [ref=f14e281]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=f14e283]:
- - generic [ref=f14e284] [cursor=pointer]: 杩� 7 澶�
- - generic [ref=f14e287] [cursor=pointer]: 杩� 30 澶�
- - generic [ref=f14e294]: 鎵规鐘舵�佸垎甯�
- - generic [ref=f14e303]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=f14e312]:
- - generic [ref=f14e313]: 蹇嵎鍏ュ彛
- - generic [ref=f14e317]:
- - generic [ref=f14e318]: 鐗╂枡绠$悊
- - generic [ref=f14e326]: 鐢熶骇鐗╂枡
- - generic [ref=f14e334]: 鍝佺鍒嗙被
- - generic [ref=f14e342]: 璁¢噺鍗曚綅
- - generic [ref=f14e348]: 浜х嚎缁存姢
- - generic [ref=f14e354]: 鎵规鐢熶骇
- - generic [ref=f14e363]: 璧嬬爜绠$悊
- - generic [ref=f14e369]: 鎵樼洏鐮佺鐞�
- - dialog [ref=f14e404]:
- - heading "鎻愮ず" [level=2] [ref=f14e406]
- - generic [ref=f14e408]: 鏄惁閫�鍑虹櫥褰曪紵
- - generic [ref=f14e409]:
- - button "鍙� 娑�" [ref=f14e410] [cursor=pointer]
- - button "纭� 璁�" [ref=f14e412] [cursor=pointer]
- - button [ref=f14e414] [cursor=pointer]
- - menu "瓒呯骇绠$悊鍛� 鐞嗗憳" [ref=f14e377]:
- - generic [ref=f14e378]:
- - generic [ref=f14e379]:
- - generic [ref=f14e380]: 鐞嗗憳
- - generic [ref=f14e384]:
- - generic [ref=f14e385]:
- - text: 瓒呯骇绠$悊鍛�
- - generic [ref=f14e386]: admin
- - generic [ref=f14e387]: 13aoteman@126.com
- - separator [ref=f14e388]
- - menuitem "涓汉涓績" [ref=f14e389] [cursor=pointer]
- - separator [ref=f14e390]
- - menuitem "閿佸畾灞忓箷 Alt L" [ref=f14e391] [cursor=pointer]:
- - text: 閿佸畾灞忓箷
- - generic [ref=f14e392]: Alt L
- - separator [ref=f14e393]
- - menuitem "閫�鍑虹櫥褰� Alt Q" [active] [ref=f14e394] [cursor=pointer]:
- - text: 閫�鍑虹櫥褰�
- - generic [ref=f14e395]: Alt Q
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-32-09-962Z.yml b/.playwright-mcp/page-2026-08-19T02-32-09-962Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-19T02-32-09-962Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-32-18-582Z.yml b/.playwright-mcp/page-2026-08-19T02-32-18-582Z.yml
deleted file mode 100644
index 474e8d8..0000000
--- a/.playwright-mcp/page-2026-08-19T02-32-18-582Z.yml
+++ /dev/null
@@ -1,105 +0,0 @@
-- generic [active] [ref=f15e4]:
- - generic [ref=f15e403]:
- - complementary [ref=f15e405]:
- - generic [ref=f15e406]:
- - generic [ref=f15e407] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f15e412] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f15e415]
- - generic [ref=f15e416]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f15e419]:
- - menuitem "鍩虹鏁版嵁涓庝竴琚嬩竴鐮�" [ref=f15e420] [cursor=pointer]
- - listitem [ref=f15e425]:
- - generic [ref=f15e426] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f15e434]:
- - generic [ref=f15e435] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - listitem [ref=f15e441]:
- - generic [ref=f15e442] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f15e449] [cursor=pointer]
- - generic [ref=f15e454]:
- - generic [ref=f15e455]:
- - banner [ref=f15e456]:
- - button [ref=f15e457] [cursor=pointer]
- - button [ref=f15e460] [cursor=pointer]
- - navigation "breadcrumb" [ref=f15e465]:
- - list [ref=f15e466]:
- - listitem [ref=f15e467]:
- - link "鍩虹鏁版嵁涓庝竴琚嬩竴鐮�" [disabled] [ref=f15e468]
- - generic [ref=f15e473]:
- - generic [ref=f15e475] [cursor=pointer]:
- - generic [ref=f15e479]: 鎼滅储
- - generic [ref=f15e480]: Ctrl K
- - button [ref=f15e482] [cursor=pointer]
- - button "dark" [ref=f15e487] [cursor=pointer]
- - button [ref=f15e496] [cursor=pointer]
- - button [ref=f15e502] [cursor=pointer]
- - button [ref=f15e505] [cursor=pointer]
- - button [ref=f15e511] [cursor=pointer]:
- - button [ref=f15e513]
- - button "宸ヤ綔鍙�" [ref=f15e517] [cursor=pointer]
- - button "鐞嗗憳" [ref=f15e521] [cursor=pointer]
- - generic [ref=f15e528]:
- - generic [ref=f15e529]: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - generic [ref=f15e548]:
- - button [ref=f15e549] [cursor=pointer]
- - generic [ref=f15e556] [cursor=pointer]
- - generic [ref=f15e560] [cursor=pointer]
- - main [ref=f15e567]:
- - generic [ref=f15e570]:
- - generic [ref=f15e571]:
- - generic [ref=f15e581] [cursor=pointer]:
- - generic [ref=f15e582]: 鍝佺鎬绘暟
- - generic [ref=f15e583]: "0"
- - generic [ref=f15e594] [cursor=pointer]:
- - generic [ref=f15e595]: MES 鍝佺
- - generic [ref=f15e596]: "0"
- - generic [ref=f15e607] [cursor=pointer]:
- - generic [ref=f15e608]: 鍝佺鍒嗙被
- - generic [ref=f15e609]: "0"
- - generic [ref=f15e618] [cursor=pointer]:
- - generic [ref=f15e619]: 璁¢噺鍗曚綅
- - generic [ref=f15e620]: "0"
- - generic [ref=f15e622]:
- - generic [ref=f15e630] [cursor=pointer]:
- - generic [ref=f15e631]: 浜х嚎
- - generic [ref=f15e632]: "0"
- - generic [ref=f15e644] [cursor=pointer]:
- - generic [ref=f15e645]: 鐢熶骇鎵规
- - generic [ref=f15e646]: "0"
- - generic [ref=f15e655] [cursor=pointer]:
- - generic [ref=f15e656]: 琚嬬爜
- - generic [ref=f15e657]: "0"
- - generic [ref=f15e668] [cursor=pointer]:
- - generic [ref=f15e669]: 鎵樼洏鐮�
- - generic [ref=f15e670]: "0"
- - generic [ref=f15e672]:
- - generic [ref=f15e676]:
- - generic [ref=f15e677]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=f15e679]:
- - generic [ref=f15e680] [cursor=pointer]:
- - generic [ref=f15e681]:
- - radio "杩� 7 澶�" [checked]
- - generic [ref=f15e682]: 杩� 7 澶�
- - generic [ref=f15e683] [cursor=pointer]:
- - generic [ref=f15e684]:
- - radio "杩� 30 澶�"
- - generic [ref=f15e685]: 杩� 30 澶�
- - generic [ref=f15e690]: 鎵规鐘舵�佸垎甯�
- - generic [ref=f15e699]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=f15e708]:
- - generic [ref=f15e709]: 蹇嵎鍏ュ彛
- - generic [ref=f15e713]:
- - generic [ref=f15e714]: 鐗╂枡绠$悊
- - generic [ref=f15e722]: 鐢熶骇鐗╂枡
- - generic [ref=f15e730]: 鍝佺鍒嗙被
- - generic [ref=f15e738]: 璁¢噺鍗曚綅
- - generic [ref=f15e744]: 浜х嚎缁存姢
- - generic [ref=f15e750]: 鎵规鐢熶骇
- - generic [ref=f15e759]: 璧嬬爜绠$悊
- - generic [ref=f15e765]: 鎵樼洏鐮佺鐞�
- - generic [ref=f15e775]:
- - generic [ref=f15e777]:
- - img "check-circle" [ref=f15e778]
- - generic [ref=f15e782]: 鐧诲綍鎴愬姛
- - generic [ref=f15e783]: 娆㈣繋鍥炴潵:瓒呯骇绠$悊鍛�
- - img "close" [ref=f15e786] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-33-50-857Z.yml b/.playwright-mcp/page-2026-08-19T02-33-50-857Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-19T02-33-50-857Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-33-58-475Z.yml b/.playwright-mcp/page-2026-08-19T02-33-58-475Z.yml
deleted file mode 100644
index 111449e..0000000
--- a/.playwright-mcp/page-2026-08-19T02-33-58-475Z.yml
+++ /dev/null
@@ -1,102 +0,0 @@
-- generic [active] [ref=f16e4]:
- - generic [ref=f16e413]:
- - complementary [ref=f16e415]:
- - generic [ref=f16e416]:
- - generic [ref=f16e417] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f16e422] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f16e425]
- - generic [ref=f16e426]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f16e429]:
- - menuitem "鍩虹鏁版嵁涓庝竴琚嬩竴鐮�" [ref=f16e430] [cursor=pointer]
- - listitem [ref=f16e434]:
- - generic [ref=f16e435] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f16e440]:
- - generic [ref=f16e441] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - listitem [ref=f16e446]:
- - generic [ref=f16e447] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f16e453] [cursor=pointer]
- - generic [ref=f16e458]:
- - generic [ref=f16e459]:
- - banner [ref=f16e460]:
- - button [ref=f16e461] [cursor=pointer]
- - button [ref=f16e463] [cursor=pointer]
- - navigation "breadcrumb" [ref=f16e468]:
- - list [ref=f16e469]:
- - listitem [ref=f16e470]:
- - link "鍩虹鏁版嵁涓庝竴琚嬩竴鐮�" [disabled] [ref=f16e471]
- - generic [ref=f16e475]:
- - generic [ref=f16e477] [cursor=pointer]:
- - generic [ref=f16e481]: 鎼滅储
- - generic [ref=f16e482]: Ctrl K
- - button [ref=f16e484] [cursor=pointer]
- - button "dark" [ref=f16e489] [cursor=pointer]
- - button [ref=f16e498] [cursor=pointer]
- - button [ref=f16e504] [cursor=pointer]
- - button [ref=f16e507] [cursor=pointer]
- - button [ref=f16e513] [cursor=pointer]:
- - button [ref=f16e515]
- - button "宸ヤ綔鍙�" [ref=f16e519] [cursor=pointer]
- - button [ref=f16e522] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f16e527]
- - generic [ref=f16e529]:
- - generic [ref=f16e530]: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - generic [ref=f16e548]:
- - button [ref=f16e549] [cursor=pointer]
- - generic [ref=f16e556] [cursor=pointer]
- - generic [ref=f16e560] [cursor=pointer]
- - main [ref=f16e567]:
- - generic [ref=f16e570]:
- - generic [ref=f16e571]:
- - generic [ref=f16e578] [cursor=pointer]:
- - generic [ref=f16e579]: 鍝佺鎬绘暟
- - generic [ref=f16e580]: "0"
- - generic [ref=f16e588] [cursor=pointer]:
- - generic [ref=f16e589]: MES 鍝佺
- - generic [ref=f16e590]: "0"
- - generic [ref=f16e598] [cursor=pointer]:
- - generic [ref=f16e599]: 鍝佺鍒嗙被
- - generic [ref=f16e600]: "0"
- - generic [ref=f16e608] [cursor=pointer]:
- - generic [ref=f16e609]: 璁¢噺鍗曚綅
- - generic [ref=f16e610]: "0"
- - generic [ref=f16e612]:
- - generic [ref=f16e619] [cursor=pointer]:
- - generic [ref=f16e620]: 浜х嚎
- - generic [ref=f16e621]: "0"
- - generic [ref=f16e629] [cursor=pointer]:
- - generic [ref=f16e630]: 鐢熶骇鎵规
- - generic [ref=f16e631]: "0"
- - generic [ref=f16e639] [cursor=pointer]:
- - generic [ref=f16e640]: 琚嬬爜
- - generic [ref=f16e641]: "0"
- - generic [ref=f16e649] [cursor=pointer]:
- - generic [ref=f16e650]: 鎵樼洏鐮�
- - generic [ref=f16e651]: "0"
- - generic [ref=f16e653]:
- - generic [ref=f16e657]:
- - generic [ref=f16e658]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=f16e660]:
- - generic [ref=f16e661] [cursor=pointer]:
- - generic [ref=f16e662]:
- - radio "杩� 7 澶�" [checked]
- - generic [ref=f16e663]: 杩� 7 澶�
- - generic [ref=f16e664] [cursor=pointer]:
- - generic [ref=f16e665]:
- - radio "杩� 30 澶�"
- - generic [ref=f16e666]: 杩� 30 澶�
- - generic [ref=f16e671]: 鎵规鐘舵�佸垎甯�
- - generic [ref=f16e680]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=f16e689]:
- - generic [ref=f16e690]: 蹇嵎鍏ュ彛
- - generic [ref=f16e694]:
- - generic [ref=f16e695]: 鍝佺绠$悊
- - generic [ref=f16e700]: 鍝佺鍒嗙被
- - generic [ref=f16e705]: 鎵规鐢熶骇
- - generic [ref=f16e710]: 璧嬬爜绠$悊
- - generic [ref=f16e717]:
- - generic [ref=f16e719]:
- - img "check-circle" [ref=f16e720]
- - generic [ref=f16e724]: 鐧诲綍鎴愬姛
- - generic [ref=f16e725]: 娆㈣繋鍥炴潵:瓒呯骇绠$悊鍛�
- - img "close" [ref=f16e728] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-19T02-34-08-855Z.yml b/.playwright-mcp/page-2026-08-19T02-34-08-855Z.yml
deleted file mode 100644
index fa1daf3..0000000
--- a/.playwright-mcp/page-2026-08-19T02-34-08-855Z.yml
+++ /dev/null
@@ -1,105 +0,0 @@
-- generic [ref=f16e413]:
- - complementary [ref=f16e415]:
- - generic [ref=f16e416]:
- - generic [ref=f16e417] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f16e422] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f16e425]
- - generic [ref=f16e426]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f16e429]:
- - menuitem "鍩虹鏁版嵁涓庝竴琚嬩竴鐮�" [ref=f16e430] [cursor=pointer]
- - listitem [ref=f16e434]:
- - generic [ref=f16e435] [cursor=pointer]: 鍩虹鏁版嵁
- - list:
- - menuitem "鍝佺绠$悊" [ref=f16e771] [cursor=pointer]
- - menuitem "鍝佺鍒嗙被" [ref=f16e778] [cursor=pointer]
- - menuitem "璁¢噺鍗曚綅" [ref=f16e783] [cursor=pointer]
- - listitem [ref=f16e440]:
- - generic [ref=f16e441] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - listitem [ref=f16e446]:
- - generic [ref=f16e447] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f16e453] [cursor=pointer]
- - generic [ref=f16e458]:
- - generic [ref=f16e459]:
- - banner [ref=f16e460]:
- - button [ref=f16e461] [cursor=pointer]
- - button [ref=f16e463] [cursor=pointer]
- - navigation "breadcrumb" [ref=f16e468]:
- - list [ref=f16e469]:
- - listitem [ref=f16e788]:
- - link "鍩虹鏁版嵁" [ref=f16e789] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f16e795]
- - listitem [ref=f16e798]:
- - link "鍝佺绠$悊" [disabled] [ref=f16e799]
- - generic [ref=f16e475]:
- - generic [ref=f16e477] [cursor=pointer]:
- - generic [ref=f16e481]: 鎼滅储
- - generic [ref=f16e482]: Ctrl K
- - button [ref=f16e484] [cursor=pointer]
- - button "dark" [ref=f16e489] [cursor=pointer]
- - button [ref=f16e498] [cursor=pointer]
- - button [ref=f16e504] [cursor=pointer]
- - button [ref=f16e507] [cursor=pointer]
- - button [ref=f16e513] [cursor=pointer]:
- - button [ref=f16e515]
- - button "宸ヤ綔鍙�" [ref=f16e519] [cursor=pointer]
- - button [ref=f16e522] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f16e527]
- - generic [ref=f16e529]:
- - generic [ref=f16e534]:
- - generic [ref=f16e535] [cursor=pointer]: 鍩虹鏁版嵁涓庝竴琚嬩竴鐮�
- - generic [ref=f16e808] [cursor=pointer]: 鍝佺绠$悊
- - generic [ref=f16e548]:
- - button [ref=f16e549] [cursor=pointer]
- - generic [ref=f16e556] [cursor=pointer]
- - generic [ref=f16e560] [cursor=pointer]
- - main [ref=f16e567]:
- - generic [ref=f16e570]:
- - generic [ref=f16e571]:
- - generic [ref=f16e578] [cursor=pointer]:
- - generic [ref=f16e579]: 鍝佺鎬绘暟
- - generic [ref=f16e580]: "0"
- - generic [ref=f16e588] [cursor=pointer]:
- - generic [ref=f16e589]: MES 鍝佺
- - generic [ref=f16e590]: "0"
- - generic [ref=f16e598] [cursor=pointer]:
- - generic [ref=f16e599]: 鍝佺鍒嗙被
- - generic [ref=f16e600]: "1"
- - generic [ref=f16e608] [cursor=pointer]:
- - generic [ref=f16e609]: 璁¢噺鍗曚綅
- - generic [ref=f16e610]: "0"
- - generic [ref=f16e612]:
- - generic [ref=f16e619] [cursor=pointer]:
- - generic [ref=f16e620]: 浜х嚎
- - generic [ref=f16e621]: "0"
- - generic [ref=f16e629] [cursor=pointer]:
- - generic [ref=f16e630]: 鐢熶骇鎵规
- - generic [ref=f16e631]: "0"
- - generic [ref=f16e639] [cursor=pointer]:
- - generic [ref=f16e640]: 琚嬬爜
- - generic [ref=f16e641]: "0"
- - generic [ref=f16e649] [cursor=pointer]:
- - generic [ref=f16e650]: 鎵樼洏鐮�
- - generic [ref=f16e651]: "0"
- - generic [ref=f16e653]:
- - generic [ref=f16e657]:
- - generic [ref=f16e658]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=f16e660]:
- - generic [ref=f16e661] [cursor=pointer]:
- - generic [ref=f16e662]:
- - radio "杩� 7 澶�" [checked]
- - generic [ref=f16e663]: 杩� 7 澶�
- - generic [ref=f16e664] [cursor=pointer]:
- - generic [ref=f16e665]:
- - radio "杩� 30 澶�"
- - generic [ref=f16e666]: 杩� 30 澶�
- - generic [ref=f16e671]: 鎵规鐘舵�佸垎甯�
- - generic [ref=f16e680]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=f16e689]:
- - generic [ref=f16e690]: 蹇嵎鍏ュ彛
- - generic [ref=f16e694]:
- - generic [ref=f16e695]: 鍝佺绠$悊
- - generic [ref=f16e700]: 鍝佺鍒嗙被
- - generic [ref=f16e705]: 鎵规鐢熶骇
- - generic [ref=f16e710]: 璧嬬爜绠$悊
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-21T03-59-08-154Z.yml b/.playwright-mcp/page-2026-08-21T03-59-08-154Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-21T03-59-08-154Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-21T03-59-21-224Z.yml b/.playwright-mcp/page-2026-08-21T03-59-21-224Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-21T03-59-21-224Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-21T04-00-18-943Z.yml b/.playwright-mcp/page-2026-08-21T04-00-18-943Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-21T04-00-18-943Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-21T04-00-37-255Z.yml b/.playwright-mcp/page-2026-08-21T04-00-37-255Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-21T04-00-37-255Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-21T04-00-59-933Z.yml b/.playwright-mcp/page-2026-08-21T04-00-59-933Z.yml
deleted file mode 100644
index a93d8dc..0000000
--- a/.playwright-mcp/page-2026-08-21T04-00-59-933Z.yml
+++ /dev/null
@@ -1,100 +0,0 @@
-- generic [ref=f3e7]:
- - complementary [ref=f3e9]:
- - generic [ref=f3e10]:
- - generic [ref=f3e11] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f3e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f3e19]
- - generic [ref=f3e20]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f3e23]:
- - menuitem "棣栭〉" [ref=f3e24] [cursor=pointer]
- - listitem [ref=f3e29]:
- - generic [ref=f3e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f3e38]:
- - generic [ref=f3e39] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f3e349]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f3e350] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f3e355] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f3e361] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f3e368] [cursor=pointer]
- - listitem [ref=f3e45]:
- - generic [ref=f3e46] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f3e53] [cursor=pointer]
- - generic [ref=f3e58]:
- - generic [ref=f3e59]:
- - banner [ref=f3e60]:
- - button [ref=f3e61] [cursor=pointer]
- - button [ref=f3e64] [cursor=pointer]
- - navigation "breadcrumb" [ref=f3e69]:
- - list [ref=f3e70]:
- - listitem [ref=f3e71]:
- - link "棣栭〉" [disabled] [ref=f3e72]
- - generic [ref=f3e77]:
- - generic [ref=f3e79] [cursor=pointer]:
- - generic [ref=f3e83]: 鎼滅储
- - generic [ref=f3e84]: Ctrl K
- - button [ref=f3e86] [cursor=pointer]
- - button "dark" [ref=f3e91] [cursor=pointer]
- - button [ref=f3e100] [cursor=pointer]
- - button [ref=f3e106] [cursor=pointer]
- - button [ref=f3e109] [cursor=pointer]
- - button [ref=f3e115] [cursor=pointer]:
- - button [ref=f3e117]
- - button "宸ヤ綔鍙�" [ref=f3e121] [cursor=pointer]
- - button [ref=f3e125] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f3e130]
- - generic [ref=f3e132]:
- - generic [ref=f3e133]: 棣栭〉
- - generic [ref=f3e152]:
- - button [ref=f3e153] [cursor=pointer]
- - generic [ref=f3e160] [cursor=pointer]
- - generic [ref=f3e164] [cursor=pointer]
- - main [ref=f3e171]:
- - generic [ref=f3e174]:
- - generic [ref=f3e175]:
- - generic [ref=f3e185] [cursor=pointer]:
- - generic [ref=f3e186]: 鍝佺鎬绘暟
- - generic [ref=f3e187]: "1"
- - generic [ref=f3e198] [cursor=pointer]:
- - generic [ref=f3e199]: MES 鍝佺
- - generic [ref=f3e200]: "0"
- - generic [ref=f3e211] [cursor=pointer]:
- - generic [ref=f3e212]: 鍝佺鍒嗙被
- - generic [ref=f3e213]: "1"
- - generic [ref=f3e222] [cursor=pointer]:
- - generic [ref=f3e223]: 璁¢噺鍗曚綅
- - generic [ref=f3e224]: "1"
- - generic [ref=f3e226]:
- - generic [ref=f3e234] [cursor=pointer]:
- - generic [ref=f3e235]: 浜х嚎
- - generic [ref=f3e236]: "1"
- - generic [ref=f3e248] [cursor=pointer]:
- - generic [ref=f3e249]: 鐢熶骇鎵规
- - generic [ref=f3e250]: "1"
- - generic [ref=f3e259] [cursor=pointer]:
- - generic [ref=f3e260]: 琚嬬爜
- - generic [ref=f3e261]: "100"
- - generic [ref=f3e272] [cursor=pointer]:
- - generic [ref=f3e273]: 鎵樼洏鐮�
- - generic [ref=f3e274]: "10"
- - generic [ref=f3e276]:
- - generic [ref=f3e280]:
- - generic [ref=f3e281]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=f3e283]:
- - generic [ref=f3e284] [cursor=pointer]:
- - generic [ref=f3e285]:
- - radio "杩� 7 澶�" [checked]
- - generic [ref=f3e286]: 杩� 7 澶�
- - generic [ref=f3e287] [cursor=pointer]:
- - generic [ref=f3e288]:
- - radio "杩� 30 澶�"
- - generic [ref=f3e289]: 杩� 30 澶�
- - generic [ref=f3e294]: 鎵规鐘舵�佸垎甯�
- - generic [ref=f3e303]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=f3e312]:
- - generic [ref=f3e313]: 蹇嵎鍏ュ彛
- - generic [ref=f3e317]:
- - generic [ref=f3e318]: 鍝佺绠$悊
- - generic [ref=f3e326]: 鍝佺鍒嗙被
- - generic [ref=f3e334]: 鎵规鐢熶骇
- - generic [ref=f3e343]: 璧嬬爜绠$悊
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-21T04-01-18-956Z.yml b/.playwright-mcp/page-2026-08-21T04-01-18-956Z.yml
deleted file mode 100644
index c98ec4f..0000000
--- a/.playwright-mcp/page-2026-08-21T04-01-18-956Z.yml
+++ /dev/null
@@ -1,106 +0,0 @@
-- generic [ref=f3e7]:
- - complementary [ref=f3e9]:
- - generic [ref=f3e10]:
- - generic [ref=f3e11] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f3e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f3e19]
- - generic [ref=f3e20]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f3e23]:
- - menuitem "棣栭〉" [ref=f3e24] [cursor=pointer]
- - listitem [ref=f3e29]:
- - generic [ref=f3e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f3e38]:
- - generic [ref=f3e39] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f3e349]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f3e350] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [active] [ref=f3e355] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f3e361] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f3e368] [cursor=pointer]
- - listitem [ref=f3e45]:
- - generic [ref=f3e46] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f3e53] [cursor=pointer]
- - generic [ref=f3e58]:
- - generic [ref=f3e59]:
- - banner [ref=f3e60]:
- - button [ref=f3e61] [cursor=pointer]
- - button [ref=f3e64] [cursor=pointer]
- - navigation "breadcrumb" [ref=f3e69]:
- - list [ref=f3e70]:
- - listitem [ref=f3e375]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f3e376] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f3e380]
- - listitem [ref=f3e383]:
- - link "璧嬬爜绠$悊" [disabled] [ref=f3e384]
- - generic [ref=f3e77]:
- - generic [ref=f3e79] [cursor=pointer]:
- - generic [ref=f3e83]: 鎼滅储
- - generic [ref=f3e84]: Ctrl K
- - button [ref=f3e86] [cursor=pointer]
- - button "dark" [ref=f3e91] [cursor=pointer]
- - button [ref=f3e100] [cursor=pointer]
- - button [ref=f3e106] [cursor=pointer]
- - button [ref=f3e109] [cursor=pointer]
- - button [ref=f3e115] [cursor=pointer]:
- - button [ref=f3e117]
- - button "宸ヤ綔鍙�" [ref=f3e121] [cursor=pointer]
- - button [ref=f3e125] [cursor=pointer]:
- - img "瓒呯骇绠$悊鍛�" [ref=f3e130]
- - generic [ref=f3e132]:
- - generic [ref=f3e137]:
- - generic [ref=f3e138] [cursor=pointer]: 棣栭〉
- - generic [ref=f3e392] [cursor=pointer]: 璧嬬爜绠$悊
- - generic [ref=f3e152]:
- - button [ref=f3e153] [cursor=pointer]
- - generic [ref=f3e160] [cursor=pointer]
- - generic [ref=f3e164] [cursor=pointer]
- - main [ref=f3e171]:
- - generic [ref=f3e174]:
- - generic [ref=f3e175]:
- - generic [ref=f3e185] [cursor=pointer]:
- - generic [ref=f3e186]: 鍝佺鎬绘暟
- - generic [ref=f3e187]: "1"
- - generic [ref=f3e198] [cursor=pointer]:
- - generic [ref=f3e199]: MES 鍝佺
- - generic [ref=f3e200]: "0"
- - generic [ref=f3e211] [cursor=pointer]:
- - generic [ref=f3e212]: 鍝佺鍒嗙被
- - generic [ref=f3e213]: "1"
- - generic [ref=f3e222] [cursor=pointer]:
- - generic [ref=f3e223]: 璁¢噺鍗曚綅
- - generic [ref=f3e224]: "1"
- - generic [ref=f3e226]:
- - generic [ref=f3e234] [cursor=pointer]:
- - generic [ref=f3e235]: 浜х嚎
- - generic [ref=f3e236]: "1"
- - generic [ref=f3e248] [cursor=pointer]:
- - generic [ref=f3e249]: 鐢熶骇鎵规
- - generic [ref=f3e250]: "1"
- - generic [ref=f3e259] [cursor=pointer]:
- - generic [ref=f3e260]: 琚嬬爜
- - generic [ref=f3e261]: "100"
- - generic [ref=f3e272] [cursor=pointer]:
- - generic [ref=f3e273]: 鎵樼洏鐮�
- - generic [ref=f3e274]: "10"
- - generic [ref=f3e276]:
- - generic [ref=f3e280]:
- - generic [ref=f3e281]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=f3e283]:
- - generic [ref=f3e284] [cursor=pointer]:
- - generic [ref=f3e285]:
- - radio "杩� 7 澶�" [checked]
- - generic [ref=f3e286]: 杩� 7 澶�
- - generic [ref=f3e287] [cursor=pointer]:
- - generic [ref=f3e288]:
- - radio "杩� 30 澶�"
- - generic [ref=f3e289]: 杩� 30 澶�
- - generic [ref=f3e294]: 鎵规鐘舵�佸垎甯�
- - generic [ref=f3e303]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=f3e312]:
- - generic [ref=f3e313]: 蹇嵎鍏ュ彛
- - generic [ref=f3e317]:
- - generic [ref=f3e318]: 鍝佺绠$悊
- - generic [ref=f3e326]: 鍝佺鍒嗙被
- - generic [ref=f3e334]: 鎵规鐢熶骇
- - generic [ref=f3e343]: 璧嬬爜绠$悊
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T06-48-56-741Z.yml b/.playwright-mcp/page-2026-08-25T06-48-56-741Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-25T06-48-56-741Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T07-07-54-966Z.yml b/.playwright-mcp/page-2026-08-25T07-07-54-966Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-25T07-07-54-966Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T07-11-38-160Z.yml b/.playwright-mcp/page-2026-08-25T07-11-38-160Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-25T07-11-38-160Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T07-31-24-236Z.yml b/.playwright-mcp/page-2026-08-25T07-31-24-236Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-25T07-31-24-236Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T08-09-30-148Z.yml b/.playwright-mcp/page-2026-08-25T08-09-30-148Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-25T08-09-30-148Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T08-47-21-216Z.yml b/.playwright-mcp/page-2026-08-25T08-47-21-216Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-25T08-47-21-216Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T09-06-04-966Z.yml b/.playwright-mcp/page-2026-08-25T09-06-04-966Z.yml
deleted file mode 100644
index ef6adbc..0000000
--- a/.playwright-mcp/page-2026-08-25T09-06-04-966Z.yml
+++ /dev/null
@@ -1,94 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e5]:
- - generic [ref=f1e6]:
- - generic [ref=f1e7]:
- - generic:
- - button [ref=f1e8] [cursor=pointer]
- - button [ref=f1e10] [cursor=pointer]
- - button [ref=f1e12] [cursor=pointer]
- - button [ref=f1e14] [cursor=pointer]
- - button [ref=f1e16] [cursor=pointer]
- - button [ref=f1e18] [cursor=pointer]
- - button [ref=f1e22] [cursor=pointer]
- - button [ref=f1e24] [cursor=pointer]
- - button [ref=f1e31] [cursor=pointer]
- - button [ref=f1e35] [cursor=pointer]
- - button "light" [active] [ref=f1e236] [cursor=pointer]
- - generic [ref=f1e50]:
- - generic [ref=f1e79]:
- - generic [ref=f1e88]:
- - generic [ref=f1e89]: 鏅�
- - strong [ref=f1e90]: 26.8掳C
- - generic [ref=f1e94]:
- - generic [ref=f1e95]: 婀垮害
- - strong [ref=f1e96]: 68%
- - generic [ref=f1e104]:
- - generic [ref=f1e105]: 闄嶉洦姒傜巼
- - strong [ref=f1e106]: 20%
- - generic [ref=f1e111]:
- - generic [ref=f1e112]: 灞变笢鐪�
- - strong [ref=f1e113]: 娴庡崡甯�
- - generic [ref=f1e114]:
- - generic [ref=f1e115]:
- - generic [ref=f1e125]:
- - generic [ref=f1e126]: 绉嶆涓氭暟瀛楀寲骞冲彴
- - generic [ref=f1e127]: AGRICULTURE DIGITAL PLATFORM
- - generic [ref=f1e128]: 鏁板瓧璧嬭兘鍐滀笟 路 绉戞妧寮曢鏈潵
- - generic [ref=f1e132]:
- - generic "骞冲彴杩愯姒傝" [ref=f1e133]:
- - generic [ref=f1e139]:
- - text: 绉嶆闈㈢Н
- - generic [ref=f1e140]: 12,580浜�
- - generic [ref=f1e141]: 杈冩槰鏃� 鈫� 2.35%
- - generic [ref=f1e148]:
- - text: 鍦ㄧ嚎璁惧
- - generic [ref=f1e149]: 1,286鍙�
- - generic [ref=f1e150]: 杈冩槰鏃� 鈫� 5.21%
- - generic [ref=f1e156]:
- - text: 浠婃棩鐏屾簤
- - generic [ref=f1e157]: 328浜�
- - generic [ref=f1e158]: 杈冩槰鏃� 鈫� 1.15%
- - generic [ref=f1e164]:
- - text: AI 棰勮
- - generic [ref=f1e165]: 6鏉�
- - generic [ref=f1e166]: 杈冩槰鏃� 鈫� 12.50%
- - generic [ref=f1e167]:
- - generic [ref=f1e168]:
- - generic [ref=f1e169]: 鍦熷¥澧掓儏鐩戞祴
- - generic [ref=f1e170]:
- - strong [ref=f1e173]: 68.5%
- - generic [ref=f1e174]: 鍦熷¥婀垮害
- - img [ref=f1e175]:
- - generic [ref=f1e177]:
- - generic [ref=f1e178]: 100%
- - generic [ref=f1e179]: 50%
- - generic [ref=f1e180]: 0%
- - generic [ref=f1e183]:
- - generic [ref=f1e184]: 00:00
- - generic [ref=f1e185]: 06:00
- - generic [ref=f1e186]: 12:00
- - generic [ref=f1e187]: 18:00
- - generic [ref=f1e188]: 24:00
- - generic [ref=f1e189]:
- - generic [ref=f1e190]: AI 鏅鸿兘鍒嗘瀽
- - paragraph [ref=f1e194]: 褰撳墠浣滅墿闀垮娍鑹ソ锛屽湡澹ゅ鎯呴�傚疁锛屾湭鏉�3澶╂棤鏄庢樉闄嶉洦锛屽缓璁�傛椂鐏屾簤锛屼繚璇佷綔鐗╃ǔ浜ч珮浜с��
- - generic [ref=f1e195]:
- - generic [ref=f1e196]: 漏 2026 绉嶆涓氭暟瀛楀寲骞冲彴 鐗堟潈鎵�鏈�
- - generic [ref=f1e197]: 椴両CP澶�2026001234鍙�-1
- - generic [ref=f1e198] [cursor=pointer]: 闅愮鏀跨瓥
- - generic [ref=f1e199]: "|"
- - generic [ref=f1e200] [cursor=pointer]: 鐢ㄦ埛鍗忚
- - generic [ref=f1e204]:
- - generic [ref=f1e205]:
- - heading "娆㈣繋鍥炴潵" [level=2] [ref=f1e206]
- - paragraph [ref=f1e207]:
- - generic [ref=f1e208]: 鐧诲綍绉嶆涓氭暟瀛楀寲骞冲彴锛屽紑鍚櫤鎱х妞�
- - generic [ref=f1e210]:
- - textbox "璇疯緭鍏ョ敤鎴峰悕" [ref=f1e216]: admin
- - generic [ref=f1e222]:
- - textbox "璇疯緭鍏ュ瘑鐮�" [ref=f1e223]: admin123
- - generic [ref=f1e224] [cursor=pointer]
- - generic [ref=f1e232]:
- - checkbox "璁颁綇璐﹀彿" [ref=f1e233] [cursor=pointer]
- - generic [ref=f1e234] [cursor=pointer]: 璁颁綇璐﹀彿
- - button "login" [ref=f1e235] [cursor=pointer]: 鐧诲綍
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T09-06-42-806Z.yml b/.playwright-mcp/page-2026-08-25T09-06-42-806Z.yml
deleted file mode 100644
index 14f79d0..0000000
--- a/.playwright-mcp/page-2026-08-25T09-06-42-806Z.yml
+++ /dev/null
@@ -1,94 +0,0 @@
-- generic [ref=f1e4]:
- - generic [ref=f1e5]:
- - generic [ref=f1e6]:
- - generic [ref=f1e7]:
- - generic:
- - button [ref=f1e8] [cursor=pointer]
- - button [ref=f1e10] [cursor=pointer]
- - button [ref=f1e12] [cursor=pointer]
- - button [ref=f1e14] [cursor=pointer]
- - button [ref=f1e16] [cursor=pointer]
- - button [ref=f1e18] [cursor=pointer]
- - button [ref=f1e22] [cursor=pointer]
- - button [ref=f1e24] [cursor=pointer]
- - button [ref=f1e31] [cursor=pointer]
- - button [ref=f1e35] [cursor=pointer]
- - button "light" [ref=f1e236] [cursor=pointer]
- - generic [ref=f1e50]:
- - generic [ref=f1e79]:
- - generic [ref=f1e88]:
- - generic [ref=f1e89]: 鏅�
- - strong [ref=f1e90]: 26.8掳C
- - generic [ref=f1e94]:
- - generic [ref=f1e95]: 婀垮害
- - strong [ref=f1e96]: 68%
- - generic [ref=f1e104]:
- - generic [ref=f1e105]: 闄嶉洦姒傜巼
- - strong [ref=f1e106]: 20%
- - generic [ref=f1e111]:
- - generic [ref=f1e112]: 灞变笢鐪�
- - strong [ref=f1e113]: 娴庡崡甯�
- - generic [ref=f1e114]:
- - generic [ref=f1e115]:
- - generic [ref=f1e125]:
- - generic [ref=f1e126]: 绉嶆涓氭暟瀛楀寲骞冲彴
- - generic [ref=f1e127]: AGRICULTURE DIGITAL PLATFORM
- - generic [ref=f1e128]: 鏁板瓧璧嬭兘鍐滀笟 路 绉戞妧寮曢鏈潵
- - generic [ref=f1e132]:
- - generic "骞冲彴杩愯姒傝" [ref=f1e133]:
- - generic [ref=f1e139]:
- - text: 绉嶆闈㈢Н
- - generic [ref=f1e140]: 12,580浜�
- - generic [ref=f1e141]: 杈冩槰鏃� 鈫� 2.35%
- - generic [ref=f1e148]:
- - text: 鍦ㄧ嚎璁惧
- - generic [ref=f1e149]: 1,286鍙�
- - generic [ref=f1e150]: 杈冩槰鏃� 鈫� 5.21%
- - generic [ref=f1e156]:
- - text: 浠婃棩鐏屾簤
- - generic [ref=f1e157]: 328浜�
- - generic [ref=f1e158]: 杈冩槰鏃� 鈫� 1.15%
- - generic [ref=f1e164]:
- - text: AI 棰勮
- - generic [ref=f1e165]: 6鏉�
- - generic [ref=f1e166]: 杈冩槰鏃� 鈫� 12.50%
- - generic [ref=f1e167]:
- - generic [ref=f1e168]:
- - generic [ref=f1e169]: 鍦熷¥澧掓儏鐩戞祴
- - generic [ref=f1e170]:
- - strong [ref=f1e173]: 68.5%
- - generic [ref=f1e174]: 鍦熷¥婀垮害
- - img [ref=f1e175]:
- - generic [ref=f1e177]:
- - generic [ref=f1e178]: 100%
- - generic [ref=f1e179]: 50%
- - generic [ref=f1e180]: 0%
- - generic [ref=f1e183]:
- - generic [ref=f1e184]: 00:00
- - generic [ref=f1e185]: 06:00
- - generic [ref=f1e186]: 12:00
- - generic [ref=f1e187]: 18:00
- - generic [ref=f1e188]: 24:00
- - generic [ref=f1e189]:
- - generic [ref=f1e190]: AI 鏅鸿兘鍒嗘瀽
- - paragraph [ref=f1e194]: 褰撳墠浣滅墿闀垮娍鑹ソ锛屽湡澹ゅ鎯呴�傚疁锛屾湭鏉�3澶╂棤鏄庢樉闄嶉洦锛屽缓璁�傛椂鐏屾簤锛屼繚璇佷綔鐗╃ǔ浜ч珮浜с��
- - generic [ref=f1e195]:
- - generic [ref=f1e196]: 漏 2026 绉嶆涓氭暟瀛楀寲骞冲彴 鐗堟潈鎵�鏈�
- - generic [ref=f1e197]: 椴両CP澶�2026001234鍙�-1
- - generic [ref=f1e198] [cursor=pointer]: 闅愮鏀跨瓥
- - generic [ref=f1e199]: "|"
- - generic [ref=f1e200] [cursor=pointer]: 鐢ㄦ埛鍗忚
- - generic [ref=f1e204]:
- - generic [ref=f1e205]:
- - heading "娆㈣繋鍥炴潵" [level=2] [ref=f1e206]
- - paragraph [ref=f1e207]:
- - generic [ref=f1e208]: 鐧诲綍绉嶆涓氭暟瀛楀寲骞冲彴锛屽紑鍚櫤鎱х妞�
- - generic [ref=f1e210]:
- - textbox "璇疯緭鍏ョ敤鎴峰悕" [ref=f1e216]: admin
- - generic [ref=f1e222]:
- - textbox "璇疯緭鍏ュ瘑鐮�" [ref=f1e223]: admin123
- - generic [ref=f1e224] [cursor=pointer]
- - generic [ref=f1e232]:
- - checkbox "璁颁綇璐﹀彿" [ref=f1e233] [cursor=pointer]
- - generic [ref=f1e234] [cursor=pointer]: 璁颁綇璐﹀彿
- - button "login" [disabled]: 鐧诲綍
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T09-06-50-446Z.yml b/.playwright-mcp/page-2026-08-25T09-06-50-446Z.yml
deleted file mode 100644
index 15a975d..0000000
--- a/.playwright-mcp/page-2026-08-25T09-06-50-446Z.yml
+++ /dev/null
@@ -1,98 +0,0 @@
-- generic [ref=f1e237]:
- - complementary [ref=f1e239]:
- - generic [ref=f1e240]:
- - generic [ref=f1e241] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e246] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f1e249]
- - generic [ref=f1e250]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f1e253]:
- - menuitem "棣栭〉" [ref=f1e254] [cursor=pointer]
- - listitem [ref=f1e259]:
- - generic [ref=f1e260] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e268]:
- - generic [ref=f1e269] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e277]:
- - generic [ref=f1e278] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - listitem [ref=f1e284]:
- - generic [ref=f1e285] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e291]:
- - generic [ref=f1e292] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f1e299] [cursor=pointer]
- - generic [ref=f1e304]:
- - generic [ref=f1e305]:
- - banner [ref=f1e306]:
- - button [ref=f1e307] [cursor=pointer]
- - button [ref=f1e310] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e315]:
- - list [ref=f1e316]:
- - listitem [ref=f1e317]:
- - link "棣栭〉" [disabled] [ref=f1e318]
- - generic [ref=f1e323]:
- - generic [ref=f1e325] [cursor=pointer]:
- - generic [ref=f1e329]: 鎼滅储
- - generic [ref=f1e330]: Ctrl K
- - button [ref=f1e332] [cursor=pointer]
- - button "light" [ref=f1e337] [cursor=pointer]
- - button [ref=f1e346] [cursor=pointer]
- - button [ref=f1e352] [cursor=pointer]
- - button [ref=f1e355] [cursor=pointer]
- - button [ref=f1e361] [cursor=pointer]:
- - button [ref=f1e363]
- - button "宸ヤ綔鍙�" [ref=f1e367] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e371] [cursor=pointer]
- - generic [ref=f1e378]:
- - generic [ref=f1e379]: 棣栭〉
- - generic [ref=f1e398]:
- - button [ref=f1e399] [cursor=pointer]
- - generic [ref=f1e406] [cursor=pointer]
- - generic [ref=f1e410] [cursor=pointer]
- - main [ref=f1e417]:
- - generic [ref=f1e420]:
- - generic [ref=f1e421]:
- - generic [ref=f1e431] [cursor=pointer]:
- - generic [ref=f1e432]: 鍝佺鎬绘暟
- - generic [ref=f1e433]: "1"
- - generic [ref=f1e444] [cursor=pointer]:
- - generic [ref=f1e445]: MES 鍝佺
- - generic [ref=f1e446]: "0"
- - generic [ref=f1e457] [cursor=pointer]:
- - generic [ref=f1e458]: 鍝佺鍒嗙被
- - generic [ref=f1e459]: "1"
- - generic [ref=f1e468] [cursor=pointer]:
- - generic [ref=f1e469]: 璁¢噺鍗曚綅
- - generic [ref=f1e470]: "1"
- - generic [ref=f1e472]:
- - generic [ref=f1e480] [cursor=pointer]:
- - generic [ref=f1e481]: 浜х嚎
- - generic [ref=f1e482]: "1"
- - generic [ref=f1e494] [cursor=pointer]:
- - generic [ref=f1e495]: 鐢熶骇鎵规
- - generic [ref=f1e496]: "2"
- - generic [ref=f1e505] [cursor=pointer]:
- - generic [ref=f1e506]: 琚嬬爜
- - generic [ref=f1e507]: "101"
- - generic [ref=f1e518] [cursor=pointer]:
- - generic [ref=f1e519]: 鎵樼洏鐮�
- - generic [ref=f1e520]: "10"
- - generic [ref=f1e522]:
- - generic [ref=f1e526]:
- - generic [ref=f1e527]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=f1e529]:
- - generic [ref=f1e530] [cursor=pointer]:
- - generic [ref=f1e531]:
- - radio "杩� 7 澶�" [checked]
- - generic [ref=f1e532]: 杩� 7 澶�
- - generic [ref=f1e533] [cursor=pointer]:
- - generic [ref=f1e534]:
- - radio "杩� 30 澶�"
- - generic [ref=f1e535]: 杩� 30 澶�
- - generic [ref=f1e540]: 鎵规鐘舵�佸垎甯�
- - generic [ref=f1e549]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=f1e558]:
- - generic [ref=f1e559]: 蹇嵎鍏ュ彛
- - generic [ref=f1e563]:
- - generic [ref=f1e564]: 鍝佺绠$悊
- - generic [ref=f1e572]: 鍝佺鍒嗙被
- - generic [ref=f1e580]: 鎵规鐢熶骇
- - generic [ref=f1e589]: 璧嬬爜绠$悊
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T09-07-17-780Z.yml b/.playwright-mcp/page-2026-08-25T09-07-17-780Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-25T09-07-17-780Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T09-07-28-054Z.yml b/.playwright-mcp/page-2026-08-25T09-07-28-054Z.yml
deleted file mode 100644
index 0de1c4c..0000000
--- a/.playwright-mcp/page-2026-08-25T09-07-28-054Z.yml
+++ /dev/null
@@ -1,98 +0,0 @@
-- generic [ref=f2e7]:
- - complementary [ref=f2e9]:
- - generic [ref=f2e10]:
- - generic [ref=f2e11] [cursor=pointer]
- - link "宸ヤ笟AI鏅洪�犲钩鍙� 宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f2e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "宸ヤ笟AI鏅洪�犲钩鍙�" [ref=f2e19]
- - generic [ref=f2e20]: 宸ヤ笟AI鏅洪�犲钩鍙�
- - menu [ref=f2e23]:
- - menuitem "棣栭〉" [ref=f2e24] [cursor=pointer]
- - listitem [ref=f2e29]:
- - generic [ref=f2e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f2e38]:
- - generic [ref=f2e39] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f2e47]:
- - generic [ref=f2e48] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - listitem [ref=f2e54]:
- - generic [ref=f2e55] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f2e61]:
- - generic [ref=f2e62] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f2e69] [cursor=pointer]
- - generic [ref=f2e74]:
- - generic [ref=f2e75]:
- - banner [ref=f2e76]:
- - button [ref=f2e77] [cursor=pointer]
- - button [ref=f2e80] [cursor=pointer]
- - navigation "breadcrumb" [ref=f2e85]:
- - list [ref=f2e86]:
- - listitem [ref=f2e87]:
- - link "棣栭〉" [disabled] [ref=f2e88]
- - generic [ref=f2e93]:
- - generic [ref=f2e95] [cursor=pointer]:
- - generic [ref=f2e99]: 鎼滅储
- - generic [ref=f2e100]: Ctrl K
- - button [ref=f2e102] [cursor=pointer]
- - button "dark" [active] [ref=f2e107] [cursor=pointer]
- - button [ref=f2e116] [cursor=pointer]
- - button [ref=f2e122] [cursor=pointer]
- - button [ref=f2e125] [cursor=pointer]
- - button [ref=f2e131] [cursor=pointer]:
- - button [ref=f2e133]
- - button "宸ヤ綔鍙�" [ref=f2e137] [cursor=pointer]
- - button "鐞嗗憳" [ref=f2e141] [cursor=pointer]
- - generic [ref=f2e148]:
- - generic [ref=f2e149]: 棣栭〉
- - generic [ref=f2e168]:
- - button [ref=f2e169] [cursor=pointer]
- - generic [ref=f2e176] [cursor=pointer]
- - generic [ref=f2e180] [cursor=pointer]
- - main [ref=f2e187]:
- - generic [ref=f2e190]:
- - generic [ref=f2e191]:
- - generic [ref=f2e201] [cursor=pointer]:
- - generic [ref=f2e202]: 鍝佺鎬绘暟
- - generic [ref=f2e203]: "1"
- - generic [ref=f2e214] [cursor=pointer]:
- - generic [ref=f2e215]: MES 鍝佺
- - generic [ref=f2e216]: "0"
- - generic [ref=f2e227] [cursor=pointer]:
- - generic [ref=f2e228]: 鍝佺鍒嗙被
- - generic [ref=f2e229]: "1"
- - generic [ref=f2e238] [cursor=pointer]:
- - generic [ref=f2e239]: 璁¢噺鍗曚綅
- - generic [ref=f2e240]: "1"
- - generic [ref=f2e242]:
- - generic [ref=f2e250] [cursor=pointer]:
- - generic [ref=f2e251]: 浜х嚎
- - generic [ref=f2e252]: "1"
- - generic [ref=f2e264] [cursor=pointer]:
- - generic [ref=f2e265]: 鐢熶骇鎵规
- - generic [ref=f2e266]: "2"
- - generic [ref=f2e275] [cursor=pointer]:
- - generic [ref=f2e276]: 琚嬬爜
- - generic [ref=f2e277]: "101"
- - generic [ref=f2e288] [cursor=pointer]:
- - generic [ref=f2e289]: 鎵樼洏鐮�
- - generic [ref=f2e290]: "10"
- - generic [ref=f2e292]:
- - generic [ref=f2e296]:
- - generic [ref=f2e297]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=f2e299]:
- - generic [ref=f2e300] [cursor=pointer]:
- - generic [ref=f2e301]:
- - radio "杩� 7 澶�" [checked]
- - generic [ref=f2e302]: 杩� 7 澶�
- - generic [ref=f2e303] [cursor=pointer]:
- - generic [ref=f2e304]:
- - radio "杩� 30 澶�"
- - generic [ref=f2e305]: 杩� 30 澶�
- - generic [ref=f2e310]: 鎵规鐘舵�佸垎甯�
- - generic [ref=f2e319]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=f2e328]:
- - generic [ref=f2e329]: 蹇嵎鍏ュ彛
- - generic [ref=f2e333]:
- - generic [ref=f2e334]: 鍝佺绠$悊
- - generic [ref=f2e342]: 鍝佺鍒嗙被
- - generic [ref=f2e350]: 鎵规鐢熶骇
- - generic [ref=f2e359]: 璧嬬爜绠$悊
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T09-07-53-861Z.yml b/.playwright-mcp/page-2026-08-25T09-07-53-861Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-25T09-07-53-861Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T09-08-01-907Z.yml b/.playwright-mcp/page-2026-08-25T09-08-01-907Z.yml
deleted file mode 100644
index 99b9ade..0000000
--- a/.playwright-mcp/page-2026-08-25T09-08-01-907Z.yml
+++ /dev/null
@@ -1,94 +0,0 @@
-- generic [ref=f5e4]:
- - generic [ref=f5e5]:
- - generic [ref=f5e6]:
- - generic [ref=f5e7]:
- - generic:
- - button [ref=f5e8] [cursor=pointer]
- - button [ref=f5e12] [cursor=pointer]
- - button [ref=f5e14] [cursor=pointer]
- - button [ref=f5e16] [cursor=pointer]
- - button [ref=f5e18] [cursor=pointer]
- - button [ref=f5e20] [cursor=pointer]
- - button [ref=f5e22] [cursor=pointer]
- - button [ref=f5e24] [cursor=pointer]
- - button [ref=f5e31] [cursor=pointer]
- - button [ref=f5e35] [cursor=pointer]
- - button "dark" [ref=f5e41] [cursor=pointer]
- - generic [ref=f5e50]:
- - generic [ref=f5e79]:
- - generic [ref=f5e88]:
- - generic [ref=f5e89]: 鏅�
- - strong [ref=f5e90]: 26.8掳C
- - generic [ref=f5e94]:
- - generic [ref=f5e95]: 婀垮害
- - strong [ref=f5e96]: 68%
- - generic [ref=f5e104]:
- - generic [ref=f5e105]: 闄嶉洦姒傜巼
- - strong [ref=f5e106]: 20%
- - generic [ref=f5e111]:
- - generic [ref=f5e112]: 灞变笢鐪�
- - strong [ref=f5e113]: 娴庡崡甯�
- - generic [ref=f5e114]:
- - generic [ref=f5e115]:
- - generic [ref=f5e125]:
- - generic [ref=f5e126]: 绉嶆涓氭暟瀛楀寲骞冲彴
- - generic [ref=f5e127]: AGRICULTURE DIGITAL PLATFORM
- - generic [ref=f5e128]: 鏁板瓧璧嬭兘鍐滀笟 路 绉戞妧寮曢鏈潵
- - generic [ref=f5e132]:
- - generic "骞冲彴杩愯姒傝" [ref=f5e133]:
- - generic [ref=f5e139]:
- - text: 绉嶆闈㈢Н
- - generic [ref=f5e140]: 12,580浜�
- - generic [ref=f5e141]: 杈冩槰鏃� 鈫� 2.35%
- - generic [ref=f5e148]:
- - text: 鍦ㄧ嚎璁惧
- - generic [ref=f5e149]: 1,286鍙�
- - generic [ref=f5e150]: 杈冩槰鏃� 鈫� 5.21%
- - generic [ref=f5e156]:
- - text: 浠婃棩鐏屾簤
- - generic [ref=f5e157]: 328浜�
- - generic [ref=f5e158]: 杈冩槰鏃� 鈫� 1.15%
- - generic [ref=f5e164]:
- - text: AI 棰勮
- - generic [ref=f5e165]: 6鏉�
- - generic [ref=f5e166]: 杈冩槰鏃� 鈫� 12.50%
- - generic [ref=f5e167]:
- - generic [ref=f5e168]:
- - generic [ref=f5e169]: 鍦熷¥澧掓儏鐩戞祴
- - generic [ref=f5e170]:
- - strong [ref=f5e173]: 68.5%
- - generic [ref=f5e174]: 鍦熷¥婀垮害
- - img [ref=f5e175]:
- - generic [ref=f5e177]:
- - generic [ref=f5e178]: 100%
- - generic [ref=f5e179]: 50%
- - generic [ref=f5e180]: 0%
- - generic [ref=f5e183]:
- - generic [ref=f5e184]: 00:00
- - generic [ref=f5e185]: 06:00
- - generic [ref=f5e186]: 12:00
- - generic [ref=f5e187]: 18:00
- - generic [ref=f5e188]: 24:00
- - generic [ref=f5e189]:
- - generic [ref=f5e190]: AI 鏅鸿兘鍒嗘瀽
- - paragraph [ref=f5e194]: 褰撳墠浣滅墿闀垮娍鑹ソ锛屽湡澹ゅ鎯呴�傚疁锛屾湭鏉�3澶╂棤鏄庢樉闄嶉洦锛屽缓璁�傛椂鐏屾簤锛屼繚璇佷綔鐗╃ǔ浜ч珮浜с��
- - generic [ref=f5e195]:
- - generic [ref=f5e196]: 漏 2026 绉嶆涓氭暟瀛楀寲骞冲彴 鐗堟潈鎵�鏈�
- - generic [ref=f5e197]: 椴両CP澶�2026001234鍙�-1
- - generic [ref=f5e198] [cursor=pointer]: 闅愮鏀跨瓥
- - generic [ref=f5e199]: "|"
- - generic [ref=f5e200] [cursor=pointer]: 鐢ㄦ埛鍗忚
- - generic [ref=f5e204]:
- - generic [ref=f5e205]:
- - heading "娆㈣繋鍥炴潵" [level=2] [ref=f5e206]
- - paragraph [ref=f5e207]:
- - generic [ref=f5e208]: 鐧诲綍绉嶆涓氭暟瀛楀寲骞冲彴锛屽紑鍚櫤鎱х妞�
- - generic [ref=f5e210]:
- - textbox "璇疯緭鍏ョ敤鎴峰悕" [ref=f5e216]: admin
- - generic [ref=f5e222]:
- - textbox "璇疯緭鍏ュ瘑鐮�" [ref=f5e223]: admin123
- - generic [ref=f5e224] [cursor=pointer]
- - generic [ref=f5e232]:
- - checkbox "璁颁綇璐﹀彿" [ref=f5e233] [cursor=pointer]
- - generic [ref=f5e234] [cursor=pointer]: 璁颁綇璐﹀彿
- - button "login" [ref=f5e235] [cursor=pointer]: 鐧诲綍
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T09-20-39-383Z.yml b/.playwright-mcp/page-2026-08-25T09-20-39-383Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-25T09-20-39-383Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T09-44-56-418Z.yml b/.playwright-mcp/page-2026-08-25T09-44-56-418Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-25T09-44-56-418Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-25T09-50-51-027Z.yml b/.playwright-mcp/page-2026-08-25T09-50-51-027Z.yml
deleted file mode 100644
index 0947cbf..0000000
--- a/.playwright-mcp/page-2026-08-25T09-50-51-027Z.yml
+++ /dev/null
@@ -1,78 +0,0 @@
-- generic [ref=f16e4]:
- - generic [ref=f16e5]:
- - generic [ref=f16e6]:
- - generic [ref=f16e7]:
- - generic:
- - button [ref=f16e8] [cursor=pointer]
- - button [ref=f16e12] [cursor=pointer]
- - button [ref=f16e14] [cursor=pointer]
- - button [ref=f16e16] [cursor=pointer]
- - button [ref=f16e18] [cursor=pointer]
- - button [ref=f16e20] [cursor=pointer]
- - button [ref=f16e22] [cursor=pointer]
- - button [ref=f16e24] [cursor=pointer]
- - button [ref=f16e31] [cursor=pointer]
- - button [ref=f16e35] [cursor=pointer]
- - button "dark" [ref=f16e41] [cursor=pointer]
- - generic [ref=f16e51]:
- - generic [ref=f16e52]:
- - generic [ref=f16e62]:
- - generic [ref=f16e63]: 绉嶆涓氭暟瀛楀寲骞冲彴
- - generic [ref=f16e64]: AGRICULTURE DIGITAL PLATFORM
- - generic [ref=f16e65]: 鏁板瓧璧嬭兘鍐滀笟 路 绉戞妧寮曢鏈潵
- - generic [ref=f16e69]:
- - generic "骞冲彴杩愯姒傝" [ref=f16e70]:
- - generic [ref=f16e76]:
- - text: 绉嶆闈㈢Н
- - generic [ref=f16e77]: 12,580浜�
- - generic [ref=f16e78]: 杈冩槰鏃� 鈫� 2.35%
- - generic [ref=f16e85]:
- - text: 鍦ㄧ嚎璁惧
- - generic [ref=f16e86]: 1,286鍙�
- - generic [ref=f16e87]: 杈冩槰鏃� 鈫� 5.21%
- - generic [ref=f16e93]:
- - text: 浠婃棩鐏屾簤
- - generic [ref=f16e94]: 328浜�
- - generic [ref=f16e95]: 杈冩槰鏃� 鈫� 1.15%
- - generic [ref=f16e101]:
- - text: AI 棰勮
- - generic [ref=f16e102]: 6鏉�
- - generic [ref=f16e103]: 杈冩槰鏃� 鈫� 12.50%
- - generic [ref=f16e104]:
- - generic [ref=f16e105]:
- - generic [ref=f16e106]: 鍦熷¥澧掓儏鐩戞祴
- - generic [ref=f16e107]:
- - strong [ref=f16e110]: 68.5%
- - generic [ref=f16e111]: 鍦熷¥婀垮害
- - img [ref=f16e112]:
- - generic [ref=f16e114]:
- - generic [ref=f16e115]: 100%
- - generic [ref=f16e116]: 50%
- - generic [ref=f16e117]: 0%
- - generic [ref=f16e120]:
- - generic [ref=f16e121]: 00:00
- - generic [ref=f16e122]: 06:00
- - generic [ref=f16e123]: 12:00
- - generic [ref=f16e124]: 18:00
- - generic [ref=f16e125]: 24:00
- - generic [ref=f16e126]:
- - generic [ref=f16e127]: AI 鏅鸿兘鍒嗘瀽
- - paragraph [ref=f16e131]: 褰撳墠浣滅墿闀垮娍鑹ソ锛屽湡澹ゅ鎯呴�傚疁锛屾湭鏉�3澶╂棤鏄庢樉闄嶉洦锛屽缓璁�傛椂鐏屾簤锛屼繚璇佷綔鐗╃ǔ浜ч珮浜с��
- - generic [ref=f16e135]:
- - generic [ref=f16e136]:
- - heading "娆㈣繋鍥炴潵" [level=2] [ref=f16e137]
- - paragraph [ref=f16e138]:
- - generic [ref=f16e139]: 鐧诲綍绉嶆涓氭暟瀛楀寲骞冲彴锛屽紑鍚櫤鎱х妞�
- - generic [ref=f16e141]:
- - textbox "璐﹀彿" [ref=f16e147]:
- - /placeholder: 璇疯緭鍏ョ敤鎴峰悕
- - text: admin
- - generic [ref=f16e153]:
- - textbox "瀵嗙爜" [ref=f16e154]:
- - /placeholder: 璇疯緭鍏ュ瘑鐮�
- - text: admin123
- - button "鍒囨崲瀵嗙爜鍙鎬�" [ref=f16e155] [cursor=pointer]
- - generic [ref=f16e163]:
- - checkbox "璁颁綇璐﹀彿" [ref=f16e164] [cursor=pointer]
- - generic [ref=f16e165] [cursor=pointer]: 璁颁綇璐﹀彿
- - button "login" [ref=f16e166] [cursor=pointer]: 鐧诲綍
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T07-29-23-803Z.yml b/.playwright-mcp/page-2026-08-28T07-29-23-803Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-28T07-29-23-803Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T07-29-42-173Z.yml b/.playwright-mcp/page-2026-08-28T07-29-42-173Z.yml
deleted file mode 100644
index 954edb3..0000000
--- a/.playwright-mcp/page-2026-08-28T07-29-42-173Z.yml
+++ /dev/null
@@ -1,104 +0,0 @@
-- generic [ref=e7]:
- - complementary [ref=e9]:
- - generic [ref=e10]:
- - generic [ref=e11] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=e19]
- - generic [ref=e20]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=e23]:
- - menuitem "棣栭〉" [ref=e24] [cursor=pointer]
- - listitem [ref=e28]:
- - generic [ref=e29] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e37]:
- - generic [ref=e38] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e341]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e342] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e347] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e353] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e360] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=e367] [cursor=pointer]
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e60]:
- - generic [ref=e61] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=e68] [cursor=pointer]
- - generic [ref=e73]:
- - generic [ref=e74]:
- - banner [ref=e75]:
- - button [ref=e76] [cursor=pointer]
- - button [ref=e79] [cursor=pointer]
- - navigation "breadcrumb" [ref=e84]:
- - list [ref=e85]:
- - listitem [ref=e86]:
- - link "棣栭〉" [disabled] [ref=e87]
- - generic [ref=e91]:
- - generic [ref=e93] [cursor=pointer]:
- - generic [ref=e97]: 鎼滅储
- - generic [ref=e98]: Ctrl K
- - button [ref=e100] [cursor=pointer]
- - button "dark" [ref=e105] [cursor=pointer]
- - button [ref=e114] [cursor=pointer]
- - button [ref=e120] [cursor=pointer]
- - button [ref=e122] [cursor=pointer]
- - button [ref=e128] [cursor=pointer]:
- - button [ref=e130]
- - button "宸ヤ綔鍙�" [ref=e134] [cursor=pointer]
- - button "鐞嗗憳" [ref=e137] [cursor=pointer]
- - generic [ref=e144]:
- - generic [ref=e145]: 棣栭〉
- - generic [ref=e163]:
- - button [ref=e164] [cursor=pointer]
- - generic [ref=e171] [cursor=pointer]
- - generic [ref=e175] [cursor=pointer]
- - main [ref=e182]:
- - generic [ref=e185]:
- - generic [ref=e186]:
- - generic [ref=e193] [cursor=pointer]:
- - generic [ref=e194]: 鍝佺鎬绘暟
- - generic [ref=e195]: "1"
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e204]: MES 鍝佺
- - generic [ref=e205]: "0"
- - generic [ref=e213] [cursor=pointer]:
- - generic [ref=e214]: 鍝佺鍒嗙被
- - generic [ref=e215]: "1"
- - generic [ref=e223] [cursor=pointer]:
- - generic [ref=e224]: 璁¢噺鍗曚綅
- - generic [ref=e225]: "1"
- - generic [ref=e227]:
- - generic [ref=e234] [cursor=pointer]:
- - generic [ref=e235]: 浜х嚎
- - generic [ref=e236]: "1"
- - generic [ref=e244] [cursor=pointer]:
- - generic [ref=e245]: 鐢熶骇鎵规
- - generic [ref=e246]: "2"
- - generic [ref=e254] [cursor=pointer]:
- - generic [ref=e255]: 琚嬬爜
- - generic [ref=e256]: 1,101
- - generic [ref=e264] [cursor=pointer]:
- - generic [ref=e265]: 鎵樼洏鐮�
- - generic [ref=e266]: "10"
- - generic [ref=e268]:
- - generic [ref=e272]:
- - generic [ref=e273]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=e275]:
- - generic [ref=e276] [cursor=pointer]:
- - generic [ref=e277]:
- - radio "杩� 7 澶�" [checked]
- - generic [ref=e278]: 杩� 7 澶�
- - generic [ref=e279] [cursor=pointer]:
- - generic [ref=e280]:
- - radio "杩� 30 澶�"
- - generic [ref=e281]: 杩� 30 澶�
- - generic [ref=e284]: 鎵规鐘舵�佸垎甯�
- - generic [ref=e291]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=e298]:
- - generic [ref=e299]: 蹇嵎鍏ュ彛
- - generic [ref=e303]:
- - generic [ref=e304]: 鍝佺绠$悊
- - generic [ref=e309]: 鍝佺鍒嗙被
- - generic [ref=e314]: 鎵规鐢熶骇
- - generic [ref=e319]: 璧嬬爜绠$悊
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T07-30-00-661Z.yml b/.playwright-mcp/page-2026-08-28T07-30-00-661Z.yml
deleted file mode 100644
index 7e5d7f0..0000000
--- a/.playwright-mcp/page-2026-08-28T07-30-00-661Z.yml
+++ /dev/null
@@ -1,110 +0,0 @@
-- generic [ref=e7]:
- - complementary [ref=e9]:
- - generic [ref=e10]:
- - generic [ref=e11] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=e19]
- - generic [ref=e20]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=e23]:
- - menuitem "棣栭〉" [ref=e24] [cursor=pointer]
- - listitem [ref=e28]:
- - generic [ref=e29] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e37]:
- - generic [ref=e38] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e341]:
- - menuitem "鎵规鐢熶骇绠$悊" [active] [ref=e342] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e347] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e353] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e360] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=e367] [cursor=pointer]
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e60]:
- - generic [ref=e61] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=e68] [cursor=pointer]
- - generic [ref=e73]:
- - generic [ref=e74]:
- - banner [ref=e75]:
- - button [ref=e76] [cursor=pointer]
- - button [ref=e79] [cursor=pointer]
- - navigation "breadcrumb" [ref=e84]:
- - list [ref=e85]:
- - listitem [ref=e412]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e413] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e417]
- - listitem [ref=e420]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e421]
- - generic [ref=e91]:
- - generic [ref=e93] [cursor=pointer]:
- - generic [ref=e97]: 鎼滅储
- - generic [ref=e98]: Ctrl K
- - button [ref=e100] [cursor=pointer]
- - button "dark" [ref=e105] [cursor=pointer]
- - button [ref=e114] [cursor=pointer]
- - button [ref=e120] [cursor=pointer]
- - button [ref=e122] [cursor=pointer]
- - button [ref=e128] [cursor=pointer]:
- - button [ref=e130]
- - button "宸ヤ綔鍙�" [ref=e134] [cursor=pointer]
- - button "鐞嗗憳" [ref=e137] [cursor=pointer]
- - generic [ref=e144]:
- - generic [ref=e149]:
- - generic [ref=e150] [cursor=pointer]: 棣栭〉
- - generic [ref=e428] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e163]:
- - button [ref=e164] [cursor=pointer]
- - generic [ref=e171] [cursor=pointer]
- - generic [ref=e175] [cursor=pointer]
- - main [ref=e182]:
- - generic [ref=e185]:
- - generic [ref=e186]:
- - generic [ref=e193] [cursor=pointer]:
- - generic [ref=e194]: 鍝佺鎬绘暟
- - generic [ref=e195]: "1"
- - generic [ref=e203] [cursor=pointer]:
- - generic [ref=e204]: MES 鍝佺
- - generic [ref=e205]: "0"
- - generic [ref=e213] [cursor=pointer]:
- - generic [ref=e214]: 鍝佺鍒嗙被
- - generic [ref=e215]: "1"
- - generic [ref=e223] [cursor=pointer]:
- - generic [ref=e224]: 璁¢噺鍗曚綅
- - generic [ref=e225]: "1"
- - generic [ref=e227]:
- - generic [ref=e234] [cursor=pointer]:
- - generic [ref=e235]: 浜х嚎
- - generic [ref=e236]: "1"
- - generic [ref=e244] [cursor=pointer]:
- - generic [ref=e245]: 鐢熶骇鎵规
- - generic [ref=e246]: "2"
- - generic [ref=e254] [cursor=pointer]:
- - generic [ref=e255]: 琚嬬爜
- - generic [ref=e256]: 1,101
- - generic [ref=e264] [cursor=pointer]:
- - generic [ref=e265]: 鎵樼洏鐮�
- - generic [ref=e266]: "10"
- - generic [ref=e268]:
- - generic [ref=e272]:
- - generic [ref=e273]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=e275]:
- - generic [ref=e276] [cursor=pointer]:
- - generic [ref=e277]:
- - radio "杩� 7 澶�" [checked]
- - generic [ref=e278]: 杩� 7 澶�
- - generic [ref=e279] [cursor=pointer]:
- - generic [ref=e280]:
- - radio "杩� 30 澶�"
- - generic [ref=e281]: 杩� 30 澶�
- - generic [ref=e284]: 鎵规鐘舵�佸垎甯�
- - generic [ref=e291]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=e298]:
- - generic [ref=e299]: 蹇嵎鍏ュ彛
- - generic [ref=e303]:
- - generic [ref=e304]: 鍝佺绠$悊
- - generic [ref=e309]: 鍝佺鍒嗙被
- - generic [ref=e314]: 鎵规鐢熶骇
- - generic [ref=e319]: 璧嬬爜绠$悊
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T07-30-23-438Z.yml b/.playwright-mcp/page-2026-08-28T07-30-23-438Z.yml
deleted file mode 100644
index 70132ed..0000000
--- a/.playwright-mcp/page-2026-08-28T07-30-23-438Z.yml
+++ /dev/null
@@ -1,214 +0,0 @@
-- generic [ref=e7]:
- - complementary [ref=e9]:
- - generic [ref=e10]:
- - generic [ref=e11] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=e19]
- - generic [ref=e20]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=e23]:
- - menuitem "棣栭〉" [ref=e24] [cursor=pointer]
- - listitem [ref=e28]:
- - generic [ref=e29] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=e37]:
- - generic [ref=e38] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=e46]:
- - generic [ref=e47] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=e341]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=e342] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=e347] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=e353] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=e360] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=e367] [cursor=pointer]
- - listitem [ref=e53]:
- - generic [ref=e54] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=e60]:
- - generic [ref=e61] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=e68] [cursor=pointer]
- - generic [ref=e73]:
- - generic [ref=e74]:
- - banner [ref=e75]:
- - button [ref=e76] [cursor=pointer]
- - button [ref=e79] [cursor=pointer]
- - navigation "breadcrumb" [ref=e84]:
- - list [ref=e85]:
- - listitem [ref=e412]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=e413] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=e417]
- - listitem [ref=e420]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=e421]
- - generic [ref=e91]:
- - generic [ref=e93] [cursor=pointer]:
- - generic [ref=e97]: 鎼滅储
- - generic [ref=e98]: Ctrl K
- - button [ref=e100] [cursor=pointer]
- - button "dark" [ref=e105] [cursor=pointer]
- - button [ref=e114] [cursor=pointer]
- - button [ref=e120] [cursor=pointer]
- - button [ref=e122] [cursor=pointer]
- - button [ref=e128] [cursor=pointer]:
- - button [ref=e130]
- - button "宸ヤ綔鍙�" [ref=e134] [cursor=pointer]
- - button "鐞嗗憳" [ref=e137] [cursor=pointer]
- - generic [ref=e144]:
- - generic [ref=e149]:
- - generic [ref=e150] [cursor=pointer]: 棣栭〉
- - generic [ref=e428] [cursor=pointer]: 鎵规鐢熶骇绠$悊
- - generic [ref=e163]:
- - button [ref=e164] [cursor=pointer]
- - generic [ref=e171] [cursor=pointer]
- - generic [ref=e175] [cursor=pointer]
- - main [ref=e182]:
- - generic [ref=e448]:
- - generic [ref=e453]:
- - generic [ref=e454]:
- - generic [ref=e455]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=e461]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=e463]:
- - generic [ref=e464]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=e471]
- - generic [ref=e477]:
- - generic [ref=e478]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=e484]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=e486]:
- - generic [ref=e487]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=e493]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=e495]:
- - generic [ref=e496]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=e503]
- - generic [ref=e509]:
- - generic [ref=e510]: 鎵规鐘舵��
- - generic [ref=e516] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=e518]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=e519]:
- - generic [ref=e520]: 鐢熶骇鏃ユ湡
- - generic [ref=e525]:
- - textbox "鐢熶骇鏃ユ湡" [ref=e527]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e529]:
- - img "swap-right" [ref=e530]
- - textbox "缁撴潫鏃堕棿" [ref=e534]
- - generic:
- - img "calendar"
- - generic [ref=e535]:
- - generic [ref=e536]: 鍒涘缓鏃堕棿
- - generic [ref=e541]:
- - textbox "鍒涘缓鏃堕棿" [ref=e543]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=e545]:
- - img "swap-right" [ref=e546]
- - textbox "缁撴潫鏃堕棿" [ref=e550]
- - generic:
- - img "calendar"
- - generic [ref=e551]:
- - button "閲� 缃�" [ref=e552] [cursor=pointer]
- - button "鎼� 绱�" [ref=e554] [cursor=pointer]
- - generic [ref=e556] [cursor=pointer]: 鏀惰捣
- - generic [ref=e563]:
- - generic [ref=e565]:
- - generic [ref=e566]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=e570]:
- - generic [ref=e572]:
- - button "棰勭敓鎴愪簩缁寸爜" [active] [ref=e574] [cursor=pointer]
- - button "鏂板鎵规" [ref=e579] [cursor=pointer]
- - button "鎵爜杩芥函" [ref=e584] [cursor=pointer]
- - button "瀵煎嚭" [ref=e591] [cursor=pointer]
- - button "顫�" [ref=e597] [cursor=pointer]
- - generic [ref=e599]:
- - button "瞟�" [ref=e600] [cursor=pointer]
- - button "顪�" [ref=e602] [cursor=pointer]
- - button "顦�" [ref=e604] [cursor=pointer]
- - generic [ref=e611]:
- - generic [ref=e612]:
- - table [ref=e616]:
- - rowgroup [ref=e631]:
- - row [ref=e632]:
- - columnheader "鍝佺缂栫爜" [ref=e633]
- - columnheader "鍝佺鍚嶇О" [ref=e638]
- - columnheader "浜х嚎缂栫爜" [ref=e643]
- - columnheader "浜х嚎鍚嶇О" [ref=e648]
- - columnheader "鐢熶骇鏃ユ湡" [ref=e653]
- - columnheader "璁″垝鏁伴噺" [ref=e658]
- - columnheader "璐d换浜�" [ref=e663]
- - columnheader "琚嬬爜鏁伴噺" [ref=e668]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=e673]
- - columnheader "鎵规鐘舵��" [ref=e678]
- - columnheader "鍒涘缓鏃堕棿" [ref=e683]
- - table [ref=e691]:
- - rowgroup [ref=e706]:
- - row [ref=e707]:
- - cell "ITEM_20260819003" [ref=e708]
- - cell "娴嬭瘯" [ref=e712]
- - cell "two" [ref=e716]
- - cell "浜х嚎浜�" [ref=e720]
- - cell "2026-08-21 13:39:56" [ref=e724]
- - cell "100" [ref=e728]
- - cell "鐙楄泲" [ref=e732]
- - cell "0" [ref=e736]
- - cell "0" [ref=e740]
- - cell "鑽夌" [ref=e744]
- - cell "2026-08-21 13:40:10" [ref=e748]
- - row [ref=e752]:
- - cell "ITEM_20260819003" [ref=e753]
- - cell "娴嬭瘯" [ref=e757]
- - cell "two" [ref=e761]
- - cell "浜х嚎浜�" [ref=e765]
- - cell "2026-08-19 10:48:02" [ref=e769]
- - cell "10000" [ref=e773]
- - cell "瓒呯骇绠$悊鍛�" [ref=e777]
- - cell "100" [ref=e781]
- - cell "10" [ref=e785]
- - cell "宸插畬鎴�" [ref=e789]
- - cell "2026-08-19 10:48:22" [ref=e793]
- - generic:
- - generic [ref=e797]:
- - table [ref=e800]:
- - rowgroup [ref=e815]:
- - row [ref=e816]:
- - columnheader "鎵规鍙�" [ref=e817]
- - table [ref=e824]:
- - rowgroup [ref=e827]:
- - row [ref=e828]:
- - cell [ref=e829]:
- - button "PC20260821twoITEM_001" [ref=e832] [cursor=pointer]
- - row [ref=e834]:
- - cell [ref=e835]:
- - button "PC20260819twoITEM_001" [ref=e838] [cursor=pointer]
- - generic [ref=e840]:
- - table [ref=e843]:
- - rowgroup [ref=e858]:
- - row [ref=e859]:
- - columnheader "鎿嶄綔" [ref=e860]
- - table [ref=e867]:
- - rowgroup [ref=e870]:
- - row [ref=e871]:
- - cell [ref=e872]:
- - generic [ref=e875]:
- - generic [ref=e876]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=e878] [cursor=pointer]
- - button "淇敼" [ref=e881] [cursor=pointer]
- - button "鍒犻櫎" [ref=e888] [cursor=pointer]
- - button "鏇村" [ref=e892] [cursor=pointer]
- - row [ref=e898]:
- - cell [ref=e899]:
- - generic [ref=e902]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=e905] [cursor=pointer]
- - button "鏇村" [ref=e907] [cursor=pointer]
- - generic [ref=e919]:
- - generic [ref=e920]: 鍏� 2 鏉¤褰�
- - generic [ref=e922] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=e923]:
- - textbox "璇烽�夋嫨" [ref=e924]: 20鏉�/椤�
- - generic [ref=e925]: 睿�
- - button "飱�" [ref=e928]
- - button "顧�" [ref=e930]
- - button "顫�" [ref=e932]
- - button "1" [ref=e935] [cursor=pointer]
- - button "顫�" [ref=e936]
- - button "顧�" [ref=e938]
- - button "顦�" [ref=e940]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T07-33-08-854Z.yml b/.playwright-mcp/page-2026-08-28T07-33-08-854Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-28T07-33-08-854Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T07-33-35-681Z.yml b/.playwright-mcp/page-2026-08-28T07-33-35-681Z.yml
deleted file mode 100644
index 9c8c758..0000000
--- a/.playwright-mcp/page-2026-08-28T07-33-35-681Z.yml
+++ /dev/null
@@ -1,212 +0,0 @@
-- generic [ref=f1e7]:
- - complementary [ref=f1e9]:
- - generic [ref=f1e10]:
- - generic [ref=f1e11] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=f1e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=f1e19]
- - generic [ref=f1e20]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=f1e23]:
- - menuitem "棣栭〉" [ref=f1e24] [cursor=pointer]
- - listitem [ref=f1e29]:
- - generic [ref=f1e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f1e38]:
- - generic [ref=f1e39] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f1e47]:
- - generic [ref=f1e48] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f1e54]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f1e55] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f1e60] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f1e66] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f1e73] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=f1e80] [cursor=pointer]
- - listitem [ref=f1e85]:
- - generic [ref=f1e86] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f1e92]:
- - generic [ref=f1e93] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f1e100] [cursor=pointer]
- - generic [ref=f1e105]:
- - generic [ref=f1e106]:
- - banner [ref=f1e107]:
- - button [ref=f1e108] [cursor=pointer]
- - button [ref=f1e111] [cursor=pointer]
- - navigation "breadcrumb" [ref=f1e116]:
- - list [ref=f1e117]:
- - listitem [ref=f1e118]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f1e119] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f1e123]
- - listitem [ref=f1e126]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f1e127]
- - generic [ref=f1e132]:
- - generic [ref=f1e134] [cursor=pointer]:
- - generic [ref=f1e138]: 鎼滅储
- - generic [ref=f1e139]: Ctrl K
- - button [ref=f1e141] [cursor=pointer]
- - button "dark" [ref=f1e146] [cursor=pointer]
- - button [ref=f1e155] [cursor=pointer]
- - button [ref=f1e161] [cursor=pointer]
- - button [ref=f1e164] [cursor=pointer]
- - button [ref=f1e170] [cursor=pointer]:
- - button [ref=f1e172]
- - button "宸ヤ綔鍙�" [ref=f1e176] [cursor=pointer]
- - button "鐞嗗憳" [ref=f1e180] [cursor=pointer]
- - generic [ref=f1e187]:
- - generic [ref=f1e188]: 鎵规鐢熶骇绠$悊
- - generic [ref=f1e207]:
- - button [ref=f1e208] [cursor=pointer]
- - generic [ref=f1e215] [cursor=pointer]
- - generic [ref=f1e219] [cursor=pointer]
- - main [ref=f1e226]:
- - generic [ref=f1e231]:
- - generic [ref=f1e236]:
- - generic [ref=f1e237]:
- - generic [ref=f1e238]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f1e244]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f1e246]:
- - generic [ref=f1e247]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f1e254]
- - generic [ref=f1e260]:
- - generic [ref=f1e261]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f1e267]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f1e269]:
- - generic [ref=f1e270]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f1e276]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f1e278]:
- - generic [ref=f1e279]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f1e286]
- - generic [ref=f1e292]:
- - generic [ref=f1e293]: 鎵规鐘舵��
- - generic [ref=f1e299] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f1e301]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f1e302]:
- - generic [ref=f1e303]: 鐢熶骇鏃ユ湡
- - generic [ref=f1e308]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f1e310]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e312]:
- - img "swap-right" [ref=f1e313]
- - textbox "缁撴潫鏃堕棿" [ref=f1e317]
- - generic:
- - img "calendar"
- - generic [ref=f1e318]:
- - generic [ref=f1e319]: 鍒涘缓鏃堕棿
- - generic [ref=f1e324]:
- - textbox "鍒涘缓鏃堕棿" [ref=f1e326]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f1e328]:
- - img "swap-right" [ref=f1e329]
- - textbox "缁撴潫鏃堕棿" [ref=f1e333]
- - generic:
- - img "calendar"
- - generic [ref=f1e334]:
- - button "閲� 缃�" [ref=f1e335] [cursor=pointer]
- - button "鎼� 绱�" [ref=f1e337] [cursor=pointer]
- - generic [ref=f1e339] [cursor=pointer]: 鏀惰捣
- - generic [ref=f1e346]:
- - generic [ref=f1e348]:
- - generic [ref=f1e349]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f1e353]:
- - generic [ref=f1e355]:
- - button "棰勭敓鎴愪簩缁寸爜" [active] [ref=f1e357] [cursor=pointer]
- - button "鏂板鎵规" [ref=f1e362] [cursor=pointer]
- - button "鎵爜杩芥函" [ref=f1e367] [cursor=pointer]
- - button "瀵煎嚭" [ref=f1e374] [cursor=pointer]
- - button "顫�" [ref=f1e380] [cursor=pointer]
- - generic [ref=f1e382]:
- - button "瞟�" [ref=f1e383] [cursor=pointer]
- - button "顪�" [ref=f1e385] [cursor=pointer]
- - button "顦�" [ref=f1e387] [cursor=pointer]
- - generic [ref=f1e394]:
- - generic [ref=f1e395]:
- - table [ref=f1e399]:
- - rowgroup [ref=f1e414]:
- - row [ref=f1e415]:
- - columnheader "鍝佺缂栫爜" [ref=f1e416]
- - columnheader "鍝佺鍚嶇О" [ref=f1e421]
- - columnheader "浜х嚎缂栫爜" [ref=f1e426]
- - columnheader "浜х嚎鍚嶇О" [ref=f1e431]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f1e436]
- - columnheader "璁″垝鏁伴噺" [ref=f1e441]
- - columnheader "璐d换浜�" [ref=f1e446]
- - columnheader "琚嬬爜鏁伴噺" [ref=f1e451]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f1e456]
- - columnheader "鎵规鐘舵��" [ref=f1e461]
- - columnheader "鍒涘缓鏃堕棿" [ref=f1e466]
- - table [ref=f1e474]:
- - rowgroup [ref=f1e489]:
- - row [ref=f1e490]:
- - cell "ITEM_20260819003" [ref=f1e491]
- - cell "娴嬭瘯" [ref=f1e495]
- - cell "two" [ref=f1e499]
- - cell "浜х嚎浜�" [ref=f1e503]
- - cell "2026-08-21 13:39:56" [ref=f1e507]
- - cell "100" [ref=f1e511]
- - cell "鐙楄泲" [ref=f1e515]
- - cell "0" [ref=f1e519]
- - cell "0" [ref=f1e523]
- - cell "鑽夌" [ref=f1e527]
- - cell "2026-08-21 13:40:10" [ref=f1e531]
- - row [ref=f1e535]:
- - cell "ITEM_20260819003" [ref=f1e536]
- - cell "娴嬭瘯" [ref=f1e540]
- - cell "two" [ref=f1e544]
- - cell "浜х嚎浜�" [ref=f1e548]
- - cell "2026-08-19 10:48:02" [ref=f1e552]
- - cell "10000" [ref=f1e556]
- - cell "瓒呯骇绠$悊鍛�" [ref=f1e560]
- - cell "100" [ref=f1e564]
- - cell "10" [ref=f1e568]
- - cell "宸插畬鎴�" [ref=f1e572]
- - cell "2026-08-19 10:48:22" [ref=f1e576]
- - generic:
- - generic [ref=f1e580]:
- - table [ref=f1e583]:
- - rowgroup [ref=f1e598]:
- - row [ref=f1e599]:
- - columnheader "鎵规鍙�" [ref=f1e600]
- - table [ref=f1e607]:
- - rowgroup [ref=f1e610]:
- - row [ref=f1e611]:
- - cell [ref=f1e612]:
- - button "PC20260821twoITEM_001" [ref=f1e615] [cursor=pointer]
- - row [ref=f1e617]:
- - cell [ref=f1e618]:
- - button "PC20260819twoITEM_001" [ref=f1e621] [cursor=pointer]
- - generic [ref=f1e623]:
- - table [ref=f1e626]:
- - rowgroup [ref=f1e641]:
- - row [ref=f1e642]:
- - columnheader "鎿嶄綔" [ref=f1e643]
- - table [ref=f1e650]:
- - rowgroup [ref=f1e653]:
- - row [ref=f1e654]:
- - cell [ref=f1e655]:
- - generic [ref=f1e658]:
- - generic [ref=f1e659]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f1e661] [cursor=pointer]
- - button "淇敼" [ref=f1e664] [cursor=pointer]
- - button "鍒犻櫎" [ref=f1e671] [cursor=pointer]
- - button "鏇村" [ref=f1e675] [cursor=pointer]
- - row [ref=f1e681]:
- - cell [ref=f1e682]:
- - generic [ref=f1e685]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f1e688] [cursor=pointer]
- - button "鏇村" [ref=f1e690] [cursor=pointer]
- - generic [ref=f1e702]:
- - generic [ref=f1e703]: 鍏� 2 鏉¤褰�
- - generic [ref=f1e705] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f1e706]:
- - textbox "璇烽�夋嫨" [ref=f1e707]: 20鏉�/椤�
- - generic [ref=f1e708]: 睿�
- - button "飱�" [ref=f1e711]
- - button "顧�" [ref=f1e713]
- - button "顫�" [ref=f1e715]
- - button "1" [ref=f1e718] [cursor=pointer]
- - button "顫�" [ref=f1e719]
- - button "顧�" [ref=f1e721]
- - button "顦�" [ref=f1e723]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T07-41-21-761Z.yml b/.playwright-mcp/page-2026-08-28T07-41-21-761Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-28T07-41-21-761Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T07-41-44-827Z.yml b/.playwright-mcp/page-2026-08-28T07-41-44-827Z.yml
deleted file mode 100644
index 454dbeb..0000000
--- a/.playwright-mcp/page-2026-08-28T07-41-44-827Z.yml
+++ /dev/null
@@ -1,212 +0,0 @@
-- generic [ref=f3e4]:
- - complementary [ref=f3e6]:
- - generic [ref=f3e7]:
- - generic [ref=f3e8] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=f3e13] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=f3e16]
- - generic [ref=f3e17]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=f3e20]:
- - menuitem "棣栭〉" [ref=f3e21] [cursor=pointer]
- - listitem [ref=f3e26]:
- - generic [ref=f3e27] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f3e35]:
- - generic [ref=f3e36] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f3e44]:
- - generic [ref=f3e45] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f3e51]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f3e52] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f3e57] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f3e63] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f3e70] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=f3e77] [cursor=pointer]
- - listitem [ref=f3e82]:
- - generic [ref=f3e83] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f3e89]:
- - generic [ref=f3e90] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f3e97] [cursor=pointer]
- - generic [ref=f3e102]:
- - generic [ref=f3e103]:
- - banner [ref=f3e104]:
- - button [ref=f3e105] [cursor=pointer]
- - button [ref=f3e108] [cursor=pointer]
- - navigation "breadcrumb" [ref=f3e113]:
- - list [ref=f3e114]:
- - listitem [ref=f3e115]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f3e116] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f3e120]
- - listitem [ref=f3e123]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f3e124]
- - generic [ref=f3e129]:
- - generic [ref=f3e131] [cursor=pointer]:
- - generic [ref=f3e135]: 鎼滅储
- - generic [ref=f3e136]: Ctrl K
- - button [ref=f3e138] [cursor=pointer]
- - button "dark" [ref=f3e143] [cursor=pointer]
- - button [ref=f3e152] [cursor=pointer]
- - button [ref=f3e158] [cursor=pointer]
- - button [ref=f3e161] [cursor=pointer]
- - button [ref=f3e167] [cursor=pointer]:
- - button [ref=f3e169]
- - button "宸ヤ綔鍙�" [ref=f3e173] [cursor=pointer]
- - button "鐞嗗憳" [ref=f3e177] [cursor=pointer]
- - generic [ref=f3e184]:
- - generic [ref=f3e185]: 鎵规鐢熶骇绠$悊
- - generic [ref=f3e204]:
- - button [ref=f3e205] [cursor=pointer]
- - generic [ref=f3e212] [cursor=pointer]
- - generic [ref=f3e216] [cursor=pointer]
- - main [ref=f3e223]:
- - generic [ref=f3e228]:
- - generic [ref=f3e233]:
- - generic [ref=f3e234]:
- - generic [ref=f3e235]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f3e241]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f3e243]:
- - generic [ref=f3e244]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f3e251]
- - generic [ref=f3e257]:
- - generic [ref=f3e258]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f3e264]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f3e266]:
- - generic [ref=f3e267]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f3e273]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f3e275]:
- - generic [ref=f3e276]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f3e283]
- - generic [ref=f3e289]:
- - generic [ref=f3e290]: 鎵规鐘舵��
- - generic [ref=f3e296] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f3e298]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f3e299]:
- - generic [ref=f3e300]: 鐢熶骇鏃ユ湡
- - generic [ref=f3e305]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f3e307]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f3e309]:
- - img "swap-right" [ref=f3e310]
- - textbox "缁撴潫鏃堕棿" [ref=f3e314]
- - generic:
- - img "calendar"
- - generic [ref=f3e315]:
- - generic [ref=f3e316]: 鍒涘缓鏃堕棿
- - generic [ref=f3e321]:
- - textbox "鍒涘缓鏃堕棿" [ref=f3e323]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f3e325]:
- - img "swap-right" [ref=f3e326]
- - textbox "缁撴潫鏃堕棿" [ref=f3e330]
- - generic:
- - img "calendar"
- - generic [ref=f3e331]:
- - button "閲� 缃�" [ref=f3e332] [cursor=pointer]
- - button "鎼� 绱�" [ref=f3e334] [cursor=pointer]
- - generic [ref=f3e336] [cursor=pointer]: 鏀惰捣
- - generic [ref=f3e343]:
- - generic [ref=f3e345]:
- - generic [ref=f3e346]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f3e350]:
- - generic [ref=f3e352]:
- - button "棰勭敓鎴愪簩缁寸爜" [active] [ref=f3e354] [cursor=pointer]
- - button "鏂板鎵规" [ref=f3e359] [cursor=pointer]
- - button "鎵爜杩芥函" [ref=f3e364] [cursor=pointer]
- - button "瀵煎嚭" [ref=f3e371] [cursor=pointer]
- - button "顫�" [ref=f3e377] [cursor=pointer]
- - generic [ref=f3e379]:
- - button "瞟�" [ref=f3e380] [cursor=pointer]
- - button "顪�" [ref=f3e382] [cursor=pointer]
- - button "顦�" [ref=f3e384] [cursor=pointer]
- - generic [ref=f3e391]:
- - generic [ref=f3e392]:
- - table [ref=f3e396]:
- - rowgroup [ref=f3e411]:
- - row [ref=f3e412]:
- - columnheader "鍝佺缂栫爜" [ref=f3e413]
- - columnheader "鍝佺鍚嶇О" [ref=f3e418]
- - columnheader "浜х嚎缂栫爜" [ref=f3e423]
- - columnheader "浜х嚎鍚嶇О" [ref=f3e428]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f3e433]
- - columnheader "璁″垝鏁伴噺" [ref=f3e438]
- - columnheader "璐d换浜�" [ref=f3e443]
- - columnheader "琚嬬爜鏁伴噺" [ref=f3e448]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f3e453]
- - columnheader "鎵规鐘舵��" [ref=f3e458]
- - columnheader "鍒涘缓鏃堕棿" [ref=f3e463]
- - table [ref=f3e471]:
- - rowgroup [ref=f3e486]:
- - row [ref=f3e487]:
- - cell "ITEM_20260819003" [ref=f3e488]
- - cell "娴嬭瘯" [ref=f3e492]
- - cell "two" [ref=f3e496]
- - cell "浜х嚎浜�" [ref=f3e500]
- - cell "2026-08-21 13:39:56" [ref=f3e504]
- - cell "100" [ref=f3e508]
- - cell "鐙楄泲" [ref=f3e512]
- - cell "0" [ref=f3e516]
- - cell "0" [ref=f3e520]
- - cell "鑽夌" [ref=f3e524]
- - cell "2026-08-21 13:40:10" [ref=f3e528]
- - row [ref=f3e532]:
- - cell "ITEM_20260819003" [ref=f3e533]
- - cell "娴嬭瘯" [ref=f3e537]
- - cell "two" [ref=f3e541]
- - cell "浜х嚎浜�" [ref=f3e545]
- - cell "2026-08-19 10:48:02" [ref=f3e549]
- - cell "10000" [ref=f3e553]
- - cell "瓒呯骇绠$悊鍛�" [ref=f3e557]
- - cell "100" [ref=f3e561]
- - cell "10" [ref=f3e565]
- - cell "宸插畬鎴�" [ref=f3e569]
- - cell "2026-08-19 10:48:22" [ref=f3e573]
- - generic:
- - generic [ref=f3e577]:
- - table [ref=f3e580]:
- - rowgroup [ref=f3e595]:
- - row [ref=f3e596]:
- - columnheader "鎵规鍙�" [ref=f3e597]
- - table [ref=f3e604]:
- - rowgroup [ref=f3e607]:
- - row [ref=f3e608]:
- - cell [ref=f3e609]:
- - button "PC20260821twoITEM_001" [ref=f3e612] [cursor=pointer]
- - row [ref=f3e614]:
- - cell [ref=f3e615]:
- - button "PC20260819twoITEM_001" [ref=f3e618] [cursor=pointer]
- - generic [ref=f3e620]:
- - table [ref=f3e623]:
- - rowgroup [ref=f3e638]:
- - row [ref=f3e639]:
- - columnheader "鎿嶄綔" [ref=f3e640]
- - table [ref=f3e647]:
- - rowgroup [ref=f3e650]:
- - row [ref=f3e651]:
- - cell [ref=f3e652]:
- - generic [ref=f3e655]:
- - generic [ref=f3e656]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f3e658] [cursor=pointer]
- - button "淇敼" [ref=f3e661] [cursor=pointer]
- - button "鍒犻櫎" [ref=f3e668] [cursor=pointer]
- - button "鏇村" [ref=f3e672] [cursor=pointer]
- - row [ref=f3e678]:
- - cell [ref=f3e679]:
- - generic [ref=f3e682]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f3e685] [cursor=pointer]
- - button "鏇村" [ref=f3e687] [cursor=pointer]
- - generic [ref=f3e699]:
- - generic [ref=f3e700]: 鍏� 2 鏉¤褰�
- - generic [ref=f3e702] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f3e703]:
- - textbox "璇烽�夋嫨" [ref=f3e704]: 20鏉�/椤�
- - generic [ref=f3e705]: 睿�
- - button "飱�" [ref=f3e708]
- - button "顧�" [ref=f3e710]
- - button "顫�" [ref=f3e712]
- - button "1" [ref=f3e715] [cursor=pointer]
- - button "顫�" [ref=f3e716]
- - button "顧�" [ref=f3e718]
- - button "顦�" [ref=f3e720]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T07-42-08-037Z.yml b/.playwright-mcp/page-2026-08-28T07-42-08-037Z.yml
deleted file mode 100644
index bcb0d80..0000000
--- a/.playwright-mcp/page-2026-08-28T07-42-08-037Z.yml
+++ /dev/null
@@ -1,285 +0,0 @@
-- generic [ref=f3e1]:
- - generic [ref=f3e4]:
- - complementary [ref=f3e6]:
- - generic [ref=f3e7]:
- - generic [ref=f3e8] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=f3e13] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=f3e16]
- - generic [ref=f3e17]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=f3e20]:
- - menuitem "棣栭〉" [ref=f3e21] [cursor=pointer]
- - listitem [ref=f3e26]:
- - generic [ref=f3e27] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f3e35]:
- - generic [ref=f3e36] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f3e44]:
- - generic [ref=f3e45] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f3e51]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f3e52] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f3e57] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f3e63] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f3e70] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=f3e77] [cursor=pointer]
- - listitem [ref=f3e82]:
- - generic [ref=f3e83] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f3e89]:
- - generic [ref=f3e90] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f3e97] [cursor=pointer]
- - generic [ref=f3e102]:
- - generic [ref=f3e103]:
- - banner [ref=f3e104]:
- - button [ref=f3e105] [cursor=pointer]
- - button [ref=f3e108] [cursor=pointer]
- - navigation "breadcrumb" [ref=f3e113]:
- - list [ref=f3e114]:
- - listitem [ref=f3e115]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f3e116] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f3e120]
- - listitem [ref=f3e123]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f3e124]
- - generic [ref=f3e129]:
- - generic [ref=f3e131] [cursor=pointer]:
- - generic [ref=f3e135]: 鎼滅储
- - generic [ref=f3e136]: Ctrl K
- - button [ref=f3e138] [cursor=pointer]
- - button "dark" [ref=f3e143] [cursor=pointer]
- - button [ref=f3e152] [cursor=pointer]
- - button [ref=f3e158] [cursor=pointer]
- - button [ref=f3e161] [cursor=pointer]
- - button [ref=f3e167] [cursor=pointer]:
- - button [ref=f3e169]
- - button "宸ヤ綔鍙�" [ref=f3e173] [cursor=pointer]
- - button "鐞嗗憳" [ref=f3e177] [cursor=pointer]
- - generic [ref=f3e184]:
- - generic [ref=f3e185]: 鎵规鐢熶骇绠$悊
- - generic [ref=f3e204]:
- - button [ref=f3e205] [cursor=pointer]
- - generic [ref=f3e212] [cursor=pointer]
- - generic [ref=f3e216] [cursor=pointer]
- - main [ref=f3e223]:
- - generic [ref=f3e228]:
- - generic [ref=f3e233]:
- - generic [ref=f3e234]:
- - generic [ref=f3e235]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f3e241]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f3e243]:
- - generic [ref=f3e244]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f3e251]
- - generic [ref=f3e257]:
- - generic [ref=f3e258]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f3e264]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f3e266]:
- - generic [ref=f3e267]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f3e273]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f3e275]:
- - generic [ref=f3e276]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f3e283]
- - generic [ref=f3e289]:
- - generic [ref=f3e290]: 鎵规鐘舵��
- - generic [ref=f3e296] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f3e298]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f3e299]:
- - generic [ref=f3e300]: 鐢熶骇鏃ユ湡
- - generic [ref=f3e305]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f3e307]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f3e309]:
- - img "swap-right" [ref=f3e310]
- - textbox "缁撴潫鏃堕棿" [ref=f3e314]
- - generic:
- - img "calendar"
- - generic [ref=f3e315]:
- - generic [ref=f3e316]: 鍒涘缓鏃堕棿
- - generic [ref=f3e321]:
- - textbox "鍒涘缓鏃堕棿" [ref=f3e323]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f3e325]:
- - img "swap-right" [ref=f3e326]
- - textbox "缁撴潫鏃堕棿" [ref=f3e330]
- - generic:
- - img "calendar"
- - generic [ref=f3e331]:
- - button "閲� 缃�" [ref=f3e332] [cursor=pointer]
- - button "鎼� 绱�" [ref=f3e334] [cursor=pointer]
- - generic [ref=f3e336] [cursor=pointer]: 鏀惰捣
- - generic [ref=f3e343]:
- - generic [ref=f3e345]:
- - generic [ref=f3e346]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f3e350]:
- - generic [ref=f3e352]:
- - button "棰勭敓鎴愪簩缁寸爜" [ref=f3e354] [cursor=pointer]
- - button "鏂板鎵规" [active] [ref=f3e359] [cursor=pointer]
- - button "鎵爜杩芥函" [ref=f3e364] [cursor=pointer]
- - button "瀵煎嚭" [ref=f3e371] [cursor=pointer]
- - button "顫�" [ref=f3e377] [cursor=pointer]
- - generic [ref=f3e379]:
- - button "瞟�" [ref=f3e380] [cursor=pointer]
- - button "顪�" [ref=f3e382] [cursor=pointer]
- - button "顦�" [ref=f3e384] [cursor=pointer]
- - generic [ref=f3e391]:
- - generic [ref=f3e392]:
- - table [ref=f3e396]:
- - rowgroup [ref=f3e411]:
- - row [ref=f3e412]:
- - columnheader "鍝佺缂栫爜" [ref=f3e413]
- - columnheader "鍝佺鍚嶇О" [ref=f3e418]
- - columnheader "浜х嚎缂栫爜" [ref=f3e423]
- - columnheader "浜х嚎鍚嶇О" [ref=f3e428]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f3e433]
- - columnheader "璁″垝鏁伴噺" [ref=f3e438]
- - columnheader "璐d换浜�" [ref=f3e443]
- - columnheader "琚嬬爜鏁伴噺" [ref=f3e448]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f3e453]
- - columnheader "鎵规鐘舵��" [ref=f3e458]
- - columnheader "鍒涘缓鏃堕棿" [ref=f3e463]
- - table [ref=f3e471]:
- - rowgroup [ref=f3e486]:
- - row [ref=f3e487]:
- - cell "ITEM_20260819003" [ref=f3e488]
- - cell "娴嬭瘯" [ref=f3e492]
- - cell "two" [ref=f3e496]
- - cell "浜х嚎浜�" [ref=f3e500]
- - cell "2026-08-21 13:39:56" [ref=f3e504]
- - cell "100" [ref=f3e508]
- - cell "鐙楄泲" [ref=f3e512]
- - cell "0" [ref=f3e516]
- - cell "0" [ref=f3e520]
- - cell "鑽夌" [ref=f3e524]
- - cell "2026-08-21 13:40:10" [ref=f3e528]
- - row [ref=f3e532]:
- - cell "ITEM_20260819003" [ref=f3e533]
- - cell "娴嬭瘯" [ref=f3e537]
- - cell "two" [ref=f3e541]
- - cell "浜х嚎浜�" [ref=f3e545]
- - cell "2026-08-19 10:48:02" [ref=f3e549]
- - cell "10000" [ref=f3e553]
- - cell "瓒呯骇绠$悊鍛�" [ref=f3e557]
- - cell "100" [ref=f3e561]
- - cell "10" [ref=f3e565]
- - cell "宸插畬鎴�" [ref=f3e569]
- - cell "2026-08-19 10:48:22" [ref=f3e573]
- - generic:
- - generic [ref=f3e577]:
- - table [ref=f3e580]:
- - rowgroup [ref=f3e595]:
- - row [ref=f3e596]:
- - columnheader "鎵规鍙�" [ref=f3e597]
- - table [ref=f3e604]:
- - rowgroup [ref=f3e607]:
- - row [ref=f3e608]:
- - cell [ref=f3e609]:
- - button "PC20260821twoITEM_001" [ref=f3e612] [cursor=pointer]
- - row [ref=f3e614]:
- - cell [ref=f3e615]:
- - button "PC20260819twoITEM_001" [ref=f3e618] [cursor=pointer]
- - generic [ref=f3e620]:
- - table [ref=f3e623]:
- - rowgroup [ref=f3e638]:
- - row [ref=f3e639]:
- - columnheader "鎿嶄綔" [ref=f3e640]
- - table [ref=f3e647]:
- - rowgroup [ref=f3e650]:
- - row [ref=f3e651]:
- - cell [ref=f3e652]:
- - generic [ref=f3e655]:
- - generic [ref=f3e656]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f3e658] [cursor=pointer]
- - button "淇敼" [ref=f3e661] [cursor=pointer]
- - button "鍒犻櫎" [ref=f3e668] [cursor=pointer]
- - button "鏇村" [ref=f3e672] [cursor=pointer]
- - row [ref=f3e678]:
- - cell [ref=f3e679]:
- - generic [ref=f3e682]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f3e685] [cursor=pointer]
- - button "鏇村" [ref=f3e687] [cursor=pointer]
- - generic [ref=f3e699]:
- - generic [ref=f3e700]: 鍏� 2 鏉¤褰�
- - generic [ref=f3e702] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f3e703]:
- - textbox "璇烽�夋嫨" [ref=f3e704]: 20鏉�/椤�
- - generic [ref=f3e705]: 睿�
- - button "飱�" [ref=f3e708]
- - button "顧�" [ref=f3e710]
- - button "顫�" [ref=f3e712]
- - button "1" [ref=f3e715] [cursor=pointer]
- - button "顫�" [ref=f3e716]
- - button "顧�" [ref=f3e718]
- - button "顦�" [ref=f3e720]
- - dialog [ref=f3e723]:
- - heading "鏂板鐢熶骇鎵规" [level=2] [ref=f3e725]
- - generic [ref=f3e727]:
- - generic [ref=f3e729]:
- - generic [ref=f3e730]:
- - generic [ref=f3e731]:
- - generic [ref=f3e732]: "*"
- - text: 鍖呰琚嬪瀷
- - generic [ref=f3e738] [cursor=pointer]:
- - combobox "* 鍖呰琚嬪瀷" [ref=f3e740]
- - generic: 璇烽�夋嫨鍖呰琚嬪瀷
- - generic [ref=f3e741]:
- - generic [ref=f3e742]:
- - generic [ref=f3e743]: "*"
- - text: 鍝佺
- - textbox "璇烽�夋嫨鍝佺锛堜骇鍝佸搧绉嶏級" [ref=f3e750]
- - generic [ref=f3e756]:
- - generic [ref=f3e757]:
- - generic [ref=f3e758]: "*"
- - text: 浜х嚎
- - generic [ref=f3e764]:
- - combobox "* 浜х嚎" [ref=f3e766]
- - generic: 璇烽�夋嫨浜х嚎
- - generic [ref=f3e767]:
- - generic [ref=f3e768]:
- - generic [ref=f3e769]: "*"
- - text: 鐢熶骇鏃ユ湡
- - generic [ref=f3e775]:
- - textbox "* 鐢熶骇鏃ユ湡" [ref=f3e776]:
- - /placeholder: 璇烽�夋嫨鐢熶骇鏃ユ湡
- - generic:
- - img "calendar"
- - generic [ref=f3e777]:
- - generic [ref=f3e778]: 璁″垝鏁伴噺
- - generic [ref=f3e783]:
- - generic [ref=f3e784]:
- - button "Increase Value" [ref=f3e785] [cursor=pointer]:
- - img "up" [ref=f3e786]
- - button "Decrease Value" [ref=f3e789] [cursor=pointer]:
- - img "down" [ref=f3e790]
- - spinbutton "璁″垝鏁伴噺" [ref=f3e794]
- - generic [ref=f3e795]:
- - generic [ref=f3e796]:
- - generic [ref=f3e797]: "*"
- - text: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f3e804]
- - generic [ref=f3e810]:
- - generic [ref=f3e811]: 澶囨敞
- - textbox "澶囨敞" [ref=f3e816]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - generic [ref=f3e817]:
- - generic [ref=f3e818]:
- - generic [ref=f3e819]: 鐢熶骇浜哄憳閰嶇疆
- - button "娣诲姞浜哄憳" [ref=f3e820] [cursor=pointer]
- - generic [ref=f3e828]:
- - generic [ref=f3e832]:
- - table [ref=f3e836]:
- - rowgroup [ref=f3e842]:
- - row [ref=f3e843]:
- - columnheader "鐢熶骇浜哄憳" [ref=f3e844]
- - columnheader "宀椾綅绫诲瀷" [ref=f3e849]
- - columnheader "澶囨敞" [ref=f3e854]
- - columnheader "鎿嶄綔" [ref=f3e859]
- - generic [ref=f3e865]:
- - table:
- - rowgroup
- - generic: 鏆傛棤鏁版嵁
- - button [ref=f3e875] [cursor=pointer]
- - generic [ref=f3e885]:
- - button "纭� 璁�" [ref=f3e886] [cursor=pointer]
- - button "鍙� 娑�" [ref=f3e889] [cursor=pointer]
- - button [ref=f3e891] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T07-48-07-459Z.yml b/.playwright-mcp/page-2026-08-28T07-48-07-459Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-28T07-48-07-459Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T07-48-24-872Z.yml b/.playwright-mcp/page-2026-08-28T07-48-24-872Z.yml
deleted file mode 100644
index 53574c0..0000000
--- a/.playwright-mcp/page-2026-08-28T07-48-24-872Z.yml
+++ /dev/null
@@ -1,236 +0,0 @@
-- generic [ref=f4e4]:
- - generic [ref=f4e7]:
- - complementary [ref=f4e9]:
- - generic [ref=f4e10]:
- - generic [ref=f4e11] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=f4e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=f4e19]
- - generic [ref=f4e20]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=f4e23]:
- - menuitem "棣栭〉" [ref=f4e24] [cursor=pointer]
- - listitem [ref=f4e29]:
- - generic [ref=f4e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f4e38]:
- - generic [ref=f4e39] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f4e47]:
- - generic [ref=f4e48] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f4e54]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f4e55] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f4e60] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f4e66] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f4e73] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=f4e80] [cursor=pointer]
- - listitem [ref=f4e85]:
- - generic [ref=f4e86] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f4e92]:
- - generic [ref=f4e93] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f4e100] [cursor=pointer]
- - generic [ref=f4e105]:
- - generic [ref=f4e106]:
- - banner [ref=f4e107]:
- - button [ref=f4e108] [cursor=pointer]
- - button [ref=f4e111] [cursor=pointer]
- - navigation "breadcrumb" [ref=f4e116]:
- - list [ref=f4e117]:
- - listitem [ref=f4e118]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f4e119] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f4e123]
- - listitem [ref=f4e126]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f4e127]
- - generic [ref=f4e132]:
- - generic [ref=f4e134] [cursor=pointer]:
- - generic [ref=f4e138]: 鎼滅储
- - generic [ref=f4e139]: Ctrl K
- - button [ref=f4e141] [cursor=pointer]
- - button "dark" [ref=f4e146] [cursor=pointer]
- - button [ref=f4e155] [cursor=pointer]
- - button [ref=f4e161] [cursor=pointer]
- - button [ref=f4e164] [cursor=pointer]
- - button [ref=f4e170] [cursor=pointer]:
- - button [ref=f4e172]
- - button "宸ヤ綔鍙�" [ref=f4e176] [cursor=pointer]
- - button "鐞嗗憳" [ref=f4e180] [cursor=pointer]
- - generic [ref=f4e187]:
- - generic [ref=f4e188]: 鎵规鐢熶骇绠$悊
- - generic [ref=f4e207]:
- - button [ref=f4e208] [cursor=pointer]
- - generic [ref=f4e215] [cursor=pointer]
- - generic [ref=f4e219] [cursor=pointer]
- - main [ref=f4e226]:
- - generic [ref=f4e231]:
- - generic [ref=f4e236]:
- - generic [ref=f4e237]:
- - generic [ref=f4e238]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f4e244]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f4e246]:
- - generic [ref=f4e247]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f4e254]
- - generic [ref=f4e260]:
- - generic [ref=f4e261]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f4e267]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f4e269]:
- - generic [ref=f4e270]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f4e276]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f4e278]:
- - generic [ref=f4e279]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f4e286]
- - generic [ref=f4e292]:
- - generic [ref=f4e293]: 鎵规鐘舵��
- - generic [ref=f4e299] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f4e301]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f4e302]:
- - generic [ref=f4e303]: 鐢熶骇鏃ユ湡
- - generic [ref=f4e308]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f4e310]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f4e312]:
- - img "swap-right" [ref=f4e313]
- - textbox "缁撴潫鏃堕棿" [ref=f4e317]
- - generic:
- - img "calendar"
- - generic [ref=f4e318]:
- - generic [ref=f4e319]: 鍒涘缓鏃堕棿
- - generic [ref=f4e324]:
- - textbox "鍒涘缓鏃堕棿" [ref=f4e326]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f4e328]:
- - img "swap-right" [ref=f4e329]
- - textbox "缁撴潫鏃堕棿" [ref=f4e333]
- - generic:
- - img "calendar"
- - generic [ref=f4e334]:
- - button "閲� 缃�" [ref=f4e335] [cursor=pointer]
- - button "鎼� 绱�" [ref=f4e337] [cursor=pointer]
- - generic [ref=f4e339] [cursor=pointer]: 鏀惰捣
- - generic [ref=f4e346]:
- - generic [ref=f4e348]:
- - generic [ref=f4e349]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f4e353]:
- - generic [ref=f4e355]:
- - button "棰勭敓鎴愪簩缁寸爜" [active] [ref=f4e357] [cursor=pointer]
- - button "鏂板鎵规" [ref=f4e362] [cursor=pointer]
- - button "鎵爜杩芥函" [ref=f4e367] [cursor=pointer]
- - button "瀵煎嚭" [ref=f4e374] [cursor=pointer]
- - button "顫�" [ref=f4e380] [cursor=pointer]
- - generic [ref=f4e382]:
- - button "瞟�" [ref=f4e383] [cursor=pointer]
- - button "顪�" [ref=f4e385] [cursor=pointer]
- - button "顦�" [ref=f4e387] [cursor=pointer]
- - generic [ref=f4e394]:
- - generic [ref=f4e395]:
- - table [ref=f4e399]:
- - rowgroup [ref=f4e414]:
- - row [ref=f4e415]:
- - columnheader "鍝佺缂栫爜" [ref=f4e416]
- - columnheader "鍝佺鍚嶇О" [ref=f4e421]
- - columnheader "浜х嚎缂栫爜" [ref=f4e426]
- - columnheader "浜х嚎鍚嶇О" [ref=f4e431]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f4e436]
- - columnheader "璁″垝鏁伴噺" [ref=f4e441]
- - columnheader "璐d换浜�" [ref=f4e446]
- - columnheader "琚嬬爜鏁伴噺" [ref=f4e451]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f4e456]
- - columnheader "鎵规鐘舵��" [ref=f4e461]
- - columnheader "鍒涘缓鏃堕棿" [ref=f4e466]
- - table [ref=f4e474]:
- - rowgroup [ref=f4e489]:
- - row [ref=f4e490]:
- - cell "ITEM_20260819003" [ref=f4e491]
- - cell "娴嬭瘯" [ref=f4e495]
- - cell "two" [ref=f4e499]
- - cell "浜х嚎浜�" [ref=f4e503]
- - cell "2026-08-21 13:39:56" [ref=f4e507]
- - cell "100" [ref=f4e511]
- - cell "鐙楄泲" [ref=f4e515]
- - cell "0" [ref=f4e519]
- - cell "0" [ref=f4e523]
- - cell "鑽夌" [ref=f4e527]
- - cell "2026-08-21 13:40:10" [ref=f4e531]
- - row [ref=f4e535]:
- - cell "ITEM_20260819003" [ref=f4e536]
- - cell "娴嬭瘯" [ref=f4e540]
- - cell "two" [ref=f4e544]
- - cell "浜х嚎浜�" [ref=f4e548]
- - cell "2026-08-19 10:48:02" [ref=f4e552]
- - cell "10000" [ref=f4e556]
- - cell "瓒呯骇绠$悊鍛�" [ref=f4e560]
- - cell "100" [ref=f4e564]
- - cell "10" [ref=f4e568]
- - cell "宸插畬鎴�" [ref=f4e572]
- - cell "2026-08-19 10:48:22" [ref=f4e576]
- - generic:
- - generic [ref=f4e580]:
- - table [ref=f4e583]:
- - rowgroup [ref=f4e598]:
- - row [ref=f4e599]:
- - columnheader "鎵规鍙�" [ref=f4e600]
- - table [ref=f4e607]:
- - rowgroup [ref=f4e610]:
- - row [ref=f4e611]:
- - cell [ref=f4e612]:
- - button "PC20260821twoITEM_001" [ref=f4e615] [cursor=pointer]
- - row [ref=f4e617]:
- - cell [ref=f4e618]:
- - button "PC20260819twoITEM_001" [ref=f4e621] [cursor=pointer]
- - generic [ref=f4e623]:
- - table [ref=f4e626]:
- - rowgroup [ref=f4e641]:
- - row [ref=f4e642]:
- - columnheader "鎿嶄綔" [ref=f4e643]
- - table [ref=f4e650]:
- - rowgroup [ref=f4e653]:
- - row [ref=f4e654]:
- - cell [ref=f4e655]:
- - generic [ref=f4e658]:
- - generic [ref=f4e659]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f4e661] [cursor=pointer]
- - button "淇敼" [ref=f4e664] [cursor=pointer]
- - button "鍒犻櫎" [ref=f4e671] [cursor=pointer]
- - button "鏇村" [ref=f4e675] [cursor=pointer]
- - row [ref=f4e681]:
- - cell [ref=f4e682]:
- - generic [ref=f4e685]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f4e688] [cursor=pointer]
- - button "鏇村" [ref=f4e690] [cursor=pointer]
- - generic [ref=f4e702]:
- - generic [ref=f4e703]: 鍏� 2 鏉¤褰�
- - generic [ref=f4e705] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f4e706]:
- - textbox "璇烽�夋嫨" [ref=f4e707]: 20鏉�/椤�
- - generic [ref=f4e708]: 睿�
- - button "飱�" [ref=f4e711]
- - button "顧�" [ref=f4e713]
- - button "顫�" [ref=f4e715]
- - button "1" [ref=f4e718] [cursor=pointer]
- - button "顫�" [ref=f4e719]
- - button "顧�" [ref=f4e721]
- - button "顦�" [ref=f4e723]
- - dialog [ref=f4e726]:
- - heading "棰勭敓鎴愭壒娆′簩缁寸爜" [level=2] [ref=f4e728]
- - generic [ref=f4e732]:
- - generic [ref=f4e733]:
- - generic [ref=f4e734]:
- - generic [ref=f4e735]: "*"
- - text: 鐢熸垚涓暟
- - generic [ref=f4e740]:
- - generic [ref=f4e741]:
- - button "Increase Value" [ref=f4e742] [cursor=pointer]:
- - img "up" [ref=f4e743]
- - button "Decrease Value" [ref=f4e746] [cursor=pointer]:
- - img "down" [ref=f4e747]
- - spinbutton "* 鐢熸垚涓暟" [ref=f4e751]
- - generic [ref=f4e752]:
- - generic [ref=f4e753]: 澶囨敞
- - textbox "澶囨敞" [ref=f4e758]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - button [ref=f4e759] [cursor=pointer]
- - generic [ref=f4e769]:
- - button "鍙� 娑�" [ref=f4e770] [cursor=pointer]
- - button "纭� 璁�" [ref=f4e772] [cursor=pointer]
- - button [ref=f4e774] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T07-48-51-155Z.yml b/.playwright-mcp/page-2026-08-28T07-48-51-155Z.yml
deleted file mode 100644
index d803fea..0000000
--- a/.playwright-mcp/page-2026-08-28T07-48-51-155Z.yml
+++ /dev/null
@@ -1,239 +0,0 @@
-- generic [ref=f4e4]:
- - generic [ref=f4e7]:
- - complementary [ref=f4e9]:
- - generic [ref=f4e10]:
- - generic [ref=f4e11] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=f4e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=f4e19]
- - generic [ref=f4e20]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=f4e23]:
- - menuitem "棣栭〉" [ref=f4e24] [cursor=pointer]
- - listitem [ref=f4e29]:
- - generic [ref=f4e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f4e38]:
- - generic [ref=f4e39] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f4e47]:
- - generic [ref=f4e48] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f4e54]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f4e55] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f4e60] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f4e66] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f4e73] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=f4e80] [cursor=pointer]
- - listitem [ref=f4e85]:
- - generic [ref=f4e86] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f4e92]:
- - generic [ref=f4e93] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f4e100] [cursor=pointer]
- - generic [ref=f4e105]:
- - generic [ref=f4e106]:
- - banner [ref=f4e107]:
- - button [ref=f4e108] [cursor=pointer]
- - button [ref=f4e111] [cursor=pointer]
- - navigation "breadcrumb" [ref=f4e116]:
- - list [ref=f4e117]:
- - listitem [ref=f4e118]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f4e119] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f4e123]
- - listitem [ref=f4e126]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f4e127]
- - generic [ref=f4e132]:
- - generic [ref=f4e134] [cursor=pointer]:
- - generic [ref=f4e138]: 鎼滅储
- - generic [ref=f4e139]: Ctrl K
- - button [ref=f4e141] [cursor=pointer]
- - button "dark" [ref=f4e146] [cursor=pointer]
- - button [ref=f4e155] [cursor=pointer]
- - button [ref=f4e161] [cursor=pointer]
- - button [ref=f4e164] [cursor=pointer]
- - button [ref=f4e170] [cursor=pointer]:
- - button [ref=f4e172]
- - button "宸ヤ綔鍙�" [ref=f4e176] [cursor=pointer]
- - button "鐞嗗憳" [ref=f4e180] [cursor=pointer]
- - generic [ref=f4e187]:
- - generic [ref=f4e188]: 鎵规鐢熶骇绠$悊
- - generic [ref=f4e207]:
- - button [ref=f4e208] [cursor=pointer]
- - generic [ref=f4e215] [cursor=pointer]
- - generic [ref=f4e219] [cursor=pointer]
- - main [ref=f4e226]:
- - generic [ref=f4e231]:
- - generic [ref=f4e236]:
- - generic [ref=f4e237]:
- - generic [ref=f4e238]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f4e244]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f4e246]:
- - generic [ref=f4e247]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f4e254]
- - generic [ref=f4e260]:
- - generic [ref=f4e261]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f4e267]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f4e269]:
- - generic [ref=f4e270]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f4e276]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f4e278]:
- - generic [ref=f4e279]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f4e286]
- - generic [ref=f4e292]:
- - generic [ref=f4e293]: 鎵规鐘舵��
- - generic [ref=f4e299] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f4e301]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f4e302]:
- - generic [ref=f4e303]: 鐢熶骇鏃ユ湡
- - generic [ref=f4e308]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f4e310]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f4e312]:
- - img "swap-right" [ref=f4e313]
- - textbox "缁撴潫鏃堕棿" [ref=f4e317]
- - generic:
- - img "calendar"
- - generic [ref=f4e318]:
- - generic [ref=f4e319]: 鍒涘缓鏃堕棿
- - generic [ref=f4e324]:
- - textbox "鍒涘缓鏃堕棿" [ref=f4e326]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f4e328]:
- - img "swap-right" [ref=f4e329]
- - textbox "缁撴潫鏃堕棿" [ref=f4e333]
- - generic:
- - img "calendar"
- - generic [ref=f4e334]:
- - button "閲� 缃�" [ref=f4e335] [cursor=pointer]
- - button "鎼� 绱�" [ref=f4e337] [cursor=pointer]
- - generic [ref=f4e339] [cursor=pointer]: 鏀惰捣
- - generic [ref=f4e346]:
- - generic [ref=f4e348]:
- - generic [ref=f4e349]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f4e353]:
- - generic [ref=f4e355]:
- - button "棰勭敓鎴愪簩缁寸爜" [ref=f4e357] [cursor=pointer]
- - button "鏂板鎵规" [ref=f4e362] [cursor=pointer]
- - button "鎵爜杩芥函" [ref=f4e367] [cursor=pointer]
- - button "瀵煎嚭" [ref=f4e374] [cursor=pointer]
- - button "顫�" [ref=f4e380] [cursor=pointer]
- - generic [ref=f4e382]:
- - button "瞟�" [ref=f4e383] [cursor=pointer]
- - button "顪�" [ref=f4e385] [cursor=pointer]
- - button "顦�" [ref=f4e387] [cursor=pointer]
- - generic [ref=f4e394]:
- - generic [ref=f4e395]:
- - table [ref=f4e399]:
- - rowgroup [ref=f4e414]:
- - row [ref=f4e415]:
- - columnheader "鍝佺缂栫爜" [ref=f4e416]
- - columnheader "鍝佺鍚嶇О" [ref=f4e421]
- - columnheader "浜х嚎缂栫爜" [ref=f4e426]
- - columnheader "浜х嚎鍚嶇О" [ref=f4e431]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f4e436]
- - columnheader "璁″垝鏁伴噺" [ref=f4e441]
- - columnheader "璐d换浜�" [ref=f4e446]
- - columnheader "琚嬬爜鏁伴噺" [ref=f4e451]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f4e456]
- - columnheader "鎵规鐘舵��" [ref=f4e461]
- - columnheader "鍒涘缓鏃堕棿" [ref=f4e466]
- - table [ref=f4e474]:
- - rowgroup [ref=f4e489]:
- - row [ref=f4e490]:
- - cell "ITEM_20260819003" [ref=f4e491]
- - cell "娴嬭瘯" [ref=f4e495]
- - cell "two" [ref=f4e499]
- - cell "浜х嚎浜�" [ref=f4e503]
- - cell "2026-08-21 13:39:56" [ref=f4e507]
- - cell "100" [ref=f4e511]
- - cell "鐙楄泲" [ref=f4e515]
- - cell "0" [ref=f4e519]
- - cell "0" [ref=f4e523]
- - cell "鑽夌" [ref=f4e527]
- - cell "2026-08-21 13:40:10" [ref=f4e531]
- - row [ref=f4e535]:
- - cell "ITEM_20260819003" [ref=f4e536]
- - cell "娴嬭瘯" [ref=f4e540]
- - cell "two" [ref=f4e544]
- - cell "浜х嚎浜�" [ref=f4e548]
- - cell "2026-08-19 10:48:02" [ref=f4e552]
- - cell "10000" [ref=f4e556]
- - cell "瓒呯骇绠$悊鍛�" [ref=f4e560]
- - cell "100" [ref=f4e564]
- - cell "10" [ref=f4e568]
- - cell "宸插畬鎴�" [ref=f4e572]
- - cell "2026-08-19 10:48:22" [ref=f4e576]
- - generic:
- - generic [ref=f4e580]:
- - table [ref=f4e583]:
- - rowgroup [ref=f4e598]:
- - row [ref=f4e599]:
- - columnheader "鎵规鍙�" [ref=f4e600]
- - table [ref=f4e607]:
- - rowgroup [ref=f4e610]:
- - row [ref=f4e611]:
- - cell [ref=f4e612]:
- - button "PC20260821twoITEM_001" [ref=f4e615] [cursor=pointer]
- - row [ref=f4e617]:
- - cell [ref=f4e618]:
- - button "PC20260819twoITEM_001" [ref=f4e621] [cursor=pointer]
- - generic [ref=f4e623]:
- - table [ref=f4e626]:
- - rowgroup [ref=f4e641]:
- - row [ref=f4e642]:
- - columnheader "鎿嶄綔" [ref=f4e643]
- - table [ref=f4e650]:
- - rowgroup [ref=f4e653]:
- - row [ref=f4e654]:
- - cell [ref=f4e655]:
- - generic [ref=f4e658]:
- - generic [ref=f4e659]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f4e661] [cursor=pointer]
- - button "淇敼" [ref=f4e664] [cursor=pointer]
- - button "鍒犻櫎" [ref=f4e671] [cursor=pointer]
- - button "鏇村" [ref=f4e675] [cursor=pointer]
- - row [ref=f4e681]:
- - cell [ref=f4e682]:
- - generic [ref=f4e685]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f4e688] [cursor=pointer]
- - button "鏇村" [ref=f4e690] [cursor=pointer]
- - generic [ref=f4e702]:
- - generic [ref=f4e703]: 鍏� 2 鏉¤褰�
- - generic [ref=f4e705] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f4e706]:
- - textbox "璇烽�夋嫨" [ref=f4e707]: 20鏉�/椤�
- - generic [ref=f4e708]: 睿�
- - button "飱�" [ref=f4e711]
- - button "顧�" [ref=f4e713]
- - button "顫�" [ref=f4e715]
- - button "1" [ref=f4e718] [cursor=pointer]
- - button "顫�" [ref=f4e719]
- - button "顧�" [ref=f4e721]
- - button "顦�" [ref=f4e723]
- - generic [ref=f4e779]:
- - img "close-circle" [ref=f4e780]
- - text: 璇锋眰鍦板潃涓嶅瓨鍦�:admin-api/mes/pro/batch/pre-generate
- - dialog [ref=f4e726]:
- - heading "棰勭敓鎴愭壒娆′簩缁寸爜" [level=2] [ref=f4e728]
- - generic [ref=f4e732]:
- - generic [ref=f4e733]:
- - generic [ref=f4e734]:
- - generic [ref=f4e735]: "*"
- - text: 鐢熸垚涓暟
- - generic [ref=f4e740]:
- - generic [ref=f4e741]:
- - button "Increase Value" [ref=f4e742] [cursor=pointer]:
- - img "up" [ref=f4e743]
- - button "Decrease Value" [ref=f4e746] [cursor=pointer]:
- - img "down" [ref=f4e747]
- - spinbutton "* 鐢熸垚涓暟" [ref=f4e751]: "3"
- - generic [ref=f4e752]:
- - generic [ref=f4e753]: 澶囨敞
- - textbox "澶囨敞" [ref=f4e758]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - button [ref=f4e759] [cursor=pointer]
- - generic [ref=f4e769]:
- - button "鍙� 娑�" [ref=f4e770] [cursor=pointer]
- - button "纭� 璁�" [active] [ref=f4e772] [cursor=pointer]
- - button [ref=f4e774] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T07-49-26-431Z.yml b/.playwright-mcp/page-2026-08-28T07-49-26-431Z.yml
deleted file mode 100644
index 364d985..0000000
--- a/.playwright-mcp/page-2026-08-28T07-49-26-431Z.yml
+++ /dev/null
@@ -1,236 +0,0 @@
-- generic [ref=f4e4]:
- - generic [ref=f4e7]:
- - complementary [ref=f4e9]:
- - generic [ref=f4e10]:
- - generic [ref=f4e11] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=f4e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=f4e19]
- - generic [ref=f4e20]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=f4e23]:
- - menuitem "棣栭〉" [ref=f4e24] [cursor=pointer]
- - listitem [ref=f4e29]:
- - generic [ref=f4e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f4e38]:
- - generic [ref=f4e39] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f4e47]:
- - generic [ref=f4e48] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f4e54]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f4e55] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f4e60] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f4e66] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f4e73] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=f4e80] [cursor=pointer]
- - listitem [ref=f4e85]:
- - generic [ref=f4e86] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f4e92]:
- - generic [ref=f4e93] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f4e100] [cursor=pointer]
- - generic [ref=f4e105]:
- - generic [ref=f4e106]:
- - banner [ref=f4e107]:
- - button [ref=f4e108] [cursor=pointer]
- - button [ref=f4e111] [cursor=pointer]
- - navigation "breadcrumb" [ref=f4e116]:
- - list [ref=f4e117]:
- - listitem [ref=f4e118]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f4e119] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f4e123]
- - listitem [ref=f4e126]:
- - link "鎵规鐢熶骇绠$悊" [disabled] [ref=f4e127]
- - generic [ref=f4e132]:
- - generic [ref=f4e134] [cursor=pointer]:
- - generic [ref=f4e138]: 鎼滅储
- - generic [ref=f4e139]: Ctrl K
- - button [ref=f4e141] [cursor=pointer]
- - button "dark" [ref=f4e146] [cursor=pointer]
- - button [ref=f4e155] [cursor=pointer]
- - button [ref=f4e161] [cursor=pointer]
- - button [ref=f4e164] [cursor=pointer]
- - button [ref=f4e170] [cursor=pointer]:
- - button [ref=f4e172]
- - button "宸ヤ綔鍙�" [ref=f4e176] [cursor=pointer]
- - button "鐞嗗憳" [ref=f4e180] [cursor=pointer]
- - generic [ref=f4e187]:
- - generic [ref=f4e188]: 鎵规鐢熶骇绠$悊
- - generic [ref=f4e207]:
- - button [ref=f4e208] [cursor=pointer]
- - generic [ref=f4e215] [cursor=pointer]
- - generic [ref=f4e219] [cursor=pointer]
- - main [ref=f4e226]:
- - generic [ref=f4e231]:
- - generic [ref=f4e236]:
- - generic [ref=f4e237]:
- - generic [ref=f4e238]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f4e244]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f4e246]:
- - generic [ref=f4e247]: 鍝佺
- - textbox "璇烽�夋嫨鍝佺" [ref=f4e254]
- - generic [ref=f4e260]:
- - generic [ref=f4e261]: 浜х嚎缂栫爜
- - textbox "浜х嚎缂栫爜" [ref=f4e267]:
- - /placeholder: 璇疯緭鍏ヤ骇绾跨紪鐮�
- - generic [ref=f4e269]:
- - generic [ref=f4e270]: 浜х嚎鍚嶇О
- - textbox "浜х嚎鍚嶇О" [ref=f4e276]:
- - /placeholder: 璇疯緭鍏ヤ骇绾垮悕绉�
- - generic [ref=f4e278]:
- - generic [ref=f4e279]: 璐d换浜�
- - textbox "璇烽�夋嫨璐d换浜�" [ref=f4e286]
- - generic [ref=f4e292]:
- - generic [ref=f4e293]: 鎵规鐘舵��
- - generic [ref=f4e299] [cursor=pointer]:
- - combobox "鎵规鐘舵��" [ref=f4e301]
- - generic: 璇烽�夋嫨鎵规鐘舵��
- - generic [ref=f4e302]:
- - generic [ref=f4e303]: 鐢熶骇鏃ユ湡
- - generic [ref=f4e308]:
- - textbox "鐢熶骇鏃ユ湡" [ref=f4e310]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f4e312]:
- - img "swap-right" [ref=f4e313]
- - textbox "缁撴潫鏃堕棿" [ref=f4e317]
- - generic:
- - img "calendar"
- - generic [ref=f4e318]:
- - generic [ref=f4e319]: 鍒涘缓鏃堕棿
- - generic [ref=f4e324]:
- - textbox "鍒涘缓鏃堕棿" [ref=f4e326]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f4e328]:
- - img "swap-right" [ref=f4e329]
- - textbox "缁撴潫鏃堕棿" [ref=f4e333]
- - generic:
- - img "calendar"
- - generic [ref=f4e334]:
- - button "閲� 缃�" [ref=f4e335] [cursor=pointer]
- - button "鎼� 绱�" [ref=f4e337] [cursor=pointer]
- - generic [ref=f4e339] [cursor=pointer]: 鏀惰捣
- - generic [ref=f4e346]:
- - generic [ref=f4e348]:
- - generic [ref=f4e349]: 鐢熶骇鎵规鍒楄〃
- - generic [ref=f4e353]:
- - generic [ref=f4e355]:
- - button "棰勭敓鎴愪簩缁寸爜" [ref=f4e357] [cursor=pointer]
- - button "鏂板鎵规" [ref=f4e362] [cursor=pointer]
- - button "鎵爜杩芥函" [ref=f4e367] [cursor=pointer]
- - button "瀵煎嚭" [ref=f4e374] [cursor=pointer]
- - button "顫�" [ref=f4e380] [cursor=pointer]
- - generic [ref=f4e382]:
- - button "瞟�" [ref=f4e383] [cursor=pointer]
- - button "顪�" [ref=f4e385] [cursor=pointer]
- - button "顦�" [ref=f4e387] [cursor=pointer]
- - generic [ref=f4e394]:
- - generic [ref=f4e395]:
- - table [ref=f4e399]:
- - rowgroup [ref=f4e414]:
- - row [ref=f4e415]:
- - columnheader "鍝佺缂栫爜" [ref=f4e416]
- - columnheader "鍝佺鍚嶇О" [ref=f4e421]
- - columnheader "浜х嚎缂栫爜" [ref=f4e426]
- - columnheader "浜х嚎鍚嶇О" [ref=f4e431]
- - columnheader "鐢熶骇鏃ユ湡" [ref=f4e436]
- - columnheader "璁″垝鏁伴噺" [ref=f4e441]
- - columnheader "璐d换浜�" [ref=f4e446]
- - columnheader "琚嬬爜鏁伴噺" [ref=f4e451]
- - columnheader "鎵樼洏鐮佹暟閲�" [ref=f4e456]
- - columnheader "鎵规鐘舵��" [ref=f4e461]
- - columnheader "鍒涘缓鏃堕棿" [ref=f4e466]
- - table [ref=f4e474]:
- - rowgroup [ref=f4e489]:
- - row [ref=f4e490]:
- - cell "ITEM_20260819003" [ref=f4e491]
- - cell "娴嬭瘯" [ref=f4e495]
- - cell "two" [ref=f4e499]
- - cell "浜х嚎浜�" [ref=f4e503]
- - cell "2026-08-21 13:39:56" [ref=f4e507]
- - cell "100" [ref=f4e511]
- - cell "鐙楄泲" [ref=f4e515]
- - cell "0" [ref=f4e519]
- - cell "0" [ref=f4e523]
- - cell "鑽夌" [ref=f4e527]
- - cell "2026-08-21 13:40:10" [ref=f4e531]
- - row [ref=f4e535]:
- - cell "ITEM_20260819003" [ref=f4e536]
- - cell "娴嬭瘯" [ref=f4e540]
- - cell "two" [ref=f4e544]
- - cell "浜х嚎浜�" [ref=f4e548]
- - cell "2026-08-19 10:48:02" [ref=f4e552]
- - cell "10000" [ref=f4e556]
- - cell "瓒呯骇绠$悊鍛�" [ref=f4e560]
- - cell "100" [ref=f4e564]
- - cell "10" [ref=f4e568]
- - cell "宸插畬鎴�" [ref=f4e572]
- - cell "2026-08-19 10:48:22" [ref=f4e576]
- - generic:
- - generic [ref=f4e580]:
- - table [ref=f4e583]:
- - rowgroup [ref=f4e598]:
- - row [ref=f4e599]:
- - columnheader "鎵规鍙�" [ref=f4e600]
- - table [ref=f4e607]:
- - rowgroup [ref=f4e610]:
- - row [ref=f4e611]:
- - cell [ref=f4e612]:
- - button "PC20260821twoITEM_001" [ref=f4e615] [cursor=pointer]
- - row [ref=f4e617]:
- - cell [ref=f4e618]:
- - button "PC20260819twoITEM_001" [ref=f4e621] [cursor=pointer]
- - generic [ref=f4e623]:
- - table [ref=f4e626]:
- - rowgroup [ref=f4e641]:
- - row [ref=f4e642]:
- - columnheader "鎿嶄綔" [ref=f4e643]
- - table [ref=f4e650]:
- - rowgroup [ref=f4e653]:
- - row [ref=f4e654]:
- - cell [ref=f4e655]:
- - generic [ref=f4e658]:
- - generic [ref=f4e659]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f4e661] [cursor=pointer]
- - button "淇敼" [ref=f4e664] [cursor=pointer]
- - button "鍒犻櫎" [ref=f4e671] [cursor=pointer]
- - button "鏇村" [ref=f4e675] [cursor=pointer]
- - row [ref=f4e681]:
- - cell [ref=f4e682]:
- - generic [ref=f4e685]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f4e688] [cursor=pointer]
- - button "鏇村" [ref=f4e690] [cursor=pointer]
- - generic [ref=f4e702]:
- - generic [ref=f4e703]: 鍏� 2 鏉¤褰�
- - generic [ref=f4e705] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f4e706]:
- - textbox "璇烽�夋嫨" [ref=f4e707]: 20鏉�/椤�
- - generic [ref=f4e708]: 睿�
- - button "飱�" [ref=f4e711]
- - button "顧�" [ref=f4e713]
- - button "顫�" [ref=f4e715]
- - button "1" [ref=f4e718] [cursor=pointer]
- - button "顫�" [ref=f4e719]
- - button "顧�" [ref=f4e721]
- - button "顦�" [ref=f4e723]
- - dialog [ref=f4e726]:
- - heading "棰勭敓鎴愭壒娆′簩缁寸爜" [level=2] [ref=f4e728]
- - generic [ref=f4e732]:
- - generic [ref=f4e733]:
- - generic [ref=f4e734]:
- - generic [ref=f4e735]: "*"
- - text: 鐢熸垚涓暟
- - generic [ref=f4e740]:
- - generic [ref=f4e741]:
- - button "Increase Value" [ref=f4e742] [cursor=pointer]:
- - img "up" [ref=f4e743]
- - button "Decrease Value" [ref=f4e746] [cursor=pointer]:
- - img "down" [ref=f4e747]
- - spinbutton "* 鐢熸垚涓暟" [ref=f4e751]: "3"
- - generic [ref=f4e752]:
- - generic [ref=f4e753]: 澶囨敞
- - textbox "澶囨敞" [ref=f4e758]:
- - /placeholder: 璇疯緭鍏ュ娉�
- - button [ref=f4e759] [cursor=pointer]
- - generic [ref=f4e769]:
- - button "鍙� 娑�" [ref=f4e770] [cursor=pointer]
- - button "纭� 璁�" [active] [ref=f4e772] [cursor=pointer]
- - button [ref=f4e774] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T08-59-32-379Z.yml b/.playwright-mcp/page-2026-08-28T08-59-32-379Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-28T08-59-32-379Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T08-59-49-723Z.yml b/.playwright-mcp/page-2026-08-28T08-59-49-723Z.yml
deleted file mode 100644
index ddb6c93..0000000
--- a/.playwright-mcp/page-2026-08-28T08-59-49-723Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active] [ref=f7e1]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T09-00-00-757Z.yml b/.playwright-mcp/page-2026-08-28T09-00-00-757Z.yml
deleted file mode 100644
index 0b72361..0000000
--- a/.playwright-mcp/page-2026-08-28T09-00-00-757Z.yml
+++ /dev/null
@@ -1,104 +0,0 @@
-- generic [ref=f7e7]:
- - complementary [ref=f7e9]:
- - generic [ref=f7e10]:
- - generic [ref=f7e11] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=f7e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=f7e19]
- - generic [ref=f7e20]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=f7e23]:
- - menuitem "棣栭〉" [ref=f7e24] [cursor=pointer]
- - listitem [ref=f7e29]:
- - generic [ref=f7e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f7e38]:
- - generic [ref=f7e39] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f7e47]:
- - generic [ref=f7e48] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f7e365] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f7e370] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f7e376] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f7e383] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=f7e390] [cursor=pointer]
- - listitem [ref=f7e54]:
- - generic [ref=f7e55] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f7e61]:
- - generic [ref=f7e62] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f7e69] [cursor=pointer]
- - generic [ref=f7e74]:
- - generic [ref=f7e75]:
- - banner [ref=f7e76]:
- - button [ref=f7e77] [cursor=pointer]
- - button [ref=f7e80] [cursor=pointer]
- - navigation "breadcrumb" [ref=f7e85]:
- - list [ref=f7e86]:
- - listitem [ref=f7e87]:
- - link "棣栭〉" [disabled] [ref=f7e88]
- - generic [ref=f7e93]:
- - generic [ref=f7e95] [cursor=pointer]:
- - generic [ref=f7e99]: 鎼滅储
- - generic [ref=f7e100]: Ctrl K
- - button [ref=f7e102] [cursor=pointer]
- - button "dark" [ref=f7e107] [cursor=pointer]
- - button [ref=f7e116] [cursor=pointer]
- - button [ref=f7e122] [cursor=pointer]
- - button [ref=f7e125] [cursor=pointer]
- - button [ref=f7e131] [cursor=pointer]:
- - button [ref=f7e133]
- - button "宸ヤ綔鍙�" [ref=f7e137] [cursor=pointer]
- - button "鐞嗗憳" [ref=f7e141] [cursor=pointer]
- - generic [ref=f7e148]:
- - generic [ref=f7e149]: 棣栭〉
- - generic [ref=f7e168]:
- - button [ref=f7e169] [cursor=pointer]
- - generic [ref=f7e176] [cursor=pointer]
- - generic [ref=f7e180] [cursor=pointer]
- - main [ref=f7e187]:
- - generic [ref=f7e190]:
- - generic [ref=f7e191]:
- - generic [ref=f7e201] [cursor=pointer]:
- - generic [ref=f7e202]: 鍝佺鎬绘暟
- - generic [ref=f7e203]: "1"
- - generic [ref=f7e214] [cursor=pointer]:
- - generic [ref=f7e215]: MES 鍝佺
- - generic [ref=f7e216]: "0"
- - generic [ref=f7e227] [cursor=pointer]:
- - generic [ref=f7e228]: 鍝佺鍒嗙被
- - generic [ref=f7e229]: "1"
- - generic [ref=f7e238] [cursor=pointer]:
- - generic [ref=f7e239]: 璁¢噺鍗曚綅
- - generic [ref=f7e240]: "1"
- - generic [ref=f7e242]:
- - generic [ref=f7e250] [cursor=pointer]:
- - generic [ref=f7e251]: 浜х嚎
- - generic [ref=f7e252]: "1"
- - generic [ref=f7e264] [cursor=pointer]:
- - generic [ref=f7e265]: 鐢熶骇鎵规
- - generic [ref=f7e266]: "102"
- - generic [ref=f7e275] [cursor=pointer]:
- - generic [ref=f7e276]: 琚嬬爜
- - generic [ref=f7e277]: 1,101
- - generic [ref=f7e288] [cursor=pointer]:
- - generic [ref=f7e289]: 鎵樼洏鐮�
- - generic [ref=f7e290]: "11"
- - generic [ref=f7e292]:
- - generic [ref=f7e296]:
- - generic [ref=f7e297]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=f7e299]:
- - generic [ref=f7e300] [cursor=pointer]:
- - generic [ref=f7e301]:
- - radio "杩� 7 澶�" [checked]
- - generic [ref=f7e302]: 杩� 7 澶�
- - generic [ref=f7e303] [cursor=pointer]:
- - generic [ref=f7e304]:
- - radio "杩� 30 澶�"
- - generic [ref=f7e305]: 杩� 30 澶�
- - generic [ref=f7e310]: 鎵规鐘舵�佸垎甯�
- - generic [ref=f7e319]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=f7e328]:
- - generic [ref=f7e329]: 蹇嵎鍏ュ彛
- - generic [ref=f7e333]:
- - generic [ref=f7e334]: 鍝佺绠$悊
- - generic [ref=f7e342]: 鍝佺鍒嗙被
- - generic [ref=f7e350]: 鎵规鐢熶骇
- - generic [ref=f7e359]: 璧嬬爜绠$悊
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T09-00-15-736Z.yml b/.playwright-mcp/page-2026-08-28T09-00-15-736Z.yml
deleted file mode 100644
index dc7e064..0000000
--- a/.playwright-mcp/page-2026-08-28T09-00-15-736Z.yml
+++ /dev/null
@@ -1,110 +0,0 @@
-- generic [ref=f7e7]:
- - complementary [ref=f7e9]:
- - generic [ref=f7e10]:
- - generic [ref=f7e11] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=f7e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=f7e19]
- - generic [ref=f7e20]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=f7e23]:
- - menuitem "棣栭〉" [ref=f7e24] [cursor=pointer]
- - listitem [ref=f7e29]:
- - generic [ref=f7e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f7e38]:
- - generic [ref=f7e39] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f7e47]:
- - generic [ref=f7e48] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f7e395]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f7e365] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f7e370] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [active] [ref=f7e376] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f7e383] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=f7e390] [cursor=pointer]
- - listitem [ref=f7e54]:
- - generic [ref=f7e55] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f7e61]:
- - generic [ref=f7e62] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f7e69] [cursor=pointer]
- - generic [ref=f7e74]:
- - generic [ref=f7e75]:
- - banner [ref=f7e76]:
- - button [ref=f7e77] [cursor=pointer]
- - button [ref=f7e80] [cursor=pointer]
- - navigation "breadcrumb" [ref=f7e85]:
- - list [ref=f7e86]:
- - listitem [ref=f7e396]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f7e397] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f7e401]
- - listitem [ref=f7e404]:
- - link "鎵樼洏鐮佺鐞�" [disabled] [ref=f7e405]
- - generic [ref=f7e93]:
- - generic [ref=f7e95] [cursor=pointer]:
- - generic [ref=f7e99]: 鎼滅储
- - generic [ref=f7e100]: Ctrl K
- - button [ref=f7e102] [cursor=pointer]
- - button "dark" [ref=f7e107] [cursor=pointer]
- - button [ref=f7e116] [cursor=pointer]
- - button [ref=f7e122] [cursor=pointer]
- - button [ref=f7e125] [cursor=pointer]
- - button [ref=f7e131] [cursor=pointer]:
- - button [ref=f7e133]
- - button "宸ヤ綔鍙�" [ref=f7e137] [cursor=pointer]
- - button "鐞嗗憳" [ref=f7e141] [cursor=pointer]
- - generic [ref=f7e148]:
- - generic [ref=f7e153]:
- - generic [ref=f7e154] [cursor=pointer]: 棣栭〉
- - generic [ref=f7e414] [cursor=pointer]: 鎵樼洏鐮佺鐞�
- - generic [ref=f7e168]:
- - button [ref=f7e169] [cursor=pointer]
- - generic [ref=f7e176] [cursor=pointer]
- - generic [ref=f7e180] [cursor=pointer]
- - main [ref=f7e187]:
- - generic [ref=f7e190]:
- - generic [ref=f7e191]:
- - generic [ref=f7e201] [cursor=pointer]:
- - generic [ref=f7e202]: 鍝佺鎬绘暟
- - generic [ref=f7e203]: "1"
- - generic [ref=f7e214] [cursor=pointer]:
- - generic [ref=f7e215]: MES 鍝佺
- - generic [ref=f7e216]: "0"
- - generic [ref=f7e227] [cursor=pointer]:
- - generic [ref=f7e228]: 鍝佺鍒嗙被
- - generic [ref=f7e229]: "1"
- - generic [ref=f7e238] [cursor=pointer]:
- - generic [ref=f7e239]: 璁¢噺鍗曚綅
- - generic [ref=f7e240]: "1"
- - generic [ref=f7e242]:
- - generic [ref=f7e250] [cursor=pointer]:
- - generic [ref=f7e251]: 浜х嚎
- - generic [ref=f7e252]: "1"
- - generic [ref=f7e264] [cursor=pointer]:
- - generic [ref=f7e265]: 鐢熶骇鎵规
- - generic [ref=f7e266]: "102"
- - generic [ref=f7e275] [cursor=pointer]:
- - generic [ref=f7e276]: 琚嬬爜
- - generic [ref=f7e277]: 1,101
- - generic [ref=f7e288] [cursor=pointer]:
- - generic [ref=f7e289]: 鎵樼洏鐮�
- - generic [ref=f7e290]: "11"
- - generic [ref=f7e292]:
- - generic [ref=f7e296]:
- - generic [ref=f7e297]: 琚嬬爜鐢熸垚瓒嬪娍
- - generic [ref=f7e299]:
- - generic [ref=f7e300] [cursor=pointer]:
- - generic [ref=f7e301]:
- - radio "杩� 7 澶�" [checked]
- - generic [ref=f7e302]: 杩� 7 澶�
- - generic [ref=f7e303] [cursor=pointer]:
- - generic [ref=f7e304]:
- - radio "杩� 30 澶�"
- - generic [ref=f7e305]: 杩� 30 澶�
- - generic [ref=f7e310]: 鎵规鐘舵�佸垎甯�
- - generic [ref=f7e319]: 琚嬬爜鐘舵�佸垎甯�
- - generic [ref=f7e328]:
- - generic [ref=f7e329]: 蹇嵎鍏ュ彛
- - generic [ref=f7e333]:
- - generic [ref=f7e334]: 鍝佺绠$悊
- - generic [ref=f7e342]: 鍝佺鍒嗙被
- - generic [ref=f7e350]: 鎵规鐢熶骇
- - generic [ref=f7e359]: 璧嬬爜绠$悊
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T09-02-56-093Z.yml b/.playwright-mcp/page-2026-08-28T09-02-56-093Z.yml
deleted file mode 100644
index 6adf37e..0000000
--- a/.playwright-mcp/page-2026-08-28T09-02-56-093Z.yml
+++ /dev/null
@@ -1 +0,0 @@
-- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T09-03-07-573Z.yml b/.playwright-mcp/page-2026-08-28T09-03-07-573Z.yml
deleted file mode 100644
index 40fed56..0000000
--- a/.playwright-mcp/page-2026-08-28T09-03-07-573Z.yml
+++ /dev/null
@@ -1,336 +0,0 @@
-- generic [ref=f9e7]:
- - complementary [ref=f9e9]:
- - generic [ref=f9e10]:
- - generic [ref=f9e11] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=f9e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=f9e19]
- - generic [ref=f9e20]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=f9e23]:
- - menuitem "棣栭〉" [ref=f9e24] [cursor=pointer]
- - listitem [ref=f9e29]:
- - generic [ref=f9e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f9e38]:
- - generic [ref=f9e39] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f9e47]:
- - generic [ref=f9e48] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f9e54]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f9e55] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f9e60] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f9e66] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f9e73] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=f9e80] [cursor=pointer]
- - listitem [ref=f9e85]:
- - generic [ref=f9e86] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f9e92]:
- - generic [ref=f9e93] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f9e100] [cursor=pointer]
- - generic [ref=f9e105]:
- - generic [ref=f9e106]:
- - banner [ref=f9e107]:
- - button [ref=f9e108] [cursor=pointer]
- - button [ref=f9e111] [cursor=pointer]
- - navigation "breadcrumb" [ref=f9e116]:
- - list [ref=f9e117]:
- - listitem [ref=f9e118]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f9e119] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f9e123]
- - listitem [ref=f9e126]:
- - link "鎵樼洏鐮佺鐞�" [disabled] [ref=f9e127]
- - generic [ref=f9e134]:
- - generic [ref=f9e136] [cursor=pointer]:
- - generic [ref=f9e140]: 鎼滅储
- - generic [ref=f9e141]: Ctrl K
- - button [ref=f9e143] [cursor=pointer]
- - button "dark" [ref=f9e148] [cursor=pointer]
- - button [ref=f9e157] [cursor=pointer]
- - button [ref=f9e163] [cursor=pointer]
- - button [ref=f9e166] [cursor=pointer]
- - button [ref=f9e172] [cursor=pointer]:
- - button [ref=f9e174]
- - button "宸ヤ綔鍙�" [ref=f9e178] [cursor=pointer]
- - button "鐞嗗憳" [ref=f9e182] [cursor=pointer]
- - generic [ref=f9e189]:
- - generic [ref=f9e190]: 鎵樼洏鐮佺鐞�
- - generic [ref=f9e211]:
- - button [ref=f9e212] [cursor=pointer]
- - generic [ref=f9e219] [cursor=pointer]
- - generic [ref=f9e223] [cursor=pointer]
- - main [ref=f9e230]:
- - generic [ref=f9e235]:
- - generic [ref=f9e240]:
- - generic [ref=f9e241]:
- - generic [ref=f9e242]: 鎵樼洏鐮�
- - textbox "鎵樼洏鐮�" [ref=f9e248]:
- - /placeholder: 璇疯緭鍏ユ墭鐩樼爜
- - generic [ref=f9e250]:
- - generic [ref=f9e251]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f9e257]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f9e259]:
- - generic [ref=f9e260]: 鎵樼洏鐘舵��
- - generic [ref=f9e266] [cursor=pointer]:
- - combobox "鎵樼洏鐘舵��" [ref=f9e268]
- - generic: 璇烽�夋嫨鎵樼洏鐘舵��
- - generic [ref=f9e269]:
- - generic [ref=f9e270]: 鍒涘缓鏃堕棿
- - generic [ref=f9e275]:
- - textbox "鍒涘缓鏃堕棿" [ref=f9e277]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f9e279]:
- - img "swap-right" [ref=f9e280]
- - textbox "缁撴潫鏃堕棿" [ref=f9e284]
- - generic:
- - img "calendar"
- - generic [ref=f9e285]:
- - button "閲� 缃�" [ref=f9e286] [cursor=pointer]
- - button "鎼� 绱�" [ref=f9e288] [cursor=pointer]
- - generic [ref=f9e290] [cursor=pointer]: 鏀惰捣
- - generic [ref=f9e297]:
- - generic [ref=f9e299]:
- - generic [ref=f9e300]: 鎵樼洏鐮佸垪琛�
- - generic [ref=f9e304]:
- - generic [ref=f9e306]:
- - button "棰勭敓鎴愪簩缁寸爜" [ref=f9e308] [cursor=pointer]
- - button "缁戝畾鎵规" [ref=f9e313] [cursor=pointer]
- - button "鎵爜杩芥函" [ref=f9e320] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e327] [cursor=pointer]
- - button "瀵煎嚭" [ref=f9e334] [cursor=pointer]
- - button "顫�" [ref=f9e340] [cursor=pointer]
- - generic [ref=f9e342]:
- - button "瞟�" [ref=f9e343] [cursor=pointer]
- - button "顪�" [ref=f9e345] [cursor=pointer]
- - button "顦�" [ref=f9e347] [cursor=pointer]
- - generic [ref=f9e354]:
- - generic [ref=f9e355]:
- - table [ref=f9e359]:
- - rowgroup [ref=f9e371]:
- - row [ref=f9e1147]:
- - columnheader "睿�" [ref=f9e1148]:
- - generic "鍏ㄩ��/鍙栨秷" [ref=f9e378] [cursor=pointer]: 睿�
- - columnheader "鎵樼洏搴忓彿" [ref=f9e381]
- - columnheader "鎵规鍙�" [ref=f9e386]
- - columnheader "鍙琚嬫暟锛堣/鎵樼洏锛�" [ref=f9e391]
- - columnheader "宸茬粦琚嬬爜鏁伴噺" [ref=f9e396]
- - columnheader "鎵樼洏鐘舵��" [ref=f9e401]
- - columnheader "澶囨敞" [ref=f9e406]
- - columnheader "鍒涘缓鏃堕棿" [ref=f9e411]
- - table [ref=f9e419]:
- - rowgroup [ref=f9e431]:
- - row "顧� 鏈粦瀹氭壒娆� 100 0 鍚敤 2026-08-28 16:28:05" [ref=f9e1149]:
- - cell "顧�" [ref=f9e1150]
- - cell [ref=f9e438]
- - cell "鏈粦瀹氭壒娆�" [ref=f9e442]
- - cell "100" [ref=f9e446]
- - cell "0" [ref=f9e450]
- - cell "鍚敤" [ref=f9e454]
- - cell [ref=f9e458]
- - cell "2026-08-28 16:28:05" [ref=f9e462]
- - row "顪� 10 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e466]:
- - cell "顪�" [ref=f9e467]
- - cell "10" [ref=f9e472]
- - cell "PC20260819twoITEM_001" [ref=f9e476]
- - cell "1000" [ref=f9e479]
- - cell "0" [ref=f9e483]
- - cell "鍚敤" [ref=f9e487]
- - cell [ref=f9e491]
- - cell "2026-08-19 10:53:29" [ref=f9e495]
- - row "顪� 9 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e499]:
- - cell "顪�" [ref=f9e500]
- - cell "9" [ref=f9e505]
- - cell "PC20260819twoITEM_001" [ref=f9e509]
- - cell "1000" [ref=f9e512]
- - cell "0" [ref=f9e516]
- - cell "鍚敤" [ref=f9e520]
- - cell [ref=f9e524]
- - cell "2026-08-19 10:53:29" [ref=f9e528]
- - row "顪� 8 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e532]:
- - cell "顪�" [ref=f9e533]
- - cell "8" [ref=f9e538]
- - cell "PC20260819twoITEM_001" [ref=f9e542]
- - cell "1000" [ref=f9e545]
- - cell "0" [ref=f9e549]
- - cell "鍚敤" [ref=f9e553]
- - cell [ref=f9e557]
- - cell "2026-08-19 10:53:29" [ref=f9e561]
- - row "顪� 7 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e565]:
- - cell "顪�" [ref=f9e566]
- - cell "7" [ref=f9e571]
- - cell "PC20260819twoITEM_001" [ref=f9e575]
- - cell "1000" [ref=f9e578]
- - cell "0" [ref=f9e582]
- - cell "鍚敤" [ref=f9e586]
- - cell [ref=f9e590]
- - cell "2026-08-19 10:53:29" [ref=f9e594]
- - row "顪� 6 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e598]:
- - cell "顪�" [ref=f9e599]
- - cell "6" [ref=f9e604]
- - cell "PC20260819twoITEM_001" [ref=f9e608]
- - cell "1000" [ref=f9e611]
- - cell "0" [ref=f9e615]
- - cell "鍚敤" [ref=f9e619]
- - cell [ref=f9e623]
- - cell "2026-08-19 10:53:29" [ref=f9e627]
- - row "顪� 5 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e631]:
- - cell "顪�" [ref=f9e632]
- - cell "5" [ref=f9e637]
- - cell "PC20260819twoITEM_001" [ref=f9e641]
- - cell "1000" [ref=f9e644]
- - cell "0" [ref=f9e648]
- - cell "鍚敤" [ref=f9e652]
- - cell [ref=f9e656]
- - cell "2026-08-19 10:53:29" [ref=f9e660]
- - row "顪� 4 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e664]:
- - cell "顪�" [ref=f9e665]
- - cell "4" [ref=f9e670]
- - cell "PC20260819twoITEM_001" [ref=f9e674]
- - cell "1000" [ref=f9e677]
- - cell "0" [ref=f9e681]
- - cell "鍚敤" [ref=f9e685]
- - cell [ref=f9e689]
- - cell "2026-08-19 10:53:29" [ref=f9e693]
- - row "顪� 3 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e697]:
- - cell "顪�" [ref=f9e698]
- - cell "3" [ref=f9e703]
- - cell "PC20260819twoITEM_001" [ref=f9e707]
- - cell "1000" [ref=f9e710]
- - cell "0" [ref=f9e714]
- - cell "鍚敤" [ref=f9e718]
- - cell [ref=f9e722]
- - cell "2026-08-19 10:53:29" [ref=f9e726]
- - row "顪� 2 PC20260819twoITEM_001 1000 20 鍚敤 2026-08-19 10:53:29" [ref=f9e730]:
- - cell "顪�" [ref=f9e731]
- - cell "2" [ref=f9e736]
- - cell "PC20260819twoITEM_001" [ref=f9e740]
- - cell "1000" [ref=f9e743]
- - cell "20" [ref=f9e747]
- - cell "鍚敤" [ref=f9e751]
- - cell [ref=f9e755]
- - cell "2026-08-19 10:53:29" [ref=f9e759]
- - row "顪� 1 PC20260819twoITEM_001 1000 40 鍚敤 2026-08-19 10:53:29" [ref=f9e763]:
- - cell "顪�" [ref=f9e764]
- - cell "1" [ref=f9e769]
- - cell "PC20260819twoITEM_001" [ref=f9e773]
- - cell "1000" [ref=f9e776]
- - cell "40" [ref=f9e780]
- - cell "鍚敤" [ref=f9e784]
- - cell [ref=f9e788]
- - cell "2026-08-19 10:53:29" [ref=f9e792]
- - generic:
- - generic [ref=f9e796]:
- - table [ref=f9e799]:
- - rowgroup [ref=f9e811]:
- - row [ref=f9e812]:
- - columnheader "鎵樼洏鐮�" [ref=f9e813]
- - table [ref=f9e820]:
- - rowgroup [ref=f9e823]:
- - row [ref=f9e824]:
- - cell "PL-00000001 鏈粦瀹氭壒娆�" [ref=f9e825]:
- - generic [ref=f9e827]:
- - text: PL-00000001
- - generic [ref=f9e828]: 鏈粦瀹氭壒娆�
- - row [ref=f9e829]:
- - cell "PC20260819twoITEM_001-P10" [ref=f9e830]
- - row [ref=f9e833]:
- - cell "PC20260819twoITEM_001-P09" [ref=f9e834]
- - row [ref=f9e837]:
- - cell "PC20260819twoITEM_001-P08" [ref=f9e838]
- - row [ref=f9e841]:
- - cell "PC20260819twoITEM_001-P07" [ref=f9e842]
- - row [ref=f9e845]:
- - cell "PC20260819twoITEM_001-P06" [ref=f9e846]
- - row [ref=f9e849]:
- - cell "PC20260819twoITEM_001-P05" [ref=f9e850]
- - row [ref=f9e853]:
- - cell "PC20260819twoITEM_001-P04" [ref=f9e854]
- - row [ref=f9e857]:
- - cell "PC20260819twoITEM_001-P03" [ref=f9e858]
- - row [ref=f9e861]:
- - cell "PC20260819twoITEM_001-P02" [ref=f9e862]
- - row [ref=f9e865]:
- - cell "PC20260819twoITEM_001-P01" [ref=f9e866]
- - generic [ref=f9e869]:
- - table [ref=f9e872]:
- - rowgroup [ref=f9e884]:
- - row [ref=f9e885]:
- - columnheader "鎿嶄綔" [ref=f9e886]
- - table [ref=f9e893]:
- - rowgroup [ref=f9e896]:
- - row [ref=f9e897]:
- - cell [ref=f9e898]:
- - generic [ref=f9e902]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e904] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e907] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e914] [cursor=pointer]
- - row [ref=f9e918]:
- - cell [ref=f9e919]:
- - generic [ref=f9e923]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e925] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e928] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e935] [cursor=pointer]
- - row [ref=f9e939]:
- - cell [ref=f9e940]:
- - generic [ref=f9e944]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e946] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e949] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e956] [cursor=pointer]
- - row [ref=f9e960]:
- - cell [ref=f9e961]:
- - generic [ref=f9e965]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e967] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e970] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e977] [cursor=pointer]
- - row [ref=f9e981]:
- - cell [ref=f9e982]:
- - generic [ref=f9e986]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e988] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e991] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e998] [cursor=pointer]
- - row [ref=f9e1002]:
- - cell [ref=f9e1003]:
- - generic [ref=f9e1007]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1009] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1012] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1019] [cursor=pointer]
- - row [ref=f9e1023]:
- - cell [ref=f9e1024]:
- - generic [ref=f9e1028]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1030] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1033] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1040] [cursor=pointer]
- - row [ref=f9e1044]:
- - cell [ref=f9e1045]:
- - generic [ref=f9e1049]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1051] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1054] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1061] [cursor=pointer]
- - row [ref=f9e1065]:
- - cell [ref=f9e1066]:
- - generic [ref=f9e1070]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1072] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1075] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1082] [cursor=pointer]
- - row [ref=f9e1086]:
- - cell [ref=f9e1087]:
- - generic [ref=f9e1091]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1093] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1096] [cursor=pointer]
- - row [ref=f9e1102]:
- - cell [ref=f9e1103]:
- - generic [ref=f9e1107]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1109] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1112] [cursor=pointer]
- - generic [ref=f9e1124]:
- - generic [ref=f9e1125]: 鍏� 11 鏉¤褰�
- - generic [ref=f9e1127] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f9e1128]:
- - textbox "璇烽�夋嫨" [ref=f9e1129]: 20鏉�/椤�
- - generic [ref=f9e1130]: 睿�
- - button "飱�" [ref=f9e1133]
- - button "顧�" [ref=f9e1135]
- - button "顫�" [ref=f9e1137]
- - button "1" [ref=f9e1140] [cursor=pointer]
- - button "顫�" [ref=f9e1141]
- - button "顧�" [ref=f9e1143]
- - button "顦�" [ref=f9e1145]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T09-03-14-535Z.yml b/.playwright-mcp/page-2026-08-28T09-03-14-535Z.yml
deleted file mode 100644
index 989050c..0000000
--- a/.playwright-mcp/page-2026-08-28T09-03-14-535Z.yml
+++ /dev/null
@@ -1,351 +0,0 @@
-- generic [ref=f9e4]:
- - generic [ref=f9e7]:
- - complementary [ref=f9e9]:
- - generic [ref=f9e10]:
- - generic [ref=f9e11] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=f9e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=f9e19]
- - generic [ref=f9e20]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=f9e23]:
- - menuitem "棣栭〉" [ref=f9e24] [cursor=pointer]
- - listitem [ref=f9e29]:
- - generic [ref=f9e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f9e38]:
- - generic [ref=f9e39] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f9e47]:
- - generic [ref=f9e48] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f9e54]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f9e55] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f9e60] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f9e66] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f9e73] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=f9e80] [cursor=pointer]
- - listitem [ref=f9e85]:
- - generic [ref=f9e86] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f9e92]:
- - generic [ref=f9e93] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f9e100] [cursor=pointer]
- - generic [ref=f9e105]:
- - generic [ref=f9e106]:
- - banner [ref=f9e107]:
- - button [ref=f9e108] [cursor=pointer]
- - button [ref=f9e111] [cursor=pointer]
- - navigation "breadcrumb" [ref=f9e116]:
- - list [ref=f9e117]:
- - listitem [ref=f9e118]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f9e119] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f9e123]
- - listitem [ref=f9e126]:
- - link "鎵樼洏鐮佺鐞�" [disabled] [ref=f9e127]
- - generic [ref=f9e134]:
- - generic [ref=f9e136] [cursor=pointer]:
- - generic [ref=f9e140]: 鎼滅储
- - generic [ref=f9e141]: Ctrl K
- - button [ref=f9e143] [cursor=pointer]
- - button "dark" [ref=f9e148] [cursor=pointer]
- - button [ref=f9e157] [cursor=pointer]
- - button [ref=f9e163] [cursor=pointer]
- - button [ref=f9e166] [cursor=pointer]
- - button [ref=f9e172] [cursor=pointer]:
- - button [ref=f9e174]
- - button "宸ヤ綔鍙�" [ref=f9e178] [cursor=pointer]
- - button "鐞嗗憳" [ref=f9e182] [cursor=pointer]
- - generic [ref=f9e189]:
- - generic [ref=f9e190]: 鎵樼洏鐮佺鐞�
- - generic [ref=f9e211]:
- - button [ref=f9e212] [cursor=pointer]
- - generic [ref=f9e219] [cursor=pointer]
- - generic [ref=f9e223] [cursor=pointer]
- - main [ref=f9e230]:
- - generic [ref=f9e235]:
- - generic [ref=f9e240]:
- - generic [ref=f9e241]:
- - generic [ref=f9e242]: 鎵樼洏鐮�
- - textbox "鎵樼洏鐮�" [ref=f9e248]:
- - /placeholder: 璇疯緭鍏ユ墭鐩樼爜
- - generic [ref=f9e250]:
- - generic [ref=f9e251]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f9e257]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f9e259]:
- - generic [ref=f9e260]: 鎵樼洏鐘舵��
- - generic [ref=f9e266] [cursor=pointer]:
- - combobox "鎵樼洏鐘舵��" [ref=f9e268]
- - generic: 璇烽�夋嫨鎵樼洏鐘舵��
- - generic [ref=f9e269]:
- - generic [ref=f9e270]: 鍒涘缓鏃堕棿
- - generic [ref=f9e275]:
- - textbox "鍒涘缓鏃堕棿" [ref=f9e277]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f9e279]:
- - img "swap-right" [ref=f9e280]
- - textbox "缁撴潫鏃堕棿" [ref=f9e284]
- - generic:
- - img "calendar"
- - generic [ref=f9e285]:
- - button "閲� 缃�" [ref=f9e286] [cursor=pointer]
- - button "鎼� 绱�" [ref=f9e288] [cursor=pointer]
- - generic [ref=f9e290] [cursor=pointer]: 鏀惰捣
- - generic [ref=f9e297]:
- - generic [ref=f9e299]:
- - generic [ref=f9e300]: 鎵樼洏鐮佸垪琛�
- - generic [ref=f9e304]:
- - generic [ref=f9e306]:
- - button "棰勭敓鎴愪簩缁寸爜" [ref=f9e308] [cursor=pointer]
- - button "缁戝畾鎵规" [active] [ref=f9e313] [cursor=pointer]
- - button "鎵爜杩芥函" [ref=f9e320] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e327] [cursor=pointer]
- - button "瀵煎嚭" [ref=f9e334] [cursor=pointer]
- - button "顫�" [ref=f9e340] [cursor=pointer]
- - generic [ref=f9e342]:
- - button "瞟�" [ref=f9e343] [cursor=pointer]
- - button "顪�" [ref=f9e345] [cursor=pointer]
- - button "顦�" [ref=f9e347] [cursor=pointer]
- - generic [ref=f9e354]:
- - generic [ref=f9e355]:
- - table [ref=f9e359]:
- - rowgroup [ref=f9e371]:
- - row [ref=f9e1147]:
- - columnheader "睿�" [ref=f9e1148]:
- - generic "鍏ㄩ��/鍙栨秷" [ref=f9e378] [cursor=pointer]: 睿�
- - columnheader "鎵樼洏搴忓彿" [ref=f9e381]
- - columnheader "鎵规鍙�" [ref=f9e386]
- - columnheader "鍙琚嬫暟锛堣/鎵樼洏锛�" [ref=f9e391]
- - columnheader "宸茬粦琚嬬爜鏁伴噺" [ref=f9e396]
- - columnheader "鎵樼洏鐘舵��" [ref=f9e401]
- - columnheader "澶囨敞" [ref=f9e406]
- - columnheader "鍒涘缓鏃堕棿" [ref=f9e411]
- - table [ref=f9e419]:
- - rowgroup [ref=f9e431]:
- - row "顧� 鏈粦瀹氭壒娆� 100 0 鍚敤 2026-08-28 16:28:05" [ref=f9e1149]:
- - cell "顧�" [ref=f9e1150]
- - cell [ref=f9e438]
- - cell "鏈粦瀹氭壒娆�" [ref=f9e442]
- - cell "100" [ref=f9e446]
- - cell "0" [ref=f9e450]
- - cell "鍚敤" [ref=f9e454]
- - cell [ref=f9e458]
- - cell "2026-08-28 16:28:05" [ref=f9e462]
- - row "顪� 10 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e466]:
- - cell "顪�" [ref=f9e467]
- - cell "10" [ref=f9e472]
- - cell "PC20260819twoITEM_001" [ref=f9e476]
- - cell "1000" [ref=f9e479]
- - cell "0" [ref=f9e483]
- - cell "鍚敤" [ref=f9e487]
- - cell [ref=f9e491]
- - cell "2026-08-19 10:53:29" [ref=f9e495]
- - row "顪� 9 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e499]:
- - cell "顪�" [ref=f9e500]
- - cell "9" [ref=f9e505]
- - cell "PC20260819twoITEM_001" [ref=f9e509]
- - cell "1000" [ref=f9e512]
- - cell "0" [ref=f9e516]
- - cell "鍚敤" [ref=f9e520]
- - cell [ref=f9e524]
- - cell "2026-08-19 10:53:29" [ref=f9e528]
- - row "顪� 8 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e532]:
- - cell "顪�" [ref=f9e533]
- - cell "8" [ref=f9e538]
- - cell "PC20260819twoITEM_001" [ref=f9e542]
- - cell "1000" [ref=f9e545]
- - cell "0" [ref=f9e549]
- - cell "鍚敤" [ref=f9e553]
- - cell [ref=f9e557]
- - cell "2026-08-19 10:53:29" [ref=f9e561]
- - row "顪� 7 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e565]:
- - cell "顪�" [ref=f9e566]
- - cell "7" [ref=f9e571]
- - cell "PC20260819twoITEM_001" [ref=f9e575]
- - cell "1000" [ref=f9e578]
- - cell "0" [ref=f9e582]
- - cell "鍚敤" [ref=f9e586]
- - cell [ref=f9e590]
- - cell "2026-08-19 10:53:29" [ref=f9e594]
- - row "顪� 6 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e598]:
- - cell "顪�" [ref=f9e599]
- - cell "6" [ref=f9e604]
- - cell "PC20260819twoITEM_001" [ref=f9e608]
- - cell "1000" [ref=f9e611]
- - cell "0" [ref=f9e615]
- - cell "鍚敤" [ref=f9e619]
- - cell [ref=f9e623]
- - cell "2026-08-19 10:53:29" [ref=f9e627]
- - row "顪� 5 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e631]:
- - cell "顪�" [ref=f9e632]
- - cell "5" [ref=f9e637]
- - cell "PC20260819twoITEM_001" [ref=f9e641]
- - cell "1000" [ref=f9e644]
- - cell "0" [ref=f9e648]
- - cell "鍚敤" [ref=f9e652]
- - cell [ref=f9e656]
- - cell "2026-08-19 10:53:29" [ref=f9e660]
- - row "顪� 4 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e664]:
- - cell "顪�" [ref=f9e665]
- - cell "4" [ref=f9e670]
- - cell "PC20260819twoITEM_001" [ref=f9e674]
- - cell "1000" [ref=f9e677]
- - cell "0" [ref=f9e681]
- - cell "鍚敤" [ref=f9e685]
- - cell [ref=f9e689]
- - cell "2026-08-19 10:53:29" [ref=f9e693]
- - row "顪� 3 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e697]:
- - cell "顪�" [ref=f9e698]
- - cell "3" [ref=f9e703]
- - cell "PC20260819twoITEM_001" [ref=f9e707]
- - cell "1000" [ref=f9e710]
- - cell "0" [ref=f9e714]
- - cell "鍚敤" [ref=f9e718]
- - cell [ref=f9e722]
- - cell "2026-08-19 10:53:29" [ref=f9e726]
- - row "顪� 2 PC20260819twoITEM_001 1000 20 鍚敤 2026-08-19 10:53:29" [ref=f9e730]:
- - cell "顪�" [ref=f9e731]
- - cell "2" [ref=f9e736]
- - cell "PC20260819twoITEM_001" [ref=f9e740]
- - cell "1000" [ref=f9e743]
- - cell "20" [ref=f9e747]
- - cell "鍚敤" [ref=f9e751]
- - cell [ref=f9e755]
- - cell "2026-08-19 10:53:29" [ref=f9e759]
- - row "顪� 1 PC20260819twoITEM_001 1000 40 鍚敤 2026-08-19 10:53:29" [ref=f9e763]:
- - cell "顪�" [ref=f9e764]
- - cell "1" [ref=f9e769]
- - cell "PC20260819twoITEM_001" [ref=f9e773]
- - cell "1000" [ref=f9e776]
- - cell "40" [ref=f9e780]
- - cell "鍚敤" [ref=f9e784]
- - cell [ref=f9e788]
- - cell "2026-08-19 10:53:29" [ref=f9e792]
- - generic:
- - generic [ref=f9e796]:
- - table [ref=f9e799]:
- - rowgroup [ref=f9e811]:
- - row [ref=f9e812]:
- - columnheader "鎵樼洏鐮�" [ref=f9e813]
- - table [ref=f9e820]:
- - rowgroup [ref=f9e823]:
- - row [ref=f9e824]:
- - cell "PL-00000001 鏈粦瀹氭壒娆�" [ref=f9e825]:
- - generic [ref=f9e827]:
- - text: PL-00000001
- - generic [ref=f9e828]: 鏈粦瀹氭壒娆�
- - row [ref=f9e829]:
- - cell "PC20260819twoITEM_001-P10" [ref=f9e830]
- - row [ref=f9e833]:
- - cell "PC20260819twoITEM_001-P09" [ref=f9e834]
- - row [ref=f9e837]:
- - cell "PC20260819twoITEM_001-P08" [ref=f9e838]
- - row [ref=f9e841]:
- - cell "PC20260819twoITEM_001-P07" [ref=f9e842]
- - row [ref=f9e845]:
- - cell "PC20260819twoITEM_001-P06" [ref=f9e846]
- - row [ref=f9e849]:
- - cell "PC20260819twoITEM_001-P05" [ref=f9e850]
- - row [ref=f9e853]:
- - cell "PC20260819twoITEM_001-P04" [ref=f9e854]
- - row [ref=f9e857]:
- - cell "PC20260819twoITEM_001-P03" [ref=f9e858]
- - row [ref=f9e861]:
- - cell "PC20260819twoITEM_001-P02" [ref=f9e862]
- - row [ref=f9e865]:
- - cell "PC20260819twoITEM_001-P01" [ref=f9e866]
- - generic [ref=f9e869]:
- - table [ref=f9e872]:
- - rowgroup [ref=f9e884]:
- - row [ref=f9e885]:
- - columnheader "鎿嶄綔" [ref=f9e886]
- - table [ref=f9e893]:
- - rowgroup [ref=f9e896]:
- - row [ref=f9e897]:
- - cell [ref=f9e898]:
- - generic [ref=f9e902]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e904] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e907] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e914] [cursor=pointer]
- - row [ref=f9e918]:
- - cell [ref=f9e919]:
- - generic [ref=f9e923]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e925] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e928] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e935] [cursor=pointer]
- - row [ref=f9e939]:
- - cell [ref=f9e940]:
- - generic [ref=f9e944]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e946] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e949] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e956] [cursor=pointer]
- - row [ref=f9e960]:
- - cell [ref=f9e961]:
- - generic [ref=f9e965]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e967] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e970] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e977] [cursor=pointer]
- - row [ref=f9e981]:
- - cell [ref=f9e982]:
- - generic [ref=f9e986]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e988] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e991] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e998] [cursor=pointer]
- - row [ref=f9e1002]:
- - cell [ref=f9e1003]:
- - generic [ref=f9e1007]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1009] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1012] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1019] [cursor=pointer]
- - row [ref=f9e1023]:
- - cell [ref=f9e1024]:
- - generic [ref=f9e1028]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1030] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1033] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1040] [cursor=pointer]
- - row [ref=f9e1044]:
- - cell [ref=f9e1045]:
- - generic [ref=f9e1049]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1051] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1054] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1061] [cursor=pointer]
- - row [ref=f9e1065]:
- - cell [ref=f9e1066]:
- - generic [ref=f9e1070]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1072] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1075] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1082] [cursor=pointer]
- - row [ref=f9e1086]:
- - cell [ref=f9e1087]:
- - generic [ref=f9e1091]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1093] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1096] [cursor=pointer]
- - row [ref=f9e1102]:
- - cell [ref=f9e1103]:
- - generic [ref=f9e1107]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1109] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1112] [cursor=pointer]
- - generic [ref=f9e1124]:
- - generic [ref=f9e1125]: 鍏� 11 鏉¤褰�
- - generic [ref=f9e1127] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f9e1128]:
- - textbox "璇烽�夋嫨" [ref=f9e1129]: 20鏉�/椤�
- - generic [ref=f9e1130]: 睿�
- - button "飱�" [ref=f9e1133]
- - button "顧�" [ref=f9e1135]
- - button "顫�" [ref=f9e1137]
- - button "1" [ref=f9e1140] [cursor=pointer]
- - button "顫�" [ref=f9e1141]
- - button "顧�" [ref=f9e1143]
- - button "顦�" [ref=f9e1145]
- - dialog [ref=f9e1152]:
- - heading "鎵樼洏鐮佺粦瀹氱敓浜ф壒娆�" [level=2] [ref=f9e1154]
- - generic [ref=f9e1159]:
- - generic [ref=f9e1160]:
- - generic [ref=f9e1161]: "*"
- - text: 鐢熶骇鎵规
- - generic [ref=f9e1167]:
- - combobox "* 鐢熶骇鎵规" [ref=f9e1169]
- - generic: 璇烽�夋嫨宸茶ˉ褰曚笖鐢熶骇涓殑鎵规
- - button [ref=f9e1170] [cursor=pointer]
- - generic [ref=f9e1180]:
- - button "鍙� 娑�" [ref=f9e1181] [cursor=pointer]
- - button "纭� 璁�" [ref=f9e1183] [cursor=pointer]
- - button [ref=f9e1185] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T09-04-30-577Z.yml b/.playwright-mcp/page-2026-08-28T09-04-30-577Z.yml
deleted file mode 100644
index 6b82cb1..0000000
--- a/.playwright-mcp/page-2026-08-28T09-04-30-577Z.yml
+++ /dev/null
@@ -1,354 +0,0 @@
-- generic [ref=f9e4]:
- - generic [ref=f9e7]:
- - complementary [ref=f9e9]:
- - generic [ref=f9e10]:
- - generic [ref=f9e11] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=f9e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=f9e19]
- - generic [ref=f9e20]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=f9e23]:
- - menuitem "棣栭〉" [ref=f9e24] [cursor=pointer]
- - listitem [ref=f9e29]:
- - generic [ref=f9e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f9e38]:
- - generic [ref=f9e39] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f9e47]:
- - generic [ref=f9e48] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f9e54]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f9e55] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f9e60] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f9e66] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f9e73] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=f9e80] [cursor=pointer]
- - listitem [ref=f9e85]:
- - generic [ref=f9e86] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f9e92]:
- - generic [ref=f9e93] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f9e100] [cursor=pointer]
- - generic [ref=f9e105]:
- - generic [ref=f9e106]:
- - banner [ref=f9e107]:
- - button [ref=f9e108] [cursor=pointer]
- - button [ref=f9e111] [cursor=pointer]
- - navigation "breadcrumb" [ref=f9e116]:
- - list [ref=f9e117]:
- - listitem [ref=f9e118]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f9e119] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f9e123]
- - listitem [ref=f9e126]:
- - link "鎵樼洏鐮佺鐞�" [disabled] [ref=f9e127]
- - generic [ref=f9e134]:
- - generic [ref=f9e136] [cursor=pointer]:
- - generic [ref=f9e140]: 鎼滅储
- - generic [ref=f9e141]: Ctrl K
- - button [ref=f9e143] [cursor=pointer]
- - button "dark" [ref=f9e148] [cursor=pointer]
- - button [ref=f9e157] [cursor=pointer]
- - button [ref=f9e163] [cursor=pointer]
- - button [ref=f9e166] [cursor=pointer]
- - button [ref=f9e172] [cursor=pointer]:
- - button [ref=f9e174]
- - button "宸ヤ綔鍙�" [ref=f9e178] [cursor=pointer]
- - button "鐞嗗憳" [ref=f9e182] [cursor=pointer]
- - generic [ref=f9e189]:
- - generic [ref=f9e190]: 鎵樼洏鐮佺鐞�
- - generic [ref=f9e211]:
- - button [ref=f9e212] [cursor=pointer]
- - generic [ref=f9e219] [cursor=pointer]
- - generic [ref=f9e223] [cursor=pointer]
- - main [ref=f9e230]:
- - generic [ref=f9e235]:
- - generic [ref=f9e240]:
- - generic [ref=f9e241]:
- - generic [ref=f9e242]: 鎵樼洏鐮�
- - textbox "鎵樼洏鐮�" [ref=f9e248]:
- - /placeholder: 璇疯緭鍏ユ墭鐩樼爜
- - generic [ref=f9e250]:
- - generic [ref=f9e251]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f9e257]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f9e259]:
- - generic [ref=f9e260]: 鎵樼洏鐘舵��
- - generic [ref=f9e266] [cursor=pointer]:
- - combobox "鎵樼洏鐘舵��" [ref=f9e268]
- - generic: 璇烽�夋嫨鎵樼洏鐘舵��
- - generic [ref=f9e269]:
- - generic [ref=f9e270]: 鍒涘缓鏃堕棿
- - generic [ref=f9e275]:
- - textbox "鍒涘缓鏃堕棿" [ref=f9e277]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f9e279]:
- - img "swap-right" [ref=f9e280]
- - textbox "缁撴潫鏃堕棿" [ref=f9e284]
- - generic:
- - img "calendar"
- - generic [ref=f9e285]:
- - button "閲� 缃�" [ref=f9e286] [cursor=pointer]
- - button "鎼� 绱�" [ref=f9e288] [cursor=pointer]
- - generic [ref=f9e290] [cursor=pointer]: 鏀惰捣
- - generic [ref=f9e297]:
- - generic [ref=f9e299]:
- - generic [ref=f9e300]: 鎵樼洏鐮佸垪琛�
- - generic [ref=f9e304]:
- - generic [ref=f9e306]:
- - button "棰勭敓鎴愪簩缁寸爜" [ref=f9e308] [cursor=pointer]
- - button "缁戝畾鎵规" [ref=f9e313] [cursor=pointer]
- - button "鎵爜杩芥函" [ref=f9e320] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e327] [cursor=pointer]
- - button "瀵煎嚭" [ref=f9e334] [cursor=pointer]
- - button "顫�" [ref=f9e340] [cursor=pointer]
- - generic [ref=f9e342]:
- - button "瞟�" [ref=f9e343] [cursor=pointer]
- - button "顪�" [ref=f9e345] [cursor=pointer]
- - button "顦�" [ref=f9e347] [cursor=pointer]
- - generic [ref=f9e354]:
- - generic [ref=f9e355]:
- - table [ref=f9e359]:
- - rowgroup [ref=f9e371]:
- - row [ref=f9e1147]:
- - columnheader "睿�" [ref=f9e1148]:
- - generic "鍏ㄩ��/鍙栨秷" [ref=f9e378] [cursor=pointer]: 睿�
- - columnheader "鎵樼洏搴忓彿" [ref=f9e381]
- - columnheader "鎵规鍙�" [ref=f9e386]
- - columnheader "鍙琚嬫暟锛堣/鎵樼洏锛�" [ref=f9e391]
- - columnheader "宸茬粦琚嬬爜鏁伴噺" [ref=f9e396]
- - columnheader "鎵樼洏鐘舵��" [ref=f9e401]
- - columnheader "澶囨敞" [ref=f9e406]
- - columnheader "鍒涘缓鏃堕棿" [ref=f9e411]
- - table [ref=f9e419]:
- - rowgroup [ref=f9e431]:
- - row "顧� 鏈粦瀹氭壒娆� 100 0 鍚敤 2026-08-28 16:28:05" [ref=f9e1149]:
- - cell "顧�" [ref=f9e1150]
- - cell [ref=f9e438]
- - cell "鏈粦瀹氭壒娆�" [ref=f9e442]
- - cell "100" [ref=f9e446]
- - cell "0" [ref=f9e450]
- - cell "鍚敤" [ref=f9e454]
- - cell [ref=f9e458]
- - cell "2026-08-28 16:28:05" [ref=f9e462]
- - row "顪� 10 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e466]:
- - cell "顪�" [ref=f9e467]
- - cell "10" [ref=f9e472]
- - cell "PC20260819twoITEM_001" [ref=f9e476]
- - cell "1000" [ref=f9e479]
- - cell "0" [ref=f9e483]
- - cell "鍚敤" [ref=f9e487]
- - cell [ref=f9e491]
- - cell "2026-08-19 10:53:29" [ref=f9e495]
- - row "顪� 9 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e499]:
- - cell "顪�" [ref=f9e500]
- - cell "9" [ref=f9e505]
- - cell "PC20260819twoITEM_001" [ref=f9e509]
- - cell "1000" [ref=f9e512]
- - cell "0" [ref=f9e516]
- - cell "鍚敤" [ref=f9e520]
- - cell [ref=f9e524]
- - cell "2026-08-19 10:53:29" [ref=f9e528]
- - row "顪� 8 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e532]:
- - cell "顪�" [ref=f9e533]
- - cell "8" [ref=f9e538]
- - cell "PC20260819twoITEM_001" [ref=f9e542]
- - cell "1000" [ref=f9e545]
- - cell "0" [ref=f9e549]
- - cell "鍚敤" [ref=f9e553]
- - cell [ref=f9e557]
- - cell "2026-08-19 10:53:29" [ref=f9e561]
- - row "顪� 7 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e565]:
- - cell "顪�" [ref=f9e566]
- - cell "7" [ref=f9e571]
- - cell "PC20260819twoITEM_001" [ref=f9e575]
- - cell "1000" [ref=f9e578]
- - cell "0" [ref=f9e582]
- - cell "鍚敤" [ref=f9e586]
- - cell [ref=f9e590]
- - cell "2026-08-19 10:53:29" [ref=f9e594]
- - row "顪� 6 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e598]:
- - cell "顪�" [ref=f9e599]
- - cell "6" [ref=f9e604]
- - cell "PC20260819twoITEM_001" [ref=f9e608]
- - cell "1000" [ref=f9e611]
- - cell "0" [ref=f9e615]
- - cell "鍚敤" [ref=f9e619]
- - cell [ref=f9e623]
- - cell "2026-08-19 10:53:29" [ref=f9e627]
- - row "顪� 5 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e631]:
- - cell "顪�" [ref=f9e632]
- - cell "5" [ref=f9e637]
- - cell "PC20260819twoITEM_001" [ref=f9e641]
- - cell "1000" [ref=f9e644]
- - cell "0" [ref=f9e648]
- - cell "鍚敤" [ref=f9e652]
- - cell [ref=f9e656]
- - cell "2026-08-19 10:53:29" [ref=f9e660]
- - row "顪� 4 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e664]:
- - cell "顪�" [ref=f9e665]
- - cell "4" [ref=f9e670]
- - cell "PC20260819twoITEM_001" [ref=f9e674]
- - cell "1000" [ref=f9e677]
- - cell "0" [ref=f9e681]
- - cell "鍚敤" [ref=f9e685]
- - cell [ref=f9e689]
- - cell "2026-08-19 10:53:29" [ref=f9e693]
- - row "顪� 3 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e697]:
- - cell "顪�" [ref=f9e698]
- - cell "3" [ref=f9e703]
- - cell "PC20260819twoITEM_001" [ref=f9e707]
- - cell "1000" [ref=f9e710]
- - cell "0" [ref=f9e714]
- - cell "鍚敤" [ref=f9e718]
- - cell [ref=f9e722]
- - cell "2026-08-19 10:53:29" [ref=f9e726]
- - row "顪� 2 PC20260819twoITEM_001 1000 20 鍚敤 2026-08-19 10:53:29" [ref=f9e730]:
- - cell "顪�" [ref=f9e731]
- - cell "2" [ref=f9e736]
- - cell "PC20260819twoITEM_001" [ref=f9e740]
- - cell "1000" [ref=f9e743]
- - cell "20" [ref=f9e747]
- - cell "鍚敤" [ref=f9e751]
- - cell [ref=f9e755]
- - cell "2026-08-19 10:53:29" [ref=f9e759]
- - row "顪� 1 PC20260819twoITEM_001 1000 40 鍚敤 2026-08-19 10:53:29" [ref=f9e763]:
- - cell "顪�" [ref=f9e764]
- - cell "1" [ref=f9e769]
- - cell "PC20260819twoITEM_001" [ref=f9e773]
- - cell "1000" [ref=f9e776]
- - cell "40" [ref=f9e780]
- - cell "鍚敤" [ref=f9e784]
- - cell [ref=f9e788]
- - cell "2026-08-19 10:53:29" [ref=f9e792]
- - generic:
- - generic [ref=f9e796]:
- - table [ref=f9e799]:
- - rowgroup [ref=f9e811]:
- - row [ref=f9e812]:
- - columnheader "鎵樼洏鐮�" [ref=f9e813]
- - table [ref=f9e820]:
- - rowgroup [ref=f9e823]:
- - row [ref=f9e824]:
- - cell "PL-00000001 鏈粦瀹氭壒娆�" [ref=f9e825]:
- - generic [ref=f9e827]:
- - text: PL-00000001
- - generic [ref=f9e828]: 鏈粦瀹氭壒娆�
- - row [ref=f9e829]:
- - cell "PC20260819twoITEM_001-P10" [ref=f9e830]
- - row [ref=f9e833]:
- - cell "PC20260819twoITEM_001-P09" [ref=f9e834]
- - row [ref=f9e837]:
- - cell "PC20260819twoITEM_001-P08" [ref=f9e838]
- - row [ref=f9e841]:
- - cell "PC20260819twoITEM_001-P07" [ref=f9e842]
- - row [ref=f9e845]:
- - cell "PC20260819twoITEM_001-P06" [ref=f9e846]
- - row [ref=f9e849]:
- - cell "PC20260819twoITEM_001-P05" [ref=f9e850]
- - row [ref=f9e853]:
- - cell "PC20260819twoITEM_001-P04" [ref=f9e854]
- - row [ref=f9e857]:
- - cell "PC20260819twoITEM_001-P03" [ref=f9e858]
- - row [ref=f9e861]:
- - cell "PC20260819twoITEM_001-P02" [ref=f9e862]
- - row [ref=f9e865]:
- - cell "PC20260819twoITEM_001-P01" [ref=f9e866]
- - generic [ref=f9e869]:
- - table [ref=f9e872]:
- - rowgroup [ref=f9e884]:
- - row [ref=f9e885]:
- - columnheader "鎿嶄綔" [ref=f9e886]
- - table [ref=f9e893]:
- - rowgroup [ref=f9e896]:
- - row [ref=f9e897]:
- - cell [ref=f9e898]:
- - generic [ref=f9e902]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e904] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e907] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e914] [cursor=pointer]
- - row [ref=f9e918]:
- - cell [ref=f9e919]:
- - generic [ref=f9e923]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e925] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e928] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e935] [cursor=pointer]
- - row [ref=f9e939]:
- - cell [ref=f9e940]:
- - generic [ref=f9e944]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e946] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e949] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e956] [cursor=pointer]
- - row [ref=f9e960]:
- - cell [ref=f9e961]:
- - generic [ref=f9e965]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e967] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e970] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e977] [cursor=pointer]
- - row [ref=f9e981]:
- - cell [ref=f9e982]:
- - generic [ref=f9e986]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e988] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e991] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e998] [cursor=pointer]
- - row [ref=f9e1002]:
- - cell [ref=f9e1003]:
- - generic [ref=f9e1007]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1009] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1012] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1019] [cursor=pointer]
- - row [ref=f9e1023]:
- - cell [ref=f9e1024]:
- - generic [ref=f9e1028]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1030] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1033] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1040] [cursor=pointer]
- - row [ref=f9e1044]:
- - cell [ref=f9e1045]:
- - generic [ref=f9e1049]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1051] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1054] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1061] [cursor=pointer]
- - row [ref=f9e1065]:
- - cell [ref=f9e1066]:
- - generic [ref=f9e1070]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1072] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1075] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1082] [cursor=pointer]
- - row [ref=f9e1086]:
- - cell [ref=f9e1087]:
- - generic [ref=f9e1091]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1093] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1096] [cursor=pointer]
- - row [ref=f9e1102]:
- - cell [ref=f9e1103]:
- - generic [ref=f9e1107]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1109] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1112] [cursor=pointer]
- - generic [ref=f9e1124]:
- - generic [ref=f9e1125]: 鍏� 11 鏉¤褰�
- - generic [ref=f9e1127] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f9e1128]:
- - textbox "璇烽�夋嫨" [ref=f9e1129]: 20鏉�/椤�
- - generic [ref=f9e1130]: 睿�
- - button "飱�" [ref=f9e1133]
- - button "顧�" [ref=f9e1135]
- - button "顫�" [ref=f9e1137]
- - button "1" [ref=f9e1140] [cursor=pointer]
- - button "顫�" [ref=f9e1141]
- - button "顧�" [ref=f9e1143]
- - button "顦�" [ref=f9e1145]
- - dialog [ref=f9e1152]:
- - heading "鎵樼洏鐮佺粦瀹氱敓浜ф壒娆�" [level=2] [ref=f9e1154]
- - generic [ref=f9e1159]:
- - generic [ref=f9e1160]:
- - generic [ref=f9e1161]: "*"
- - text: 鐢熶骇鎵规
- - generic [ref=f9e1167]:
- - combobox "* 鐢熶骇鎵规" [expanded] [active] [ref=f9e1169]:
- - listbox:
- - option "PC20260828twoITEM_001": "102"
- - generic: 璇烽�夋嫨宸茶ˉ褰曚笖鐢熶骇涓殑鎵规
- - button [ref=f9e1170] [cursor=pointer]
- - generic [ref=f9e1180]:
- - button "鍙� 娑�" [ref=f9e1181] [cursor=pointer]
- - button "纭� 璁�" [ref=f9e1183] [cursor=pointer]
- - button [ref=f9e1185] [cursor=pointer]
- - generic "PC20260828twoITEM_001" [ref=f9e1195] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T09-04-44-764Z.yml b/.playwright-mcp/page-2026-08-28T09-04-44-764Z.yml
deleted file mode 100644
index 66a5d44..0000000
--- a/.playwright-mcp/page-2026-08-28T09-04-44-764Z.yml
+++ /dev/null
@@ -1,353 +0,0 @@
-- generic [ref=f9e4]:
- - generic [ref=f9e7]:
- - complementary [ref=f9e9]:
- - generic [ref=f9e10]:
- - generic [ref=f9e11] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=f9e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=f9e19]
- - generic [ref=f9e20]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=f9e23]:
- - menuitem "棣栭〉" [ref=f9e24] [cursor=pointer]
- - listitem [ref=f9e29]:
- - generic [ref=f9e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f9e38]:
- - generic [ref=f9e39] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f9e47]:
- - generic [ref=f9e48] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f9e54]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f9e55] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f9e60] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f9e66] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f9e73] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=f9e80] [cursor=pointer]
- - listitem [ref=f9e85]:
- - generic [ref=f9e86] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f9e92]:
- - generic [ref=f9e93] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f9e100] [cursor=pointer]
- - generic [ref=f9e105]:
- - generic [ref=f9e106]:
- - banner [ref=f9e107]:
- - button [ref=f9e108] [cursor=pointer]
- - button [ref=f9e111] [cursor=pointer]
- - navigation "breadcrumb" [ref=f9e116]:
- - list [ref=f9e117]:
- - listitem [ref=f9e118]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f9e119] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f9e123]
- - listitem [ref=f9e126]:
- - link "鎵樼洏鐮佺鐞�" [disabled] [ref=f9e127]
- - generic [ref=f9e134]:
- - generic [ref=f9e136] [cursor=pointer]:
- - generic [ref=f9e140]: 鎼滅储
- - generic [ref=f9e141]: Ctrl K
- - button [ref=f9e143] [cursor=pointer]
- - button "dark" [ref=f9e148] [cursor=pointer]
- - button [ref=f9e157] [cursor=pointer]
- - button [ref=f9e163] [cursor=pointer]
- - button [ref=f9e166] [cursor=pointer]
- - button [ref=f9e172] [cursor=pointer]:
- - button [ref=f9e174]
- - button "宸ヤ綔鍙�" [ref=f9e178] [cursor=pointer]
- - button "鐞嗗憳" [ref=f9e182] [cursor=pointer]
- - generic [ref=f9e189]:
- - generic [ref=f9e190]: 鎵樼洏鐮佺鐞�
- - generic [ref=f9e211]:
- - button [ref=f9e212] [cursor=pointer]
- - generic [ref=f9e219] [cursor=pointer]
- - generic [ref=f9e223] [cursor=pointer]
- - main [ref=f9e230]:
- - generic [ref=f9e235]:
- - generic [ref=f9e240]:
- - generic [ref=f9e241]:
- - generic [ref=f9e242]: 鎵樼洏鐮�
- - textbox "鎵樼洏鐮�" [ref=f9e248]:
- - /placeholder: 璇疯緭鍏ユ墭鐩樼爜
- - generic [ref=f9e250]:
- - generic [ref=f9e251]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f9e257]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f9e259]:
- - generic [ref=f9e260]: 鎵樼洏鐘舵��
- - generic [ref=f9e266] [cursor=pointer]:
- - combobox "鎵樼洏鐘舵��" [ref=f9e268]
- - generic: 璇烽�夋嫨鎵樼洏鐘舵��
- - generic [ref=f9e269]:
- - generic [ref=f9e270]: 鍒涘缓鏃堕棿
- - generic [ref=f9e275]:
- - textbox "鍒涘缓鏃堕棿" [ref=f9e277]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f9e279]:
- - img "swap-right" [ref=f9e280]
- - textbox "缁撴潫鏃堕棿" [ref=f9e284]
- - generic:
- - img "calendar"
- - generic [ref=f9e285]:
- - button "閲� 缃�" [ref=f9e286] [cursor=pointer]
- - button "鎼� 绱�" [ref=f9e288] [cursor=pointer]
- - generic [ref=f9e290] [cursor=pointer]: 鏀惰捣
- - generic [ref=f9e297]:
- - generic [ref=f9e299]:
- - generic [ref=f9e300]: 鎵樼洏鐮佸垪琛�
- - generic [ref=f9e304]:
- - generic [ref=f9e306]:
- - button "棰勭敓鎴愪簩缁寸爜" [ref=f9e308] [cursor=pointer]
- - button "缁戝畾鎵规" [ref=f9e313] [cursor=pointer]
- - button "鎵爜杩芥函" [ref=f9e320] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e327] [cursor=pointer]
- - button "瀵煎嚭" [ref=f9e334] [cursor=pointer]
- - button "顫�" [ref=f9e340] [cursor=pointer]
- - generic [ref=f9e342]:
- - button "瞟�" [ref=f9e343] [cursor=pointer]
- - button "顪�" [ref=f9e345] [cursor=pointer]
- - button "顦�" [ref=f9e347] [cursor=pointer]
- - generic [ref=f9e354]:
- - generic [ref=f9e355]:
- - table [ref=f9e359]:
- - rowgroup [ref=f9e371]:
- - row [ref=f9e1147]:
- - columnheader "睿�" [ref=f9e1148]:
- - generic "鍏ㄩ��/鍙栨秷" [ref=f9e378] [cursor=pointer]: 睿�
- - columnheader "鎵樼洏搴忓彿" [ref=f9e381]
- - columnheader "鎵规鍙�" [ref=f9e386]
- - columnheader "鍙琚嬫暟锛堣/鎵樼洏锛�" [ref=f9e391]
- - columnheader "宸茬粦琚嬬爜鏁伴噺" [ref=f9e396]
- - columnheader "鎵樼洏鐘舵��" [ref=f9e401]
- - columnheader "澶囨敞" [ref=f9e406]
- - columnheader "鍒涘缓鏃堕棿" [ref=f9e411]
- - table [ref=f9e419]:
- - rowgroup [ref=f9e431]:
- - row "顧� 鏈粦瀹氭壒娆� 100 0 鍚敤 2026-08-28 16:28:05" [ref=f9e1149]:
- - cell "顧�" [ref=f9e1150]
- - cell [ref=f9e438]
- - cell "鏈粦瀹氭壒娆�" [ref=f9e442]
- - cell "100" [ref=f9e446]
- - cell "0" [ref=f9e450]
- - cell "鍚敤" [ref=f9e454]
- - cell [ref=f9e458]
- - cell "2026-08-28 16:28:05" [ref=f9e462]
- - row "顪� 10 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e466]:
- - cell "顪�" [ref=f9e467]
- - cell "10" [ref=f9e472]
- - cell "PC20260819twoITEM_001" [ref=f9e476]
- - cell "1000" [ref=f9e479]
- - cell "0" [ref=f9e483]
- - cell "鍚敤" [ref=f9e487]
- - cell [ref=f9e491]
- - cell "2026-08-19 10:53:29" [ref=f9e495]
- - row "顪� 9 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e499]:
- - cell "顪�" [ref=f9e500]
- - cell "9" [ref=f9e505]
- - cell "PC20260819twoITEM_001" [ref=f9e509]
- - cell "1000" [ref=f9e512]
- - cell "0" [ref=f9e516]
- - cell "鍚敤" [ref=f9e520]
- - cell [ref=f9e524]
- - cell "2026-08-19 10:53:29" [ref=f9e528]
- - row "顪� 8 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e532]:
- - cell "顪�" [ref=f9e533]
- - cell "8" [ref=f9e538]
- - cell "PC20260819twoITEM_001" [ref=f9e542]
- - cell "1000" [ref=f9e545]
- - cell "0" [ref=f9e549]
- - cell "鍚敤" [ref=f9e553]
- - cell [ref=f9e557]
- - cell "2026-08-19 10:53:29" [ref=f9e561]
- - row "顪� 7 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e565]:
- - cell "顪�" [ref=f9e566]
- - cell "7" [ref=f9e571]
- - cell "PC20260819twoITEM_001" [ref=f9e575]
- - cell "1000" [ref=f9e578]
- - cell "0" [ref=f9e582]
- - cell "鍚敤" [ref=f9e586]
- - cell [ref=f9e590]
- - cell "2026-08-19 10:53:29" [ref=f9e594]
- - row "顪� 6 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e598]:
- - cell "顪�" [ref=f9e599]
- - cell "6" [ref=f9e604]
- - cell "PC20260819twoITEM_001" [ref=f9e608]
- - cell "1000" [ref=f9e611]
- - cell "0" [ref=f9e615]
- - cell "鍚敤" [ref=f9e619]
- - cell [ref=f9e623]
- - cell "2026-08-19 10:53:29" [ref=f9e627]
- - row "顪� 5 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e631]:
- - cell "顪�" [ref=f9e632]
- - cell "5" [ref=f9e637]
- - cell "PC20260819twoITEM_001" [ref=f9e641]
- - cell "1000" [ref=f9e644]
- - cell "0" [ref=f9e648]
- - cell "鍚敤" [ref=f9e652]
- - cell [ref=f9e656]
- - cell "2026-08-19 10:53:29" [ref=f9e660]
- - row "顪� 4 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e664]:
- - cell "顪�" [ref=f9e665]
- - cell "4" [ref=f9e670]
- - cell "PC20260819twoITEM_001" [ref=f9e674]
- - cell "1000" [ref=f9e677]
- - cell "0" [ref=f9e681]
- - cell "鍚敤" [ref=f9e685]
- - cell [ref=f9e689]
- - cell "2026-08-19 10:53:29" [ref=f9e693]
- - row "顪� 3 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e697]:
- - cell "顪�" [ref=f9e698]
- - cell "3" [ref=f9e703]
- - cell "PC20260819twoITEM_001" [ref=f9e707]
- - cell "1000" [ref=f9e710]
- - cell "0" [ref=f9e714]
- - cell "鍚敤" [ref=f9e718]
- - cell [ref=f9e722]
- - cell "2026-08-19 10:53:29" [ref=f9e726]
- - row "顪� 2 PC20260819twoITEM_001 1000 20 鍚敤 2026-08-19 10:53:29" [ref=f9e730]:
- - cell "顪�" [ref=f9e731]
- - cell "2" [ref=f9e736]
- - cell "PC20260819twoITEM_001" [ref=f9e740]
- - cell "1000" [ref=f9e743]
- - cell "20" [ref=f9e747]
- - cell "鍚敤" [ref=f9e751]
- - cell [ref=f9e755]
- - cell "2026-08-19 10:53:29" [ref=f9e759]
- - row "顪� 1 PC20260819twoITEM_001 1000 40 鍚敤 2026-08-19 10:53:29" [ref=f9e763]:
- - cell "顪�" [ref=f9e764]
- - cell "1" [ref=f9e769]
- - cell "PC20260819twoITEM_001" [ref=f9e773]
- - cell "1000" [ref=f9e776]
- - cell "40" [ref=f9e780]
- - cell "鍚敤" [ref=f9e784]
- - cell [ref=f9e788]
- - cell "2026-08-19 10:53:29" [ref=f9e792]
- - generic:
- - generic [ref=f9e796]:
- - table [ref=f9e799]:
- - rowgroup [ref=f9e811]:
- - row [ref=f9e812]:
- - columnheader "鎵樼洏鐮�" [ref=f9e813]
- - table [ref=f9e820]:
- - rowgroup [ref=f9e823]:
- - row [ref=f9e824]:
- - cell "PL-00000001 鏈粦瀹氭壒娆�" [ref=f9e825]:
- - generic [ref=f9e827]:
- - text: PL-00000001
- - generic [ref=f9e828]: 鏈粦瀹氭壒娆�
- - row [ref=f9e829]:
- - cell "PC20260819twoITEM_001-P10" [ref=f9e830]
- - row [ref=f9e833]:
- - cell "PC20260819twoITEM_001-P09" [ref=f9e834]
- - row [ref=f9e837]:
- - cell "PC20260819twoITEM_001-P08" [ref=f9e838]
- - row [ref=f9e841]:
- - cell "PC20260819twoITEM_001-P07" [ref=f9e842]
- - row [ref=f9e845]:
- - cell "PC20260819twoITEM_001-P06" [ref=f9e846]
- - row [ref=f9e849]:
- - cell "PC20260819twoITEM_001-P05" [ref=f9e850]
- - row [ref=f9e853]:
- - cell "PC20260819twoITEM_001-P04" [ref=f9e854]
- - row [ref=f9e857]:
- - cell "PC20260819twoITEM_001-P03" [ref=f9e858]
- - row [ref=f9e861]:
- - cell "PC20260819twoITEM_001-P02" [ref=f9e862]
- - row [ref=f9e865]:
- - cell "PC20260819twoITEM_001-P01" [ref=f9e866]
- - generic [ref=f9e869]:
- - table [ref=f9e872]:
- - rowgroup [ref=f9e884]:
- - row [ref=f9e885]:
- - columnheader "鎿嶄綔" [ref=f9e886]
- - table [ref=f9e893]:
- - rowgroup [ref=f9e896]:
- - row [ref=f9e897]:
- - cell [ref=f9e898]:
- - generic [ref=f9e902]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e904] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e907] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e914] [cursor=pointer]
- - row [ref=f9e918]:
- - cell [ref=f9e919]:
- - generic [ref=f9e923]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e925] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e928] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e935] [cursor=pointer]
- - row [ref=f9e939]:
- - cell [ref=f9e940]:
- - generic [ref=f9e944]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e946] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e949] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e956] [cursor=pointer]
- - row [ref=f9e960]:
- - cell [ref=f9e961]:
- - generic [ref=f9e965]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e967] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e970] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e977] [cursor=pointer]
- - row [ref=f9e981]:
- - cell [ref=f9e982]:
- - generic [ref=f9e986]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e988] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e991] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e998] [cursor=pointer]
- - row [ref=f9e1002]:
- - cell [ref=f9e1003]:
- - generic [ref=f9e1007]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1009] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1012] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1019] [cursor=pointer]
- - row [ref=f9e1023]:
- - cell [ref=f9e1024]:
- - generic [ref=f9e1028]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1030] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1033] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1040] [cursor=pointer]
- - row [ref=f9e1044]:
- - cell [ref=f9e1045]:
- - generic [ref=f9e1049]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1051] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1054] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1061] [cursor=pointer]
- - row [ref=f9e1065]:
- - cell [ref=f9e1066]:
- - generic [ref=f9e1070]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1072] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1075] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1082] [cursor=pointer]
- - row [ref=f9e1086]:
- - cell [ref=f9e1087]:
- - generic [ref=f9e1091]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1093] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1096] [cursor=pointer]
- - row [ref=f9e1102]:
- - cell [ref=f9e1103]:
- - generic [ref=f9e1107]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1109] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1112] [cursor=pointer]
- - generic [ref=f9e1124]:
- - generic [ref=f9e1125]: 鍏� 11 鏉¤褰�
- - generic [ref=f9e1127] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f9e1128]:
- - textbox "璇烽�夋嫨" [ref=f9e1129]: 20鏉�/椤�
- - generic [ref=f9e1130]: 睿�
- - button "飱�" [ref=f9e1133]
- - button "顧�" [ref=f9e1135]
- - button "顫�" [ref=f9e1137]
- - button "1" [ref=f9e1140] [cursor=pointer]
- - button "顫�" [ref=f9e1141]
- - button "顧�" [ref=f9e1143]
- - button "顦�" [ref=f9e1145]
- - dialog [ref=f9e1152]:
- - heading "鎵樼洏鐮佺粦瀹氱敓浜ф壒娆�" [level=2] [ref=f9e1154]
- - generic [ref=f9e1159]:
- - generic [ref=f9e1160]:
- - generic [ref=f9e1161]: "*"
- - text: 鐢熶骇鎵规
- - generic [ref=f9e1166] [cursor=pointer]:
- - generic: PC20260828twoITEM_001
- - generic [ref=f9e1167]:
- - combobox "* 鐢熶骇鎵规" [active] [ref=f9e1169]
- - generic "PC20260828twoITEM_001" [ref=f9e1197]
- - button [ref=f9e1170] [cursor=pointer]
- - generic [ref=f9e1180]:
- - button "鍙� 娑�" [ref=f9e1181] [cursor=pointer]
- - button "纭� 璁�" [ref=f9e1183] [cursor=pointer]
- - button [ref=f9e1185] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-08-28T09-04-52-568Z.yml b/.playwright-mcp/page-2026-08-28T09-04-52-568Z.yml
deleted file mode 100644
index e065646..0000000
--- a/.playwright-mcp/page-2026-08-28T09-04-52-568Z.yml
+++ /dev/null
@@ -1,337 +0,0 @@
-- generic [ref=f9e4]:
- - generic [ref=f9e7]:
- - complementary [ref=f9e9]:
- - generic [ref=f9e10]:
- - generic [ref=f9e11] [cursor=pointer]
- - link "娴嬭瘯鍏徃鍝堝搱 娴嬭瘯鍏徃鍝堝搱" [ref=f9e16] [cursor=pointer]:
- - /url: javascript:void 0
- - img "娴嬭瘯鍏徃鍝堝搱" [ref=f9e19]
- - generic [ref=f9e20]: 娴嬭瘯鍏徃鍝堝搱
- - menu [ref=f9e23]:
- - menuitem "棣栭〉" [ref=f9e24] [cursor=pointer]
- - listitem [ref=f9e29]:
- - generic [ref=f9e30] [cursor=pointer]: 鍩虹鏁版嵁
- - listitem [ref=f9e38]:
- - generic [ref=f9e39] [cursor=pointer]: 浠撳偍鐗╂祦
- - listitem [ref=f9e47]:
- - generic [ref=f9e48] [cursor=pointer]: 涓�琚嬩竴鐮佺鐞�
- - list [ref=f9e54]:
- - menuitem "鎵规鐢熶骇绠$悊" [ref=f9e55] [cursor=pointer]
- - menuitem "璧嬬爜绠$悊" [ref=f9e60] [cursor=pointer]
- - menuitem "鎵樼洏鐮佺鐞�" [ref=f9e66] [cursor=pointer]
- - menuitem "浜х嚎缁存姢" [ref=f9e73] [cursor=pointer]
- - menuitem "鐢熶骇绾挎壂鐮佸叆搴�" [ref=f9e80] [cursor=pointer]
- - listitem [ref=f9e85]:
- - generic [ref=f9e86] [cursor=pointer]: 璐ㄩ噺绠$悊
- - listitem [ref=f9e92]:
- - generic [ref=f9e93] [cursor=pointer]: 绯荤粺绠$悊
- - generic [ref=f9e100] [cursor=pointer]
- - generic [ref=f9e105]:
- - generic [ref=f9e106]:
- - banner [ref=f9e107]:
- - button [ref=f9e108] [cursor=pointer]
- - button [ref=f9e111] [cursor=pointer]
- - navigation "breadcrumb" [ref=f9e116]:
- - list [ref=f9e117]:
- - listitem [ref=f9e118]:
- - link "涓�琚嬩竴鐮佺鐞�" [ref=f9e119] [cursor=pointer]:
- - /url: javascript:void 0
- - listitem [ref=f9e123]
- - listitem [ref=f9e126]:
- - link "鎵樼洏鐮佺鐞�" [disabled] [ref=f9e127]
- - generic [ref=f9e134]:
- - generic [ref=f9e136] [cursor=pointer]:
- - generic [ref=f9e140]: 鎼滅储
- - generic [ref=f9e141]: Ctrl K
- - button [ref=f9e143] [cursor=pointer]
- - button "dark" [ref=f9e148] [cursor=pointer]
- - button [ref=f9e157] [cursor=pointer]
- - button [ref=f9e163] [cursor=pointer]
- - button [ref=f9e166] [cursor=pointer]
- - button [ref=f9e172] [cursor=pointer]:
- - button [ref=f9e174]
- - button "宸ヤ綔鍙�" [ref=f9e178] [cursor=pointer]
- - button "鐞嗗憳" [ref=f9e182] [cursor=pointer]
- - generic [ref=f9e189]:
- - generic [ref=f9e190]: 鎵樼洏鐮佺鐞�
- - generic [ref=f9e211]:
- - button [ref=f9e212] [cursor=pointer]
- - generic [ref=f9e219] [cursor=pointer]
- - generic [ref=f9e223] [cursor=pointer]
- - main [ref=f9e230]:
- - generic [ref=f9e235]:
- - generic [ref=f9e240]:
- - generic [ref=f9e241]:
- - generic [ref=f9e242]: 鎵樼洏鐮�
- - textbox "鎵樼洏鐮�" [ref=f9e248]:
- - /placeholder: 璇疯緭鍏ユ墭鐩樼爜
- - generic [ref=f9e250]:
- - generic [ref=f9e251]: 鎵规鍙�
- - textbox "鎵规鍙�" [ref=f9e257]:
- - /placeholder: 璇疯緭鍏ユ壒娆″彿
- - generic [ref=f9e259]:
- - generic [ref=f9e260]: 鎵樼洏鐘舵��
- - generic [ref=f9e266] [cursor=pointer]:
- - combobox "鎵樼洏鐘舵��" [ref=f9e268]
- - generic: 璇烽�夋嫨鎵樼洏鐘舵��
- - generic [ref=f9e269]:
- - generic [ref=f9e270]: 鍒涘缓鏃堕棿
- - generic [ref=f9e275]:
- - textbox "鍒涘缓鏃堕棿" [ref=f9e277]:
- - /placeholder: 寮�濮嬫椂闂�
- - generic "to" [ref=f9e279]:
- - img "swap-right" [ref=f9e280]
- - textbox "缁撴潫鏃堕棿" [ref=f9e284]
- - generic:
- - img "calendar"
- - generic [ref=f9e285]:
- - button "閲� 缃�" [ref=f9e286] [cursor=pointer]
- - button "鎼� 绱�" [ref=f9e288] [cursor=pointer]
- - generic [ref=f9e290] [cursor=pointer]: 鏀惰捣
- - generic [ref=f9e297]:
- - generic [ref=f9e299]:
- - generic [ref=f9e300]: 鎵樼洏鐮佸垪琛�
- - generic [ref=f9e304]:
- - generic [ref=f9e306]:
- - button "棰勭敓鎴愪簩缁寸爜" [ref=f9e308] [cursor=pointer]
- - button "缁戝畾鎵规" [active] [ref=f9e313] [cursor=pointer]
- - button "鎵爜杩芥函" [ref=f9e320] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e327] [cursor=pointer]
- - button "瀵煎嚭" [ref=f9e334] [cursor=pointer]
- - button "顫�" [ref=f9e340] [cursor=pointer]
- - generic [ref=f9e342]:
- - button "瞟�" [ref=f9e343] [cursor=pointer]
- - button "顪�" [ref=f9e345] [cursor=pointer]
- - button "顦�" [ref=f9e347] [cursor=pointer]
- - generic [ref=f9e354]:
- - generic [ref=f9e355]:
- - table [ref=f9e359]:
- - rowgroup [ref=f9e371]:
- - row [ref=f9e1147]:
- - columnheader "睿�" [ref=f9e1148]:
- - generic "鍏ㄩ��/鍙栨秷" [ref=f9e378] [cursor=pointer]: 睿�
- - columnheader "鎵樼洏搴忓彿" [ref=f9e381]
- - columnheader "鎵规鍙�" [ref=f9e386]
- - columnheader "鍙琚嬫暟锛堣/鎵樼洏锛�" [ref=f9e391]
- - columnheader "宸茬粦琚嬬爜鏁伴噺" [ref=f9e396]
- - columnheader "鎵樼洏鐘舵��" [ref=f9e401]
- - columnheader "澶囨敞" [ref=f9e406]
- - columnheader "鍒涘缓鏃堕棿" [ref=f9e411]
- - table [ref=f9e419]:
- - rowgroup [ref=f9e431]:
- - row "顧� 1 PC20260828twoITEM_001 100 0 鍚敤 2026-08-28 16:28:05" [ref=f9e1198]:
- - cell "顧�" [ref=f9e1150]
- - cell "1" [ref=f9e1199]
- - cell "PC20260828twoITEM_001" [ref=f9e1200]
- - cell "100" [ref=f9e446]
- - cell "0" [ref=f9e450]
- - cell "鍚敤" [ref=f9e454]
- - cell [ref=f9e458]
- - cell "2026-08-28 16:28:05" [ref=f9e462]
- - row "顪� 10 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e466]:
- - cell "顪�" [ref=f9e467]
- - cell "10" [ref=f9e472]
- - cell "PC20260819twoITEM_001" [ref=f9e476]
- - cell "1000" [ref=f9e479]
- - cell "0" [ref=f9e483]
- - cell "鍚敤" [ref=f9e487]
- - cell [ref=f9e491]
- - cell "2026-08-19 10:53:29" [ref=f9e495]
- - row "顪� 9 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e499]:
- - cell "顪�" [ref=f9e500]
- - cell "9" [ref=f9e505]
- - cell "PC20260819twoITEM_001" [ref=f9e509]
- - cell "1000" [ref=f9e512]
- - cell "0" [ref=f9e516]
- - cell "鍚敤" [ref=f9e520]
- - cell [ref=f9e524]
- - cell "2026-08-19 10:53:29" [ref=f9e528]
- - row "顪� 8 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e532]:
- - cell "顪�" [ref=f9e533]
- - cell "8" [ref=f9e538]
- - cell "PC20260819twoITEM_001" [ref=f9e542]
- - cell "1000" [ref=f9e545]
- - cell "0" [ref=f9e549]
- - cell "鍚敤" [ref=f9e553]
- - cell [ref=f9e557]
- - cell "2026-08-19 10:53:29" [ref=f9e561]
- - row "顪� 7 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e565]:
- - cell "顪�" [ref=f9e566]
- - cell "7" [ref=f9e571]
- - cell "PC20260819twoITEM_001" [ref=f9e575]
- - cell "1000" [ref=f9e578]
- - cell "0" [ref=f9e582]
- - cell "鍚敤" [ref=f9e586]
- - cell [ref=f9e590]
- - cell "2026-08-19 10:53:29" [ref=f9e594]
- - row "顪� 6 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e598]:
- - cell "顪�" [ref=f9e599]
- - cell "6" [ref=f9e604]
- - cell "PC20260819twoITEM_001" [ref=f9e608]
- - cell "1000" [ref=f9e611]
- - cell "0" [ref=f9e615]
- - cell "鍚敤" [ref=f9e619]
- - cell [ref=f9e623]
- - cell "2026-08-19 10:53:29" [ref=f9e627]
- - row "顪� 5 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e631]:
- - cell "顪�" [ref=f9e632]
- - cell "5" [ref=f9e637]
- - cell "PC20260819twoITEM_001" [ref=f9e641]
- - cell "1000" [ref=f9e644]
- - cell "0" [ref=f9e648]
- - cell "鍚敤" [ref=f9e652]
- - cell [ref=f9e656]
- - cell "2026-08-19 10:53:29" [ref=f9e660]
- - row "顪� 4 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e664]:
- - cell "顪�" [ref=f9e665]
- - cell "4" [ref=f9e670]
- - cell "PC20260819twoITEM_001" [ref=f9e674]
- - cell "1000" [ref=f9e677]
- - cell "0" [ref=f9e681]
- - cell "鍚敤" [ref=f9e685]
- - cell [ref=f9e689]
- - cell "2026-08-19 10:53:29" [ref=f9e693]
- - row "顪� 3 PC20260819twoITEM_001 1000 0 鍚敤 2026-08-19 10:53:29" [ref=f9e697]:
- - cell "顪�" [ref=f9e698]
- - cell "3" [ref=f9e703]
- - cell "PC20260819twoITEM_001" [ref=f9e707]
- - cell "1000" [ref=f9e710]
- - cell "0" [ref=f9e714]
- - cell "鍚敤" [ref=f9e718]
- - cell [ref=f9e722]
- - cell "2026-08-19 10:53:29" [ref=f9e726]
- - row "顪� 2 PC20260819twoITEM_001 1000 20 鍚敤 2026-08-19 10:53:29" [ref=f9e730]:
- - cell "顪�" [ref=f9e731]
- - cell "2" [ref=f9e736]
- - cell "PC20260819twoITEM_001" [ref=f9e740]
- - cell "1000" [ref=f9e743]
- - cell "20" [ref=f9e747]
- - cell "鍚敤" [ref=f9e751]
- - cell [ref=f9e755]
- - cell "2026-08-19 10:53:29" [ref=f9e759]
- - row "顪� 1 PC20260819twoITEM_001 1000 40 鍚敤 2026-08-19 10:53:29" [ref=f9e763]:
- - cell "顪�" [ref=f9e764]
- - cell "1" [ref=f9e769]
- - cell "PC20260819twoITEM_001" [ref=f9e773]
- - cell "1000" [ref=f9e776]
- - cell "40" [ref=f9e780]
- - cell "鍚敤" [ref=f9e784]
- - cell [ref=f9e788]
- - cell "2026-08-19 10:53:29" [ref=f9e792]
- - generic:
- - generic [ref=f9e796]:
- - table [ref=f9e799]:
- - rowgroup [ref=f9e811]:
- - row [ref=f9e812]:
- - columnheader "鎵樼洏鐮�" [ref=f9e813]
- - table [ref=f9e820]:
- - rowgroup [ref=f9e823]:
- - row [ref=f9e1201]:
- - cell "PC20260828twoITEM_001-P01" [ref=f9e1202]
- - row [ref=f9e829]:
- - cell "PC20260819twoITEM_001-P10" [ref=f9e830]
- - row [ref=f9e833]:
- - cell "PC20260819twoITEM_001-P09" [ref=f9e834]
- - row [ref=f9e837]:
- - cell "PC20260819twoITEM_001-P08" [ref=f9e838]
- - row [ref=f9e841]:
- - cell "PC20260819twoITEM_001-P07" [ref=f9e842]
- - row [ref=f9e845]:
- - cell "PC20260819twoITEM_001-P06" [ref=f9e846]
- - row [ref=f9e849]:
- - cell "PC20260819twoITEM_001-P05" [ref=f9e850]
- - row [ref=f9e853]:
- - cell "PC20260819twoITEM_001-P04" [ref=f9e854]
- - row [ref=f9e857]:
- - cell "PC20260819twoITEM_001-P03" [ref=f9e858]
- - row [ref=f9e861]:
- - cell "PC20260819twoITEM_001-P02" [ref=f9e862]
- - row [ref=f9e865]:
- - cell "PC20260819twoITEM_001-P01" [ref=f9e866]
- - generic [ref=f9e869]:
- - table [ref=f9e872]:
- - rowgroup [ref=f9e884]:
- - row [ref=f9e885]:
- - columnheader "鎿嶄綔" [ref=f9e886]
- - table [ref=f9e893]:
- - rowgroup [ref=f9e896]:
- - row [ref=f9e897]:
- - cell [ref=f9e898]:
- - generic [ref=f9e902]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e904] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e907] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e914] [cursor=pointer]
- - row [ref=f9e918]:
- - cell [ref=f9e919]:
- - generic [ref=f9e923]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e925] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e928] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e935] [cursor=pointer]
- - row [ref=f9e939]:
- - cell [ref=f9e940]:
- - generic [ref=f9e944]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e946] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e949] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e956] [cursor=pointer]
- - row [ref=f9e960]:
- - cell [ref=f9e961]:
- - generic [ref=f9e965]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e967] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e970] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e977] [cursor=pointer]
- - row [ref=f9e981]:
- - cell [ref=f9e982]:
- - generic [ref=f9e986]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e988] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e991] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e998] [cursor=pointer]
- - row [ref=f9e1002]:
- - cell [ref=f9e1003]:
- - generic [ref=f9e1007]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1009] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1012] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1019] [cursor=pointer]
- - row [ref=f9e1023]:
- - cell [ref=f9e1024]:
- - generic [ref=f9e1028]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1030] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1033] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1040] [cursor=pointer]
- - row [ref=f9e1044]:
- - cell [ref=f9e1045]:
- - generic [ref=f9e1049]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1051] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1054] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1061] [cursor=pointer]
- - row [ref=f9e1065]:
- - cell [ref=f9e1066]:
- - generic [ref=f9e1070]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1072] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1075] [cursor=pointer]
- - button "鍒犻櫎" [ref=f9e1082] [cursor=pointer]
- - row [ref=f9e1086]:
- - cell [ref=f9e1087]:
- - generic [ref=f9e1091]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1093] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1096] [cursor=pointer]
- - row [ref=f9e1102]:
- - cell [ref=f9e1103]:
- - generic [ref=f9e1107]:
- - button "鏌ョ湅浜岀淮鐮�" [ref=f9e1109] [cursor=pointer]
- - button "瀵煎嚭浜岀淮鐮�" [ref=f9e1112] [cursor=pointer]
- - generic [ref=f9e1124]:
- - generic [ref=f9e1125]: 鍏� 11 鏉¤褰�
- - generic [ref=f9e1127] [cursor=pointer]:
- - generic "20鏉�/椤�" [ref=f9e1128]:
- - textbox "璇烽�夋嫨" [ref=f9e1129]: 20鏉�/椤�
- - generic [ref=f9e1130]: 睿�
- - button "飱�" [ref=f9e1133]
- - button "顧�" [ref=f9e1135]
- - button "顫�" [ref=f9e1137]
- - button "1" [ref=f9e1140] [cursor=pointer]
- - button "顫�" [ref=f9e1141]
- - button "顧�" [ref=f9e1143]
- - button "顦�" [ref=f9e1145]
- - generic [ref=f9e1204]:
- - img "check-circle" [ref=f9e1205]
- - text: 鎿嶄綔鎴愬姛
\ No newline at end of file
diff --git a/docs/anti_cross_region_integrity_integration.md b/docs/anti_cross_region_integrity_integration.md
new file mode 100644
index 0000000..81a17f7
--- /dev/null
+++ b/docs/anti_cross_region_integrity_integration.md
@@ -0,0 +1,157 @@
+# 闃蹭吉闃茬獪璐х鐞� - 鍓嶇鑱旇皟鏂规
+
+## 娑夊強椤甸潰
+
+- 绐滆揣棰勮绠$悊椤碉紙鏂板鑿滃崟锛氶槻浼槻绐滆揣绠$悊 鈫� 绐滆揣棰勮锛�
+- 鎵爜鍦扮悊鍒嗗竷椤碉紙澶嶇敤娑堣垂鑰呮壂鐮佺粺璁℃帴鍙o級
+- 鏁版嵁瀹屾暣鎬ф牎楠岄〉锛堟柊澧炶彍鍗曪細闃蹭吉闃茬獪璐х鐞� 鈫� 鏁版嵁瀹屾暣鎬ф牎楠岋級
+- 娑堣垂鑰呮函婧� H5 椤甸潰锛堟鍝侀獙璇佷俊鎭睍绀哄寮猴級
+
+## 涓氬姟娴佺▼涓庢暟鎹甫鍏�
+
+1. **绐滆揣棰勮鐨勪骇鐢�**锛氭秷璐硅�呮壂鐮佹函婧愭垚鍔熷悗锛屽悗绔嚜鍔ㄦ瘮瀵广�屾壂鐮� IP 褰掑睘鍦般�嶄笌銆岃鐮佸嚭搴撶粡閿�鍟嗗湴鍖恒�嶏紱涓嶄竴鑷存椂鑷姩鐢熸垚棰勮璁板綍銆傞璀︽棤闇�鍓嶇瑙﹀彂锛屽彧闇�鎻愪緵鏌ヨ銆佸鐞嗐�佺粺璁″叆鍙c��
+2. **棰勮 鈫� 鏄庣粏**锛氱獪璐ч璀﹀垎椤靛垪琛ㄤ腑锛屽彲鏌ョ湅棰勮娑夊強鐨勮鐮�/鎵樼洏鐮併�佹壒娆″彿銆佺粡閿�鍟嗐�佹壂鐮佸湴鍖恒�侀璀︾被鍨嬩笌鐘舵�併��
+3. **瀹屾暣鎬ф牎楠岀殑鍏ュ彛**锛氭暟鎹畬鏁存�ф牎楠岄〉杈撳叆銆屼笟鍔$被鍨� + 涓氬姟缂栧彿銆嶅彂璧锋牎楠屻�備笟鍔$紪鍙峰彲浠庡搴斾笟鍔″垪琛紙鎵规 / 鍑哄簱鍗� / 鎵爜浜嬩欢锛夊甫鍏ワ紝閬垮厤鎵嬪伐濉啓銆�
+4. **H5 姝e搧楠岃瘉**锛氭函婧愭帴鍙e搷搴旀柊澧� `antiFake` 鍖哄潡锛屽睍绀鸿杩芥函鐮佺疮璁℃壂鐮佹鏁般�侀娆�/鏈�杩戞壂鐮佹椂闂达紝甯姪娑堣垂鑰呰瘑鍒澶氭鎵弿鐨勭枒浼煎鍒剁爜銆�
+
+## API
+
+### 1. 绐滆揣棰勮
+
+| 鏂规硶 | 璺緞 | 璇存槑 | 鏉冮檺 |
+|------|------|------|------|
+| GET | `/mes/trace-cross-region/page` | 绐滆揣棰勮鍒嗛〉 | `mes:trace-cross-region:query` |
+| PUT | `/mes/trace-cross-region/handle` | 澶勭悊棰勮锛堝凡澶勭悊/璇姤锛� | `mes:trace-cross-region:handle` |
+| GET | `/mes/trace-cross-region/summary` | 棰勮姹囨�伙紙鎬绘暟/寰呭鐞�/璺ㄧ渷/璺ㄥ競锛� | `mes:trace-cross-region:query` |
+| GET | `/mes/trace-cross-region/statistics` | 棰勮鍒嗗竷缁熻锛堟寜鐪佷唤/缁忛攢鍟�/鐗╂枡绛夊垎缁勶級 | `mes:trace-cross-region:query` |
+| GET | `/mes/trace-cross-region/config` | 鏌ヨ鍒ゅ畾瑙勫垯閰嶇疆 | `mes:trace-cross-region:query` |
+| PUT | `/mes/trace-cross-region/config` | 鏇存柊鍒ゅ畾瑙勫垯锛堢渷/甯傜矑搴﹀垏鎹級 | `mes:trace-cross-region:handle` |
+
+**GET /page 璇锋眰鍙傛暟锛�**
+
+| 鍙傛暟 | 绫诲瀷 | 蹇呭~ | 璇存槑 |
+|------|------|------|------|
+| status | Integer | 鍚� | 鐘舵�侊細10 寰呭鐞� / 20 宸插鐞� / 30 璇姤 |
+| warningType | String | 鍚� | 棰勮绫诲瀷锛欳ROSS_PROVINCE / CROSS_CITY |
+| batchId | Long | 鍚� | 鎵规缂栧彿 |
+| batchCode | String | 鍚� | 鎵规鍙凤紙妯$硦锛� |
+| bagCode | String | 鍚� | 琚嬬爜锛堟ā绯婏級 |
+| clientId | Long | 鍚� | 缁忛攢鍟嗙紪鍙� |
+| clientName | String | 鍚� | 缁忛攢鍟嗗悕绉帮紙妯$硦锛� |
+| eventTime[] | LocalDateTime[] | 鍚� | 棰勮浜х敓鏃堕棿鑼冨洿 |
+| pageNo / pageSize | - | 鍚� | 鍒嗛〉鍙傛暟 |
+
+**GET /page 鍝嶅簲瀛楁锛�**
+
+| 瀛楁 | 绫诲瀷 | 璇存槑 |
+|------|------|------|
+| warningNo | String | 棰勮缂栧彿 |
+| bagCode / palletCode | String | 琚嬬爜 / 鎵樼洏鐮� |
+| batchCode | String | 鎵规鍙� |
+| itemName | String | 鐗╂枡鍚嶇О |
+| salesCode | String | 鍑哄簱鍗曞彿 |
+| clientName | String | 缁忛攢鍟嗗悕绉� |
+| dealerProvince / dealerCity | String | 缁忛攢鍟嗙渷浠� / 鍩庡競 |
+| scanProvince / scanCity | String | 鎵爜鐪佷唤 / 鍩庡競 |
+| warningType / warningTypeName | String | 棰勮绫诲瀷 / 绫诲瀷鍚嶇О |
+| status / statusName | Integer / String | 鐘舵�� / 鐘舵�佸悕绉� |
+| handleRemark | String | 澶勭悊澶囨敞 |
+| handleUserName | String | 澶勭悊浜哄鍚� |
+| handleTime / eventTime | LocalDateTime | 澶勭悊鏃堕棿 / 棰勮浜х敓鏃堕棿 |
+
+**PUT /handle 璇锋眰浣擄細**
+
+| 鍙傛暟 | 绫诲瀷 | 蹇呭~ | 璇存槑 |
+|------|------|------|------|
+| id | Long | 鏄� | 棰勮缂栧彿 |
+| status | Integer | 鏄� | 澶勭悊鐘舵�侊細20 宸插鐞� / 30 璇姤 |
+| handleRemark | String | 鍚� | 澶勭悊澶囨敞 |
+
+**GET /summary 璇锋眰鍙傛暟锛�** `startTime`銆乣endTime`锛堝彲閫夛紝LocalDateTime锛屾牸寮� `yyyy-MM-dd HH:mm:ss`锛�
+
+**GET /summary 鍝嶅簲瀛楁锛�**
+
+| 瀛楁 | 绫诲瀷 | 璇存槑 |
+|------|------|------|
+| total / pending / handled / falseAlarm | Long | 鎬绘暟 / 寰呭鐞� / 宸插鐞� / 璇姤 |
+| crossProvince / crossCity | Long | 璺ㄧ渷棰勮鏁� / 璺ㄥ競棰勮鏁� |
+
+**GET /statistics 璇锋眰鍙傛暟锛�**
+
+| 鍙傛暟 | 绫诲瀷 | 蹇呭~ | 璇存槑 |
+|------|------|------|------|
+| groupBy | String | 鏄� | 鍒嗙粍缁村害锛歴canProvince / scanCity / clientId / itemId / batchId |
+| startTime / endTime | LocalDateTime | 鍚� | 鏃堕棿鑼冨洿 |
+
+**GET /statistics 鍝嶅簲瀛楁锛�** `name`锛堝垎缁勫悕锛夈�乣count`锛堟暟閲忥級锛屾寜鏁伴噺鍊掑簭銆�
+
+**GET /config 鍝嶅簲瀛楁锛�** `warningLevel`锛圥ROVINCE 璺ㄧ渷 / CITY 璺ㄥ競锛夈�乣remark`銆�
+
+**PUT /config 璇锋眰鍙傛暟锛�** `warningLevel`锛堝繀濉紝浠呮敮鎸� PROVINCE / CITY锛夈��
+
+### 2. 鏁版嵁瀹屾暣鎬ф牎楠�
+
+| 鏂规硶 | 璺緞 | 璇存槑 | 鏉冮檺 |
+|------|------|------|------|
+| GET | `/mes/trace-integrity/verify` | 鏍¢獙鏁版嵁瀹屾暣鎬э紙閲嶇畻鎽樿姣斿锛� | `mes:trace-integrity:verify` |
+| GET | `/mes/trace-integrity/page` | 瀹屾暣鎬ц褰曞垎椤� | `mes:trace-integrity:query` |
+
+**GET /verify 璇锋眰鍙傛暟锛�**
+
+| 鍙傛暟 | 绫诲瀷 | 蹇呭~ | 璇存槑 |
+|------|------|------|------|
+| bizType | String | 鏄� | 涓氬姟绫诲瀷锛欱ATCH 鎵规 / SALES 閿�鍞嚭搴� / SCAN 娑堣垂鑰呮壂鐮� |
+| bizId | Long | 鏄� | 涓氬姟璁板綍缂栧彿 |
+
+**GET /verify 鍝嶅簲瀛楁锛�**
+
+| 瀛楁 | 绫诲瀷 | 璇存槑 |
+|------|------|------|
+| bizType / bizId / bizCode | - | 涓氬姟绫诲瀷 / 缂栧彿 / 缂栫爜 |
+| matched | Boolean | 鏄惁鏍¢獙閫氳繃 |
+| storedHash | String | 瀛樺偍鐨勬憳瑕� SHA-256 |
+| currentHash | String | 褰撳墠鏁版嵁閲嶇畻鎽樿 SHA-256 |
+| bagSetHash | String | 浠� BATCH 鏍¢獙杩斿洖锛氭壒娆″綋鍓嶈鐮侀泦鍚堟憳瑕侊紙渚涗汉宸ユ瘮瀵硅鐮侀槻绡℃敼锛� |
+| message | String | 鏍¢獙璇存槑 |
+
+**GET /page 璇锋眰鍙傛暟锛�** `bizType`銆乣bizId`銆乣bizCode`锛堝潎鍙�夛級銆�
+
+**GET /page 鍝嶅簲瀛楁锛�** `id`銆乣bizType`銆乣bizId`銆乣bizCode`銆乣contentHash`銆乣eventTime`銆�
+
+### 3. 娑堣垂鑰呮函婧� H5 鍝嶅簲鏂板鍖哄潡
+
+婧簮鎺ュ彛锛坄/public/mes/trace/query`锛夊搷搴旀柊澧� `antiFake` 鍖哄潡锛堟湁鎵爜璁板綍鎵嶈繑鍥烇級锛�
+
+| 瀛楁 | 绫诲瀷 | 璇存槑 |
+|------|------|------|
+| antiFake.scanCount | Long | 璇ヨ拷婧爜绱鎵爜娆℃暟 |
+| antiFake.firstScanTime | LocalDateTime | 棣栨鎵爜鏃堕棿 |
+| antiFake.lastScanTime | LocalDateTime | 鏈�杩戞壂鐮佹椂闂� |
+
+## 瀛楁灞曠ず瑙勫垯
+
+| 瀛楁 | 灞曠ず浣嶇疆 | 璇存槑 |
+|------|----------|------|
+| 棰勮绫诲瀷 | 绐滆揣棰勮鍒楄〃銆佽鎯� | CROSS_PROVINCE=璺ㄧ渷 / CROSS_CITY=璺ㄥ競 |
+| 鐘舵�� | 绐滆揣棰勮鍒楄〃銆佽鎯� | 寰呭鐞� / 宸插鐞� / 璇姤锛屽垪琛ㄥ缓璁寜鐘舵�佺潃鑹� |
+| 缁忛攢鍟� vs 鎵爜鍦板尯 | 绐滆揣棰勮璇︽儏 | 涓ゅ垪瀵规瘮灞曠ず锛屽紓甯稿瓧娈甸珮浜� |
+| 澶勭悊澶囨敞 | 绐滆揣棰勮璇︽儏 | 澶勭悊鏃跺彲濉啓 |
+| matched | 鏁版嵁瀹屾暣鎬ф牎楠岄〉 | 鏍¢獙缁撴灉锛岄�氳繃鏄剧ず缁胯壊銆佷笉閫氳繃鏄剧ず绾㈣壊骞剁粰鍑轰袱涓憳瑕佸�� |
+
+## 涓氬姟瑙勫垯璇存槑
+
+| 鍦烘櫙 | 瑙勫垯 |
+|------|------|
+| 鍒ゅ畾绮掑害 | 绠$悊绔彲鍦� `PROVINCE`锛堣法鐪侊級涓� `CITY`锛堣法甯傦級闂村垏鎹紱`CITY` 绮掑害涓嬭嫢鎵爜甯備笌缁忛攢鍟嗗競閮戒负绌哄垯閫�鍥炵渷绾у垽鏂� |
+| 涓嶄骇鐢熼璀︾殑鎯呭喌 | 鎵规鐮佸叆鍙f壂鐮併�佹壂鐮佹棤鍦板尯锛圛P 瑙f瀽澶辫触锛夈�佽鐮佹湭鍑哄簱銆佺粡閿�鍟嗘棤鍦板尯淇℃伅 |
+| 棰勮澶勭悊 | 浠呫�屽緟澶勭悊銆嶇姸鎬佸彲澶勭悊涓恒�屽凡澶勭悊銆嶆垨銆岃鎶ャ�嶏紱澶勭悊鍚庝笉鍙啀娆″鐞� |
+| 瀹屾暣鎬ц鐩栬寖鍥� | 鍙牎楠屼笉鍙彉鏍稿績瀛楁锛屾甯镐笟鍔℃祦杞紙鑽夌鈫掔敓浜т腑鈫掑畬鎴愩�佸嚭搴撳悗鐘舵�佹洿鏂帮級涓嶄細瀵艰嚧鏍¢獙璇姤 |
+| 鏈敓鎴愭憳瑕� | 鑻ヤ笟鍔℃暟鎹湭鐢熸垚杩囨憳瑕侊紙濡傚巻鍙叉暟鎹級锛宍verify` 杩斿洖"鏁版嵁瀹屾暣鎬ц褰曚笉瀛樺湪"閿欒鐮� |
+
+## 娉ㄦ剰浜嬮」
+
+- 绐滆揣棰勮鍒嗛〉鐨� `eventTime` 浼犱袱涓�硷紙`eventTime[0]` 璧枫�乣eventTime[1]` 姝級琛ㄧず鏃堕棿鑼冨洿銆�
+- `statistics` 鐨� `groupBy` 鍙兘浼犵櫧鍚嶅崟鍐呯殑缁村害锛屼紶鍏朵粬鍊煎悗绔細鎷掔粷銆�
+- 鏁版嵁瀹屾暣鎬ф牎楠岀殑涓氬姟缂栧彿寤鸿浠庡搴斿垪琛ㄥ甫鍏ワ紝SCAN 绫诲瀷鐨� bizId 涓烘秷璐硅�呮壂鐮佷簨浠朵富閿紝鍙湪鎵爜缁熻璁板綍涓煡鐪嬨��
+- 娑堣垂鑰� H5 绔� `antiFake` 鍖哄潡鏃犳壂鐮佽褰曟椂涓嶈繑鍥炶瀛楁锛屽墠绔渶鍋氱┖鍊煎厹搴曘��
+- 绐滆揣棰勮銆佸畬鏁存�ф牎楠岃彍鍗曢渶鍚庣鎵ц鑿滃崟 SQL 鍚庢墠浼氬湪绠$悊鍚庡彴鍙銆�
diff --git a/docs/consumer_trace_scan_statistics_api.md b/docs/consumer_trace_scan_statistics_api.md
new file mode 100644
index 0000000..7c7b87f
--- /dev/null
+++ b/docs/consumer_trace_scan_statistics_api.md
@@ -0,0 +1,111 @@
+# 娑堣垂鑰呮壂鐮佽闂簨浠朵笌缁熻 - 鍓嶇鑱旇皟鏂规
+
+## 娑夊強椤甸潰
+
+- H5 娑堣垂鑰呮函婧愭煡璇㈤〉锛堜粎鐢卞悗绔嚜鍔ㄨ褰曡闂簨浠讹級
+- MES 绠$悊绔秷璐硅�呮壂鐮佽闂粺璁¢〉
+
+## 涓氬姟娴佺▼涓庢暟鎹甫鍏�
+
+1. 娑堣垂鑰呰闂� H5 婧簮鏌ヨ鎺ュ彛鏃讹紝鍚庣浣跨敤鍘熷鎵爜鍐呭瑙f瀽杩芥函鐮併��
+2. 鏌ヨ鎴愬姛鍚庤褰曞叆鍙g被鍨嬪拰鐢熶骇鎵规缂栧彿锛涙煡璇㈠け璐ユ椂璁板綍澶辫触浜嬩欢鍙婂け璐ョ紪鐮併��
+3. 浜嬩欢璁板綍澶辫触涓嶄細褰卞搷 H5 婧簮鏌ヨ缁撴灉銆�
+4. 绠$悊绔粺璁℃帴鍙f寜璁块棶鏃堕棿绛涢�夛紱鍒嗗竷鎺ュ彛浠呮敮鎸� `sourceType`銆乣success`銆乣channel`銆乣province`銆乣city`銆乣batchId` 鍏釜鍥哄畾缁村害锛屼笉鍏佽浼犲叆浠绘剰鏁版嵁搴撳瓧娈点��
+5. `channel` 鏍规嵁 User-Agent 褰掔被涓哄井淇°�佹敮浠樺疂鎴栨祻瑙堝櫒锛沗province`銆乣city` 鏍规嵁瀹㈡埛绔� IP 褰掑睘鍦拌В鏋愶紝瑙f瀽涓嶅埌鏃跺睍绀衡�滄湭鐭モ�濄��
+
+## API
+
+### H5 婧簮鏌ヨ锛堝凡鏈夋帴鍙o紝鏂板浜嬩欢璁板綍锛�
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|---|---|---|
+| GET | `/public/mes/trace/query` | 鏌ヨ杩芥函淇℃伅锛屽悓鏃惰褰曟垚鍔熸垨澶辫触璁块棶浜嬩欢 |
+
+璇锋眰鍙傛暟 `code` 涓鸿拷婧爜鎴栧寘鍚� `code` 鍙傛暟鐨勪簩缁寸爜 URL銆備簨浠惰褰曞け璐ユ椂鎺ュ彛浠嶆寜鍘熸湁瑙勫垯杩斿洖鏌ヨ缁撴灉鎴栦笟鍔¢敊璇��
+
+### 绠$悊绔眹鎬�
+
+| 鏂规硶 | 璺緞 | 鏉冮檺 |
+|---|---|---|
+| GET | `/mes/trace-consumer-scan/summary` | `mes:trace-consumer-scan:query` |
+
+鍙�夊弬鏁帮細`startTime`銆乣endTime`锛屾牸寮忎负 `yyyy-MM-dd HH:mm:ss`锛岀粺璁¤寖鍥翠负寮�濮嬫椂闂达紙鍚級鑷崇粨鏉熸椂闂达紙涓嶅惈锛夈��
+
+鍝嶅簲瀛楁锛歚total` 鎬昏闂鏁般�乣success` 鎴愬姛娆℃暟銆乣failed` 澶辫触娆℃暟銆乣uniqueBatchCount` 鏃堕棿鑼冨洿鍐� `batch_id` 闈炵┖鐨勫幓閲嶆壒娆℃暟閲忋�傝鍙e緞涓� `batchId` 鍒嗗竷涓殑闈炩�滄湭鐭モ�濆垎缁勬暟閲忎竴鑷淬��
+
+### 绠$悊绔秼鍔�
+
+| 鏂规硶 | 璺緞 | 鏉冮檺 |
+|---|---|---|
+| GET | `/mes/trace-consumer-scan/trend` | `mes:trace-consumer-scan:query` |
+
+鍙�夊弬鏁板悓姹囨�汇�傚搷搴斾负鏁扮粍锛屽瓧娈靛寘鎷� `date`銆乣total`銆乣success`銆乣failed`銆�
+
+### 绠$悊绔垎甯�
+
+| 鏂规硶 | 璺緞 | 鏉冮檺 |
+|---|---|---|
+| GET | `/mes/trace-consumer-scan/distribution` | `mes:trace-consumer-scan:query` |
+
+璇锋眰鍙傛暟锛�
+
+| 鍙傛暟 | 绫诲瀷 | 蹇呭~ | 鍏佽鍊� | 璇存槑 |
+|---|---|---|---|---|
+| `groupBy` | String | 鏄� | `sourceType`銆乣success`銆乣channel`銆乣province`銆乣city`銆乣batchId` | 鍒嗙粍缁村害锛涘悗绔噰鐢ㄥ浐瀹氱櫧鍚嶅崟鏄犲皠锛岄潪娉曞�兼嫆缁� |
+| `startTime` | DateTime | 鍚� | `yyyy-MM-dd HH:mm:ss` | 寮�濮嬫椂闂达紙鍚級 |
+| `endTime` | DateTime | 鍚� | `yyyy-MM-dd HH:mm:ss` | 缁撴潫鏃堕棿锛堜笉鍚級 |
+
+鍝嶅簲鏁扮粍瀛楁锛歚name` 鍒嗙粍鍚嶇О銆乣count` 璁块棶娆℃暟銆傜┖鍊煎垎缁勫悕绉拌繑鍥炩�滄湭鐭モ�濄��
+
+## 瀛楁灞曠ず瑙勫垯
+
+| 瀛楁 | 灞曠ず浣嶇疆 | 璇存槑 |
+|---|---|---|
+| `total`銆乣success`銆乣failed`銆乣uniqueBatchCount` | 姹囨�诲崱鐗� | 灞曠ず璁块棶鎬婚噺銆佹垚鍔�/澶辫触閲忓強闈炵┖鎵规鍘婚噸鏁伴噺 |
+| `date`銆乣total`銆乣success`銆乣failed` | 瓒嬪娍鍥� | 鍚庣宸茶ˉ榻愭煡璇㈠尯闂村唴鏃犳暟鎹棩鏈燂紝鏁板�间负 0 |
+| `name`銆乣count` | 鍒嗗竷鍥�/琛ㄦ牸 | 鏍规嵁閫夋嫨鐨勫浐瀹氬垎缁勭淮搴﹀睍绀� |
+
+## 涓氬姟瑙勫垯璇存槑
+
+| 鍦烘櫙 | 瑙勫垯 |
+|---|---|
+| 鎴愬姛鏌ヨ | 璁板綍 `success=1`銆佸叆鍙g被鍨嬨�佹笭閬撱�佺渷浠姐�佸煄甯傚強鎵规缂栧彿 |
+| 杩芥函鐮佷负绌烘垨涓嶅瓨鍦� | 璁板綍 `success=0` 鍜屽け璐ョ紪鐮� |
+| 璁板綍浜嬩欢寮傚父 | 浠呰褰曞悗绔棩蹇楋紝涓嶆敼鍙樻函婧愭帴鍙h繑鍥炵粨鏋� |
+| IP 涓� User-Agent | IP 涓� User-Agent 浠呬繚瀛� SHA-256 鎽樿锛涙笭閬撱�佺渷浠姐�佸煄甯傚彧淇濆瓨褰掔被/褰掑睘鍦板悕绉� |
+| 鍒嗙粍鍙傛暟 | 鍚庣鍙帴鍙楀浐瀹氱櫧鍚嶅崟鍊硷紝闈炴硶鍊艰繑鍥炲弬鏁伴敊璇� |
+
+## 鍓嶇椤甸潰鎺ュ叆
+
+### 鑿滃崟涓庤矾鐢�
+
+- 鑿滃崟宸插垵濮嬪寲锛坄sql/mysql/mes_trace_consumer_scan_menu.sql`锛夛紝鎸傚湪 MES 绯荤粺(5100) 涓嬶紝椤甸潰璺緞 `mes/trace-consumer-scan/index`锛岀粍浠跺悕寤鸿 `MesTraceConsumerScan`銆�
+- 椤甸潰鏌ヨ鏉冮檺鏍囪瘑锛歚mes:trace-consumer-scan:query`銆傜櫥褰曠敤鎴烽渶琚巿浜堣鏉冮檺鎵嶈兘鐪嬪埌鑿滃崟骞惰皟鐢ㄦ帴鍙c��
+- 缁熻鎺ュ彛缁熶竴璺緞鍓嶇紑 `/mes/trace-consumer-scan`锛屽叡涓変釜锛歚/summary`銆乣/trend`銆乣/distribution`銆�
+
+### 椤甸潰鍖哄潡寤鸿
+
+| 鍖哄潡 | 鏁版嵁鏉ユ簮 | 灞曠ず寤鸿 |
+|---|---|---|
+| 姹囨�诲崱鐗� | `/summary` | 鎬昏闂�佹垚鍔熴�佸け璐ャ�侀潪绌烘壒娆″幓閲嶆暟 |
+| 瓒嬪娍鍥� | `/trend` | 鎸夋棩鎶樼嚎/鏌辩姸锛屽睍绀烘�婚噺涓庢垚鍔�/澶辫触锛涘悗绔凡琛ラ綈鏃犳暟鎹棩鏈熶负 0 |
+| 鍒嗗竷鍥� | `/distribution` | 鎸� `sourceType/success/channel/province/city/batchId` 鍒囨崲鍒嗙粍锛屽睍绀哄悕绉颁笌璁块棶閲� |
+
+### 鏃堕棿鑼冨洿浜や簰
+
+- 涓変釜鎺ュ彛鍧囧彲閫変紶 `startTime`/`endTime`锛堟牸寮� `yyyy-MM-dd HH:mm:ss`锛夛紝鑼冨洿宸﹂棴鍙冲紑銆�
+- 椤甸潰鎻愪緵榛樿鏃堕棿鑼冨洿锛堝杩� 30 澶╋級锛岀敱鍓嶇鍦ㄨ姹傛椂浼犲叆锛涗笉浼犲垯鍚庣鎸夊凡鏈夋暟鎹尯闂寸粺璁°��
+
+### 绌烘暟鎹鐞�
+
+- `trend` 绌烘暟鎹椂杩斿洖琛� 0 鐨勬棩鏈熷簭鍒楋紝鍓嶇鐩存帴娓叉煋鍗冲彲銆�
+- `distribution` 绌烘暟鎹椂杩斿洖绌烘暟缁勶紝椤甸潰灞曠ず"鏆傛棤鎵爜鏁版嵁"銆�
+- `province`/`city` 瑙f瀽涓嶅埌鏃跺垎缁勫悕涓�"鏈煡"銆�
+
+## 娉ㄦ剰浜嬮」
+
+- 闇�瑕佸厛鎵ц `sql/mysql/mes_trace_consumer_scan_event.sql` 鍒涘缓浜嬩欢琛ㄣ��
+- 闇�瑕佹墽琛� `sql/mysql/mes_trace_consumer_scan_menu.sql` 鍒濆鍖栬彍鍗曟潈闄愶紙鑻ヤ娇鐢� `ruoyi-vue-pro` 绛夊叾瀹冨簱锛屾敞鎰忓悓姝ヨ〃缁撴瀯锛夈��
+- 绠$悊绔〉闈㈤渶瑕佹牴鎹潈闄愭帶鍒惰彍鍗曞拰鎺ュ彛璁块棶銆�
+- 缁熻鎺ュ彛鐨勬椂闂村弬鏁板簲浣跨敤鍚庣绾﹀畾鏍煎紡锛岀粨鏉熸椂闂翠笉鍖呭惈杈圭晫鏃跺埢銆�
+- 涓嶉渶瑕佹柊澧炲墠绔笂浼犳垨浜嬩欢鍐欏叆鎺ュ彛銆�
diff --git a/docs/qr_trace_modal_url_integration.md b/docs/qr_trace_modal_url_integration.md
new file mode 100644
index 0000000..0d25c73
--- /dev/null
+++ b/docs/qr_trace_modal_url_integration.md
@@ -0,0 +1,65 @@
+# 绠$悊绔�屾煡鐪嬩簩缁寸爜銆嶉瑙堢粺涓�涓� H5 閾炬帴 - 鍓嶇鑱旇皟鏂规
+
+## 鑳屾櫙
+
+绠$悊绔壒娆�/琚嬬爜/鎵樼洏椤甸潰鐨勩�屾煡鐪嬩簩缁寸爜銆嶅脊绐楋紝浜岀淮鐮侀瑙堟鍓嶇洿鎺ョ敤**鐮佸�肩紪鍙�**锛堝 `PB-00000102`銆乣BAG-00000102`锛夌敓鎴愶紝鑰屾墦鍗�/瀵煎嚭鏍囩鐨勪簩缁寸爜鍐呭鏄� **H5 婧簮閾炬帴**锛坄http://host:port/trace.html?code=xxx`锛夈�備袱鑰呬笉涓�鑷达紝瀵艰嚧鎵爜鏁堟灉涓嶅悓锛屾槗閫犳垚璇В銆�
+
+鏈鏀瑰姩璁╃鐞嗙銆屾煡鐪嬩簩缁寸爜銆嶉瑙�/涓嬭浇鐨勪簩缁寸爜鍐呭涓庢墦鍗版爣绛惧畬鍏ㄤ竴鑷达紙鍧囦负 H5 閾炬帴锛夈��
+
+## 娑夊強椤甸潰
+
+- 鐢熶骇鎵规绠$悊锛堟壒娆°�屾煡鐪嬩簩缁寸爜銆嶏級
+- 琚嬬爜绠$悊锛堣鐮併�屾煡鐪嬩簩缁寸爜銆嶏級
+- 鎵樼洏绠$悊锛堟墭鐩樸�屾煡鐪嬩簩缁寸爜銆嶏級
+
+浠ヤ笂涓夊鍏辩敤缁勪欢 `src/views/mes/pro/components/qr-trace-modal.vue`锛屼粎闇�鏀瑰姩璇ュ叡浜粍浠朵竴娆°��
+
+## API
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| GET | /admin-api/mes/trace-config/qr-config | 鑾峰緱婧簮 H5 椤甸潰鍩虹鍦板潃锛堜簩缁寸爜鍐呭鍓嶇紑锛� |
+
+**璇锋眰鍙傛暟锛�** 鏃狅紙鐧诲綍鎬佸嵆鍙闂級
+
+**鍝嶅簲绀轰緥锛�**
+
+```json
+{
+ "code": 0,
+ "data": {
+ "traceBaseUrl": "http://192.168.0.10:48080/trace.html"
+ },
+ "msg": ""
+}
+```
+
+**瀛楁璇存槑锛�**
+
+| 瀛楁 | 绫诲瀷 | 璇存槑 |
+|------|------|------|
+| traceBaseUrl | String | 婧簮 H5 椤甸潰鍩虹鍦板潃锛屽搴斿悗绔厤缃� `mes.trace-base-url`锛涗负绌烘椂鍓嶇浜岀淮鐮佸洖閫�涓虹函鐮佸�� |
+
+## 鍓嶇淇敼鐐�
+
+### 1. 鏂板 API 妯″潡
+
+鏂板 `src/api/mes/trace/config.ts`锛屽皝瑁� `getQrConfig()` 璋冪敤 `/mes/trace-config/qr-config`銆�
+
+### 2. 鍏变韩缁勪欢 qr-trace-modal.vue
+
+- 寮圭獥鎵撳紑鏃舵媺鍙栦竴娆� `traceBaseUrl`锛堜細璇濆唴缂撳瓨锛岄伩鍏嶉噸澶嶈姹傦級銆�
+- 浜岀淮鐮佸睍绀哄唴瀹圭敱銆岀爜鍊肩紪鍙枫�嶆敼涓恒�孒5 閾炬帴銆嶏細`traceBaseUrl + "?code=" + encodeURIComponent(鐮佸��)`銆�
+- 涓嬭浇 / 鎵撳嵃浜岀淮鐮佷娇鐢ㄤ簩缁寸爜鍥剧墖 base64锛屽唴瀹归殢涔嬪彉涓� H5 閾炬帴锛屼笌鍚庣 `QrCodeImageUtils` 瀵煎嚭鐨勬爣绛句竴鑷淬��
+- 杈撳叆妗嗗弽鏌ュ吋瀹癸細鎵弿鏋壂鍒版墦鍗版爣绛剧殑瀹屾暣 H5 閾炬帴鏃讹紝鑷姩浠庨摼鎺ヤ腑鎻愬彇 `code` 鍙傛暟鍐嶈繘琛岃拷婧煡璇紱鐩存帴杈撳叆鐮佸�肩紪鍙峰悓鏍峰彲鐢ㄣ��
+- `traceBaseUrl` 涓虹┖锛堟湭閰嶇疆 `mes.trace-base-url` 鐨勭幆澧冿級鏃讹紝浜岀淮鐮佸洖閫�涓虹函鐮佸�硷紝琛屼负涓庡悗绔竴鑷达紝涓嶆姤閿欍��
+
+## 鏁版嵁甯﹀叆璇存槑
+
+- 銆屾煡鐪嬩簩缁寸爜銆嶅叆鍙f部鐢ㄧ幇鏈夐�昏緫锛氭壒娆$敤 `code`锛堟寮忔壒娆″彿锛変紭鍏堛�佸叾娆� `tempCode`锛涜鐮�/鎵樼洏鐮佸悓鐞嗐�傚脊绐楀唴灞曠ず鐨勮拷婧俊鎭粛鎸夌爜鍊肩紪鍙锋煡璇紝浜岀淮鐮佸睍绀哄唴瀹规墠鎷兼帴涓� H5 閾炬帴銆�
+
+## 娉ㄦ剰浜嬮」
+
+1. 鍚庣闇�**閲嶆柊缂栬瘧骞堕噸鍚�**鍚庢墠鎻愪緵鏂版帴鍙� `/mes/trace-config/qr-config`锛涢噸鍚墠鍓嶇璋冪敤杩斿洖 404锛宍traceBaseUrl` 涓虹┖锛屼簩缁寸爜浠嶆樉绀虹函鐮佸�硷紙闄嶇骇鍙敤锛屼笉褰卞搷鍘熸湁鍙嶆煡鍔熻兘锛夈��
+2. 浜岀淮鐮佸唴瀹圭殑 H5 閾炬帴涓� `mes.trace-base-url` 閰嶇疆寮虹浉鍏筹紝涓嶅悓鐜锛坙ocal/test/鐢熶骇锛夊湴鍧�涓嶅悓锛屽墠绔笉纭紪鐮併��
+3. 浜岀淮鐮侀珮瀹归敊绾у埆銆佸昂瀵哥瓑灞曠ず鏍峰紡涓嶅彉銆�
diff --git a/docs/sales_outbound_traceability_integration.md b/docs/sales_outbound_traceability_integration.md
new file mode 100644
index 0000000..629af17
--- /dev/null
+++ b/docs/sales_outbound_traceability_integration.md
@@ -0,0 +1,120 @@
+# 鍑哄簱娴侀�氱鐞� - 鍓嶇鑱旇皟鏂规
+
+## 娑夊強椤甸潰
+
+- 閿�鍞嚭搴撳崟鍒楄〃椤�
+- 閿�鍞嚭搴撳崟鏂板/缂栬緫椤�
+- 閿�鍞嚭搴撴嫞璐ч〉
+- 閿�鍞嚭搴撳崟璇︽儏椤�
+- 鎵樼洏鐮�/琚嬬爜娴佸悜杩借釜椤碉紙鍙湪閿�鍞嚭搴撴槑缁嗗尯鍩熷疄鐜帮級
+
+## 涓氬姟娴佺▼涓庢暟鎹甫鍏�
+
+1. CRM 瀹㈡埛浣滀负缁忛攢鍟嗕富鏁版嵁锛屽垱寤洪攢鍞嚭搴撳崟鏃堕�氳繃 `clientId` 閫夋嫨缁忛攢鍟嗐��
+2. 鍙戣揣閫氱煡鍗曠敓鎴愰攢鍞嚭搴撳崟鏃讹紝娌跨敤鍙戣揣閫氱煡鍗曠殑 `clientId`锛屼綔涓烘湰娆″嚭搴撶殑缁忛攢鍟嗐��
+3. 閿�鍞嚭搴撳崟鎻愪氦鍚庤繘鍏ュ緟鎷h揣鐘舵�侊紝鎵弿鎵樼洏鐮佹垨琚嬬爜璋冪敤鎵爜鎺ュ彛锛岀郴缁熻嚜鍔ㄨВ鏋愮爜绫诲瀷銆佸畾浣嶇敓浜ф壒娆″拰鍚堟牸搴撳瓨銆�
+4. 鎵爜鎴愬姛鍚庣敓鎴愰攢鍞嚭搴撴槑缁嗭紝璁板綍鎵樼洏鐮佹垨琚嬬爜銆佹壒娆°�佷粨搴撱�佸簱鍖恒�佸簱浣嶅拰鎷h揣鏁伴噺銆�
+5. 鎵ц鎷h揣鍚庡崰鐢ㄥ簱瀛橈紝鎵ц鏈�缁堝嚭搴撴椂鎵e噺搴撳瓨骞剁敓鎴愬簱瀛樹簨鍔℃祦姘淬��
+6. 鍑哄簱瀹屾垚鏃跺浐鍖栫粡閿�鍟嗗悕绉般�佸疄闄呭嚭搴撴椂闂村拰鎵ц鍑哄簱鎿嶄綔浜猴紝浣滀负鍘嗗彶娴佸悜蹇収銆�
+7. 鍓嶇鏌ヨ閿�鍞嚭搴撴槑缁嗘椂锛岄�氳繃鎵樼洏鐮佹垨琚嬬爜鏄庣粏鍏宠仈閿�鍞嚭搴撳崟锛屽嵆鍙弽鏌ュ伐鍘傘�佹壒娆°�佺粡閿�鍟嗗拰瀹為檯鍑哄簱淇℃伅銆�
+
+## API
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| POST | `/mes/wm/product-sales/create` | 鍒涘缓閿�鍞嚭搴撳崟 |
+| PUT | `/mes/wm/product-sales/update` | 淇敼鑽夌閿�鍞嚭搴撳崟 |
+| PUT | `/mes/wm/product-sales/submit` | 鎻愪氦閿�鍞嚭搴撳崟 |
+| POST | `/mes/wm/product-sales/scan` | 鎵弿鎵樼洏鐮佹垨琚嬬爜鐢熸垚鎷h揣鏄庣粏 |
+| PUT | `/mes/wm/product-sales/stock` | 鎵ц鎷h揣骞跺崰鐢ㄥ簱瀛� |
+| PUT | `/mes/wm/product-sales/shipping` | 濉啓鎵胯繍鍟嗗拰杩愯緭鍗曞彿 |
+| PUT | `/mes/wm/product-sales/finish` | 鎵ц鏈�缁堝嚭搴撱�佹墸鍑忓簱瀛樺苟鍥哄寲娴佸悜淇℃伅 |
+| GET | `/mes/wm/product-sales/page` | 鍒嗛〉鏌ヨ閿�鍞嚭搴撳崟锛屾敮鎸佸疄闄呭嚭搴撴椂闂磋寖鍥寸瓫閫� |
+| GET | `/mes/wm/product-sales/get` | 鏌ヨ閿�鍞嚭搴撳崟璇︽儏 |
+| GET | `/mes/wm/product-sales-detail/list-by-line` | 鏌ヨ鎸囧畾閿�鍞嚭搴撹鐨勬墭鐩�/琚嬬爜鏄庣粏 |
+| GET | `/mes/wm/transaction/page` | 鏌ヨ鍑哄簱搴撳瓨娴佹按 |
+
+### 鍒涘缓/淇敼璇锋眰鍙傛暟
+
+| 鍙傛暟 | 绫诲瀷 | 蹇呭~ | 璇存槑 |
+|------|------|------|------|
+| clientId | Long | 鏄� | CRM 瀹㈡埛缂栧彿锛屽悓鏃朵綔涓虹粡閿�鍟嗙紪鍙� |
+| salesDate | DateTime | 鏄� | 璁″垝鎴栦笟鍔″嚭搴撴棩鏈� |
+| noticeId | Long | 鍚� | 鏉ユ簮鍙戣揣閫氱煡鍗曠紪鍙� |
+| contactName | String | 鍚� | 鏀惰揣浜� |
+| contactTelephone | String | 鍚� | 鑱旂郴鐢佃瘽 |
+| contactAddress | String | 鍚� | 鏀惰揣鍦板潃 |
+| carrier | String | 鍚� | 鎵胯繍鍟� |
+| shippingNumber | String | 鍚� | 杩愯緭鍗曞彿 |
+
+### 鎵爜璇锋眰鍙傛暟
+
+| 鍙傛暟 | 绫诲瀷 | 蹇呭~ | 璇存槑 |
+|------|------|------|------|
+| salesId | Long | 鏄� | 閿�鍞嚭搴撳崟缂栧彿 |
+| scanContent | String | 鏄� | 鎵樼洏鐮併�佽鐮佹垨鍙В鏋愮殑杩芥函鐮� |
+| quantity | Decimal | 鍚� | 鏈鎷h揣鏁伴噺锛涗笉浼犳椂鎸夐攢鍞嚭搴撹鏁伴噺澶勭悊 |
+
+### 鎵爜鍝嶅簲閲嶇偣瀛楁
+
+| 瀛楁 | 绫诲瀷 | 璇存槑 |
+|------|------|------|
+| scanType | String | `PALLET` 鎵樼洏鐮侊紝`BAG` 琚嬬爜 |
+| scanContent | String | 鍘熷鎵弿鍐呭 |
+| itemId | Long | 鐗╂枡缂栧彿 |
+| batchId | Long | 浠撳簱鎵规缂栧彿 |
+| batchCode | String | 浠撳簱鎵规鍙� |
+| materialStockId | Long | 搴撳瓨璁板綍缂栧彿 |
+| warehouseId | Long | 浠撳簱缂栧彿 |
+| locationId | Long | 搴撳尯缂栧彿 |
+| areaId | Long | 搴撲綅缂栧彿 |
+| scanQuantity | Decimal | 鏈鎵弿鏁伴噺 |
+| alreadyScanned | Boolean | 鏄惁宸叉壂鎻忚繃 |
+| detailId | Long | 閿�鍞嚭搴撴槑缁嗙紪鍙� |
+
+### 閿�鍞嚭搴撳崟鍝嶅簲鏂板瀛楁
+
+| 瀛楁 | 绫诲瀷 | 璇存槑 |
+|------|------|------|
+| clientName | String | 缁忛攢鍟嗗悕绉板揩鐓э紱鍑哄簱瀹屾垚鏃跺浐鍖� |
+| outboundTime | DateTime | 瀹為檯鎵ц鍑哄簱鏃堕棿锛涙湭瀹屾垚鏃朵负绌� |
+| outboundUserId | Long | 鎵ц鏈�缁堝嚭搴撴搷浣滀汉鐨勭敤鎴风紪鍙凤紱鏈畬鎴愭椂涓虹┖ |
+| outboundUserName | String | 鎵ц鏈�缁堝嚭搴撴搷浣滀汉鐨勫悕绉帮紱鏈畬鎴愭垨鐢ㄦ埛宸插垹闄ゆ椂涓虹┖ |
+
+## 瀛楁灞曠ず瑙勫垯
+
+| 瀛楁 | 灞曠ず浣嶇疆 | 璇存槑 |
+|------|----------|------|
+| clientName | 鍑哄簱鍗曞垪琛ㄣ�佽鎯呫�佹祦鍚戣拷韪� | 灞曠ず鍑哄簱瀹屾垚鏃跺浐鍖栫殑缁忛攢鍟嗗悕绉帮紱鑽夌鍙睍绀� CRM 褰撳墠鍚嶇О |
+| outboundTime | 鍑哄簱鍗曞垪琛ㄣ�佽鎯� | 浠呭凡瀹屾垚鍗曟嵁灞曠ず瀹為檯鍑哄簱鏃堕棿 |
+| outboundUserId | 鍑哄簱鍗曡鎯� | 鎿嶄綔浜虹敤鎴风紪鍙� |
+| outboundUserName | 鍑哄簱鍗曞垪琛ㄣ�佽鎯呫�佹祦鍚戣拷韪� | 鍚庣宸查�氳繃绯荤粺鐢ㄦ埛鎺ュ彛杞崲涓烘搷浣滀汉鍚嶇О锛屽墠绔洿鎺ュ睍绀� |
+| scanType | 鎵爜缁撴灉銆佸嚭搴撴槑缁� | 鍖哄垎鎵樼洏鐮佸拰琚嬬爜 |
+| scanContent | 鎵爜缁撴灉銆佸嚭搴撴槑缁� | 灞曠ず瀹為檯鎵弿鐨勮拷婧爜 |
+| batchCode | 鍑哄簱鏄庣粏銆佹祦鍚戣拷韪� | 灞曠ず鐢熶骇鎵规鍙� |
+| warehouseName | 鍑哄簱鏄庣粏銆佹祦鍚戣拷韪� | 灞曠ず鍑哄簱浠撳簱 |
+| quantity | 鍑哄簱鏄庣粏銆佸簱瀛樻祦姘� | 灞曠ず鎷h揣鏁伴噺锛涙祦姘村嚭搴撴暟閲忎负璐熸暟 |
+| bizCode | 搴撳瓨娴佹按 | 鍏宠仈閿�鍞嚭搴撳崟鍙� |
+
+## 涓氬姟瑙勫垯璇存槑
+
+| 鍦烘櫙 | 瑙勫垯 |
+|------|------|
+| 缁忛攢鍟嗘潵婧� | `clientId` 澶嶇敤 CRM 瀹㈡埛缂栧彿锛屼笉鏂板缓閲嶅鐨勭粡閿�鍟嗕富鏁版嵁 |
+| 鎵樼洏鐮佹壂鎻� | 鎵樼洏蹇呴』宸茬粦瀹氱敓浜ф壒娆★紝鍚﹀垯涓嶅厑璁搁攢鍞嚭搴� |
+| 琚嬬爜鎵弿 | 琚嬬爜蹇呴』鑳藉畾浣嶇敓浜ф壒娆″拰鍚堟牸搴撳瓨 |
+| 閲嶅鎵弿 | 杩斿洖 `alreadyScanned=true`锛屽墠绔彁绀哄凡鎵弿锛屼笉閲嶅鐢熸垚鏄庣粏 |
+| 搴撳瓨涓嶈冻 | 鎵爜鎴栨嫞璐ф牎楠屽け璐ユ椂锛屼笉鐢熸垚鍑哄簱鏄庣粏鎴栧簱瀛樺崰鐢� |
+| 鎷h揣 | 鎷h揣闃舵鍙崰鐢ㄥ簱瀛橈紝涓嶅噺灏戝疄闄呭湪搴撴暟閲� |
+| 鏈�缁堝嚭搴� | 浠呭緟鍑哄簱鐘舵�佸厑璁告墽琛岋紝鎴愬姛鍚庢墸鍑忓簱瀛樺苟鍐欏叆搴撳瓨娴佹按 |
+| 鍑哄簱蹇収 | 鏈�缁堝嚭搴撴椂淇濆瓨缁忛攢鍟嗗悕绉般�佸疄闄呭嚭搴撴椂闂村拰鎿嶄綔浜虹紪鍙凤紝鍚庣画 CRM 鏀瑰悕涓嶅奖鍝嶅巻鍙叉祦鍚� |
+| 娴佸悜杩借釜 | 閫氳繃閿�鍞嚭搴撴槑缁嗕腑鐨� `palletCodeId` 鎴� `bagCodeId` 鍙嶆煡鍑哄簱鍗曘�佹壒娆°�佷粨搴撳拰缁忛攢鍟� |
+| 鍙栨秷鍗曟嵁 | 鏈畬鎴愬崟鎹彲鍙栨秷骞堕噴鏀惧簱瀛樺崰鐢紱宸插畬鎴愬崟鎹笉鍙彇娑� |
+
+## 娉ㄦ剰浜嬮」
+
+- 閮ㄧ讲鍓嶉渶鎵ц `sql/mysql/mes_wm_sales_outbound_traceability.sql`锛屼负閿�鍞嚭搴撲富琛ㄥ鍔犳祦鍚戝揩鐓у瓧娈碉紱鑴氭湰搴斿湪纭鐩爣鏁版嵁搴撳悗閫愭潯鎵ц銆�
+- 璇ヨ縼绉昏剼鏈笉鍖呭惈 `tenant_id` 瀛楁锛岀鍚堝綋鍓嶉」鐩暟鎹簱瑙勮寖銆�
+- 褰撳墠浠g爜璁板綍鐨勬槸鎿嶄綔浜虹敤鎴风紪鍙凤紝鍓嶇搴旈�氳繃绯荤粺鐢ㄦ埛淇℃伅鎺ュ彛鏄剧ず鎿嶄綔浜哄悕绉般��
+- `/mes/wm/product-sales/finish` 鏄疄闄呮墸搴撳瓨鍜屼骇鐢熷簱瀛樻祦姘寸殑鏃剁偣锛屾壂鐮佹垚鍔熶笉浠h〃宸茬粡瀹屾垚鍑哄簱銆�
+- 鏌ヨ鎵樼洏鐮佹垨琚嬬爜娴佸悜鏃讹紝搴斾紭鍏堜娇鐢ㄥ嚭搴撴槑缁嗕腑鐨勭爜缂栧彿鍙婇攢鍞嚭搴撳崟鐘舵�佽繃婊わ紝閬垮厤灏嗗凡鍙栨秷鍗曟嵁浣滀负鏈夋晥娴佸悜銆�
diff --git a/sql/mysql/mes_dealer_menu_init.sql b/sql/mysql/mes_dealer_menu_init.sql
new file mode 100644
index 0000000..7ef7436
--- /dev/null
+++ b/sql/mysql/mes_dealer_menu_init.sql
@@ -0,0 +1,67 @@
+-- MES 缁忛攢鍟嗙鐞嗚彍鍗曞垵濮嬪寲
+-- 缁忛攢鍟嗗鐢� CRM 瀹㈡埛涓绘暟鎹紝涓嶆柊澧炰笟鍔¤〃鍜屽悗绔潈闄愩��
+-- 鎵ц鍓嶈纭褰撳墠鏁版嵁搴撲负椤圭洰瀹為檯涓氬姟搴撱��
+
+SET @dealer_menu_id = (SELECT id FROM system_menu
+ WHERE parent_id = 5780 AND path = 'dealer' AND deleted = b'0'
+ ORDER BY id LIMIT 1);
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6740, '缁忛攢鍟嗙鐞�', '', 2, 11, 5780, 'dealer', 'ep:user', 'crm/customer/index', 'MesWmDealer',
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE @dealer_menu_id IS NULL
+ AND NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6740);
+
+SET @dealer_menu_id = COALESCE(@dealer_menu_id, (SELECT id FROM system_menu WHERE id = 6740 AND deleted = b'0'));
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6741, '鏌ヨ缁忛攢鍟�', 'crm:customer:query', 3, 1, @dealer_menu_id, '', '', '', NULL,
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE EXISTS (SELECT 1 FROM system_menu WHERE id = @dealer_menu_id AND deleted = b'0')
+ AND NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6741);
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6742, '鍒涘缓缁忛攢鍟�', 'crm:customer:create', 3, 2, @dealer_menu_id, '', '', '', NULL,
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE EXISTS (SELECT 1 FROM system_menu WHERE id = @dealer_menu_id AND deleted = b'0')
+ AND NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6742);
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6743, '鏇存柊缁忛攢鍟�', 'crm:customer:update', 3, 3, @dealer_menu_id, '', '', '', NULL,
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE EXISTS (SELECT 1 FROM system_menu WHERE id = @dealer_menu_id AND deleted = b'0')
+ AND NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6743);
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6744, '鍒犻櫎缁忛攢鍟�', 'crm:customer:delete', 3, 4, @dealer_menu_id, '', '', '', NULL,
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE EXISTS (SELECT 1 FROM system_menu WHERE id = @dealer_menu_id AND deleted = b'0')
+ AND NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6744);
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6745, '瀵煎嚭缁忛攢鍟�', 'crm:customer:export', 3, 5, @dealer_menu_id, '', '', '', NULL,
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE EXISTS (SELECT 1 FROM system_menu WHERE id = @dealer_menu_id AND deleted = b'0')
+ AND NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6745);
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6746, '瀵煎叆缁忛攢鍟�', 'crm:customer:import', 3, 6, @dealer_menu_id, '', '', '', NULL,
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE EXISTS (SELECT 1 FROM system_menu WHERE id = @dealer_menu_id AND deleted = b'0')
+ AND NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6746);
+
+SET @dealer_menu_id = NULL;
diff --git a/sql/mysql/mes_trace_anti_cross_region_init.sql b/sql/mysql/mes_trace_anti_cross_region_init.sql
new file mode 100644
index 0000000..0c56649
--- /dev/null
+++ b/sql/mysql/mes_trace_anti_cross_region_init.sql
@@ -0,0 +1,82 @@
+-- 闃蹭吉闃茬獪璐х鐞嗭細绐滆揣棰勮 + 鏁版嵁瀹屾暣鎬ф牎楠� 寤鸿〃鑴氭湰锛堜笉浣跨敤 tenant_id锛�
+-- 鎵ц鍓嶈纭鐩爣鏁版嵁搴撲负椤圭洰瀹為檯涓氬姟搴擄紝骞堕�愭潯鎵ц銆�
+
+-- 1. 闃茬獪璐ц鍒欓厤缃〃锛坘ey-value 椋庢牸锛岄缃垽瀹氱矑搴﹂厤缃級
+CREATE TABLE IF NOT EXISTS mes_trace_anti_config (
+ id BIGINT NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+ config_key VARCHAR(64) NOT NULL COMMENT '閰嶇疆椤筀ey',
+ config_value VARCHAR(255) NOT NULL COMMENT '閰嶇疆鍊�',
+ remark VARCHAR(255) DEFAULT NULL COMMENT '閰嶇疆璇存槑',
+ create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+ update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+ creator VARCHAR(64) DEFAULT NULL COMMENT '鍒涘缓鑰�',
+ updater VARCHAR(64) DEFAULT NULL COMMENT '鏇存柊鑰�',
+ deleted BIT(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+ PRIMARY KEY (id),
+ KEY idx_anti_config_key (config_key)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='闃茬獪璐ц鍒欓厤缃�';
+
+-- 棰勭疆鍒ゅ畾绮掑害锛歅ROVINCE 璺ㄧ渷 / CITY 璺ㄥ競
+INSERT INTO mes_trace_anti_config (config_key, config_value, remark)
+SELECT 'warning_level', 'PROVINCE', '绐滆揣鍒ゅ畾绮掑害锛歅ROVINCE 璺ㄧ渷 / CITY 璺ㄥ競'
+WHERE NOT EXISTS (SELECT 1 FROM mes_trace_anti_config WHERE config_key = 'warning_level' AND deleted = b'0');
+
+-- 2. 绐滆揣棰勮璁板綍琛�
+CREATE TABLE IF NOT EXISTS mes_trace_cross_region_warning (
+ id BIGINT NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+ warning_no VARCHAR(64) DEFAULT NULL COMMENT '棰勮缂栧彿',
+ bag_code_id BIGINT DEFAULT NULL COMMENT '琚嬬爜缂栧彿',
+ bag_code VARCHAR(64) DEFAULT NULL COMMENT '琚嬬爜',
+ pallet_code_id BIGINT DEFAULT NULL COMMENT '鎵樼洏鐮佺紪鍙�',
+ pallet_code VARCHAR(64) DEFAULT NULL COMMENT '鎵樼洏鐮�',
+ batch_id BIGINT DEFAULT NULL COMMENT '鐢熶骇鎵规缂栧彿',
+ batch_code VARCHAR(64) DEFAULT NULL COMMENT '鎵规鍙�',
+ item_id BIGINT DEFAULT NULL COMMENT '鐗╂枡缂栧彿',
+ item_code VARCHAR(64) DEFAULT NULL COMMENT '鐗╂枡缂栫爜',
+ item_name VARCHAR(128) DEFAULT NULL COMMENT '鐗╂枡鍚嶇О',
+ sales_id BIGINT DEFAULT NULL COMMENT '閿�鍞嚭搴撳崟缂栧彿',
+ sales_code VARCHAR(64) DEFAULT NULL COMMENT '鍑哄簱鍗曞彿',
+ client_id BIGINT DEFAULT NULL COMMENT '缁忛攢鍟嗙紪鍙�',
+ client_name VARCHAR(128) DEFAULT NULL COMMENT '缁忛攢鍟嗗悕绉�',
+ dealer_province VARCHAR(64) DEFAULT NULL COMMENT '缁忛攢鍟嗙渷浠�',
+ dealer_city VARCHAR(64) DEFAULT NULL COMMENT '缁忛攢鍟嗗煄甯�',
+ scan_province VARCHAR(64) DEFAULT NULL COMMENT '鎵爜鐪佷唤',
+ scan_city VARCHAR(64) DEFAULT NULL COMMENT '鎵爜鍩庡競',
+ warning_type VARCHAR(32) DEFAULT NULL COMMENT '棰勮绫诲瀷锛欳ROSS_PROVINCE / CROSS_CITY',
+ scan_event_id BIGINT DEFAULT NULL COMMENT '鍏宠仈娑堣垂鑰呮壂鐮佷簨浠剁紪鍙�',
+ status TINYINT NOT NULL DEFAULT 10 COMMENT '鐘舵�侊細10 寰呭鐞� / 20 宸插鐞� / 30 璇姤',
+ handle_user_id BIGINT DEFAULT NULL COMMENT '澶勭悊浜虹紪鍙�',
+ handle_time DATETIME DEFAULT NULL COMMENT '澶勭悊鏃堕棿',
+ handle_remark VARCHAR(255) DEFAULT NULL COMMENT '澶勭悊澶囨敞',
+ event_time DATETIME NOT NULL COMMENT '棰勮浜х敓鏃堕棿',
+ create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+ update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+ creator VARCHAR(64) DEFAULT NULL COMMENT '鍒涘缓鑰�',
+ updater VARCHAR(64) DEFAULT NULL COMMENT '鏇存柊鑰�',
+ deleted BIT(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+ PRIMARY KEY (id),
+ KEY idx_cross_region_status (status),
+ KEY idx_cross_region_batch (batch_id),
+ KEY idx_cross_region_bag (bag_code_id),
+ KEY idx_cross_region_sales (sales_id),
+ KEY idx_cross_region_event_time (event_time),
+ KEY idx_cross_region_scan_province (scan_province)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='绐滆揣棰勮璁板綍';
+
+-- 3. 鏁版嵁瀹屾暣鎬ф牎楠岃褰曡〃
+CREATE TABLE IF NOT EXISTS mes_trace_integrity_record (
+ id BIGINT NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+ biz_type VARCHAR(32) NOT NULL COMMENT '涓氬姟绫诲瀷锛欱ATCH 鎵规 / SALES 閿�鍞嚭搴� / SCAN 娑堣垂鑰呮壂鐮�',
+ biz_id BIGINT NOT NULL COMMENT '涓氬姟璁板綍缂栧彿',
+ biz_code VARCHAR(64) DEFAULT NULL COMMENT '涓氬姟缂栫爜锛堟壒娆″彿/鍑哄簱鍗曞彿/杩芥函鐮侊級',
+ content_hash CHAR(64) NOT NULL COMMENT '鍐呭鎽樿 SHA-256',
+ event_time DATETIME NOT NULL COMMENT '鎽樿鐢熸垚鏃堕棿',
+ create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+ update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+ creator VARCHAR(64) DEFAULT NULL COMMENT '鍒涘缓鑰�',
+ updater VARCHAR(64) DEFAULT NULL COMMENT '鏇存柊鑰�',
+ deleted BIT(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+ PRIMARY KEY (id),
+ UNIQUE KEY uk_integrity_biz (biz_type, biz_id),
+ KEY idx_integrity_event_time (event_time)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='鏁版嵁瀹屾暣鎬ф牎楠岃褰�';
diff --git a/sql/mysql/mes_trace_anti_module_menu.sql b/sql/mysql/mes_trace_anti_module_menu.sql
new file mode 100644
index 0000000..ff6e884
--- /dev/null
+++ b/sql/mysql/mes_trace_anti_module_menu.sql
@@ -0,0 +1,66 @@
+-- 闃蹭吉闃茬獪璐х鐞嗚彍鍗曚笌鎸夐挳鏉冮檺鍒濆鍖�
+-- 鐙珛涓�绾ц彍鍗曪紙parent_id=0锛宼ype=1锛夛紝閲囩敤 WHERE NOT EXISTS 骞傜瓑鎻掑叆銆�
+-- 鎵ц鍓嶈纭鐩爣鏁版嵁搴撲负椤圭洰瀹為檯涓氬姟搴擄紝骞堕�愭潯鎵ц銆�
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6070, '闃蹭吉闃茬獪璐х鐞�', '', 1, 21, 0, 'trace-anti', 'ep:warning', '', '',
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6070 AND deleted = b'0');
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6071, '绐滆揣棰勮', '', 2, 1, 6070, 'cross-region', 'ep:location-danger', 'mes/trace/crossregion/index', 'MesTraceCrossRegion',
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6071 AND deleted = b'0');
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6072, '绐滆揣棰勮鏌ヨ', 'mes:trace-cross-region:query', 3, 1, 6071, '', '', '', '',
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6072 AND deleted = b'0');
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6073, '绐滆揣棰勮澶勭悊', 'mes:trace-cross-region:handle', 3, 2, 6071, '', '', '', '',
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6073 AND deleted = b'0');
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6074, '鎵爜鍦扮悊鍒嗗竷', '', 2, 2, 6070, 'scan-distribution', 'ep:map-location', 'mes/trace-consumer-scan/index', 'MesConsumerScanDistribution',
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6074 AND deleted = b'0');
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6075, '鎵爜鍒嗗竷鏌ヨ', 'mes:trace-consumer-scan:query', 3, 1, 6074, '', '', '', '',
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6075 AND deleted = b'0');
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6076, '鏁版嵁瀹屾暣鎬ф牎楠�', '', 2, 3, 6070, 'integrity', 'ep:lock', 'mes/trace/integrity/index', 'MesTraceIntegrity',
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6076 AND deleted = b'0');
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6077, '瀹屾暣鎬ц褰曟煡璇�', 'mes:trace-integrity:query', 3, 1, 6076, '', '', '', '',
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6077 AND deleted = b'0');
+
+INSERT INTO system_menu
+ (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+SELECT 6078, '鏁版嵁瀹屾暣鎬ф牎楠�', 'mes:trace-integrity:verify', 3, 2, 6076, '', '', '', '',
+ 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
+WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 6078 AND deleted = b'0');
diff --git a/sql/mysql/mes_trace_consumer_scan_event.sql b/sql/mysql/mes_trace_consumer_scan_event.sql
new file mode 100644
index 0000000..03f65b8
--- /dev/null
+++ b/sql/mysql/mes_trace_consumer_scan_event.sql
@@ -0,0 +1,28 @@
+-- 娑堣垂鑰呮壂鐮佽闂簨浠惰〃锛堜笉浣跨敤 tenant_id锛�
+CREATE TABLE IF NOT EXISTS mes_trace_consumer_scan_event (
+ id BIGINT NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+ trace_code VARCHAR(255) NOT NULL COMMENT '鎵爜鍘熷鍐呭锛堝繀瑕佹椂鎴柇锛�',
+ normalized_code VARCHAR(128) DEFAULT NULL COMMENT '瑙f瀽鍚庣殑杩芥函鐮�',
+ source_type VARCHAR(32) DEFAULT NULL COMMENT '鍏ュ彛绫诲瀷锛欱AG/PALLET/BATCH',
+ channel VARCHAR(32) DEFAULT NULL COMMENT '鎵爜鍏ュ彛娓犻亾锛氬井淇�/鏀粯瀹�/娴忚鍣�',
+ province VARCHAR(64) DEFAULT NULL COMMENT '鐪佷唤锛圛P 褰掑睘鍦帮級',
+ city VARCHAR(64) DEFAULT NULL COMMENT '鍩庡競锛圛P 褰掑睘鍦帮級',
+ batch_id BIGINT DEFAULT NULL COMMENT '鐢熶骇鎵规缂栧彿',
+ success TINYINT(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鏌ヨ鎴愬姛',
+ error_code VARCHAR(64) DEFAULT NULL COMMENT '澶辫触缂栫爜',
+ ip_hash CHAR(64) DEFAULT NULL COMMENT '瀹㈡埛绔� IP SHA-256 鎽樿',
+ user_agent_hash CHAR(64) DEFAULT NULL COMMENT 'User-Agent SHA-256 鎽樿',
+ event_time DATETIME NOT NULL COMMENT '璁块棶鏃堕棿',
+ create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+ update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+ creator VARCHAR(64) DEFAULT NULL COMMENT '鍒涘缓鑰�',
+ updater VARCHAR(64) DEFAULT NULL COMMENT '鏇存柊鑰�',
+ deleted BIT(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+ PRIMARY KEY (id),
+ KEY idx_trace_consumer_event_time (event_time),
+ KEY idx_trace_consumer_batch_id (batch_id),
+ KEY idx_trace_consumer_success (success),
+ KEY idx_trace_consumer_source_type (source_type),
+ KEY idx_trace_consumer_channel (channel),
+ KEY idx_trace_consumer_province (province)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='娑堣垂鑰呮壂鐮佽闂簨浠�';
diff --git a/sql/mysql/mes_trace_consumer_scan_menu.sql b/sql/mysql/mes_trace_consumer_scan_menu.sql
new file mode 100644
index 0000000..4cc2cdc
--- /dev/null
+++ b/sql/mysql/mes_trace_consumer_scan_menu.sql
@@ -0,0 +1,20 @@
+-- =============================================
+-- MES 娑堣垂鑰呮壂鐮佽闂粺璁� 鑿滃崟鍒濆鍖�
+-- 鏂板缓椤剁骇鐩綍銆屾函婧愬垎鏋愩�嶏紝鍦ㄥ叾涓嬫寕銆屾秷璐硅�呮壂鐮佺粺璁°�嶉〉闈�
+-- 椤甸潰璺敱 /trace/consumer-scan/index锛屾潈闄愭爣璇� mes:trace-consumer-scan:query
+-- 绠$悊绔帴鍙h矾寰� /mes/trace-consumer-scan/*
+-- 鐩爣搴擄細mom-thzy锛坅pplication-local.yaml 榛樿搴擄級
+-- =============================================
+
+-- 椤剁骇鐩綍锛氭函婧愬垎鏋愶紙type=1 鐩綍锛宲arent_id=0锛宲ath=/trace锛�
+INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
+VALUES (602634, '婧簮鍒嗘瀽', '', 1, 24, 0, '/trace', 'ep:data-analysis', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');
+
+-- 娑堣垂鑰呮壂鐮佺粺璁★紙浜岀骇椤甸潰锛屾寕鍦ㄣ�屾函婧愬垎鏋愩�嶇洰褰曚笅锛宲ath 涓嶅惈鐖剁骇鍓嶇紑锛�
+INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
+VALUES (602632, '娑堣垂鑰呮壂鐮佺粺璁�', '', 2, 1, 602634, 'consumer-scan/index', 'ep:data-line', 'mes/trace-consumer-scan/index', 'MesConsumerScanStatistics', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');
+
+-- 娑堣垂鑰呮壂鐮佺粺璁� - 鎸夐挳鏉冮檺
+INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
+VALUES
+(602633, '娑堣垂鑰呮壂鐮佺粺璁℃煡璇�', 'mes:trace-consumer-scan:query', 3, 1, 602632, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');
diff --git a/sql/mysql/mes_wm_sales_outbound_traceability.sql b/sql/mysql/mes_wm_sales_outbound_traceability.sql
index 8f707d1..2ae437f 100644
--- a/sql/mysql/mes_wm_sales_outbound_traceability.sql
+++ b/sql/mysql/mes_wm_sales_outbound_traceability.sql
@@ -1,6 +1,15 @@
-- 鍑哄簱娴侀�氱鐞嗭細閿�鍞嚭搴撲笌琚嬬爜/鎵樼洏鐮佸叧鑱旓紙鏃犵鎴峰瓧娈碉級
-- 鎵ц鍓嶈纭鐩爣鏁版嵁搴撲负 mom-thzy锛屽苟閫愭潯鎵ц銆�
+ALTER TABLE mes_wm_product_sales
+ ADD COLUMN client_name varchar(255) DEFAULT NULL COMMENT '缁忛攢鍟嗗悕绉板揩鐓�' AFTER client_id;
+ALTER TABLE mes_wm_product_sales
+ ADD COLUMN outbound_time datetime DEFAULT NULL COMMENT '瀹為檯鍑哄簱鏃堕棿' AFTER sales_date;
+ALTER TABLE mes_wm_product_sales
+ ADD COLUMN outbound_user_id bigint DEFAULT NULL COMMENT '鎵ц鍑哄簱鎿嶄綔浜篒D' AFTER outbound_time;
+ALTER TABLE mes_wm_product_sales
+ ADD INDEX idx_product_sales_outbound_time (outbound_time);
+
ALTER TABLE mes_wm_product_sales_detail
ADD COLUMN bag_code_id bigint DEFAULT NULL COMMENT '琚嬬爜缂栧彿' AFTER area_id;
ALTER TABLE mes_wm_product_sales_detail
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/MesTraceConfigController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/MesTraceConfigController.java
new file mode 100644
index 0000000..60e075d
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/MesTraceConfigController.java
@@ -0,0 +1,38 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.vo.MesTraceQrConfigRespVO;
+import cn.iocoder.yudao.module.mes.framework.config.MesProperties;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+/**
+ * 绠$悊鍚庡彴 - MES 婧簮閰嶇疆
+ * <p>
+ * 鍚戠鐞嗙鍓嶇鏆撮湶婧簮 H5 椤甸潰鍩虹鍦板潃锛岀敤浜�"鏌ョ湅浜岀淮鐮�"棰勮/涓嬭浇涓庢墦鍗版爣绛句繚鎸佷竴鑷寸殑浜岀淮鐮佸唴瀹广��
+ */
+@Tag(name = "绠$悊鍚庡彴 - MES 婧簮閰嶇疆")
+@RestController
+@RequestMapping("/mes/trace-config")
+@Validated
+public class MesTraceConfigController {
+
+ @Resource
+ private MesProperties mesProperties;
+
+ @GetMapping("/qr-config")
+ @Operation(summary = "鑾峰緱婧簮 H5 椤甸潰鍩虹鍦板潃锛堜簩缁寸爜鍐呭鍓嶇紑锛�")
+ public CommonResult<MesTraceQrConfigRespVO> getQrConfig() {
+ MesTraceQrConfigRespVO respVO = new MesTraceQrConfigRespVO();
+ respVO.setTraceBaseUrl(mesProperties.getTraceBaseUrl());
+ return success(respVO);
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/MesTraceConsumerScanController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/MesTraceConsumerScanController.java
new file mode 100644
index 0000000..e024b00
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/MesTraceConsumerScanController.java
@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.consumer;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanDistributionReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanDistributionRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanSummaryRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanTrendRespVO;
+import cn.iocoder.yudao.module.mes.service.trace.consumer.MesTraceConsumerScanStatisticsService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Tag(name = "绠$悊鍚庡彴 - MES 娑堣垂鑰呮壂鐮佽闂粺璁�")
+@RestController
+@RequestMapping("/mes/trace-consumer-scan")
+@Validated
+public class MesTraceConsumerScanController {
+
+ @Resource
+ private MesTraceConsumerScanStatisticsService statisticsService;
+
+ @GetMapping("/summary")
+ @Operation(summary = "娑堣垂鑰呮壂鐮佽闂眹鎬�")
+ @PreAuthorize("@ss.hasPermission('mes:trace-consumer-scan:query')")
+ public CommonResult<MesTraceConsumerScanSummaryRespVO> getSummary(
+ @RequestParam(value = "startTime", required = false) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) LocalDateTime startTime,
+ @RequestParam(value = "endTime", required = false) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) LocalDateTime endTime) {
+ return success(statisticsService.getSummary(startTime, endTime));
+ }
+
+ @GetMapping("/trend")
+ @Operation(summary = "娑堣垂鑰呮壂鐮佽闂秼鍔�")
+ @PreAuthorize("@ss.hasPermission('mes:trace-consumer-scan:query')")
+ public CommonResult<List<MesTraceConsumerScanTrendRespVO>> getTrend(
+ @RequestParam(value = "startTime", required = false) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) LocalDateTime startTime,
+ @RequestParam(value = "endTime", required = false) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) LocalDateTime endTime) {
+ return success(statisticsService.getTrend(startTime, endTime));
+ }
+
+ @GetMapping("/distribution")
+ @Operation(summary = "娑堣垂鑰呮壂鐮佽闂垎甯�")
+ @PreAuthorize("@ss.hasPermission('mes:trace-consumer-scan:query')")
+ public CommonResult<List<MesTraceConsumerScanDistributionRespVO>> getDistribution(
+ @Valid MesTraceConsumerScanDistributionReqVO reqVO) {
+ return success(statisticsService.getDistribution(reqVO));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanDistributionReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanDistributionReqVO.java
new file mode 100644
index 0000000..c338828
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanDistributionReqVO.java
@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Data
+@Schema(description = "娑堣垂鑰呮壂鐮佽闂垎甯冩煡璇㈠弬鏁�")
+public class MesTraceConsumerScanDistributionReqVO {
+
+ @Schema(description = "鍒嗙粍缁村害锛歴ourceType/success/channel/province/city/batchId", example = "sourceType")
+ @NotBlank(message = "鍒嗙粍缁村害涓嶈兘涓虹┖")
+ private String groupBy;
+
+ @Schema(description = "寮�濮嬫椂闂�")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime startTime;
+
+ @Schema(description = "缁撴潫鏃堕棿")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime endTime;
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanDistributionRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanDistributionRespVO.java
new file mode 100644
index 0000000..f066c43
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanDistributionRespVO.java
@@ -0,0 +1,11 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(description = "娑堣垂鑰呮壂鐮佽闂垎甯�")
+public class MesTraceConsumerScanDistributionRespVO {
+ private String name;
+ private Long count;
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanSummaryRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanSummaryRespVO.java
new file mode 100644
index 0000000..f30cccc
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanSummaryRespVO.java
@@ -0,0 +1,13 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(description = "娑堣垂鑰呮壂鐮佽闂眹鎬�")
+public class MesTraceConsumerScanSummaryRespVO {
+ private Long total;
+ private Long success;
+ private Long failed;
+ private Long uniqueBatchCount;
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanTrendRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanTrendRespVO.java
new file mode 100644
index 0000000..11725e2
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/consumer/vo/MesTraceConsumerScanTrendRespVO.java
@@ -0,0 +1,13 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(description = "娑堣垂鑰呮壂鐮佽闂秼鍔�")
+public class MesTraceConsumerScanTrendRespVO {
+ private String date;
+ private Long total;
+ private Long success;
+ private Long failed;
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/MesTraceCrossRegionController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/MesTraceCrossRegionController.java
new file mode 100644
index 0000000..6f36187
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/MesTraceCrossRegionController.java
@@ -0,0 +1,89 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceAntiConfigRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionHandleReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionStatisticsReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionStatisticsRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionSummaryRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionWarningPageReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionWarningRespVO;
+import cn.iocoder.yudao.module.mes.service.trace.crossregion.MesTraceCrossRegionService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+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;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Tag(name = "绠$悊鍚庡彴 - MES 绐滆揣棰勮")
+@RestController
+@RequestMapping("/mes/trace-cross-region")
+@Validated
+public class MesTraceCrossRegionController {
+
+ @Resource
+ private MesTraceCrossRegionService crossRegionService;
+
+ @GetMapping("/page")
+ @Operation(summary = "鑾峰緱绐滆揣棰勮鍒嗛〉")
+ @PreAuthorize("@ss.hasPermission('mes:trace-cross-region:query')")
+ public CommonResult<PageResult<MesTraceCrossRegionWarningRespVO>> getWarningPage(@Valid MesTraceCrossRegionWarningPageReqVO reqVO) {
+ return success(crossRegionService.getWarningPage(reqVO));
+ }
+
+ @PutMapping("/handle")
+ @Operation(summary = "澶勭悊绐滆揣棰勮")
+ @PreAuthorize("@ss.hasPermission('mes:trace-cross-region:handle')")
+ public CommonResult<Boolean> handleWarning(@Valid @RequestBody MesTraceCrossRegionHandleReqVO reqVO) {
+ crossRegionService.handleWarning(reqVO);
+ return success(true);
+ }
+
+ @GetMapping("/summary")
+ @Operation(summary = "鑾峰緱绐滆揣棰勮姹囨��")
+ @PreAuthorize("@ss.hasPermission('mes:trace-cross-region:query')")
+ public CommonResult<MesTraceCrossRegionSummaryRespVO> getWarningSummary(
+ @RequestParam(value = "startTime", required = false) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) LocalDateTime startTime,
+ @RequestParam(value = "endTime", required = false) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) LocalDateTime endTime) {
+ return success(crossRegionService.getWarningSummary(startTime, endTime));
+ }
+
+ @GetMapping("/statistics")
+ @Operation(summary = "鑾峰緱绐滆揣棰勮鍒嗗竷缁熻")
+ @PreAuthorize("@ss.hasPermission('mes:trace-cross-region:query')")
+ public CommonResult<List<MesTraceCrossRegionStatisticsRespVO>> getWarningStatistics(@Valid MesTraceCrossRegionStatisticsReqVO reqVO) {
+ return success(crossRegionService.getWarningStatistics(reqVO));
+ }
+
+ @GetMapping("/config")
+ @Operation(summary = "鑾峰緱闃茬獪璐ц鍒欓厤缃�")
+ @PreAuthorize("@ss.hasPermission('mes:trace-cross-region:query')")
+ public CommonResult<MesTraceAntiConfigRespVO> getConfig() {
+ return success(crossRegionService.getConfig());
+ }
+
+ @PutMapping("/config")
+ @Operation(summary = "鏇存柊闃茬獪璐ц鍒欓厤缃�")
+ @PreAuthorize("@ss.hasPermission('mes:trace-cross-region:handle')")
+ public CommonResult<Boolean> updateConfig(@RequestParam("warningLevel") @Parameter(description = "鍒ゅ畾绮掑害锛歅ROVINCE 璺ㄧ渷 / CITY 璺ㄥ競", example = "PROVINCE") String warningLevel) {
+ crossRegionService.updateConfig(warningLevel);
+ return success(true);
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceAntiConfigRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceAntiConfigRespVO.java
new file mode 100644
index 0000000..7a5880b
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceAntiConfigRespVO.java
@@ -0,0 +1,16 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "绠$悊鍚庡彴 - 闃茬獪璐ц鍒欓厤缃� Response VO")
+@Data
+public class MesTraceAntiConfigRespVO {
+
+ @Schema(description = "鍒ゅ畾绮掑害锛歅ROVINCE 璺ㄧ渷 / CITY 璺ㄥ競", example = "PROVINCE")
+ private String warningLevel;
+
+ @Schema(description = "閰嶇疆璇存槑", example = "绐滆揣鍒ゅ畾绮掑害锛歅ROVINCE 璺ㄧ渷 / CITY 璺ㄥ競")
+ private String remark;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionHandleReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionHandleReqVO.java
new file mode 100644
index 0000000..62242be
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionHandleReqVO.java
@@ -0,0 +1,22 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Schema(description = "绠$悊鍚庡彴 - 绐滆揣棰勮澶勭悊 Request VO")
+@Data
+public class MesTraceCrossRegionHandleReqVO {
+
+ @Schema(description = "棰勮缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+ @NotNull(message = "棰勮缂栧彿涓嶈兘涓虹┖")
+ private Long id;
+
+ @Schema(description = "澶勭悊鐘舵�侊細20 宸插鐞� / 30 璇姤", requiredMode = Schema.RequiredMode.REQUIRED, example = "20")
+ @NotNull(message = "澶勭悊鐘舵�佷笉鑳戒负绌�")
+ private Integer status;
+
+ @Schema(description = "澶勭悊澶囨敞", example = "纭涓虹墿娴佷腑杞紝闈炵獪璐�")
+ private String handleRemark;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionStatisticsReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionStatisticsReqVO.java
new file mode 100644
index 0000000..28d28ea
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionStatisticsReqVO.java
@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "绠$悊鍚庡彴 - 绐滆揣棰勮鍒嗗竷缁熻 Request VO")
+@Data
+public class MesTraceCrossRegionStatisticsReqVO {
+
+ @Schema(description = "鍒嗙粍缁村害锛歴canProvince/scanCity/clientId/itemId/batchId", example = "scanProvince")
+ @NotBlank(message = "鍒嗙粍缁村害涓嶈兘涓虹┖")
+ private String groupBy;
+
+ @Schema(description = "寮�濮嬫椂闂�")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime startTime;
+
+ @Schema(description = "缁撴潫鏃堕棿")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime endTime;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionStatisticsRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionStatisticsRespVO.java
new file mode 100644
index 0000000..ea4910c
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionStatisticsRespVO.java
@@ -0,0 +1,16 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "绠$悊鍚庡彴 - 绐滆揣棰勮鍒嗗竷缁熻 Response VO")
+@Data
+public class MesTraceCrossRegionStatisticsRespVO {
+
+ @Schema(description = "鍒嗙粍鍚嶇О", example = "骞夸笢鐪�")
+ private String name;
+
+ @Schema(description = "棰勮鏁伴噺", example = "30")
+ private Long count;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionSummaryRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionSummaryRespVO.java
new file mode 100644
index 0000000..8fd1b16
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionSummaryRespVO.java
@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "绠$悊鍚庡彴 - 绐滆揣棰勮姹囨�� Response VO")
+@Data
+public class MesTraceCrossRegionSummaryRespVO {
+
+ @Schema(description = "棰勮鎬绘暟", example = "100")
+ private Long total;
+
+ @Schema(description = "寰呭鐞嗘暟閲�", example = "30")
+ private Long pending;
+
+ @Schema(description = "宸插鐞嗘暟閲�", example = "60")
+ private Long handled;
+
+ @Schema(description = "璇姤鏁伴噺", example = "10")
+ private Long falseAlarm;
+
+ @Schema(description = "璺ㄧ渷绐滆揣鏁伴噺", example = "80")
+ private Long crossProvince;
+
+ @Schema(description = "璺ㄥ競绐滆揣鏁伴噺", example = "20")
+ private Long crossCity;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionWarningPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionWarningPageReqVO.java
new file mode 100644
index 0000000..eda8fbd
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionWarningPageReqVO.java
@@ -0,0 +1,45 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "绠$悊鍚庡彴 - 绐滆揣棰勮鍒嗛〉 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MesTraceCrossRegionWarningPageReqVO extends PageParam {
+
+ @Schema(description = "鐘舵�侊細10 寰呭鐞� / 20 宸插鐞� / 30 璇姤", example = "10")
+ private Integer status;
+
+ @Schema(description = "棰勮绫诲瀷锛欳ROSS_PROVINCE / CROSS_CITY", example = "CROSS_PROVINCE")
+ private String warningType;
+
+ @Schema(description = "鎵规缂栧彿")
+ private Long batchId;
+
+ @Schema(description = "鎵规鍙�", example = "PC20260901L001M001_001")
+ private String batchCode;
+
+ @Schema(description = "琚嬬爜", example = "BAG-00000001")
+ private String bagCode;
+
+ @Schema(description = "缁忛攢鍟嗙紪鍙�")
+ private Long clientId;
+
+ @Schema(description = "缁忛攢鍟嗗悕绉�", example = "鍗庝笢鍖哄煙缁忛攢鍟�")
+ private String clientName;
+
+ @Schema(description = "棰勮浜х敓鏃堕棿鑼冨洿")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] eventTime;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionWarningRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionWarningRespVO.java
new file mode 100644
index 0000000..3b84776
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/crossregion/vo/MesTraceCrossRegionWarningRespVO.java
@@ -0,0 +1,99 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "绠$悊鍚庡彴 - 绐滆揣棰勮 Response VO")
+@Data
+public class MesTraceCrossRegionWarningRespVO {
+
+ @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+ private Long id;
+
+ @Schema(description = "棰勮缂栧彿", example = "WARN202609010001")
+ private String warningNo;
+
+ @Schema(description = "琚嬬爜缂栧彿", example = "1")
+ private Long bagCodeId;
+
+ @Schema(description = "琚嬬爜", example = "BAG-00000001")
+ private String bagCode;
+
+ @Schema(description = "鎵樼洏鐮佺紪鍙�", example = "1")
+ private Long palletCodeId;
+
+ @Schema(description = "鎵樼洏鐮�", example = "BAG-00000001-P1")
+ private String palletCode;
+
+ @Schema(description = "鐢熶骇鎵规缂栧彿", example = "1")
+ private Long batchId;
+
+ @Schema(description = "鎵规鍙�", example = "PC20260901L001M001_001")
+ private String batchCode;
+
+ @Schema(description = "鐗╂枡缂栧彿", example = "1")
+ private Long itemId;
+
+ @Schema(description = "鐗╂枡缂栫爜", example = "M001")
+ private String itemCode;
+
+ @Schema(description = "鐗╂枡鍚嶇О", example = "鏉備氦姘寸ɑ绉嶅瓙")
+ private String itemName;
+
+ @Schema(description = "閿�鍞嚭搴撳崟缂栧彿", example = "1")
+ private Long salesId;
+
+ @Schema(description = "鍑哄簱鍗曞彿", example = "PS202609010001")
+ private String salesCode;
+
+ @Schema(description = "缁忛攢鍟嗙紪鍙�", example = "1")
+ private Long clientId;
+
+ @Schema(description = "缁忛攢鍟嗗悕绉�", example = "鍗庝笢鍖哄煙缁忛攢鍟�")
+ private String clientName;
+
+ @Schema(description = "缁忛攢鍟嗙渷浠�", example = "姹熻嫃鐪�")
+ private String dealerProvince;
+
+ @Schema(description = "缁忛攢鍟嗗煄甯�", example = "鍗椾含甯�")
+ private String dealerCity;
+
+ @Schema(description = "鎵爜鐪佷唤", example = "骞夸笢鐪�")
+ private String scanProvince;
+
+ @Schema(description = "鎵爜鍩庡競", example = "骞垮窞甯�")
+ private String scanCity;
+
+ @Schema(description = "棰勮绫诲瀷锛欳ROSS_PROVINCE / CROSS_CITY", example = "CROSS_PROVINCE")
+ private String warningType;
+
+ @Schema(description = "棰勮绫诲瀷鍚嶇О", example = "璺ㄧ渷绐滆揣")
+ private String warningTypeName;
+
+ @Schema(description = "鍏宠仈娑堣垂鑰呮壂鐮佷簨浠剁紪鍙�", example = "1")
+ private Long scanEventId;
+
+ @Schema(description = "鐘舵�侊細10 寰呭鐞� / 20 宸插鐞� / 30 璇姤", example = "10")
+ private Integer status;
+
+ @Schema(description = "鐘舵�佸悕绉�", example = "寰呭鐞�")
+ private String statusName;
+
+ @Schema(description = "澶勭悊浜虹紪鍙�", example = "1")
+ private Long handleUserId;
+
+ @Schema(description = "澶勭悊浜哄鍚�", example = "寮犱笁")
+ private String handleUserName;
+
+ @Schema(description = "澶勭悊鏃堕棿")
+ private LocalDateTime handleTime;
+
+ @Schema(description = "澶勭悊澶囨敞", example = "纭涓虹墿娴佷腑杞紝闈炵獪璐�")
+ private String handleRemark;
+
+ @Schema(description = "棰勮浜х敓鏃堕棿")
+ private LocalDateTime eventTime;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/MesTraceIntegrityController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/MesTraceIntegrityController.java
new file mode 100644
index 0000000..e5cef72
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/MesTraceIntegrityController.java
@@ -0,0 +1,45 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.integrity;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.integrity.vo.MesTraceIntegrityRecordPageReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.integrity.vo.MesTraceIntegrityVerifyReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.integrity.vo.MesTraceIntegrityVerifyRespVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.integrity.MesTraceIntegrityRecordDO;
+import cn.iocoder.yudao.module.mes.service.trace.integrity.MesTraceIntegrityService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "绠$悊鍚庡彴 - MES 鏁版嵁瀹屾暣鎬ф牎楠�")
+@RestController
+@RequestMapping("/mes/trace-integrity")
+@Validated
+public class MesTraceIntegrityController {
+
+ @Resource
+ private MesTraceIntegrityService integrityService;
+
+ @GetMapping("/verify")
+ @Operation(summary = "鏍¢獙鏁版嵁瀹屾暣鎬э紙閲嶇畻鎽樿姣斿锛�")
+ @PreAuthorize("@ss.hasPermission('mes:trace-integrity:verify')")
+ public CommonResult<MesTraceIntegrityVerifyRespVO> verify(@Valid MesTraceIntegrityVerifyReqVO reqVO) {
+ return success(integrityService.verify(reqVO.getBizType(), reqVO.getBizId()));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "鑾峰緱鏁版嵁瀹屾暣鎬ц褰曞垎椤�")
+ @PreAuthorize("@ss.hasPermission('mes:trace-integrity:query')")
+ public CommonResult<PageResult<MesTraceIntegrityRecordDO>> getIntegrityPage(@Valid MesTraceIntegrityRecordPageReqVO reqVO) {
+ return success(integrityService.getIntegrityPage(reqVO));
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/vo/MesTraceIntegrityRecordPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/vo/MesTraceIntegrityRecordPageReqVO.java
new file mode 100644
index 0000000..7e52fc7
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/vo/MesTraceIntegrityRecordPageReqVO.java
@@ -0,0 +1,24 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.integrity.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+@Schema(description = "绠$悊鍚庡彴 - 鏁版嵁瀹屾暣鎬ц褰曞垎椤� Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MesTraceIntegrityRecordPageReqVO extends PageParam {
+
+ @Schema(description = "涓氬姟绫诲瀷锛欱ATCH / SALES / SCAN", example = "BATCH")
+ private String bizType;
+
+ @Schema(description = "涓氬姟璁板綍缂栧彿", example = "1")
+ private Long bizId;
+
+ @Schema(description = "涓氬姟缂栫爜", example = "PC20260901L001M001_001")
+ private String bizCode;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/vo/MesTraceIntegrityVerifyReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/vo/MesTraceIntegrityVerifyReqVO.java
new file mode 100644
index 0000000..9bce545
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/vo/MesTraceIntegrityVerifyReqVO.java
@@ -0,0 +1,20 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.integrity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Schema(description = "绠$悊鍚庡彴 - 鏁版嵁瀹屾暣鎬ф牎楠� Request VO")
+@Data
+public class MesTraceIntegrityVerifyReqVO {
+
+ @Schema(description = "涓氬姟绫诲瀷锛欱ATCH 鎵规 / SALES 閿�鍞嚭搴� / SCAN 娑堣垂鑰呮壂鐮�", requiredMode = Schema.RequiredMode.REQUIRED, example = "BATCH")
+ @NotBlank(message = "涓氬姟绫诲瀷涓嶈兘涓虹┖")
+ private String bizType;
+
+ @Schema(description = "涓氬姟璁板綍缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+ @NotNull(message = "涓氬姟璁板綍缂栧彿涓嶈兘涓虹┖")
+ private Long bizId;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/vo/MesTraceIntegrityVerifyRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/vo/MesTraceIntegrityVerifyRespVO.java
new file mode 100644
index 0000000..38072e5
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/integrity/vo/MesTraceIntegrityVerifyRespVO.java
@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.integrity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "绠$悊鍚庡彴 - 鏁版嵁瀹屾暣鎬ф牎楠� Response VO")
+@Data
+public class MesTraceIntegrityVerifyRespVO {
+
+ @Schema(description = "涓氬姟绫诲瀷锛欱ATCH / SALES / SCAN", example = "BATCH")
+ private String bizType;
+
+ @Schema(description = "涓氬姟璁板綍缂栧彿", example = "1024")
+ private Long bizId;
+
+ @Schema(description = "涓氬姟缂栫爜", example = "PC20260901L001M001_001")
+ private String bizCode;
+
+ @Schema(description = "鏄惁鏍¢獙閫氳繃", example = "true")
+ private Boolean matched;
+
+ @Schema(description = "瀛樺偍鐨勬憳瑕� SHA-256", example = "a1b2c3...")
+ private String storedHash;
+
+ @Schema(description = "褰撳墠鏁版嵁閲嶇畻鎽樿 SHA-256", example = "a1b2c3...")
+ private String currentHash;
+
+ @Schema(description = "鎵规褰撳墠琚嬬爜闆嗗悎鎽樿锛堜粎 BATCH 鏍¢獙杩斿洖锛屼緵浜哄伐姣斿琚嬬爜闃茬鏀癸級", example = "d4e5f6...")
+ private String bagSetHash;
+
+ @Schema(description = "鏍¢獙璇存槑", example = "鏁版嵁瀹屾暣锛屾湭琚鏀�")
+ private String message;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/vo/MesTraceQrConfigRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/vo/MesTraceQrConfigRespVO.java
new file mode 100644
index 0000000..73376f9
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/trace/vo/MesTraceQrConfigRespVO.java
@@ -0,0 +1,16 @@
+package cn.iocoder.yudao.module.mes.controller.admin.trace.vo;
+
+import lombok.Data;
+
+/**
+ * MES 婧簮 H5 閰嶇疆 Resp VO
+ */
+@Data
+public class MesTraceQrConfigRespVO {
+
+ /**
+ * 婧簮 H5 椤甸潰鍩虹鍦板潃锛堜簩缁寸爜鍐呭鍓嶇紑锛屽 http://host:port/trace.html锛�
+ */
+ private String traceBaseUrl;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesController.java
index 7704cda..675e6af 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesController.java
@@ -10,6 +10,8 @@
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO;
+import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
+import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.MesWmProductSalesPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.MesWmProductSalesRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.MesWmProductSalesSaveReqVO;
@@ -47,6 +49,8 @@
private MesWmProductSalesService productSalesService;
@Resource
private CrmCustomerApi crmCustomerApi;
+ @Resource
+ private AdminUserApi adminUserApi;
@Resource
private MesWmSalesNoticeService salesNoticeService;
@@ -178,12 +182,19 @@
convertSet(list, MesWmProductSalesDO::getClientId));
Map<Long, MesWmSalesNoticeDO> noticeMap = salesNoticeService.getSalesNoticeMap(
convertSet(list, MesWmProductSalesDO::getNoticeId));
+ Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
+ convertSet(list, MesWmProductSalesDO::getOutboundUserId));
// 2. 鏋勫缓缁撴灉
return BeanUtils.toBean(list, MesWmProductSalesRespVO.class, vo -> {
MapUtils.findAndThen(customerMap, vo.getClientId(), customer ->
vo.setClientName(customer.getName()));
+ if (vo.getClientName() == null) {
+ MapUtils.findAndThen(customerMap, vo.getClientId(), customer -> vo.setClientName(customer.getName()));
+ }
MapUtils.findAndThen(noticeMap, vo.getNoticeId(),
notice -> vo.setNoticeCode(notice.getCode()));
+ MapUtils.findAndThen(userMap, vo.getOutboundUserId(),
+ user -> vo.setOutboundUserName(user.getNickname()));
});
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesPageReqVO.java
index 3f65810..3f38358 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesPageReqVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesPageReqVO.java
@@ -26,6 +26,10 @@
@Schema(description = "瀹㈡埛缂栧彿", example = "1")
private Long clientId;
+ @Schema(description = "瀹為檯鍑哄簱鏃堕棿鑼冨洿")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] outboundTime;
+
@Schema(description = "鐘舵��", example = "0")
private Integer status;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesRespVO.java
index 5fc1d88..a3f44a6 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesRespVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesRespVO.java
@@ -31,6 +31,17 @@
@ExcelProperty("瀹㈡埛")
private String clientName;
+ @Schema(description = "瀹為檯鍑哄簱鏃堕棿")
+ @ExcelProperty("瀹為檯鍑哄簱鏃堕棿")
+ private LocalDateTime outboundTime;
+
+ @Schema(description = "鎵ц鍑哄簱鎿嶄綔浜篒D")
+ private Long outboundUserId;
+
+ @Schema(description = "鎵ц鍑哄簱鎿嶄綔浜哄悕绉�")
+ @ExcelProperty("鍑哄簱鎿嶄綔浜�")
+ private String outboundUserName;
+
@Schema(description = "閿�鍞鍗曞彿", example = "SO2026030001")
@ExcelProperty("閿�鍞鍗曞彿")
private String salesOrderCode;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/pub/trace/vo/MesProTracePublicRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/pub/trace/vo/MesProTracePublicRespVO.java
index 50c395a..6f5d570 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/pub/trace/vo/MesProTracePublicRespVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/pub/trace/vo/MesProTracePublicRespVO.java
@@ -105,6 +105,10 @@
@Schema(description = "绉嶅瓙璐ㄦ淇℃伅")
private QualityVO quality;
+ // ====== 闃蹭吉楠岃瘉鍖哄潡 ======
+ @Schema(description = "闃蹭吉楠岃瘉淇℃伅锛堣杩芥函鐮佹壂鐮佹鏁颁笌鏃堕棿锛�")
+ private AntiFakeVO antiFake;
+
// ====== 鍙�夋墿灞曞尯鍧楋紙鏈夋暟鎹墠杩斿洖锛岀┖琛ㄨ繑鍥炵┖鍒楄〃锛� ======
@Schema(description = "閲囪喘鏉ユ簮锛堝彲閫夛級")
private List<MesWmBatchPurchaseSourceRespVO> purchaseSources;
@@ -175,6 +179,17 @@
private LocalDateTime eventTime;
}
+ @Schema(description = "闃蹭吉楠岃瘉淇℃伅")
+ @Data
+ public static class AntiFakeVO {
+ @Schema(description = "璇ヨ拷婧爜绱鎵爜娆℃暟", example = "3")
+ private Long scanCount;
+ @Schema(description = "棣栨鎵爜鏃堕棿")
+ private LocalDateTime firstScanTime;
+ @Schema(description = "鏈�杩戞壂鐮佹椂闂�")
+ private LocalDateTime lastScanTime;
+ }
+
@Schema(description = "绉嶅瓙璐ㄦ淇℃伅")
@Data
public static class QualityVO {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/consumer/MesTraceConsumerScanEventDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/consumer/MesTraceConsumerScanEventDO.java
new file mode 100644
index 0000000..27b8c72
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/consumer/MesTraceConsumerScanEventDO.java
@@ -0,0 +1,69 @@
+package cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * 娑堣垂鑰呮壂鐮佽闂簨浠� DO
+ * <p>
+ * 璁板綍鍏紬閫氳繃浜岀淮鐮�/H5 鎵弿婧簮椤甸潰鐨勮闂儏鍐碉紙鎴愬姛涓庡け璐ュ潎璁板綍锛夛紝
+ * 鐢ㄤ簬鍒嗘瀽娑堣垂鑰呮函婧愯闂噺銆佽秼鍔夸笌鍒嗗竷銆�
+ */
+@TableName("mes_trace_consumer_scan_event")
+@KeySequence("mes_trace_consumer_scan_event_seq")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MesTraceConsumerScanEventDO extends BaseDO {
+
+ @TableId
+ private Long id;
+
+ /** 鎵爜鍘熷鍐呭锛堝繀瑕佹椂鎴柇锛� */
+ private String traceCode;
+
+ /** 瑙f瀽鍚庣殑杩芥函鐮� */
+ private String normalizedCode;
+
+ /** 鍏ュ彛绫诲瀷锛欱AG/PALLET/BATCH */
+ private String sourceType;
+
+ /** 鎵爜鍏ュ彛娓犻亾锛氬井淇�/鏀粯瀹�/娴忚鍣� */
+ private String channel;
+
+ /** 鐪佷唤锛圛P 褰掑睘鍦帮紝浠呭瓨鍦板悕涓嶅瓨鏁忔劅淇℃伅锛� */
+ private String province;
+
+ /** 鍩庡競锛圛P 褰掑睘鍦帮紝浠呭瓨鍦板悕涓嶅瓨鏁忔劅淇℃伅锛� */
+ private String city;
+
+ /** 鐢熶骇鎵规缂栧彿 */
+ private Long batchId;
+
+ /** 鏄惁鏌ヨ鎴愬姛锛�0 澶辫触锛�1 鎴愬姛锛� */
+ private Boolean success;
+
+ /** 澶辫触缂栫爜 */
+ private String errorCode;
+
+ /** 瀹㈡埛绔� IP SHA-256 鎽樿锛堜笉淇濆瓨鏄庢枃锛� */
+ private String ipHash;
+
+ /** User-Agent SHA-256 鎽樿锛堜笉淇濆瓨鏄庢枃锛� */
+ private String userAgentHash;
+
+ /** 璁块棶鏃堕棿 */
+ private LocalDateTime eventTime;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/crossregion/MesTraceAntiConfigDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/crossregion/MesTraceAntiConfigDO.java
new file mode 100644
index 0000000..a12cbdd
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/crossregion/MesTraceAntiConfigDO.java
@@ -0,0 +1,37 @@
+package cn.iocoder.yudao.module.mes.dal.dataobject.trace.crossregion;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 闃茬獪璐ц鍒欓厤缃� DO锛坘ey-value锛�
+ */
+@TableName("mes_trace_anti_config")
+@KeySequence("mes_trace_anti_config_seq")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MesTraceAntiConfigDO extends BaseDO {
+
+ @TableId
+ private Long id;
+
+ /** 閰嶇疆椤� Key锛堝 warning_level锛� */
+ private String configKey;
+
+ /** 閰嶇疆鍊硷紙warning_level锛歅ROVINCE 璺ㄧ渷 / CITY 璺ㄥ競锛� */
+ private String configValue;
+
+ /** 閰嶇疆璇存槑 */
+ private String remark;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/crossregion/MesTraceCrossRegionWarningDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/crossregion/MesTraceCrossRegionWarningDO.java
new file mode 100644
index 0000000..8c8b8bd
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/crossregion/MesTraceCrossRegionWarningDO.java
@@ -0,0 +1,107 @@
+package cn.iocoder.yudao.module.mes.dal.dataobject.trace.crossregion;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * 绐滆揣棰勮璁板綍 DO
+ * <p>
+ * 娑堣垂鑰呮壂鐮佸湴鍖轰笌琚嬬爜鍑哄簱缁忛攢鍟嗘墍鍦ㄥ湴鍖轰笉涓�鑷存椂锛岀郴缁熻嚜鍔ㄧ敓鎴愰璀︼紝渚涚鐞嗙绋芥煡涓庡鐞嗐��
+ */
+@TableName("mes_trace_cross_region_warning")
+@KeySequence("mes_trace_cross_region_warning_seq")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MesTraceCrossRegionWarningDO extends BaseDO {
+
+ @TableId
+ private Long id;
+
+ /** 棰勮缂栧彿 */
+ private String warningNo;
+
+ /** 琚嬬爜缂栧彿 */
+ private Long bagCodeId;
+
+ /** 琚嬬爜 */
+ private String bagCode;
+
+ /** 鎵樼洏鐮佺紪鍙� */
+ private Long palletCodeId;
+
+ /** 鎵樼洏鐮� */
+ private String palletCode;
+
+ /** 鐢熶骇鎵规缂栧彿 */
+ private Long batchId;
+
+ /** 鎵规鍙� */
+ private String batchCode;
+
+ /** 鐗╂枡缂栧彿 */
+ private Long itemId;
+
+ /** 鐗╂枡缂栫爜 */
+ private String itemCode;
+
+ /** 鐗╂枡鍚嶇О */
+ private String itemName;
+
+ /** 閿�鍞嚭搴撳崟缂栧彿 */
+ private Long salesId;
+
+ /** 鍑哄簱鍗曞彿 */
+ private String salesCode;
+
+ /** 缁忛攢鍟嗙紪鍙� */
+ private Long clientId;
+
+ /** 缁忛攢鍟嗗悕绉� */
+ private String clientName;
+
+ /** 缁忛攢鍟嗙渷浠� */
+ private String dealerProvince;
+
+ /** 缁忛攢鍟嗗煄甯� */
+ private String dealerCity;
+
+ /** 鎵爜鐪佷唤 */
+ private String scanProvince;
+
+ /** 鎵爜鍩庡競 */
+ private String scanCity;
+
+ /** 棰勮绫诲瀷锛欳ROSS_PROVINCE / CROSS_CITY */
+ private String warningType;
+
+ /** 鍏宠仈娑堣垂鑰呮壂鐮佷簨浠剁紪鍙� */
+ private Long scanEventId;
+
+ /** 鐘舵�侊細10 寰呭鐞� / 20 宸插鐞� / 30 璇姤 */
+ private Integer status;
+
+ /** 澶勭悊浜虹紪鍙� */
+ private Long handleUserId;
+
+ /** 澶勭悊鏃堕棿 */
+ private LocalDateTime handleTime;
+
+ /** 澶勭悊澶囨敞 */
+ private String handleRemark;
+
+ /** 棰勮浜х敓鏃堕棿 */
+ private LocalDateTime eventTime;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/integrity/MesTraceIntegrityRecordDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/integrity/MesTraceIntegrityRecordDO.java
new file mode 100644
index 0000000..9808c35
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/trace/integrity/MesTraceIntegrityRecordDO.java
@@ -0,0 +1,48 @@
+package cn.iocoder.yudao.module.mes.dal.dataobject.trace.integrity;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * 鏁版嵁瀹屾暣鎬ф牎楠岃褰� DO
+ * <p>
+ * 鍦ㄦ壒娆″垱寤恒�侀攢鍞嚭搴撱�佹秷璐硅�呮壂鐮佺瓑鍏抽敭浜嬩欢鍙戠敓鏃讹紝瀵逛笉鍙彉鏍稿績瀛楁鐢熸垚 SHA-256 鎽樿锛�
+ * 渚涚鐞嗙閲嶆柊璁$畻姣斿锛屽彂鐜颁簨鍚庣鏀广��
+ */
+@TableName("mes_trace_integrity_record")
+@KeySequence("mes_trace_integrity_record_seq")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MesTraceIntegrityRecordDO extends BaseDO {
+
+ @TableId
+ private Long id;
+
+ /** 涓氬姟绫诲瀷锛欱ATCH 鎵规 / SALES 閿�鍞嚭搴� / SCAN 娑堣垂鑰呮壂鐮� */
+ private String bizType;
+
+ /** 涓氬姟璁板綍缂栧彿 */
+ private Long bizId;
+
+ /** 涓氬姟缂栫爜锛堟壒娆″彿 / 鍑哄簱鍗曞彿 / 杩芥函鐮侊級 */
+ private String bizCode;
+
+ /** 鍐呭鎽樿 SHA-256 */
+ private String contentHash;
+
+ /** 鎽樿鐢熸垚鏃堕棿 */
+ private LocalDateTime eventTime;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java
index 579af82..d266de7 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java
@@ -46,6 +46,10 @@
*/
private Long clientId;
/**
+ * 缁忛攢鍟嗗悕绉板揩鐓�
+ */
+ private String clientName;
+ /**
* 閿�鍞鍗旾D
*/
private Long saleOrderId;
@@ -63,6 +67,14 @@
* 鍑哄簱鏃ユ湡
*/
private LocalDateTime salesDate;
+ /**
+ * 瀹為檯鍑哄簱鏃堕棿
+ */
+ private LocalDateTime outboundTime;
+ /**
+ * 鎵ц鍑哄簱鎿嶄綔浜篒D
+ */
+ private Long outboundUserId;
/**
* 鑱旂郴浜�
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/batch/MesProBatchMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/batch/MesProBatchMapper.java
index 29ea3a2..5c3026e 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/batch/MesProBatchMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/batch/MesProBatchMapper.java
@@ -24,8 +24,9 @@
return selectOne(MesProBatchDO::getTempCode, tempCode);
}
- /** 鐢熸垚涓存椂鎵规鐮佺敤鐨勫叏灞�搴忓彿锛氳В鏋� temp_code 鐨勬暟瀛楀悗缂�锛屼笉瀛樺湪鍒欒繑鍥� 0 */
- @Select("SELECT IFNULL(MAX(CAST(SUBSTRING(temp_code, 4) AS UNSIGNED)), 0) FROM mes_pro_batch WHERE deleted = 0")
+ /** 鐢熸垚涓存椂鎵规鐮佺敤鐨勫叏灞�搴忓彿锛氳В鏋� temp_code 鐨勬暟瀛楀悗缂�锛屼笉瀛樺湪鍒欒繑鍥� 0銆�
+ * 涓嶈兘杩囨护 deleted锛屽敮涓�绱㈠紩 uk_temp_code 瀵归�昏緫鍒犻櫎琛屼粛鐢熸晥锛屽拷鐣ヨ蒋鍒犱細瀵艰嚧搴忓彿鍥為��銆佺爜鍊奸噸澶� */
+ @Select("SELECT IFNULL(MAX(CAST(SUBSTRING(temp_code, 4) AS UNSIGNED)), 0) FROM mes_pro_batch")
Integer selectMaxTempCodeSeq();
default Long selectCountByLineId(Long lineId) {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java
index 6bbc566..cbbda3f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java
@@ -27,8 +27,9 @@
return selectOne(MesProPalletDO::getTempCode, tempCode);
}
- /** 鐢熸垚涓存椂鎵樼洏鐮佺敤鐨勫叏灞�搴忓彿锛氳В鏋� temp_code 鐨勬暟瀛楀悗缂�锛屼笉瀛樺湪鍒欒繑鍥� 0 */
- @Select("SELECT IFNULL(MAX(CAST(SUBSTRING(temp_code, 4) AS UNSIGNED)), 0) FROM mes_pro_pallet WHERE deleted = 0")
+ /** 鐢熸垚涓存椂鎵樼洏鐮佺敤鐨勫叏灞�搴忓彿锛氳В鏋� temp_code 鐨勬暟瀛楀悗缂�锛屼笉瀛樺湪鍒欒繑鍥� 0銆�
+ * 涓嶈兘杩囨护 deleted锛屽敮涓�绱㈠紩 uk_temp_code 瀵归�昏緫鍒犻櫎琛屼粛鐢熸晥锛屽拷鐣ヨ蒋鍒犱細瀵艰嚧搴忓彿鍥為��銆佺爜鍊奸噸澶� */
+ @Select("SELECT IFNULL(MAX(CAST(SUBSTRING(temp_code, 4) AS UNSIGNED)), 0) FROM mes_pro_pallet")
Integer selectMaxTempCodeSeq();
@Select("SELECT * FROM mes_pro_pallet WHERE id = #{id} AND deleted = 0 FOR UPDATE")
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/consumer/MesTraceConsumerScanEventMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/consumer/MesTraceConsumerScanEventMapper.java
new file mode 100644
index 0000000..905c791
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/consumer/MesTraceConsumerScanEventMapper.java
@@ -0,0 +1,30 @@
+package cn.iocoder.yudao.module.mes.dal.mysql.trace.consumer;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer.MesTraceConsumerScanEventDO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 娑堣垂鑰呮壂鐮佽闂簨浠� Mapper
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Mapper
+public interface MesTraceConsumerScanEventMapper extends BaseMapperX<MesTraceConsumerScanEventDO> {
+
+ /**
+ * 鎸夎拷婧爜鏌ヨ鎵爜浜嬩欢锛堟搴忥紝渚涢槻浼獙璇佺粺璁℃壂鐮佹鏁颁笌棣栨/鏈�杩戞壂鐮佹椂闂达級
+ *
+ * @param normalizedCode 瑙f瀽鍚庣殑杩芥函鐮�
+ * @return 鎵爜浜嬩欢鍒楄〃
+ */
+ default List<MesTraceConsumerScanEventDO> selectListByNormalizedCode(String normalizedCode) {
+ return selectList(new LambdaQueryWrapperX<MesTraceConsumerScanEventDO>()
+ .eq(MesTraceConsumerScanEventDO::getNormalizedCode, normalizedCode)
+ .orderByAsc(MesTraceConsumerScanEventDO::getEventTime));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/consumer/MesTraceConsumerScanStatisticsMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/consumer/MesTraceConsumerScanStatisticsMapper.java
new file mode 100644
index 0000000..2ba0d27
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/consumer/MesTraceConsumerScanStatisticsMapper.java
@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.mes.dal.mysql.trace.consumer;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer.MesTraceConsumerScanEventDO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 娑堣垂鑰呮壂鐮佽闂粺璁� Mapper
+ * <p>
+ * 缁熻閲囩敤鏌ユ槑缁� + Java 渚ц仛鍚堬紝閬垮厤缁熻 SQL 涓� MySQL/H2 鏂硅█宸紓锛屽苟娑堥櫎鍔ㄦ�佸垪鎷兼帴娉ㄥ叆闈€��
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Mapper
+public interface MesTraceConsumerScanStatisticsMapper extends BaseMapperX<MesTraceConsumerScanEventDO> {
+
+ /**
+ * 鏌ヨ缁熻鏃堕棿鑼冨洿鍐咃紙寮�濮嬫椂闂村惈銆佺粨鏉熸椂闂翠笉鍚級鐨勬秷璐硅�呮壂鐮佽闂簨浠�
+ */
+ default List<MesTraceConsumerScanEventDO> selectListByTime(LocalDateTime startTime, LocalDateTime endTime) {
+ return selectList(new LambdaQueryWrapperX<MesTraceConsumerScanEventDO>()
+ .geIfPresent(MesTraceConsumerScanEventDO::getEventTime, startTime)
+ .ltIfPresent(MesTraceConsumerScanEventDO::getEventTime, endTime)
+ .orderByAsc(MesTraceConsumerScanEventDO::getEventTime));
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/crossregion/MesTraceAntiConfigMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/crossregion/MesTraceAntiConfigMapper.java
new file mode 100644
index 0000000..9832047
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/crossregion/MesTraceAntiConfigMapper.java
@@ -0,0 +1,19 @@
+package cn.iocoder.yudao.module.mes.dal.mysql.trace.crossregion;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.crossregion.MesTraceAntiConfigDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 闃茬獪璐ц鍒欓厤缃� Mapper
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Mapper
+public interface MesTraceAntiConfigMapper extends BaseMapperX<MesTraceAntiConfigDO> {
+
+ default MesTraceAntiConfigDO selectByConfigKey(String configKey) {
+ return selectOne(MesTraceAntiConfigDO::getConfigKey, configKey);
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/crossregion/MesTraceCrossRegionWarningMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/crossregion/MesTraceCrossRegionWarningMapper.java
new file mode 100644
index 0000000..f547cb7
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/crossregion/MesTraceCrossRegionWarningMapper.java
@@ -0,0 +1,42 @@
+package cn.iocoder.yudao.module.mes.dal.mysql.trace.crossregion;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionWarningPageReqVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.crossregion.MesTraceCrossRegionWarningDO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 绐滆揣棰勮璁板綍 Mapper
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Mapper
+public interface MesTraceCrossRegionWarningMapper extends BaseMapperX<MesTraceCrossRegionWarningDO> {
+
+ default PageResult<MesTraceCrossRegionWarningDO> selectPage(MesTraceCrossRegionWarningPageReqVO reqVO) {
+ return selectPage(reqVO, new LambdaQueryWrapperX<MesTraceCrossRegionWarningDO>()
+ .eqIfPresent(MesTraceCrossRegionWarningDO::getStatus, reqVO.getStatus())
+ .eqIfPresent(MesTraceCrossRegionWarningDO::getWarningType, reqVO.getWarningType())
+ .eqIfPresent(MesTraceCrossRegionWarningDO::getBatchId, reqVO.getBatchId())
+ .likeIfPresent(MesTraceCrossRegionWarningDO::getBatchCode, reqVO.getBatchCode())
+ .likeIfPresent(MesTraceCrossRegionWarningDO::getBagCode, reqVO.getBagCode())
+ .eqIfPresent(MesTraceCrossRegionWarningDO::getClientId, reqVO.getClientId())
+ .likeIfPresent(MesTraceCrossRegionWarningDO::getClientName, reqVO.getClientName())
+ .betweenIfPresent(MesTraceCrossRegionWarningDO::getEventTime, reqVO.getEventTime())
+ .orderByDesc(MesTraceCrossRegionWarningDO::getId));
+ }
+
+ /**
+ * 鎸夋椂闂磋寖鍥存煡璇㈤璀﹀垪琛紙渚涚粺璁″垎缁勪娇鐢級
+ */
+ default List<MesTraceCrossRegionWarningDO> selectListByEventTimeBetween(java.time.LocalDateTime startTime,
+ java.time.LocalDateTime endTime) {
+ return selectList(new LambdaQueryWrapperX<MesTraceCrossRegionWarningDO>()
+ .betweenIfPresent(MesTraceCrossRegionWarningDO::getEventTime, startTime, endTime));
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/integrity/MesTraceIntegrityRecordMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/integrity/MesTraceIntegrityRecordMapper.java
new file mode 100644
index 0000000..369b9b3
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/trace/integrity/MesTraceIntegrityRecordMapper.java
@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.mes.dal.mysql.trace.integrity;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.integrity.vo.MesTraceIntegrityRecordPageReqVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.integrity.MesTraceIntegrityRecordDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 鏁版嵁瀹屾暣鎬ф牎楠岃褰� Mapper
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Mapper
+public interface MesTraceIntegrityRecordMapper extends BaseMapperX<MesTraceIntegrityRecordDO> {
+
+ default MesTraceIntegrityRecordDO selectByBiz(String bizType, Long bizId) {
+ return selectOne(new LambdaQueryWrapperX<MesTraceIntegrityRecordDO>()
+ .eq(MesTraceIntegrityRecordDO::getBizType, bizType)
+ .eq(MesTraceIntegrityRecordDO::getBizId, bizId));
+ }
+
+ default PageResult<MesTraceIntegrityRecordDO> selectPage(MesTraceIntegrityRecordPageReqVO reqVO) {
+ return selectPage(reqVO, new LambdaQueryWrapperX<MesTraceIntegrityRecordDO>()
+ .eqIfPresent(MesTraceIntegrityRecordDO::getBizType, reqVO.getBizType())
+ .eqIfPresent(MesTraceIntegrityRecordDO::getBizId, reqVO.getBizId())
+ .likeIfPresent(MesTraceIntegrityRecordDO::getBizCode, reqVO.getBizCode())
+ .orderByDesc(MesTraceIntegrityRecordDO::getId));
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesDetailMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesDetailMapper.java
index 878783d..8915751 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesDetailMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesDetailMapper.java
@@ -42,4 +42,24 @@
delete(MesWmProductSalesDetailDO::getSalesId, salesId);
}
+ /**
+ * 鏍规嵁琚嬬爜缂栧彿鏌ヨ鏈�杩戠殑鍑哄簱鏄庣粏锛堜緵绐滆揣绋芥煡鍙嶆煡鍑哄簱鍘诲悜锛�
+ */
+ default MesWmProductSalesDetailDO selectLatestByBagCodeId(Long bagCodeId) {
+ return selectOne(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<MesWmProductSalesDetailDO>()
+ .eq(MesWmProductSalesDetailDO::getBagCodeId, bagCodeId)
+ .orderByDesc(MesWmProductSalesDetailDO::getId)
+ .last("LIMIT 1"));
+ }
+
+ /**
+ * 鏍规嵁鎵樼洏鐮佺紪鍙锋煡璇㈡渶杩戠殑鍑哄簱鏄庣粏锛堜緵绐滆揣绋芥煡鍙嶆煡鍑哄簱鍘诲悜锛�
+ */
+ default MesWmProductSalesDetailDO selectLatestByPalletCodeId(Long palletCodeId) {
+ return selectOne(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<MesWmProductSalesDetailDO>()
+ .eq(MesWmProductSalesDetailDO::getPalletCodeId, palletCodeId)
+ .orderByDesc(MesWmProductSalesDetailDO::getId)
+ .last("LIMIT 1"));
+ }
+
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesMapper.java
index 8c79c6e..77ff7c9 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesMapper.java
@@ -25,6 +25,7 @@
.eqIfPresent(MesWmProductSalesDO::getClientId, reqVO.getClientId())
.eqIfPresent(MesWmProductSalesDO::getStatus, reqVO.getStatus())
.betweenIfPresent(MesWmProductSalesDO::getSalesDate, reqVO.getShipmentDate())
+ .betweenIfPresent(MesWmProductSalesDO::getOutboundTime, reqVO.getOutboundTime())
.orderByDesc(MesWmProductSalesDO::getId));
}
@@ -38,6 +39,7 @@
.eqIfPresent(MesWmProductSalesDO::getClientId, reqVO.getClientId())
.eqIfPresent(MesWmProductSalesDO::getStatus, reqVO.getStatus())
.betweenIfPresent(MesWmProductSalesDO::getSalesDate, reqVO.getShipmentDate())
+ .betweenIfPresent(MesWmProductSalesDO::getOutboundTime, reqVO.getOutboundTime())
.orderByDesc(MesWmProductSalesDO::getId);
if (permittedClientIds != null) {
if (CollUtil.isEmpty(permittedClientIds)) {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
index 8a00efc..1d17581 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
@@ -877,4 +877,15 @@
// ========== MES 鍏紑鎵爜婧簮锛�1-040-760-000锛� ==========
ErrorCode MES_TRACE_CODE_NOT_FOUND = new ErrorCode(1_040_760_000, "鏈煡璇㈠埌璇ヨ拷婧爜锛岃鏍稿浜岀淮鐮佹垨鑱旂郴瀹樻柟");
+ // ========== MES 闃蹭吉闃茬獪璐�-绐滆揣棰勮锛�1-040-761-000锛� ==========
+ ErrorCode MES_TRACE_CROSS_REGION_WARNING_NOT_EXISTS = new ErrorCode(1_040_761_000, "绐滆揣棰勮璁板綍涓嶅瓨鍦�");
+ ErrorCode MES_TRACE_CROSS_REGION_STATUS_INVALID = new ErrorCode(1_040_761_001, "绐滆揣棰勮鐘舵�佹棤鏁堬紝浠呭緟澶勭悊棰勮鍙鐞�");
+ ErrorCode MES_TRACE_ANTI_CONFIG_NOT_EXISTS = new ErrorCode(1_040_761_002, "闃茬獪璐ц鍒欓厤缃笉瀛樺湪");
+ ErrorCode MES_TRACE_ANTI_CONFIG_VALUE_INVALID = new ErrorCode(1_040_761_003, "闃茬獪璐ц鍒欓厤缃�兼棤鏁堬紝浠呮敮鎸� PROVINCE/CITY");
+
+ // ========== MES 闃蹭吉闃茬獪璐�-鏁版嵁瀹屾暣鎬э紙1-040-762-000锛� ==========
+ ErrorCode MES_TRACE_INTEGRITY_RECORD_NOT_EXISTS = new ErrorCode(1_040_762_000, "鏁版嵁瀹屾暣鎬ц褰曚笉瀛樺湪锛岃鍏堝涓氬姟鏁版嵁鐢熸垚鎽樿");
+ ErrorCode MES_TRACE_INTEGRITY_BIZ_TYPE_INVALID = new ErrorCode(1_040_762_001, "鏁版嵁瀹屾暣鎬т笟鍔$被鍨嬫棤鏁堬紝浠呮敮鎸� BATCH/SALES/SCAN");
+ ErrorCode MES_TRACE_INTEGRITY_BIZ_NOT_EXISTS = new ErrorCode(1_040_762_002, "寰呮牎楠岀殑涓氬姟鏁版嵁涓嶅瓨鍦�");
+
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/trace/MesTraceIntegrityBizTypeEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/trace/MesTraceIntegrityBizTypeEnum.java
new file mode 100644
index 0000000..0403feb
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/trace/MesTraceIntegrityBizTypeEnum.java
@@ -0,0 +1,43 @@
+package cn.iocoder.yudao.module.mes.enums.trace;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 鏁版嵁瀹屾暣鎬т笟鍔$被鍨嬫灇涓�
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Getter
+@AllArgsConstructor
+public enum MesTraceIntegrityBizTypeEnum {
+
+ BATCH("BATCH", "鐢熶骇鎵规"),
+ SALES("SALES", "閿�鍞嚭搴�"),
+ SCAN("SCAN", "娑堣垂鑰呮壂鐮�");
+
+ /**
+ * 涓氬姟绫诲瀷
+ */
+ private final String type;
+ /**
+ * 绫诲瀷鍚嶇О
+ */
+ private final String name;
+
+ /**
+ * 鍒ゆ柇涓氬姟绫诲瀷鏄惁鍚堟硶
+ *
+ * @param type 涓氬姟绫诲瀷
+ * @return 鏄惁鍚堟硶
+ */
+ public static boolean isValid(String type) {
+ for (MesTraceIntegrityBizTypeEnum e : values()) {
+ if (e.type.equals(type)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/trace/MesTraceWarningStatusEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/trace/MesTraceWarningStatusEnum.java
new file mode 100644
index 0000000..3175d69
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/trace/MesTraceWarningStatusEnum.java
@@ -0,0 +1,38 @@
+package cn.iocoder.yudao.module.mes.enums.trace;
+
+import cn.iocoder.yudao.framework.common.core.ArrayValuable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+
+/**
+ * 绐滆揣棰勮鐘舵�佹灇涓�
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Getter
+@AllArgsConstructor
+public enum MesTraceWarningStatusEnum implements ArrayValuable<Integer> {
+
+ PENDING(10, "寰呭鐞�"),
+ HANDLED(20, "宸插鐞�"),
+ FALSE_ALARM(30, "璇姤");
+
+ public static final Integer[] ARRAYS = Arrays.stream(values()).map(MesTraceWarningStatusEnum::getStatus).toArray(Integer[]::new);
+
+ /**
+ * 鐘舵��
+ */
+ private final Integer status;
+ /**
+ * 鐘舵�佸悕绉�
+ */
+ private final String name;
+
+ @Override
+ public Integer[] array() {
+ return ARRAYS;
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/trace/MesTraceWarningTypeEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/trace/MesTraceWarningTypeEnum.java
new file mode 100644
index 0000000..c97658a
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/trace/MesTraceWarningTypeEnum.java
@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.module.mes.enums.trace;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 绐滆揣棰勮绫诲瀷鏋氫妇
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Getter
+@AllArgsConstructor
+public enum MesTraceWarningTypeEnum {
+
+ CROSS_PROVINCE("CROSS_PROVINCE", "璺ㄧ渷绐滆揣"),
+ CROSS_CITY("CROSS_CITY", "璺ㄥ競绐滆揣");
+
+ /**
+ * 绫诲瀷
+ */
+ private final String type;
+ /**
+ * 绫诲瀷鍚嶇О
+ */
+ private final String name;
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/batch/MesProBatchServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/batch/MesProBatchServiceImpl.java
index c0efa4f..0fe4f45 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/batch/MesProBatchServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/batch/MesProBatchServiceImpl.java
@@ -20,6 +20,7 @@
import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService;
import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.pro.line.MesProLineService;
+import cn.iocoder.yudao.module.mes.service.trace.integrity.MesTraceIntegrityService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
@@ -65,6 +66,8 @@
private MesMdmItemService mdmItemService;
@Resource
private MesProLineService lineService;
+ @Resource
+ private MesTraceIntegrityService integrityService;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -89,6 +92,8 @@
// 4. 鎻掑叆鐢熶骇浜哄憳閰嶇疆
insertBatchWorkers(batch.getId(), createReqVO.getWorkers());
+ // 5. 鐢熸垚鎵规瀹屾暣鎬ф憳瑕�
+ integrityService.recordBatchIntegrity(batch.getId());
return batch.getId();
}
@@ -139,6 +144,8 @@
// 4. 閲嶅缓鐢熶骇浜哄憳閰嶇疆
batchWorkerMapper.deleteByBatchId(fillReqVO.getId());
insertBatchWorkers(fillReqVO.getId(), fillReqVO.getWorkers());
+ // 5. 鐢熸垚鎵规瀹屾暣鎬ф憳瑕侊紙琛ュ綍姝e紡淇℃伅鍚庤鐩栵級
+ integrityService.recordBatchIntegrity(fillReqVO.getId());
}
@Override
@@ -172,6 +179,8 @@
// 5. 閲嶅缓鐢熶骇浜哄憳閰嶇疆
batchWorkerMapper.deleteByBatchId(updateReqVO.getId());
insertBatchWorkers(updateReqVO.getId(), updateReqVO.getWorkers());
+ // 6. 鎽樿瑕嗙洊鑼冨洿鍚搧绉�/浜х嚎/鐢熶骇鏃ユ湡/璁″垝鏁伴噺锛岀紪杈戝悗閲嶆柊鐢熸垚閬垮厤璇姤绡℃敼
+ integrityService.recordBatchIntegrity(updateReqVO.getId());
}
@Override
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/MesProTracePublicServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/MesProTracePublicServiceImpl.java
index 744bccc..110c7b1 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/MesProTracePublicServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/MesProTracePublicServiceImpl.java
@@ -22,7 +22,12 @@
import cn.iocoder.yudao.module.mes.service.pro.batch.MesProBatchService;
import cn.iocoder.yudao.module.mes.service.pro.pallet.MesProPalletService;
import cn.iocoder.yudao.module.mes.service.pro.scan.MesProScanEventService;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer.MesTraceConsumerScanEventDO;
+import cn.iocoder.yudao.module.mes.dal.mysql.trace.consumer.MesTraceConsumerScanEventMapper;
import cn.iocoder.yudao.module.mes.service.qc.seedquality.MesQcSeedQualityService;
+import cn.iocoder.yudao.module.mes.service.trace.consumer.MesTraceConsumerScanEventService;
+import cn.iocoder.yudao.module.mes.service.trace.crossregion.MesTraceCrossRegionService;
+import cn.iocoder.yudao.module.mes.service.trace.integrity.MesTraceIntegrityService;
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
@@ -73,21 +78,62 @@
private AdminUserApi adminUserApi;
@Resource
private MesWmBatchService mesWmBatchService;
+ @Resource
+ private MesTraceConsumerScanEventService consumerScanEventService;
+ @Resource
+ private MesTraceCrossRegionService crossRegionService;
+ @Resource
+ private MesTraceIntegrityService integrityService;
+ @Resource
+ private MesTraceConsumerScanEventMapper consumerScanEventMapper;
@Override
public MesProTracePublicRespVO queryTrace(String code) {
String rawCode = StrUtil.trim(StrUtil.nullToEmpty(code));
String traceCode = normalize(rawCode);
if (StrUtil.isEmpty(traceCode)) {
+ recordConsumerScan(rawCode, traceCode, null, null, false);
throw exception(MES_TRACE_CODE_NOT_FOUND);
}
- // 1. 瑙f瀽杩芥函鍏ュ彛锛屽畾浣嶆壒娆�
- TraceEntry entry = resolveEntry(traceCode);
- if (entry.batchId == null) {
- throw exception(MES_TRACE_CODE_NOT_FOUND);
+ TraceEntry entry = null;
+ try {
+ // 1. 瑙f瀽杩芥函鍏ュ彛锛屽畾浣嶆壒娆�
+ entry = resolveEntry(traceCode);
+ if (entry.batchId == null) {
+ throw exception(MES_TRACE_CODE_NOT_FOUND);
+ }
+ // 2. 鑱氬悎鍏ㄧ▼淇℃伅
+ MesProTracePublicRespVO result = buildRespVO(rawCode, traceCode, entry.sourceType, entry.batchId);
+ recordConsumerScan(rawCode, traceCode, entry.sourceType, entry.batchId, true);
+ return result;
+ } catch (RuntimeException ex) {
+ recordConsumerScan(rawCode, traceCode, entry == null ? null : entry.sourceType,
+ entry == null ? null : entry.batchId, false);
+ throw ex;
}
- // 2. 鑱氬悎鍏ㄧ▼淇℃伅
- return buildRespVO(rawCode, traceCode, entry.sourceType, entry.batchId);
+ }
+
+ /**
+ * 璁板綍娑堣垂鑰呮壂鐮佷簨浠讹紝骞惰Е鍙戦槻浼槻绐滆揣鎵╁睍锛堢獪璐у垽瀹� + 鎵爜鎽樿锛夛紝鍧囧閿欎笉褰卞搷婧簮涓绘祦绋�
+ */
+ private MesTraceConsumerScanEventDO recordConsumerScan(String rawCode, String traceCode, String sourceType,
+ Long batchId, boolean success) {
+ MesTraceConsumerScanEventDO event = consumerScanEventService.recordScan(rawCode, traceCode, sourceType,
+ batchId, success, success ? null : MES_TRACE_CODE_NOT_FOUND.getCode().toString());
+ if (event == null) {
+ return null;
+ }
+ try {
+ crossRegionService.checkAndCreateWarning(event);
+ } catch (Exception ex) {
+ log.warn("[recordConsumerScan][绐滆揣鍒ゅ畾澶辫触] eventId={}", event.getId(), ex);
+ }
+ try {
+ integrityService.recordScanIntegrity(event);
+ } catch (Exception ex) {
+ log.warn("[recordConsumerScan][鎵爜鎽樿鐢熸垚澶辫触] eventId={}", event.getId(), ex);
+ }
+ return event;
}
// ==================== 杩芥函鐮佽В鏋� ====================
@@ -162,6 +208,8 @@
resp.setInbound(buildInbound(batchId));
// 璐ㄦ鍖哄潡
resp.setQuality(buildQuality(batch));
+ // 闃蹭吉楠岃瘉鍖哄潡
+ fillAntiFake(resp, traceCode);
// 鍙�夋墿灞曞尯鍧楋紙鏈夋暟鎹墠杩斿洖锛�
fillOptionalModules(resp, batch);
return resp;
@@ -254,6 +302,25 @@
return vo;
}
+ /**
+ * 濉厖闃蹭吉楠岃瘉鍖哄潡锛氳杩芥函鐮佺疮璁℃壂鐮佹鏁般�侀娆�/鏈�杩戞壂鐮佹椂闂达紙姝e搧楠岃瘉澧炲己锛�
+ */
+ private void fillAntiFake(MesProTracePublicRespVO resp, String traceCode) {
+ try {
+ List<MesTraceConsumerScanEventDO> events = consumerScanEventMapper.selectListByNormalizedCode(traceCode);
+ if (CollUtil.isEmpty(events)) {
+ return;
+ }
+ MesProTracePublicRespVO.AntiFakeVO vo = new MesProTracePublicRespVO.AntiFakeVO();
+ vo.setScanCount((long) events.size());
+ vo.setFirstScanTime(events.get(0).getEventTime());
+ vo.setLastScanTime(events.get(events.size() - 1).getEventTime());
+ resp.setAntiFake(vo);
+ } catch (Exception ex) {
+ log.warn("[fillAntiFake][杩芥函鐮� {} 闃蹭吉楠岃瘉缁熻澶辫触: {}]", traceCode, ex.getMessage());
+ }
+ }
+
private void fillOptionalModules(MesProTracePublicRespVO resp, MesProBatchDO batch) {
try {
List<MesWmBatchPurchaseSourceRespVO> purchaseSources = mesWmBatchService.getPurchaseSourceList(batch.getCode());
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanEventService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanEventService.java
new file mode 100644
index 0000000..a521a87
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanEventService.java
@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.mes.service.trace.consumer;
+
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer.MesTraceConsumerScanEventDO;
+
+/**
+ * 娑堣垂鑰呮壂鐮佽闂簨浠� Service 鎺ュ彛
+ * <p>
+ * 璁板綍鍏紬婧簮鎵爜璁块棶鎯呭喌銆傝褰曞け璐ヤ笉寰楀奖鍝嶆函婧愭煡璇富娴佺▼锛屾晠瀹炵幇灞傞渶淇濊瘉涓嶆姏寮傚父銆�
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+public interface MesTraceConsumerScanEventService {
+
+ /**
+ * 璁板綍涓�娆℃秷璐硅�呮壂鐮佽闂簨浠�
+ *
+ * @param traceCode 鎵爜鍘熷鍐呭
+ * @param normalizedCode 瑙f瀽鍚庣殑杩芥函鐮�
+ * @param sourceType 鍏ュ彛绫诲瀷锛欱AG/PALLET/BATCH
+ * @param batchId 鐢熶骇鎵规缂栧彿锛屽彲绌�
+ * @param success 鏄惁鏌ヨ鎴愬姛
+ * @param errorCode 澶辫触缂栫爜锛屾垚鍔熶紶 null
+ * @return 浜嬩欢璁板綍锛堝惈涓婚敭涓庢壂鐮佸湴鍖猴級锛涜褰曞け璐ヨ繑鍥� null
+ */
+ MesTraceConsumerScanEventDO recordScan(String traceCode, String normalizedCode, String sourceType, Long batchId,
+ boolean success, String errorCode);
+
+ /**
+ * 鏍规嵁 ID 鏌ヨ浜嬩欢锛堜緵鏍¢獙/璋冭瘯浣跨敤锛�
+ *
+ * @param id 涓婚敭
+ * @return 浜嬩欢
+ */
+ MesTraceConsumerScanEventDO getEvent(Long id);
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanEventServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanEventServiceImpl.java
new file mode 100644
index 0000000..26b4052
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanEventServiceImpl.java
@@ -0,0 +1,118 @@
+package cn.iocoder.yudao.module.mes.service.trace.consumer;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.digest.DigestUtil;
+import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
+import cn.iocoder.yudao.framework.ip.core.Area;
+import cn.iocoder.yudao.framework.ip.core.enums.AreaTypeEnum;
+import cn.iocoder.yudao.framework.ip.core.utils.IPUtils;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer.MesTraceConsumerScanEventDO;
+import cn.iocoder.yudao.module.mes.dal.mysql.trace.consumer.MesTraceConsumerScanEventMapper;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+
+/**
+ * 娑堣垂鑰呮壂鐮佽闂簨浠� Service 瀹炵幇
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Service
+@Slf4j
+public class MesTraceConsumerScanEventServiceImpl implements MesTraceConsumerScanEventService {
+
+ private static final int TRACE_CODE_MAX_LENGTH = 255;
+ private static final int NORMALIZED_CODE_MAX_LENGTH = 128;
+
+ @Resource
+ private MesTraceConsumerScanEventMapper eventMapper;
+
+ @Override
+ public MesTraceConsumerScanEventDO recordScan(String traceCode, String normalizedCode, String sourceType,
+ Long batchId, boolean success, String errorCode) {
+ try {
+ MesTraceConsumerScanEventDO event = new MesTraceConsumerScanEventDO();
+ event.setTraceCode(limit(traceCode, TRACE_CODE_MAX_LENGTH));
+ event.setNormalizedCode(limit(normalizedCode, NORMALIZED_CODE_MAX_LENGTH));
+ event.setSourceType(sourceType);
+ event.setChannel(limit(channel(), 32));
+ String[] region = region(ServletUtils.getClientIP());
+ event.setProvince(limit(region[0], 64));
+ event.setCity(limit(region[1], 64));
+ event.setBatchId(batchId);
+ event.setSuccess(success);
+ event.setErrorCode(limit(errorCode, 64));
+ event.setIpHash(hash(ServletUtils.getClientIP()));
+ event.setUserAgentHash(hash(ServletUtils.getUserAgent()));
+ event.setEventTime(LocalDateTime.now());
+ eventMapper.insert(event);
+ return event;
+ } catch (Exception ex) {
+ log.warn("[recordScan][璁板綍娑堣垂鑰呮壂鐮佽闂簨浠跺け璐 traceCode={}", limit(traceCode, 64), ex);
+ return null;
+ }
+ }
+
+ @Override
+ public MesTraceConsumerScanEventDO getEvent(Long id) {
+ return eventMapper.selectById(id);
+ }
+
+ /**
+ * 鏍规嵁 User-Agent 璇嗗埆鎵爜鍏ュ彛娓犻亾
+ */
+ private String channel() {
+ String ua = ServletUtils.getUserAgent();
+ if (StrUtil.isBlank(ua)) {
+ return null;
+ }
+ String lower = ua.toLowerCase();
+ if (lower.contains("micromessenger")) {
+ return "寰俊";
+ }
+ if (lower.contains("alipayclient")) {
+ return "鏀粯瀹�";
+ }
+ return "娴忚鍣�";
+ }
+
+ /**
+ * 鏍规嵁瀹㈡埛绔� IP 瑙f瀽鐪佷唤銆佸煄甯傦紱瑙f瀽澶辫触杩斿洖绌猴紝涓嶅奖鍝嶄簨浠惰褰�
+ */
+ private String[] region(String ip) {
+ if (StrUtil.isBlank(ip)) {
+ return new String[]{null, null};
+ }
+ Area area = IPUtils.getArea(ip);
+ if (area == null) {
+ return new String[]{null, null};
+ }
+ String province = null;
+ String city = null;
+ Area node = area;
+ while (node != null) {
+ Integer type = node.getType();
+ if (AreaTypeEnum.PROVINCE.getType().equals(type)) {
+ province = node.getName();
+ } else if (AreaTypeEnum.CITY.getType().equals(type)) {
+ city = node.getName();
+ }
+ node = node.getParent();
+ }
+ return new String[]{province, city};
+ }
+
+ private String hash(String value) {
+ return value == null || value.isBlank() ? null : DigestUtil.sha256Hex(value);
+ }
+
+ private String limit(String value, int maxLength) {
+ if (value == null || value.length() <= maxLength) {
+ return value;
+ }
+ return value.substring(0, maxLength);
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanStatisticsService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanStatisticsService.java
new file mode 100644
index 0000000..79c7ebe
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanStatisticsService.java
@@ -0,0 +1,15 @@
+package cn.iocoder.yudao.module.mes.service.trace.consumer;
+
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanDistributionReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanDistributionRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanSummaryRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanTrendRespVO;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+public interface MesTraceConsumerScanStatisticsService {
+ MesTraceConsumerScanSummaryRespVO getSummary(LocalDateTime startTime, LocalDateTime endTime);
+ List<MesTraceConsumerScanTrendRespVO> getTrend(LocalDateTime startTime, LocalDateTime endTime);
+ List<MesTraceConsumerScanDistributionRespVO> getDistribution(MesTraceConsumerScanDistributionReqVO reqVO);
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanStatisticsServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanStatisticsServiceImpl.java
new file mode 100644
index 0000000..032c4e2
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanStatisticsServiceImpl.java
@@ -0,0 +1,150 @@
+package cn.iocoder.yudao.module.mes.service.trace.consumer;
+
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanDistributionReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanDistributionRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanSummaryRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanTrendRespVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer.MesTraceConsumerScanEventDO;
+import cn.iocoder.yudao.module.mes.dal.mysql.trace.consumer.MesTraceConsumerScanStatisticsMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 娑堣垂鑰呮壂鐮佽闂粺璁� Service 瀹炵幇
+ * <p>
+ * 閲囩敤鏌ユ槑缁� + Java 渚ц仛鍚堬細閬垮厤缁熻 SQL 涓� MySQL/H2 鏂硅█宸紓锛屽悓鏃朵笉鏆撮湶鍔ㄦ�佸垪 SQL銆�
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Service
+public class MesTraceConsumerScanStatisticsServiceImpl implements MesTraceConsumerScanStatisticsService {
+
+ /**
+ * 鍒嗙粍缁村害鐧藉悕鍗曪細浠呭厑璁告寜鍥哄畾瀛楁鑱氬悎锛岄潪娉曠淮搴︾洿鎺ユ嫆缁�
+ */
+ private static final Map<String, Function<MesTraceConsumerScanEventDO, String>> GROUP_COLUMNS = Map.of(
+ "sourceType", e -> e.getSourceType(),
+ "success", e -> Boolean.TRUE.equals(e.getSuccess()) ? "1" : "0",
+ "channel", MesTraceConsumerScanEventDO::getChannel,
+ "province", MesTraceConsumerScanEventDO::getProvince,
+ "city", MesTraceConsumerScanEventDO::getCity,
+ "batchId", e -> e.getBatchId() == null ? null : String.valueOf(e.getBatchId()));
+
+ /**
+ * 绌哄垎缁勯敭鍗犱綅绗︼細Collectors.groupingBy 涓嶆帴鍙� null key锛屽厛缁熶竴鏇挎崲鍐嶅湪灞曠ず鏃舵槧灏勪负"鏈煡"
+ */
+ private static final String UNKNOWN_KEY = "__unknown__";
+
+ @Resource
+ private MesTraceConsumerScanStatisticsMapper mapper;
+
+ @Override
+ public MesTraceConsumerScanSummaryRespVO getSummary(LocalDateTime startTime, LocalDateTime endTime) {
+ List<MesTraceConsumerScanEventDO> events = mapper.selectListByTime(startTime, endTime);
+ MesTraceConsumerScanSummaryRespVO vo = new MesTraceConsumerScanSummaryRespVO();
+ vo.setTotal((long) events.size());
+ vo.setSuccess(events.stream().filter(e -> Boolean.TRUE.equals(e.getSuccess())).count());
+ vo.setFailed(events.stream().filter(e -> !Boolean.TRUE.equals(e.getSuccess())).count());
+ vo.setUniqueBatchCount(events.stream().map(MesTraceConsumerScanEventDO::getBatchId)
+ .filter(java.util.Objects::nonNull).distinct().count());
+ return vo;
+ }
+
+ @Override
+ public List<MesTraceConsumerScanTrendRespVO> getTrend(LocalDateTime startTime, LocalDateTime endTime) {
+ List<MesTraceConsumerScanEventDO> events = mapper.selectListByTime(startTime, endTime);
+ // 鎸夋棩鏈熻仛鍚�
+ Map<LocalDate, MesTraceConsumerScanTrendRespVO> data = new TreeMap<>();
+ LocalDate min = null;
+ LocalDate max = null;
+ for (MesTraceConsumerScanEventDO event : events) {
+ LocalDate date = event.getEventTime().toLocalDate();
+ MesTraceConsumerScanTrendRespVO vo = data.computeIfAbsent(date, d -> {
+ MesTraceConsumerScanTrendRespVO v = new MesTraceConsumerScanTrendRespVO();
+ v.setDate(d.toString());
+ v.setTotal(0L);
+ v.setSuccess(0L);
+ v.setFailed(0L);
+ return v;
+ });
+ vo.setTotal(vo.getTotal() + 1);
+ if (Boolean.TRUE.equals(event.getSuccess())) {
+ vo.setSuccess(vo.getSuccess() + 1);
+ } else {
+ vo.setFailed(vo.getFailed() + 1);
+ }
+ if (min == null || date.isBefore(min)) {
+ min = date;
+ }
+ if (max == null || date.isAfter(max)) {
+ max = date;
+ }
+ }
+ // 琛ラ綈鍖洪棿鍐呮棤鏁版嵁鐨勬棩鏈燂紙鏃堕棿鍙傛暟涓虹┖鏃堕��鍥炲凡鏈夋暟鎹殑鏈�灏�/鏈�澶ф棩鏈熷尯闂达級
+ LocalDate start = startTime != null ? startTime.toLocalDate() : min;
+ LocalDate end = endTime != null
+ ? (endTime.toLocalTime().equals(LocalTime.MIDNIGHT) ? endTime.toLocalDate().minusDays(1) : endTime.toLocalDate())
+ : max;
+ if (start != null && end != null && !start.isAfter(end)) {
+ for (LocalDate day = start; !day.isAfter(end); day = day.plusDays(1)) {
+ data.computeIfAbsent(day, d -> {
+ MesTraceConsumerScanTrendRespVO v = new MesTraceConsumerScanTrendRespVO();
+ v.setDate(d.toString());
+ v.setTotal(0L);
+ v.setSuccess(0L);
+ v.setFailed(0L);
+ return v;
+ });
+ }
+ }
+ return new ArrayList<>(data.values());
+ }
+
+ @Override
+ public List<MesTraceConsumerScanDistributionRespVO> getDistribution(MesTraceConsumerScanDistributionReqVO reqVO) {
+ Function<MesTraceConsumerScanEventDO, String> extractor = GROUP_COLUMNS.get(reqVO.getGroupBy());
+ if (extractor == null) {
+ throw new IllegalArgumentException("涓嶆敮鎸佺殑鍒嗙粍缁村害");
+ }
+ List<MesTraceConsumerScanEventDO> events = mapper.selectListByTime(reqVO.getStartTime(), reqVO.getEndTime());
+ // 鎸夋暟閲忓�掑簭鍒嗙粍锛沢roupingBy 涓嶆帴鍙� null key锛屽厛缁熶竴鏇挎崲涓哄崰浣嶇鍐嶈仛鍚�
+ Map<String, Long> counts = events.stream().collect(Collectors.groupingBy(e -> {
+ String key = extractor.apply(e);
+ return key == null ? UNKNOWN_KEY : key;
+ }, Collectors.counting()));
+ return counts.entrySet().stream()
+ .sorted(Comparator.comparing(Map.Entry<String, Long>::getValue).reversed()
+ .thenComparing(Map.Entry.comparingByKey()))
+ .map(entry -> {
+ MesTraceConsumerScanDistributionRespVO vo = new MesTraceConsumerScanDistributionRespVO();
+ String name = entry.getKey();
+ vo.setName(UNKNOWN_KEY.equals(name) ? "鏈煡" : displayName(reqVO.getGroupBy(), name));
+ vo.setCount(entry.getValue());
+ return vo;
+ })
+ .collect(Collectors.toCollection(ArrayList::new));
+ }
+
+ /**
+ * 甯冨皵鍒嗗尯鍋氬彲璇绘槧灏勶紝淇濊瘉缁熻鍙e緞涓庡墠绔睍绀轰竴鑷�
+ */
+ private String displayName(String groupBy, String name) {
+ if ("success".equals(groupBy)) {
+ return "1".equals(name) ? "鎴愬姛" : "澶辫触";
+ }
+ return name;
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/crossregion/MesTraceCrossRegionService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/crossregion/MesTraceCrossRegionService.java
new file mode 100644
index 0000000..678510a
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/crossregion/MesTraceCrossRegionService.java
@@ -0,0 +1,80 @@
+package cn.iocoder.yudao.module.mes.service.trace.crossregion;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceAntiConfigRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionHandleReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionStatisticsReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionStatisticsRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionSummaryRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionWarningPageReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionWarningRespVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer.MesTraceConsumerScanEventDO;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 绐滆揣棰勮 Service 鎺ュ彛
+ * <p>
+ * 娑堣垂鑰呮壂鐮佸湴鍖轰笌琚嬬爜鍑哄簱缁忛攢鍟嗘墍鍦ㄥ湴鍖轰笉涓�鑷存椂鑷姩鐢熸垚棰勮锛屽苟鎻愪緵绠$悊绔ń鏌ャ�佸鐞嗕笌缁熻鑳藉姏銆�
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+public interface MesTraceCrossRegionService {
+
+ /**
+ * 娑堣垂鑰呮壂鐮佹垚鍔熷悗杩涜绐滆揣鍒ゅ畾锛屽紓甯告祦鍚戣嚜鍔ㄧ敓鎴愰璀�
+ * <p>
+ * 鍒ゅ畾澶辫触涓嶅奖鍝嶆函婧愪富娴佺▼锛屽疄鐜板眰闇�淇濊瘉涓嶆姏寮傚父銆�
+ *
+ * @param event 娑堣垂鑰呮壂鐮佷簨浠讹紙鍚В鏋愬悗鐨勮拷婧爜銆佸叆鍙g被鍨嬨�佹壂鐮佸湴鍖猴級
+ */
+ void checkAndCreateWarning(MesTraceConsumerScanEventDO event);
+
+ /**
+ * 鑾峰緱绐滆揣棰勮鍒嗛〉
+ *
+ * @param reqVO 鏌ヨ鏉′欢
+ * @return 绐滆揣棰勮鍒嗛〉
+ */
+ PageResult<MesTraceCrossRegionWarningRespVO> getWarningPage(MesTraceCrossRegionWarningPageReqVO reqVO);
+
+ /**
+ * 澶勭悊绐滆揣棰勮锛堝凡澶勭悊 / 璇姤锛夛紝浠呭緟澶勭悊鐘舵�佸彲澶勭悊
+ *
+ * @param reqVO 澶勭悊淇℃伅
+ */
+ void handleWarning(MesTraceCrossRegionHandleReqVO reqVO);
+
+ /**
+ * 鑾峰緱绐滆揣棰勮姹囨��
+ *
+ * @param startTime 寮�濮嬫椂闂达紝鍙┖
+ * @param endTime 缁撴潫鏃堕棿锛屽彲绌�
+ * @return 姹囨�讳俊鎭�
+ */
+ MesTraceCrossRegionSummaryRespVO getWarningSummary(LocalDateTime startTime, LocalDateTime endTime);
+
+ /**
+ * 鑾峰緱绐滆揣棰勮鍒嗗竷缁熻锛堟寜鐪佷唤/鍩庡競/缁忛攢鍟�/鐗╂枡/鎵规鍒嗙粍锛�
+ *
+ * @param reqVO 鍒嗙粍鏉′欢
+ * @return 鍒嗗竷缁熻鍒楄〃
+ */
+ List<MesTraceCrossRegionStatisticsRespVO> getWarningStatistics(MesTraceCrossRegionStatisticsReqVO reqVO);
+
+ /**
+ * 鑾峰緱闃茬獪璐ц鍒欓厤缃�
+ *
+ * @return 瑙勫垯閰嶇疆
+ */
+ MesTraceAntiConfigRespVO getConfig();
+
+ /**
+ * 鏇存柊闃茬獪璐ц鍒欓厤缃紙鍒ゅ畾绮掑害鍒囨崲锛歅ROVINCE 璺ㄧ渷 / CITY 璺ㄥ競锛�
+ *
+ * @param warningLevel 鍒ゅ畾绮掑害
+ */
+ void updateConfig(String warningLevel);
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/crossregion/MesTraceCrossRegionServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/crossregion/MesTraceCrossRegionServiceImpl.java
new file mode 100644
index 0000000..9d6c679
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/crossregion/MesTraceCrossRegionServiceImpl.java
@@ -0,0 +1,423 @@
+package cn.iocoder.yudao.module.mes.service.trace.crossregion;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.ObjUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.ip.core.Area;
+import cn.iocoder.yudao.framework.ip.core.enums.AreaTypeEnum;
+import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
+import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
+import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceAntiConfigRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionHandleReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionStatisticsReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionStatisticsRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionSummaryRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionWarningPageReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionWarningRespVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.batch.MesProBatchDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.pallet.MesProPalletDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer.MesTraceConsumerScanEventDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.crossregion.MesTraceAntiConfigDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.crossregion.MesTraceCrossRegionWarningDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDetailDO;
+import cn.iocoder.yudao.module.mes.dal.mysql.trace.crossregion.MesTraceAntiConfigMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.trace.crossregion.MesTraceCrossRegionWarningMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesDetailMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesMapper;
+import cn.iocoder.yudao.module.mes.enums.trace.MesTraceWarningStatusEnum;
+import cn.iocoder.yudao.module.mes.enums.trace.MesTraceWarningTypeEnum;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
+import cn.iocoder.yudao.module.mes.service.pro.bagcode.MesProBagCodeService;
+import cn.iocoder.yudao.module.mes.service.pro.batch.MesProBatchService;
+import cn.iocoder.yudao.module.mes.service.pro.pallet.MesProPalletService;
+import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
+import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MES_TRACE_ANTI_CONFIG_NOT_EXISTS;
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MES_TRACE_ANTI_CONFIG_VALUE_INVALID;
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MES_TRACE_CROSS_REGION_STATUS_INVALID;
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MES_TRACE_CROSS_REGION_WARNING_NOT_EXISTS;
+
+/**
+ * 绐滆揣棰勮 Service 瀹炵幇绫�
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Service
+@Validated
+@Slf4j
+public class MesTraceCrossRegionServiceImpl implements MesTraceCrossRegionService {
+
+ private static final String CONFIG_KEY_WARNING_LEVEL = "warning_level";
+
+ /**
+ * 鍒嗗竷缁熻鍒嗙粍鐧藉悕鍗曪細浠呭厑璁稿浐瀹氫笟鍔″瓧娈靛垎缁勶紝闃叉浠绘剰 key 浼犲叆銆�
+ */
+ private static final Map<String, java.util.function.Function<MesTraceCrossRegionWarningDO, String>> STAT_GROUP_EXTRACTORS =
+ Map.ofEntries(
+ Map.entry("scanProvince", w -> w.getScanProvince()),
+ Map.entry("scanCity", w -> w.getScanCity()),
+ Map.entry("clientId", w -> w.getClientName()),
+ Map.entry("itemId", w -> w.getItemName()),
+ Map.entry("batchId", w -> w.getBatchCode()));
+
+ @Resource
+ private MesTraceCrossRegionWarningMapper warningMapper;
+ @Resource
+ private MesTraceAntiConfigMapper antiConfigMapper;
+ @Resource
+ private MesWmProductSalesMapper productSalesMapper;
+ @Resource
+ private MesWmProductSalesDetailMapper productSalesDetailMapper;
+ @Resource
+ private MesProBagCodeService bagCodeService;
+ @Resource
+ private MesProPalletService palletService;
+ @Resource
+ private MesProBatchService batchService;
+ @Resource
+ private MesMdmItemService mdmItemService;
+ @Resource
+ private CrmCustomerApi customerApi;
+ @Resource
+ private AdminUserApi adminUserApi;
+
+ @Override
+ public void checkAndCreateWarning(MesTraceConsumerScanEventDO event) {
+ try {
+ doCheckAndCreateWarning(event);
+ } catch (Exception ex) {
+ // 绐滆揣鍒ゅ畾澶辫触涓嶅奖鍝嶆秷璐硅�呮函婧愪富娴佺▼
+ log.warn("[checkAndCreateWarning][绐滆揣鍒ゅ畾澶辫触] traceCode={}", event == null ? null : event.getNormalizedCode(), ex);
+ }
+ }
+
+ private void doCheckAndCreateWarning(MesTraceConsumerScanEventDO event) {
+ if (event == null) {
+ return;
+ }
+ // 1. 浠呰鐮�/鎵樼洏鍏ュ彛鍙簿纭畾浣嶅嚭搴撳幓鍚戯紝鎵规鐮佽烦杩�
+ String sourceType = event.getSourceType();
+ boolean bag = "BAG".equals(sourceType);
+ boolean pallet = "PALLET".equals(sourceType);
+ if (!bag && !pallet) {
+ return;
+ }
+ // 2. 鎵爜鍦板尯锛圛P 褰掑睘鍦帮紝璁板綍浜嬩欢鏃跺凡瑙f瀽锛夛紝鏃犲湴鍖烘棤娉曞垽瀹�
+ String scanProvince = event.getProvince();
+ String scanCity = event.getCity();
+ if (StrUtil.isBlank(scanProvince) && StrUtil.isBlank(scanCity)) {
+ return;
+ }
+ // 3. 鍙嶆煡琚嬬爜/鎵樼洏锛屽畾浣嶅嚭搴撳崟
+ Long codeId;
+ Long batchId;
+ String code;
+ Long salesId;
+ if (bag) {
+ MesProBagCodeDO bagCode = bagCodeService.getBagCodeByCode(event.getNormalizedCode());
+ if (bagCode == null) {
+ return;
+ }
+ codeId = bagCode.getId();
+ code = bagCode.getCode();
+ batchId = bagCode.getBatchId();
+ salesId = bagCode.getSalesId();
+ } else {
+ MesProPalletDO palletCode = palletService.getPalletByCode(event.getNormalizedCode());
+ if (palletCode == null) {
+ return;
+ }
+ codeId = palletCode.getId();
+ code = palletCode.getCode();
+ batchId = palletCode.getBatchId();
+ salesId = palletCode.getSalesId();
+ }
+ // 4. 琚嬬爜鏈洖鍐欏嚭搴撳崟锛堝巻鍙叉暟鎹級鏃讹紝鍏滃簳鏌ユ槑缁嗚〃
+ if (salesId == null) {
+ MesWmProductSalesDetailDO detail = bag
+ ? productSalesDetailMapper.selectLatestByBagCodeId(codeId)
+ : productSalesDetailMapper.selectLatestByPalletCodeId(codeId);
+ if (detail == null || detail.getSalesId() == null) {
+ return; // 鏈嚭搴擄紝鏃犵獪璐ф瘮瀵瑰熀纭�
+ }
+ salesId = detail.getSalesId();
+ }
+ // 5. 鏌ュ嚭搴撳崟涓庣粡閿�鍟嗗湴鍖�
+ MesWmProductSalesDO sales = productSalesMapper.selectById(salesId);
+ if (sales == null || sales.getClientId() == null) {
+ return;
+ }
+ CrmCustomerRespDTO customer = customerApi.getCustomer(sales.getClientId());
+ if (customer == null || customer.getAreaId() == null) {
+ return;
+ }
+ String[] dealerRegion = resolveRegion(customer.getAreaId());
+ String dealerProvince = dealerRegion[0];
+ String dealerCity = dealerRegion[1];
+ if (StrUtil.isBlank(dealerProvince)) {
+ return;
+ }
+ // 6. 鎸夊垽瀹氱矑搴︽瘮瀵�
+ String warningType = matchWarningType(getWarningLevel(), scanProvince, scanCity, dealerProvince, dealerCity);
+ if (warningType == null) {
+ return;
+ }
+ // 7. 鍐椾綑濉厖鐗╂枡/鎵规淇℃伅
+ MesProBatchDO batch = batchId != null ? batchService.getBatch(batchId) : null;
+ MesMdmItemDO item = batch != null && batch.getItemId() != null ? mdmItemService.getItem(batch.getItemId()) : null;
+ // 8. 鍐欏叆棰勮
+ MesTraceCrossRegionWarningDO warning = MesTraceCrossRegionWarningDO.builder()
+ .warningNo(generateWarningNo())
+ .bagCodeId(bag ? codeId : null)
+ .bagCode(bag ? code : null)
+ .palletCodeId(pallet ? codeId : null)
+ .palletCode(pallet ? code : null)
+ .batchId(batch != null ? batch.getId() : null)
+ .batchCode(batch != null ? batch.getCode() : null)
+ .itemId(item != null ? item.getId() : null)
+ .itemCode(item != null ? item.getCode() : null)
+ .itemName(item != null ? item.getName() : null)
+ .salesId(sales.getId())
+ .salesCode(sales.getCode())
+ .clientId(sales.getClientId())
+ .clientName(sales.getClientName())
+ .dealerProvince(dealerProvince)
+ .dealerCity(dealerCity)
+ .scanProvince(scanProvince)
+ .scanCity(scanCity)
+ .warningType(warningType)
+ .scanEventId(event.getId())
+ .status(MesTraceWarningStatusEnum.PENDING.getStatus())
+ .eventTime(event.getEventTime() != null ? event.getEventTime() : LocalDateTime.now())
+ .build();
+ warningMapper.insert(warning);
+ }
+
+ @Override
+ public PageResult<MesTraceCrossRegionWarningRespVO> getWarningPage(MesTraceCrossRegionWarningPageReqVO reqVO) {
+ PageResult<MesTraceCrossRegionWarningDO> pageResult = warningMapper.selectPage(reqVO);
+ if (CollUtil.isEmpty(pageResult.getList())) {
+ return PageResult.empty();
+ }
+ // 鎵归噺鏌ュ鐞嗕汉濮撳悕
+ Set<Long> handleUserIds = convertSet(pageResult.getList(), MesTraceCrossRegionWarningDO::getHandleUserId);
+ Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(handleUserIds);
+ List<MesTraceCrossRegionWarningRespVO> list = BeanUtils.toBean(pageResult.getList(),
+ MesTraceCrossRegionWarningRespVO.class, vo -> {
+ MesTraceCrossRegionWarningDO warning = pageResult.getList().stream()
+ .filter(w -> ObjUtil.equal(w.getId(), vo.getId())).findFirst().orElse(null);
+ if (warning == null) {
+ return;
+ }
+ vo.setStatusName(statusName(warning.getStatus()));
+ vo.setWarningTypeName(warningTypeName(warning.getWarningType()));
+ MapUtils.findAndThen(userMap, warning.getHandleUserId(),
+ user -> vo.setHandleUserName(user.getNickname()));
+ });
+ return new PageResult<>(list, pageResult.getTotal());
+ }
+
+ @Override
+ public void handleWarning(MesTraceCrossRegionHandleReqVO reqVO) {
+ MesTraceCrossRegionWarningDO warning = warningMapper.selectById(reqVO.getId());
+ if (warning == null) {
+ throw exception(MES_TRACE_CROSS_REGION_WARNING_NOT_EXISTS);
+ }
+ if (!ObjUtil.equal(MesTraceWarningStatusEnum.PENDING.getStatus(), warning.getStatus())) {
+ throw exception(MES_TRACE_CROSS_REGION_STATUS_INVALID);
+ }
+ if (!ObjUtil.equal(MesTraceWarningStatusEnum.HANDLED.getStatus(), reqVO.getStatus())
+ && !ObjUtil.equal(MesTraceWarningStatusEnum.FALSE_ALARM.getStatus(), reqVO.getStatus())) {
+ throw exception(MES_TRACE_CROSS_REGION_STATUS_INVALID);
+ }
+ warningMapper.updateById(new MesTraceCrossRegionWarningDO()
+ .setId(warning.getId())
+ .setStatus(reqVO.getStatus())
+ .setHandleRemark(reqVO.getHandleRemark())
+ .setHandleUserId(SecurityFrameworkUtils.getLoginUserId())
+ .setHandleTime(LocalDateTime.now()));
+ }
+
+ @Override
+ public MesTraceCrossRegionSummaryRespVO getWarningSummary(LocalDateTime startTime, LocalDateTime endTime) {
+ List<MesTraceCrossRegionWarningDO> list = warningMapper.selectListByEventTimeBetween(startTime, endTime);
+ MesTraceCrossRegionSummaryRespVO vo = new MesTraceCrossRegionSummaryRespVO();
+ long total = list.size();
+ long pending = 0L;
+ long handled = 0L;
+ long falseAlarm = 0L;
+ long crossProvince = 0L;
+ long crossCity = 0L;
+ for (MesTraceCrossRegionWarningDO w : list) {
+ if (ObjUtil.equal(MesTraceWarningStatusEnum.PENDING.getStatus(), w.getStatus())) {
+ pending++;
+ } else if (ObjUtil.equal(MesTraceWarningStatusEnum.HANDLED.getStatus(), w.getStatus())) {
+ handled++;
+ } else if (ObjUtil.equal(MesTraceWarningStatusEnum.FALSE_ALARM.getStatus(), w.getStatus())) {
+ falseAlarm++;
+ }
+ if (ObjUtil.equal(MesTraceWarningTypeEnum.CROSS_PROVINCE.getType(), w.getWarningType())) {
+ crossProvince++;
+ } else if (ObjUtil.equal(MesTraceWarningTypeEnum.CROSS_CITY.getType(), w.getWarningType())) {
+ crossCity++;
+ }
+ }
+ vo.setTotal(total).setPending(pending).setHandled(handled).setFalseAlarm(falseAlarm)
+ .setCrossProvince(crossProvince).setCrossCity(crossCity);
+ return vo;
+ }
+
+ @Override
+ public List<MesTraceCrossRegionStatisticsRespVO> getWarningStatistics(MesTraceCrossRegionStatisticsReqVO reqVO) {
+ java.util.function.Function<MesTraceCrossRegionWarningDO, String> extractor = STAT_GROUP_EXTRACTORS.get(reqVO.getGroupBy());
+ if (extractor == null) {
+ throw new IllegalArgumentException("涓嶆敮鎸佺殑鍒嗙粍缁村害");
+ }
+ List<MesTraceCrossRegionWarningDO> list = warningMapper.selectListByEventTimeBetween(reqVO.getStartTime(), reqVO.getEndTime());
+ Map<String, Long> counts = new LinkedHashMap<>();
+ for (MesTraceCrossRegionWarningDO w : list) {
+ String key = StrUtil.nullToDefault(extractor.apply(w), "鏈煡");
+ counts.merge(key, 1L, Long::sum);
+ }
+ return counts.entrySet().stream()
+ .sorted(Map.Entry.<String, Long>comparingByValue().reversed())
+ .map(entry -> new MesTraceCrossRegionStatisticsRespVO().setName(entry.getKey()).setCount(entry.getValue()))
+ .toList();
+ }
+
+ @Override
+ public MesTraceAntiConfigRespVO getConfig() {
+ MesTraceAntiConfigDO config = antiConfigMapper.selectByConfigKey(CONFIG_KEY_WARNING_LEVEL);
+ if (config == null) {
+ throw exception(MES_TRACE_ANTI_CONFIG_NOT_EXISTS);
+ }
+ return new MesTraceAntiConfigRespVO().setWarningLevel(config.getConfigValue()).setRemark(config.getRemark());
+ }
+
+ @Override
+ public void updateConfig(String warningLevel) {
+ if (!ObjUtil.equal("PROVINCE", warningLevel) && !ObjUtil.equal("CITY", warningLevel)) {
+ throw exception(MES_TRACE_ANTI_CONFIG_VALUE_INVALID);
+ }
+ MesTraceAntiConfigDO config = antiConfigMapper.selectByConfigKey(CONFIG_KEY_WARNING_LEVEL);
+ if (config == null) {
+ throw exception(MES_TRACE_ANTI_CONFIG_NOT_EXISTS);
+ }
+ antiConfigMapper.updateById(new MesTraceAntiConfigDO().setId(config.getId()).setConfigValue(warningLevel));
+ }
+
+ // ==================== 绉佹湁鏂规硶 ====================
+
+ /**
+ * 璇诲彇鍒ゅ畾绮掑害锛歅ROVINCE 璺ㄧ渷 / CITY 璺ㄥ競锛岄厤缃己澶辨椂榛樿鎸夌渷鍒ゅ畾
+ */
+ private String getWarningLevel() {
+ MesTraceAntiConfigDO config = antiConfigMapper.selectByConfigKey(CONFIG_KEY_WARNING_LEVEL);
+ return config != null ? StrUtil.nullToDefault(config.getConfigValue(), "PROVINCE") : "PROVINCE";
+ }
+
+ /**
+ * 鎸夊垽瀹氱矑搴︽瘮瀵规壂鐮佸湴鍖轰笌缁忛攢鍟嗗湴鍖猴紝杩斿洖鍛戒腑棰勮绫诲瀷锛屾湭鍛戒腑杩斿洖 null
+ */
+ private String matchWarningType(String level, String scanProvince, String scanCity,
+ String dealerProvince, String dealerCity) {
+ if ("CITY".equals(level)) {
+ // 鍩庡競绮掑害锛氭壂鐮佸競涓庣粡閿�鍟嗗競涓嶄竴鑷达紙闇�鍙屾柟閮芥湁鍩庡競锛屽惁鍒欓��鍥炵渷绾у垽鏂級
+ if (StrUtil.isNotBlank(scanCity) && StrUtil.isNotBlank(dealerCity) && !scanCity.equals(dealerCity)) {
+ return MesTraceWarningTypeEnum.CROSS_CITY.getType();
+ }
+ if (StrUtil.isNotBlank(scanProvince) && StrUtil.isNotBlank(dealerProvince) && !scanProvince.equals(dealerProvince)) {
+ return MesTraceWarningTypeEnum.CROSS_PROVINCE.getType();
+ }
+ return null;
+ }
+ // 鐪佺骇绮掑害
+ if (StrUtil.isNotBlank(scanProvince) && StrUtil.isNotBlank(dealerProvince) && !scanProvince.equals(dealerProvince)) {
+ return MesTraceWarningTypeEnum.CROSS_PROVINCE.getType();
+ }
+ return null;
+ }
+
+ /**
+ * 鏍规嵁 Area id 鍚戜笂瑙f瀽鐪佸競鍖猴紙涓庢秷璐硅�呮壂鐮佷簨浠� IP 褰掑睘鍦拌В鏋愬彛寰勪竴鑷达紝淇濊瘉鍙瘮杈冿級
+ */
+ private String[] resolveRegion(Integer areaId) {
+ if (areaId == null) {
+ return new String[]{null, null};
+ }
+ Area area = AreaUtils.getArea(areaId);
+ if (area == null) {
+ return new String[]{null, null};
+ }
+ String province = null;
+ String city = null;
+ Area node = area;
+ while (node != null) {
+ Integer type = node.getType();
+ if (AreaTypeEnum.PROVINCE.getType().equals(type)) {
+ province = node.getName();
+ } else if (AreaTypeEnum.CITY.getType().equals(type)) {
+ city = node.getName();
+ }
+ node = node.getParent();
+ }
+ return new String[]{province, city};
+ }
+
+ /**
+ * 鐢熸垚棰勮缂栧彿锛歐ARN + 鏃堕棿鎴� + 闅忔満搴忓彿
+ */
+ private String generateWarningNo() {
+ return "WARN" + java.time.LocalDateTime.now()
+ .format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))
+ + StrUtil.sub(IdUtil.fastSimpleUUID(), 0, 6).toUpperCase();
+ }
+
+ private String statusName(Integer status) {
+ if (status == null) {
+ return "";
+ }
+ for (MesTraceWarningStatusEnum e : MesTraceWarningStatusEnum.values()) {
+ if (ObjUtil.equal(e.getStatus(), status)) {
+ return e.getName();
+ }
+ }
+ return String.valueOf(status);
+ }
+
+ private String warningTypeName(String type) {
+ if (type == null) {
+ return "";
+ }
+ for (MesTraceWarningTypeEnum e : MesTraceWarningTypeEnum.values()) {
+ if (ObjUtil.equal(e.getType(), type)) {
+ return e.getName();
+ }
+ }
+ return type;
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/integrity/MesTraceIntegrityService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/integrity/MesTraceIntegrityService.java
new file mode 100644
index 0000000..4a2a3d3
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/integrity/MesTraceIntegrityService.java
@@ -0,0 +1,57 @@
+package cn.iocoder.yudao.module.mes.service.trace.integrity;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.integrity.vo.MesTraceIntegrityRecordPageReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.integrity.vo.MesTraceIntegrityVerifyRespVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer.MesTraceConsumerScanEventDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.integrity.MesTraceIntegrityRecordDO;
+
+/**
+ * 鏁版嵁瀹屾暣鎬� Service 鎺ュ彛
+ * <p>
+ * 鍦ㄦ壒娆″垱寤恒�侀攢鍞嚭搴撱�佹秷璐硅�呮壂鐮佺瓑鍏抽敭浜嬩欢鍙戠敓鏃讹紝瀵逛笉鍙彉鏍稿績瀛楁鐢熸垚 SHA-256 鎽樿骞跺瓨鍌紱
+ * 鎻愪緵閲嶇畻姣斿鑳藉姏锛屼緵绠$悊绔彂鐜颁簨鍚庣鏀广�傛憳瑕佺敓鎴愬け璐ヤ笉寰楅樆鏂笟鍔′富娴佺▼銆�
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+public interface MesTraceIntegrityService {
+
+ /**
+ * 鐢熸垚骞朵繚瀛樻壒娆″畬鏁存�ф憳瑕侊紙code|itemId|lineCode|produceDate|planQuantity锛�
+ *
+ * @param batchId 鎵规缂栧彿
+ */
+ void recordBatchIntegrity(Long batchId);
+
+ /**
+ * 鐢熸垚骞朵繚瀛橀攢鍞嚭搴撳畬鏁存�ф憳瑕侊紙code|clientId|salesDate|鏄庣粏琚嬬爜/鎵樼洏鐮乮d鍒楄〃锛�
+ *
+ * @param salesId 閿�鍞嚭搴撳崟缂栧彿
+ */
+ void recordSalesIntegrity(Long salesId);
+
+ /**
+ * 鐢熸垚骞朵繚瀛樻秷璐硅�呮壂鐮佷簨浠跺畬鏁存�ф憳瑕侊紙normalizedCode|sourceType|province|city|success|eventTime锛�
+ *
+ * @param event 娑堣垂鑰呮壂鐮佷簨浠�
+ */
+ void recordScanIntegrity(MesTraceConsumerScanEventDO event);
+
+ /**
+ * 鏍¢獙鏁版嵁瀹屾暣鎬э細閲嶇畻褰撳墠鏁版嵁鎽樿锛屼笌瀛樺偍鎽樿姣斿
+ *
+ * @param bizType 涓氬姟绫诲瀷锛欱ATCH / SALES / SCAN
+ * @param bizId 涓氬姟璁板綍缂栧彿
+ * @return 鏍¢獙缁撴灉
+ */
+ MesTraceIntegrityVerifyRespVO verify(String bizType, Long bizId);
+
+ /**
+ * 鑾峰緱鏁版嵁瀹屾暣鎬ц褰曞垎椤�
+ *
+ * @param reqVO 鏌ヨ鏉′欢
+ * @return 璁板綍鍒嗛〉
+ */
+ PageResult<MesTraceIntegrityRecordDO> getIntegrityPage(MesTraceIntegrityRecordPageReqVO reqVO);
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/integrity/MesTraceIntegrityServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/integrity/MesTraceIntegrityServiceImpl.java
new file mode 100644
index 0000000..e167248
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/integrity/MesTraceIntegrityServiceImpl.java
@@ -0,0 +1,237 @@
+package cn.iocoder.yudao.module.mes.service.trace.integrity;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.digest.DigestUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.integrity.vo.MesTraceIntegrityRecordPageReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.integrity.vo.MesTraceIntegrityVerifyRespVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.batch.MesProBatchDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer.MesTraceConsumerScanEventDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.integrity.MesTraceIntegrityRecordDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDetailDO;
+import cn.iocoder.yudao.module.mes.dal.mysql.pro.bagcode.MesProBagCodeMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.pro.batch.MesProBatchMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.trace.consumer.MesTraceConsumerScanEventMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.trace.integrity.MesTraceIntegrityRecordMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesDetailMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesMapper;
+import cn.iocoder.yudao.module.mes.enums.trace.MesTraceIntegrityBizTypeEnum;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.time.LocalDateTime;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Objects;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MES_TRACE_INTEGRITY_BIZ_NOT_EXISTS;
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MES_TRACE_INTEGRITY_BIZ_TYPE_INVALID;
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MES_TRACE_INTEGRITY_RECORD_NOT_EXISTS;
+
+/**
+ * 鏁版嵁瀹屾暣鎬� Service 瀹炵幇绫�
+ * <p>
+ * 鎽樿浠呰鐩栦笉鍙彉鏍稿績瀛楁锛岄伩鍏嶆甯镐笟鍔℃祦杞紙鑽夌鈫掔敓浜т腑鈫掑畬鎴愩�佸嚭搴撳悗鐘舵�佹洿鏂扮瓑锛夊鑷磋鎶ャ��
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Service
+@Validated
+@Slf4j
+public class MesTraceIntegrityServiceImpl implements MesTraceIntegrityService {
+
+ @Resource
+ private MesTraceIntegrityRecordMapper integrityRecordMapper;
+ @Resource
+ private MesProBatchMapper batchMapper;
+ @Resource
+ private MesProBagCodeMapper bagCodeMapper;
+ @Resource
+ private MesWmProductSalesMapper productSalesMapper;
+ @Resource
+ private MesWmProductSalesDetailMapper productSalesDetailMapper;
+ @Resource
+ private MesTraceConsumerScanEventMapper scanEventMapper;
+
+ @Override
+ public void recordBatchIntegrity(Long batchId) {
+ try {
+ MesProBatchDO batch = batchMapper.selectById(batchId);
+ if (batch == null) {
+ return;
+ }
+ upsertRecord(MesTraceIntegrityBizTypeEnum.BATCH.getType(), batch.getId(), batch.getCode(), batchHash(batch));
+ } catch (Exception ex) {
+ log.warn("[recordBatchIntegrity][鎵规鎽樿鐢熸垚澶辫触] batchId={}", batchId, ex);
+ }
+ }
+
+ @Override
+ public void recordSalesIntegrity(Long salesId) {
+ try {
+ MesWmProductSalesDO sales = productSalesMapper.selectById(salesId);
+ if (sales == null) {
+ return;
+ }
+ String hash = salesHash(sales, productSalesDetailMapper.selectListBySalesId(salesId));
+ upsertRecord(MesTraceIntegrityBizTypeEnum.SALES.getType(), sales.getId(), sales.getCode(), hash);
+ } catch (Exception ex) {
+ log.warn("[recordSalesIntegrity][鍑哄簱鎽樿鐢熸垚澶辫触] salesId={}", salesId, ex);
+ }
+ }
+
+ @Override
+ public void recordScanIntegrity(MesTraceConsumerScanEventDO event) {
+ if (event == null || event.getId() == null) {
+ return;
+ }
+ try {
+ upsertRecord(MesTraceIntegrityBizTypeEnum.SCAN.getType(), event.getId(), event.getNormalizedCode(), scanHash(event));
+ } catch (Exception ex) {
+ log.warn("[recordScanIntegrity][鎵爜鎽樿鐢熸垚澶辫触] scanEventId={}", event.getId(), ex);
+ }
+ }
+
+ @Override
+ public MesTraceIntegrityVerifyRespVO verify(String bizType, Long bizId) {
+ if (!MesTraceIntegrityBizTypeEnum.isValid(bizType)) {
+ throw exception(MES_TRACE_INTEGRITY_BIZ_TYPE_INVALID);
+ }
+ MesTraceIntegrityRecordDO record = integrityRecordMapper.selectByBiz(bizType, bizId);
+ if (record == null) {
+ throw exception(MES_TRACE_INTEGRITY_RECORD_NOT_EXISTS);
+ }
+ String currentHash;
+ String bizCode = record.getBizCode();
+ String bagSetHash = null;
+ if (MesTraceIntegrityBizTypeEnum.BATCH.getType().equals(bizType)) {
+ MesProBatchDO batch = batchMapper.selectById(bizId);
+ if (batch == null) {
+ throw exception(MES_TRACE_INTEGRITY_BIZ_NOT_EXISTS);
+ }
+ bizCode = batch.getCode();
+ currentHash = batchHash(batch);
+ bagSetHash = bagSetHash(bizId);
+ } else if (MesTraceIntegrityBizTypeEnum.SALES.getType().equals(bizType)) {
+ MesWmProductSalesDO sales = productSalesMapper.selectById(bizId);
+ if (sales == null) {
+ throw exception(MES_TRACE_INTEGRITY_BIZ_NOT_EXISTS);
+ }
+ bizCode = sales.getCode();
+ currentHash = salesHash(sales, productSalesDetailMapper.selectListBySalesId(bizId));
+ } else {
+ MesTraceConsumerScanEventDO event = scanEventMapper.selectById(bizId);
+ if (event == null) {
+ throw exception(MES_TRACE_INTEGRITY_BIZ_NOT_EXISTS);
+ }
+ bizCode = event.getNormalizedCode();
+ currentHash = scanHash(event);
+ }
+ boolean matched = StrUtil.equals(record.getContentHash(), currentHash);
+ return new MesTraceIntegrityVerifyRespVO()
+ .setBizType(bizType)
+ .setBizId(bizId)
+ .setBizCode(bizCode)
+ .setMatched(matched)
+ .setStoredHash(record.getContentHash())
+ .setCurrentHash(currentHash)
+ .setBagSetHash(bagSetHash)
+ .setMessage(matched ? "鏁版嵁瀹屾暣锛屾湭琚鏀�" : "鏁版嵁涓嶄竴鑷达紝鍙兘瀛樺湪绡℃敼");
+ }
+
+ @Override
+ public PageResult<MesTraceIntegrityRecordDO> getIntegrityPage(MesTraceIntegrityRecordPageReqVO reqVO) {
+ return integrityRecordMapper.selectPage(reqVO);
+ }
+
+ // ==================== 绉佹湁鏂规硶 ====================
+
+ /**
+ * 鎵规鎽樿锛氫粎瑕嗙洊鍒涘缓鍚庝笉鍐嶅彉鏇寸殑鏍稿績瀛楁锛屼笉鍚姸鎬併�佽鐮佹暟閲忕瓑鍙彉瀛楁
+ */
+ private String batchHash(MesProBatchDO batch) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(StrUtil.nullToEmpty(batch.getCode())).append('|')
+ .append(nvl(batch.getItemId())).append('|')
+ .append(StrUtil.nullToEmpty(batch.getLineCode())).append('|')
+ .append(nvl(batch.getProduceDate())).append('|')
+ .append(nvl(batch.getPlanQuantity()));
+ return DigestUtil.sha256Hex(sb.toString());
+ }
+
+ /**
+ * 鍑哄簱鎽樿锛氭槑缁嗚鐮�/鎵樼洏鐮� id 鎺掑簭鍚庢嫾鍏ワ紝淇濊瘉鏄庣粏椤哄簭涓嶅奖鍝嶆憳瑕�
+ */
+ private String salesHash(MesWmProductSalesDO sales, List<MesWmProductSalesDetailDO> details) {
+ List<Long> codeIds = details.stream()
+ .map(d -> d.getBagCodeId() != null ? d.getBagCodeId() : d.getPalletCodeId())
+ .filter(Objects::nonNull)
+ .sorted(Comparator.naturalOrder())
+ .toList();
+ StringBuilder sb = new StringBuilder();
+ sb.append(StrUtil.nullToEmpty(sales.getCode())).append('|')
+ .append(nvl(sales.getClientId())).append('|')
+ .append(nvl(sales.getSalesDate())).append('|')
+ .append(codeIds);
+ return DigestUtil.sha256Hex(sb.toString());
+ }
+
+ /**
+ * 鎵爜浜嬩欢鎽樿锛氫簨浠朵粎 insert 涓嶆敼锛屽叏瀛楁瀹夊叏
+ */
+ private String scanHash(MesTraceConsumerScanEventDO event) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(StrUtil.nullToEmpty(event.getNormalizedCode())).append('|')
+ .append(StrUtil.nullToEmpty(event.getSourceType())).append('|')
+ .append(StrUtil.nullToEmpty(event.getProvince())).append('|')
+ .append(StrUtil.nullToEmpty(event.getCity())).append('|')
+ .append(nvl(event.getSuccess())).append('|')
+ .append(nvl(event.getEventTime()));
+ return DigestUtil.sha256Hex(sb.toString());
+ }
+
+ /**
+ * 鎵规褰撳墠琚嬬爜闆嗗悎鎽樿锛堝疄鏃惰绠楋紝渚涗汉宸ユ瘮瀵硅鐮侀槻绡℃敼锛屼笉鍏ュ簱锛�
+ */
+ private String bagSetHash(Long batchId) {
+ List<String> codes = bagCodeMapper.selectListByBatchId(batchId).stream()
+ .map(MesProBagCodeDO::getCode)
+ .filter(StrUtil::isNotBlank)
+ .sorted()
+ .toList();
+ return DigestUtil.sha256Hex(String.join("|", codes));
+ }
+
+ /**
+ * 鎽樿涓嶅瓨鍦ㄦ椂鏇存柊锛屽惁鍒欒鐩栵紙鍚屼竴涓氬姟璁板綍鍙繚鐣欐渶鏂版憳瑕侊級
+ */
+ private void upsertRecord(String bizType, Long bizId, String bizCode, String hash) {
+ MesTraceIntegrityRecordDO record = integrityRecordMapper.selectByBiz(bizType, bizId);
+ if (record == null) {
+ integrityRecordMapper.insert(MesTraceIntegrityRecordDO.builder()
+ .bizType(bizType)
+ .bizId(bizId)
+ .bizCode(bizCode)
+ .contentHash(hash)
+ .eventTime(LocalDateTime.now())
+ .build());
+ } else {
+ integrityRecordMapper.updateById(MesTraceIntegrityRecordDO.builder()
+ .id(record.getId())
+ .bizCode(bizCode)
+ .contentHash(hash)
+ .eventTime(LocalDateTime.now())
+ .build());
+ }
+ }
+
+ private String nvl(Object value) {
+ return value == null ? "" : String.valueOf(value);
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java
index bfe7e4d..a54a1eb 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java
@@ -6,6 +6,7 @@
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.MesWmProductSalesPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.MesWmProductSalesSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.MesWmProductSalesShippingReqVO;
@@ -32,9 +33,11 @@
import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockReserveBizTypeEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum;
import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
+import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO;
import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
import cn.iocoder.yudao.module.mes.service.wm.salesnotice.MesWmSalesNoticeService;
import cn.iocoder.yudao.module.mes.service.pro.batch.MesProBatchService;
+import cn.iocoder.yudao.module.mes.service.trace.integrity.MesTraceIntegrityService;
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import cn.iocoder.yudao.module.mes.service.wm.stockreserve.MesWmStockReserveService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
@@ -98,6 +101,9 @@
@Resource
@Lazy
private MesQcOqcService oqcService;
+
+ @Resource
+ private MesTraceIntegrityService integrityService;
@Resource
private ErpSaleOrderApi saleOrderApi;
@@ -372,9 +378,14 @@
// 3. 閬嶅巻鎵�鏈夋槑缁嗭紝鍒涘缓搴撳瓨浜嬪姟锛堟墸鍑忓簱瀛� + 璁板綍娴佹按锛�
createTransactionList(sales);
- // 4. 鏇存柊鍑哄簱鍗曠姸鎬�
+ // 4. 鍥哄寲缁忛攢鍟嗕笌瀹為檯鍑哄簱鎿嶄綔淇℃伅
+ CrmCustomerRespDTO customer = customerApi.getCustomer(sales.getClientId());
productSalesMapper.updateById(new MesWmProductSalesDO()
- .setId(id).setStatus(MesWmProductSalesStatusEnum.FINISHED.getStatus()));
+ .setId(id)
+ .setClientName(customer != null ? customer.getName() : null)
+ .setOutboundTime(java.time.LocalDateTime.now())
+ .setOutboundUserId(SecurityFrameworkUtils.getLoginUserId())
+ .setStatus(MesWmProductSalesStatusEnum.FINISHED.getStatus()));
// 5. 鏇存柊鍏宠仈鐨勫彂璐ч�氱煡鍗曞嚭搴撴暟閲忓拰鐘舵��
if (sales.getNoticeId() != null) {
@@ -383,6 +394,18 @@
// 6. 鍥炲啓 ERP 閿�鍞鍗曠殑鍑哄簱鏁伴噺鍜岀姸鎬�
updateErpSaleOrderOutCount(sales);
+
+ // 7. 鍥炲啓琚嬬爜/鎵樼洏鍑哄簱鍘诲悜锛堜緵绐滆揣绋芥煡瀹氫綅缁忛攢鍟嗗湴鍖猴級锛屽苟鐢熸垚鍑哄簱瀹屾暣鎬ф憳瑕�
+ List<MesWmProductSalesDetailDO> outDetails = productSalesDetailService.getProductSalesDetailListBySalesId(id);
+ for (MesWmProductSalesDetailDO detail : outDetails) {
+ if (detail.getBagCodeId() != null) {
+ bagCodeService.markOutbound(detail.getBagCodeId(), id);
+ }
+ if (detail.getPalletCodeId() != null) {
+ palletService.markOutbound(detail.getPalletCodeId(), id);
+ }
+ }
+ integrityService.recordSalesIntegrity(id);
}
/**
diff --git a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanEventServiceImplTest.java b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanEventServiceImplTest.java
new file mode 100644
index 0000000..07f170e
--- /dev/null
+++ b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanEventServiceImplTest.java
@@ -0,0 +1,89 @@
+package cn.iocoder.yudao.module.mes.service.trace.consumer;
+
+import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer.MesTraceConsumerScanEventDO;
+import cn.iocoder.yudao.module.mes.dal.mysql.trace.consumer.MesTraceConsumerScanEventMapper;
+import jakarta.annotation.Resource;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.annotation.Import;
+
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * {@link MesTraceConsumerScanEventServiceImpl} 鐨勫崟鍏冩祴璇�
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Import(MesTraceConsumerScanEventServiceImpl.class)
+public class MesTraceConsumerScanEventServiceImplTest extends BaseDbUnitTest {
+
+ @Resource
+ private MesTraceConsumerScanEventService eventService;
+
+ @Resource
+ private MesTraceConsumerScanEventMapper eventMapper;
+
+ /**
+ * 鏌ヨ鍒氭彃鍏ョ殑绗竴鏉′簨浠讹紙id 鐢卞簭鍒�/闆姳绠楁硶鐢熸垚锛屼笉鍥哄畾涓� 1锛�
+ */
+ private MesTraceConsumerScanEventDO getFirstEvent() {
+ List<MesTraceConsumerScanEventDO> list = eventMapper.selectList(null);
+ return list.isEmpty() ? null : list.get(0);
+ }
+
+ @Test
+ public void testRecordScan_鎴愬姛浜嬩欢钀藉簱() {
+ // 鏃犺姹備笂涓嬫枃鏃� IP/UA/娓犻亾涓虹┖锛屼絾浜嬩欢浠嶅簲钀藉簱涓斾笉鎶涘紓甯�
+ eventService.recordScan("PC-RAW-CODE", "PC-CODE-001", "BAG", 100L, true, null);
+
+ MesTraceConsumerScanEventDO event = getFirstEvent();
+ assertNotNull(event);
+ assertEquals("PC-RAW-CODE", event.getTraceCode());
+ assertEquals("PC-CODE-001", event.getNormalizedCode());
+ assertEquals("BAG", event.getSourceType());
+ assertEquals(100L, event.getBatchId());
+ assertTrue(Boolean.TRUE.equals(event.getSuccess()));
+ assertNull(event.getErrorCode());
+ assertNull(event.getIpHash()); // 鏃犺姹備笂涓嬫枃鏃犳槑鏂� IP锛屼篃涓嶅簲淇濆瓨
+ assertNull(event.getChannel());
+ assertNotNull(event.getEventTime());
+ }
+
+ @Test
+ public void testRecordScan_澶辫触浜嬩欢钀藉簱() {
+ eventService.recordScan("NOT-EXIST", null, null, null, false, "MES_TRACE_CODE_NOT_FOUND");
+
+ MesTraceConsumerScanEventDO event = getFirstEvent();
+ assertNotNull(event);
+ assertFalse(Boolean.TRUE.equals(event.getSuccess()));
+ assertEquals("MES_TRACE_CODE_NOT_FOUND", event.getErrorCode());
+ assertNull(event.getSourceType());
+ assertNull(event.getBatchId());
+ }
+
+ @Test
+ public void testRecordScan_瓒呴暱鐮佹埅鏂�() {
+ String longCode = "X".repeat(500);
+ eventService.recordScan(longCode, longCode, "BATCH", null, true, null);
+
+ MesTraceConsumerScanEventDO event = getFirstEvent();
+ assertNotNull(event);
+ // traceCode 鎴柇鍒� 255銆乶ormalizedCode 鎴柇鍒� 128
+ assertEquals(255, event.getTraceCode().length());
+ assertEquals(128, event.getNormalizedCode().length());
+ }
+
+ @Test
+ public void testRecordScan_璁板綍寮傚父涓嶅奖鍝嶆帴鍙�() {
+ // recordScan 鍐呴儴鍚炴帀寮傚父锛屼簨浠朵粛搴旀甯歌惤搴�
+ eventService.recordScan("CODE", "CODE", "BATCH", null, true, null);
+ assertNotNull(getFirstEvent());
+ }
+
+}
diff --git a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanStatisticsServiceImplTest.java b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanStatisticsServiceImplTest.java
new file mode 100644
index 0000000..ed7dbcd
--- /dev/null
+++ b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/consumer/MesTraceConsumerScanStatisticsServiceImplTest.java
@@ -0,0 +1,154 @@
+package cn.iocoder.yudao.module.mes.service.trace.consumer;
+
+import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanDistributionReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanDistributionRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanSummaryRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.consumer.vo.MesTraceConsumerScanTrendRespVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer.MesTraceConsumerScanEventDO;
+import cn.iocoder.yudao.module.mes.dal.mysql.trace.consumer.MesTraceConsumerScanEventMapper;
+import jakarta.annotation.Resource;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.annotation.Import;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+/**
+ * {@link MesTraceConsumerScanStatisticsServiceImpl} 鐨勫崟鍏冩祴璇�
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Import(MesTraceConsumerScanStatisticsServiceImpl.class)
+public class MesTraceConsumerScanStatisticsServiceImplTest extends BaseDbUnitTest {
+
+ @Resource
+ private MesTraceConsumerScanStatisticsService statisticsService;
+
+ @Resource
+ private MesTraceConsumerScanEventMapper eventMapper;
+
+ private MesTraceConsumerScanEventDO buildEvent(String traceCode, String sourceType, String channel,
+ String province, Long batchId, boolean success,
+ LocalDateTime eventTime) {
+ return MesTraceConsumerScanEventDO.builder()
+ .traceCode(traceCode).normalizedCode(traceCode).sourceType(sourceType)
+ .channel(channel).province(province).batchId(batchId).success(success)
+ .eventTime(eventTime).build();
+ }
+
+ @Test
+ public void testGetSummary_缁熻鍙e緞() {
+ LocalDateTime t1 = LocalDateTime.of(2026, 9, 1, 10, 0);
+ LocalDateTime t2 = LocalDateTime.of(2026, 9, 2, 11, 0);
+ eventMapper.insert(buildEvent("B1", "BAG", "寰俊", "姹熻嫃鐪�", 100L, true, t1));
+ eventMapper.insert(buildEvent("B2", "BAG", "娴忚鍣�", "姹熻嫃鐪�", 100L, true, t2));
+ eventMapper.insert(buildEvent("B3", "BATCH", null, null, null, false, t2));
+
+ MesTraceConsumerScanSummaryRespVO vo = statisticsService.getSummary(
+ LocalDateTime.of(2026, 9, 1, 0, 0), LocalDateTime.of(2026, 9, 3, 0, 0));
+
+ assertNotNull(vo);
+ assertEquals(3L, vo.getTotal());
+ assertEquals(2L, vo.getSuccess());
+ assertEquals(1L, vo.getFailed());
+ assertEquals(1L, vo.getUniqueBatchCount()); // 浠� batchId 闈炵┖涓斿幓閲�
+ }
+
+ @Test
+ public void testGetTrend_琛ラ綈鏃犳暟鎹棩鏈�() {
+ // 9 鏈� 1 鏃ヤ袱鏉°��9 鏈� 3 鏃ヤ竴鏉★紱9 鏈� 2 鏃ユ棤鏁版嵁搴旇ˉ 0
+ eventMapper.insert(buildEvent("B1", "BAG", "寰俊", null, 100L, true,
+ LocalDateTime.of(2026, 9, 1, 9, 0)));
+ eventMapper.insert(buildEvent("B2", "BATCH", null, null, null, false,
+ LocalDateTime.of(2026, 9, 1, 10, 0)));
+ eventMapper.insert(buildEvent("B3", "BAG", "娴忚鍣�", null, 100L, true,
+ LocalDateTime.of(2026, 9, 3, 9, 0)));
+
+ List<MesTraceConsumerScanTrendRespVO> list = statisticsService.getTrend(
+ LocalDateTime.of(2026, 9, 1, 0, 0), LocalDateTime.of(2026, 9, 4, 0, 0));
+
+ assertNotNull(list);
+ assertEquals(3, list.size());
+ assertEquals("2026-09-01", list.get(0).getDate());
+ assertEquals(2L, list.get(0).getTotal());
+ assertEquals("2026-09-02", list.get(1).getDate());
+ assertEquals(0L, list.get(1).getTotal()); // 琛� 0
+ assertEquals("2026-09-03", list.get(2).getDate());
+ assertEquals(1L, list.get(2).getTotal());
+ }
+
+ @Test
+ public void testGetDistribution_bySourceType() {
+ eventMapper.insert(buildEvent("B1", "BAG", null, null, 100L, true,
+ LocalDateTime.of(2026, 9, 1, 9, 0)));
+ eventMapper.insert(buildEvent("B2", "PALLET", null, null, 100L, true,
+ LocalDateTime.of(2026, 9, 1, 10, 0)));
+ eventMapper.insert(buildEvent("B3", "PALLET", null, null, null, false,
+ LocalDateTime.of(2026, 9, 1, 11, 0)));
+
+ MesTraceConsumerScanDistributionReqVO reqVO = new MesTraceConsumerScanDistributionReqVO();
+ reqVO.setGroupBy("sourceType");
+ List<MesTraceConsumerScanDistributionRespVO> list = statisticsService.getDistribution(reqVO);
+
+ assertNotNull(list);
+ // PALLET 2 鏉� > BAG 1 鏉★紙鎸� count 鍊掑簭锛�
+ assertEquals("PALLET", list.get(0).getName());
+ assertEquals(2L, list.get(0).getCount());
+ assertEquals("BAG", list.get(1).getName());
+ assertEquals(1L, list.get(1).getCount());
+ }
+
+ @Test
+ public void testGetDistribution_nullKey鏄犲皠鏈煡() {
+ // 瑙f瀽澶辫触鐨勪簨浠� sourceType 涓� null锛屼笉寰楀洜 groupBy 绌洪敭鎶� NPE锛屽簲鑱氬悎涓�"鏈煡"
+ eventMapper.insert(buildEvent("B1", "BAG", null, null, 100L, true,
+ LocalDateTime.of(2026, 9, 1, 9, 0)));
+ eventMapper.insert(buildEvent("B2", null, null, null, null, false,
+ LocalDateTime.of(2026, 9, 1, 10, 0)));
+ eventMapper.insert(buildEvent("B3", null, null, null, null, false,
+ LocalDateTime.of(2026, 9, 1, 11, 0)));
+
+ MesTraceConsumerScanDistributionReqVO reqVO = new MesTraceConsumerScanDistributionReqVO();
+ reqVO.setGroupBy("sourceType");
+ List<MesTraceConsumerScanDistributionRespVO> list = statisticsService.getDistribution(reqVO);
+
+ assertNotNull(list);
+ // 鎸� count 鍊掑簭锛氭湭鐭�(2) 鍦� BAG(1) 涔嬪墠
+ assertEquals(2, list.size());
+ assertEquals("鏈煡", list.get(0).getName());
+ assertEquals(2L, list.get(0).getCount());
+ assertEquals("BAG", list.get(1).getName());
+ assertEquals(1L, list.get(1).getCount());
+ }
+
+ @Test
+ public void testGetDistribution_success鏄剧ず鍚嶇О() {
+ eventMapper.insert(buildEvent("B1", "BAG", null, null, 100L, true,
+ LocalDateTime.of(2026, 9, 1, 9, 0)));
+ eventMapper.insert(buildEvent("B2", "BAG", null, null, null, false,
+ LocalDateTime.of(2026, 9, 1, 10, 0)));
+
+ MesTraceConsumerScanDistributionReqVO reqVO = new MesTraceConsumerScanDistributionReqVO();
+ reqVO.setGroupBy("success");
+ List<MesTraceConsumerScanDistributionRespVO> list = statisticsService.getDistribution(reqVO);
+
+ assertNotNull(list);
+ assertEquals(2, list.size());
+ // 鏁伴噺鐩稿悓鏃舵寜鍒嗙粍鍚嶅崌搴忥細"0"(澶辫触) 鍦� "1"(鎴愬姛) 涔嬪墠
+ assertEquals("澶辫触", list.get(0).getName());
+ assertEquals("鎴愬姛", list.get(1).getName());
+ }
+
+ @Test
+ public void testGetDistribution_闈炴硶缁村害鎷掔粷() {
+ MesTraceConsumerScanDistributionReqVO reqVO = new MesTraceConsumerScanDistributionReqVO();
+ reqVO.setGroupBy("item_code; DROP TABLE x");
+ assertThrows(IllegalArgumentException.class, () -> statisticsService.getDistribution(reqVO));
+ }
+
+}
diff --git a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/crossregion/MesTraceCrossRegionServiceImplTest.java b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/crossregion/MesTraceCrossRegionServiceImplTest.java
new file mode 100644
index 0000000..bac16e1
--- /dev/null
+++ b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/crossregion/MesTraceCrossRegionServiceImplTest.java
@@ -0,0 +1,367 @@
+package cn.iocoder.yudao.module.mes.service.trace.crossregion;
+
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
+import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils;
+import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
+import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
+import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionHandleReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionStatisticsReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionStatisticsRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionSummaryRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionWarningPageReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionWarningRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceAntiConfigRespVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.batch.MesProBatchDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer.MesTraceConsumerScanEventDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.crossregion.MesTraceAntiConfigDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.crossregion.MesTraceCrossRegionWarningDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDO;
+import cn.iocoder.yudao.module.mes.dal.mysql.trace.crossregion.MesTraceAntiConfigMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.trace.crossregion.MesTraceCrossRegionWarningMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesDetailMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesMapper;
+import cn.iocoder.yudao.module.mes.enums.trace.MesTraceWarningStatusEnum;
+import cn.iocoder.yudao.module.mes.enums.trace.MesTraceWarningTypeEnum;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
+import cn.iocoder.yudao.module.mes.service.pro.bagcode.MesProBagCodeService;
+import cn.iocoder.yudao.module.mes.service.pro.batch.MesProBatchService;
+import cn.iocoder.yudao.module.mes.service.pro.pallet.MesProPalletService;
+import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
+import jakarta.annotation.Resource;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.annotation.Import;
+import org.springframework.test.context.bean.override.mockito.MockitoBean;
+
+import java.time.LocalDateTime;
+import java.util.Collections;
+import java.util.List;
+
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MES_TRACE_ANTI_CONFIG_VALUE_INVALID;
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MES_TRACE_CROSS_REGION_STATUS_INVALID;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+/**
+ * {@link MesTraceCrossRegionServiceImpl} 鐨勫崟鍏冩祴璇�
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Import(MesTraceCrossRegionServiceImpl.class)
+public class MesTraceCrossRegionServiceImplTest extends BaseDbUnitTest {
+
+ @Resource
+ private MesTraceCrossRegionService crossRegionService;
+ @Resource
+ private MesTraceCrossRegionWarningMapper warningMapper;
+ @Resource
+ private MesTraceAntiConfigMapper antiConfigMapper;
+
+ @MockitoBean
+ private MesProBagCodeService bagCodeService;
+ @MockitoBean
+ private MesProPalletService palletService;
+ @MockitoBean
+ private MesProBatchService batchService;
+ @MockitoBean
+ private MesMdmItemService mdmItemService;
+ @MockitoBean
+ private CrmCustomerApi customerApi;
+ @MockitoBean
+ private AdminUserApi adminUserApi;
+ @MockitoBean
+ private MesWmProductSalesMapper productSalesMapper;
+ @MockitoBean
+ private MesWmProductSalesDetailMapper productSalesDetailMapper;
+
+ // ==================== 绐滆揣鍒ゅ畾 ====================
+
+ @Test
+ public void testCheckAndCreateWarning_璺ㄧ渷瑙﹀彂() {
+ // 閰嶇疆鐪佺骇绮掑害
+ antiConfigMapper.insert(MesTraceAntiConfigDO.builder()
+ .configKey("warning_level").configValue("PROVINCE").build());
+ mockDealer("姹熻嫃鐪�", "鍗椾含甯�");
+ MesTraceConsumerScanEventDO event = buildEvent("BAG", "娴欐睙鐪�", "鏉窞甯�", true);
+
+ crossRegionService.checkAndCreateWarning(event);
+
+ List<MesTraceCrossRegionWarningDO> warnings = warningMapper.selectList();
+ assertEquals(1, warnings.size());
+ MesTraceCrossRegionWarningDO warning = warnings.get(0);
+ assertEquals(MesTraceWarningTypeEnum.CROSS_PROVINCE.getType(), warning.getWarningType());
+ assertEquals("姹熻嫃鐪�", warning.getDealerProvince());
+ assertEquals("娴欐睙鐪�", warning.getScanProvince());
+ assertEquals("SO-001", warning.getSalesCode());
+ assertEquals("鍗庝笢缁忛攢鍟�", warning.getClientName());
+ assertEquals(event.getId(), warning.getScanEventId());
+ assertEquals(MesTraceWarningStatusEnum.PENDING.getStatus(), warning.getStatus());
+ }
+
+ @Test
+ public void testCheckAndCreateWarning_璺ㄥ競瑙﹀彂() {
+ // 甯傜骇绮掑害锛氭壂鐮佸競 鈮� 缁忛攢鍟嗗競 鈫� CROSS_CITY
+ antiConfigMapper.insert(MesTraceAntiConfigDO.builder()
+ .configKey("warning_level").configValue("CITY").build());
+ mockDealer("姹熻嫃鐪�", "鍗椾含甯�");
+ MesTraceConsumerScanEventDO event = buildEvent("BAG", "姹熻嫃鐪�", "鑻忓窞甯�", true);
+
+ crossRegionService.checkAndCreateWarning(event);
+
+ List<MesTraceCrossRegionWarningDO> warnings = warningMapper.selectList();
+ assertEquals(1, warnings.size());
+ assertEquals(MesTraceWarningTypeEnum.CROSS_CITY.getType(), warnings.get(0).getWarningType());
+ assertEquals("鍗椾含甯�", warnings.get(0).getDealerCity());
+ assertEquals("鑻忓窞甯�", warnings.get(0).getScanCity());
+ }
+
+ @Test
+ public void testCheckAndCreateWarning_鍚屽湴鍖轰笉棰勮() {
+ antiConfigMapper.insert(MesTraceAntiConfigDO.builder()
+ .configKey("warning_level").configValue("PROVINCE").build());
+ mockDealer("姹熻嫃鐪�", "鍗椾含甯�");
+ MesTraceConsumerScanEventDO event = buildEvent("BAG", "姹熻嫃鐪�", "鍗椾含甯�", true);
+
+ crossRegionService.checkAndCreateWarning(event);
+
+ assertEquals(0, warningMapper.selectCount());
+ }
+
+ @Test
+ public void testCheckAndCreateWarning_鎵爜鏃犲湴鍖哄閿�() {
+ antiConfigMapper.insert(MesTraceAntiConfigDO.builder()
+ .configKey("warning_level").configValue("PROVINCE").build());
+ mockDealer("姹熻嫃鐪�", "鍗椾含甯�");
+ MesTraceConsumerScanEventDO event = buildEvent("BAG", null, null, true);
+
+ crossRegionService.checkAndCreateWarning(event);
+
+ assertEquals(0, warningMapper.selectCount());
+ }
+
+ @Test
+ public void testCheckAndCreateWarning_鎵规鍏ュ彛璺宠繃() {
+ antiConfigMapper.insert(MesTraceAntiConfigDO.builder()
+ .configKey("warning_level").configValue("PROVINCE").build());
+ mockDealer("姹熻嫃鐪�", "鍗椾含甯�");
+ MesTraceConsumerScanEventDO event = buildEvent("BATCH", "娴欐睙鐪�", "鏉窞甯�", true);
+
+ crossRegionService.checkAndCreateWarning(event);
+
+ assertEquals(0, warningMapper.selectCount());
+ }
+
+ @Test
+ public void testCheckAndCreateWarning_琚嬬爜鏈嚭搴撹烦杩�() {
+ antiConfigMapper.insert(MesTraceAntiConfigDO.builder()
+ .configKey("warning_level").configValue("PROVINCE").build());
+ // 琚嬬爜鏈洖鍐欏嚭搴撳崟锛屼笖鏄庣粏琛ㄦ棤璁板綍 鈫� 涓嶉璀�
+ when(bagCodeService.getBagCodeByCode("BAG-00000001")).thenReturn(
+ MesProBagCodeDO.builder().id(1L).code("BAG-00000001").batchId(10L).build());
+ MesTraceConsumerScanEventDO event = buildEvent("BAG", "娴欐睙鐪�", "鏉窞甯�", true);
+
+ crossRegionService.checkAndCreateWarning(event);
+
+ verify(productSalesDetailMapper).selectLatestByBagCodeId(1L);
+ assertEquals(0, warningMapper.selectCount());
+ }
+
+ @Test
+ public void testCheckAndCreateWarning_琚嬬爜鏈粦瀹氭壒娆¤烦杩�() {
+ antiConfigMapper.insert(MesTraceAntiConfigDO.builder()
+ .configKey("warning_level").configValue("PROVINCE").build());
+ when(bagCodeService.getBagCodeByCode("BAG-00000001")).thenReturn(null);
+ MesTraceConsumerScanEventDO event = buildEvent("BAG", "娴欐睙鐪�", "鏉窞甯�", true);
+
+ crossRegionService.checkAndCreateWarning(event);
+
+ assertEquals(0, warningMapper.selectCount());
+ }
+
+ // ==================== 鐘舵�佹祦杞� ====================
+
+ @Test
+ public void testHandleWarning_鐘舵�佹祦杞�() {
+ MesTraceCrossRegionWarningDO warning = buildWarning(MesTraceWarningStatusEnum.PENDING.getStatus());
+ warningMapper.insert(warning);
+
+ MesTraceCrossRegionHandleReqVO reqVO = new MesTraceCrossRegionHandleReqVO();
+ reqVO.setId(warning.getId());
+ reqVO.setStatus(MesTraceWarningStatusEnum.HANDLED.getStatus());
+ reqVO.setHandleRemark("纭涓虹墿娴佷腑杞�");
+ crossRegionService.handleWarning(reqVO);
+
+ MesTraceCrossRegionWarningDO updated = warningMapper.selectById(warning.getId());
+ assertEquals(MesTraceWarningStatusEnum.HANDLED.getStatus(), updated.getStatus());
+ assertEquals("纭涓虹墿娴佷腑杞�", updated.getHandleRemark());
+ }
+
+ @Test
+ public void testHandleWarning_宸插鐞嗕笉鍙啀澶勭悊() {
+ MesTraceCrossRegionWarningDO warning = buildWarning(MesTraceWarningStatusEnum.HANDLED.getStatus());
+ warningMapper.insert(warning);
+
+ MesTraceCrossRegionHandleReqVO reqVO = new MesTraceCrossRegionHandleReqVO();
+ reqVO.setId(warning.getId());
+ reqVO.setStatus(MesTraceWarningStatusEnum.FALSE_ALARM.getStatus());
+ ServiceException ex = assertThrows(ServiceException.class,
+ () -> crossRegionService.handleWarning(reqVO));
+ assertEquals(MES_TRACE_CROSS_REGION_STATUS_INVALID.getCode(), ex.getCode());
+ }
+
+ // ==================== 閰嶇疆 ====================
+
+ @Test
+ public void testGetConfig_updateConfig() {
+ antiConfigMapper.insert(MesTraceAntiConfigDO.builder()
+ .configKey("warning_level").configValue("PROVINCE").build());
+
+ MesTraceAntiConfigRespVO config = crossRegionService.getConfig();
+ assertEquals("PROVINCE", config.getWarningLevel());
+
+ crossRegionService.updateConfig("CITY");
+ assertEquals("CITY", antiConfigMapper.selectByConfigKey("warning_level").getConfigValue());
+
+ ServiceException ex = assertThrows(ServiceException.class,
+ () -> crossRegionService.updateConfig("INVALID"));
+ assertEquals(MES_TRACE_ANTI_CONFIG_VALUE_INVALID.getCode(), ex.getCode());
+ }
+
+ // ==================== 姹囨�讳笌缁熻 ====================
+
+ @Test
+ public void testGetWarningSummary() {
+ warningMapper.insert(buildWarning(MesTraceWarningStatusEnum.PENDING.getStatus())
+ .setWarningType(MesTraceWarningTypeEnum.CROSS_PROVINCE.getType()));
+ warningMapper.insert(buildWarning(MesTraceWarningStatusEnum.HANDLED.getStatus())
+ .setWarningType(MesTraceWarningTypeEnum.CROSS_CITY.getType()));
+ warningMapper.insert(buildWarning(MesTraceWarningStatusEnum.FALSE_ALARM.getStatus())
+ .setWarningType(MesTraceWarningTypeEnum.CROSS_PROVINCE.getType()));
+
+ MesTraceCrossRegionSummaryRespVO vo = crossRegionService.getWarningSummary(null, null);
+
+ assertEquals(3L, vo.getTotal());
+ assertEquals(1L, vo.getPending());
+ assertEquals(1L, vo.getHandled());
+ assertEquals(1L, vo.getFalseAlarm());
+ assertEquals(2L, vo.getCrossProvince());
+ assertEquals(1L, vo.getCrossCity());
+ }
+
+ @Test
+ public void testGetWarningStatistics_鍒嗙粍缁熻() {
+ warningMapper.insert(buildWarning(MesTraceWarningStatusEnum.PENDING.getStatus())
+ .setWarningType(MesTraceWarningTypeEnum.CROSS_PROVINCE.getType()).setScanProvince("娴欐睙鐪�"));
+ warningMapper.insert(buildWarning(MesTraceWarningStatusEnum.PENDING.getStatus())
+ .setWarningType(MesTraceWarningTypeEnum.CROSS_PROVINCE.getType()).setScanProvince("娴欐睙鐪�"));
+ warningMapper.insert(buildWarning(MesTraceWarningStatusEnum.PENDING.getStatus())
+ .setWarningType(MesTraceWarningTypeEnum.CROSS_PROVINCE.getType()).setScanProvince("姹熻嫃鐪�"));
+
+ MesTraceCrossRegionStatisticsReqVO reqVO = new MesTraceCrossRegionStatisticsReqVO();
+ reqVO.setGroupBy("scanProvince");
+ List<MesTraceCrossRegionStatisticsRespVO> list = crossRegionService.getWarningStatistics(reqVO);
+
+ assertEquals(2, list.size());
+ assertEquals("娴欐睙鐪�", list.get(0).getName());
+ assertEquals(2L, list.get(0).getCount());
+ assertEquals("姹熻嫃鐪�", list.get(1).getName());
+ assertEquals(1L, list.get(1).getCount());
+ }
+
+ @Test
+ public void testGetWarningStatistics_闈炴硶缁村害鎷掔粷() {
+ MesTraceCrossRegionStatisticsReqVO reqVO = new MesTraceCrossRegionStatisticsReqVO();
+ reqVO.setGroupBy("item_code; DROP TABLE x");
+ assertThrows(IllegalArgumentException.class,
+ () -> crossRegionService.getWarningStatistics(reqVO));
+ }
+
+ // ==================== 鍒嗛〉 ====================
+
+ @Test
+ public void testGetWarningPage() {
+ when(adminUserApi.getUserMap(any())).thenReturn(Collections.emptyMap());
+ warningMapper.insert(buildWarning(MesTraceWarningStatusEnum.PENDING.getStatus())
+ .setWarningType(MesTraceWarningTypeEnum.CROSS_PROVINCE.getType())
+ .setScanProvince("娴欐睙鐪�").setDealerProvince("姹熻嫃鐪�"));
+
+ MesTraceCrossRegionWarningPageReqVO reqVO = new MesTraceCrossRegionWarningPageReqVO();
+ reqVO.setStatus(MesTraceWarningStatusEnum.PENDING.getStatus());
+ var page = crossRegionService.getWarningPage(reqVO);
+
+ assertEquals(1L, page.getTotal());
+ MesTraceCrossRegionWarningRespVO vo = page.getList().get(0);
+ assertEquals(MesTraceWarningStatusEnum.PENDING.getName(), vo.getStatusName());
+ assertEquals(MesTraceWarningTypeEnum.CROSS_PROVINCE.getName(), vo.getWarningTypeName());
+ assertTrue(vo.getWarningNo() != null);
+ }
+
+ // ==================== 杈呭姪鏂规硶 ====================
+
+ /**
+ * 鏋勫缓娑堣垂鑰呮壂鐮佷簨浠讹紙id 鍥哄畾锛屼究浜庢柇瑷�鍏宠仈锛�
+ */
+ private MesTraceConsumerScanEventDO buildEvent(String sourceType, String province, String city, boolean success) {
+ return MesTraceConsumerScanEventDO.builder()
+ .id(1L)
+ .normalizedCode("BAG-00000001")
+ .sourceType(sourceType)
+ .province(province)
+ .city(city)
+ .batchId(10L)
+ .success(success)
+ .eventTime(LocalDateTime.of(2026, 9, 1, 10, 0))
+ .build();
+ }
+
+ /**
+ * Mock 琚嬬爜 鈫� 鍑哄簱鍗� 鈫� 缁忛攢鍟嗭紙鎸囧畾鍦板尯锛夐摼璺�
+ */
+ private void mockDealer(String dealerProvince, String dealerCity) {
+ MesProBagCodeDO bag = MesProBagCodeDO.builder().id(1L).code("BAG-00000001")
+ .batchId(10L).salesId(100L).build();
+ when(bagCodeService.getBagCodeByCode("BAG-00000001")).thenReturn(bag);
+
+ MesWmProductSalesDO sales = MesWmProductSalesDO.builder().id(100L).code("SO-001")
+ .clientId(200L).clientName("鍗庝笢缁忛攢鍟�").build();
+ when(productSalesMapper.selectById(100L)).thenReturn(sales);
+
+ Integer areaId = AreaUtils.parseArea(dealerProvince + "/" + dealerCity).getId();
+ CrmCustomerRespDTO customer = new CrmCustomerRespDTO();
+ customer.setId(200L);
+ customer.setName("鍗庝笢缁忛攢鍟�");
+ customer.setAreaId(areaId);
+ when(customerApi.getCustomer(200L)).thenReturn(customer);
+
+ MesProBatchDO batch = MesProBatchDO.builder().id(10L).itemId(5L).build();
+ when(batchService.getBatch(10L)).thenReturn(batch);
+
+ MesMdmItemDO item = MesMdmItemDO.builder().id(5L).code("ITEM001").name("姘寸ɑ绉嶅瓙").build();
+ when(mdmItemService.getItem(5L)).thenReturn(item);
+ }
+
+ private MesTraceCrossRegionWarningDO buildWarning(Integer status) {
+ return MesTraceCrossRegionWarningDO.builder()
+ .warningNo("WARN20260901100000ABCDEF")
+ .batchId(10L)
+ .batchCode("PC20260901L001M001_001")
+ .salesId(100L)
+ .salesCode("SO-001")
+ .clientId(200L)
+ .clientName("鍗庝笢缁忛攢鍟�")
+ .dealerProvince("姹熻嫃鐪�")
+ .dealerCity("鍗椾含甯�")
+ .scanProvince("娴欐睙鐪�")
+ .scanCity("鏉窞甯�")
+ .status(status)
+ .eventTime(LocalDateTime.of(2026, 9, 1, 10, 0))
+ .build();
+ }
+
+}
diff --git a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/integrity/MesTraceIntegrityServiceImplTest.java b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/integrity/MesTraceIntegrityServiceImplTest.java
new file mode 100644
index 0000000..259fa2f
--- /dev/null
+++ b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/trace/integrity/MesTraceIntegrityServiceImplTest.java
@@ -0,0 +1,129 @@
+package cn.iocoder.yudao.module.mes.service.trace.integrity;
+
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
+import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
+import cn.iocoder.yudao.module.mes.controller.admin.trace.integrity.vo.MesTraceIntegrityVerifyRespVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.consumer.MesTraceConsumerScanEventDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.trace.integrity.MesTraceIntegrityRecordDO;
+import cn.iocoder.yudao.module.mes.dal.mysql.trace.consumer.MesTraceConsumerScanEventMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.trace.integrity.MesTraceIntegrityRecordMapper;
+import cn.iocoder.yudao.module.mes.enums.trace.MesTraceIntegrityBizTypeEnum;
+import jakarta.annotation.Resource;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.annotation.Import;
+
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MES_TRACE_INTEGRITY_BIZ_TYPE_INVALID;
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MES_TRACE_INTEGRITY_RECORD_NOT_EXISTS;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * {@link MesTraceIntegrityServiceImpl} 鐨勫崟鍏冩祴璇�
+ *
+ * @author 瓒呯骇绠$悊鍛�
+ */
+@Import(MesTraceIntegrityServiceImpl.class)
+public class MesTraceIntegrityServiceImplTest extends BaseDbUnitTest {
+
+ @Resource
+ private MesTraceIntegrityService integrityService;
+ @Resource
+ private MesTraceIntegrityRecordMapper integrityRecordMapper;
+ @Resource
+ private MesTraceConsumerScanEventMapper scanEventMapper;
+
+ @Test
+ public void testRecordScanIntegrity_鐢熸垚鎽樿骞跺叆搴�() {
+ MesTraceConsumerScanEventDO event = insertEvent("姹熻嫃鐪�", "鍗椾含甯�");
+ integrityService.recordScanIntegrity(event);
+
+ MesTraceIntegrityRecordDO record = integrityRecordMapper.selectByBiz(
+ MesTraceIntegrityBizTypeEnum.SCAN.getType(), event.getId());
+ assertNotNull(record);
+ assertEquals(64, record.getContentHash().length());
+ assertEquals(event.getNormalizedCode(), record.getBizCode());
+ }
+
+ @Test
+ public void testVerify_鏁版嵁瀹屾暣閫氳繃() {
+ MesTraceConsumerScanEventDO event = insertEvent("姹熻嫃鐪�", "鍗椾含甯�");
+ integrityService.recordScanIntegrity(event);
+
+ MesTraceIntegrityVerifyRespVO vo = integrityService.verify(
+ MesTraceIntegrityBizTypeEnum.SCAN.getType(), event.getId());
+
+ assertTrue(vo.getMatched());
+ assertEquals(vo.getStoredHash(), vo.getCurrentHash());
+ assertEquals(event.getNormalizedCode(), vo.getBizCode());
+ }
+
+ @Test
+ public void testVerify_绡℃敼妫�娴嬪け璐�() {
+ MesTraceConsumerScanEventDO event = insertEvent("姹熻嫃鐪�", "鍗椾含甯�");
+ integrityService.recordScanIntegrity(event);
+ // 妯℃嫙浜嬪悗绡℃敼鎵爜鍦板尯
+ scanEventMapper.updateById(new MesTraceConsumerScanEventDO().setId(event.getId()).setProvince("娴欐睙鐪�"));
+
+ MesTraceIntegrityVerifyRespVO vo = integrityService.verify(
+ MesTraceIntegrityBizTypeEnum.SCAN.getType(), event.getId());
+
+ assertFalse(vo.getMatched());
+ assertEquals("鏁版嵁涓嶄竴鑷达紝鍙兘瀛樺湪绡℃敼", vo.getMessage());
+ }
+
+ @Test
+ public void testVerify_瑕嗙洊鏇存柊涓嶄骇鐢熼噸澶嶈褰�() {
+ MesTraceConsumerScanEventDO event = insertEvent("姹熻嫃鐪�", "鍗椾含甯�");
+ integrityService.recordScanIntegrity(event);
+ integrityService.recordScanIntegrity(event);
+
+ assertEquals(1L, integrityRecordMapper.selectCount());
+ MesTraceIntegrityRecordDO record = integrityRecordMapper.selectByBiz(
+ MesTraceIntegrityBizTypeEnum.SCAN.getType(), event.getId());
+ assertEquals(64, record.getContentHash().length());
+ }
+
+ @Test
+ public void testVerify_鏃犳憳瑕佽褰曞紓甯�() {
+ ServiceException ex = assertThrows(ServiceException.class,
+ () -> integrityService.verify(MesTraceIntegrityBizTypeEnum.SCAN.getType(), 99999L));
+ assertEquals(MES_TRACE_INTEGRITY_RECORD_NOT_EXISTS.getCode(), ex.getCode());
+ }
+
+ @Test
+ public void testVerify_闈炴硶涓氬姟绫诲瀷() {
+ ServiceException ex = assertThrows(ServiceException.class,
+ () -> integrityService.verify("XXX", 1L));
+ assertEquals(MES_TRACE_INTEGRITY_BIZ_TYPE_INVALID.getCode(), ex.getCode());
+ }
+
+ @Test
+ public void testRecordScanIntegrity_null浜嬩欢瀹归敊() {
+ integrityService.recordScanIntegrity(null);
+ integrityService.recordScanIntegrity(MesTraceConsumerScanEventDO.builder().id(null).build());
+ assertEquals(0L, integrityRecordMapper.selectCount());
+ }
+
+ // ==================== 杈呭姪鏂规硶 ====================
+
+ private MesTraceConsumerScanEventDO insertEvent(String province, String city) {
+ MesTraceConsumerScanEventDO event = MesTraceConsumerScanEventDO.builder()
+ .traceCode("BAG-00000001")
+ .normalizedCode("BAG-00000001")
+ .sourceType("BAG")
+ .province(province)
+ .city(city)
+ .batchId(10L)
+ .success(true)
+ .eventTime(LocalDateTime.of(2026, 9, 1, 10, 0))
+ .build();
+ scanEventMapper.insert(event);
+ return event;
+ }
+
+}
diff --git a/yudao-module-mes/src/test/resources/sql/clean.sql b/yudao-module-mes/src/test/resources/sql/clean.sql
index 8cb28c3..b06e99c 100644
--- a/yudao-module-mes/src/test/resources/sql/clean.sql
+++ b/yudao-module-mes/src/test/resources/sql/clean.sql
@@ -21,3 +21,7 @@
DELETE FROM "mes_pro_task";
DELETE FROM "mes_pro_route_process";
DELETE FROM "mes_qc_indicator_result";
+DELETE FROM "mes_trace_consumer_scan_event";
+DELETE FROM "mes_trace_anti_config";
+DELETE FROM "mes_trace_cross_region_warning";
+DELETE FROM "mes_trace_integrity_record";
diff --git a/yudao-module-mes/src/test/resources/sql/create_tables.sql b/yudao-module-mes/src/test/resources/sql/create_tables.sql
index fd73613..a6ef868 100644
--- a/yudao-module-mes/src/test/resources/sql/create_tables.sql
+++ b/yudao-module-mes/src/test/resources/sql/create_tables.sql
@@ -830,3 +830,101 @@
"tenant_id" bigint NOT NULL DEFAULT 0,
PRIMARY KEY ("id")
);
+
+-- ----------------------------
+-- MES 娑堣垂鑰呮壂鐮佽闂簨浠�
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS "mes_trace_consumer_scan_event" (
+ "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+ "trace_code" varchar(255) NOT NULL,
+ "normalized_code" varchar(128) DEFAULT NULL,
+ "source_type" varchar(32) DEFAULT NULL,
+ "channel" varchar(32) DEFAULT NULL,
+ "province" varchar(64) DEFAULT NULL,
+ "city" varchar(64) DEFAULT NULL,
+ "batch_id" bigint DEFAULT NULL,
+ "success" bit NOT NULL DEFAULT FALSE,
+ "error_code" varchar(64) DEFAULT NULL,
+ "ip_hash" varchar(64) DEFAULT NULL,
+ "user_agent_hash" varchar(64) DEFAULT NULL,
+ "event_time" timestamp NOT NULL,
+ "creator" varchar(64) DEFAULT '',
+ "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "updater" varchar(64) DEFAULT '',
+ "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "deleted" bit NOT NULL DEFAULT FALSE,
+ "tenant_id" bigint NOT NULL DEFAULT 0,
+ PRIMARY KEY ("id")
+);
+
+-- ----------------------------
+-- MES 闃茬獪璐ц鍒欓厤缃�
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS "mes_trace_anti_config" (
+ "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+ "config_key" varchar(64) DEFAULT NULL,
+ "config_value" varchar(255) DEFAULT NULL,
+ "remark" varchar(255) DEFAULT NULL,
+ "creator" varchar(64) DEFAULT '',
+ "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "updater" varchar(64) DEFAULT '',
+ "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "deleted" bit NOT NULL DEFAULT FALSE,
+ PRIMARY KEY ("id")
+);
+
+-- ----------------------------
+-- MES 绐滆揣棰勮璁板綍
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS "mes_trace_cross_region_warning" (
+ "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+ "warning_no" varchar(64) DEFAULT NULL,
+ "bag_code_id" bigint DEFAULT NULL,
+ "bag_code" varchar(64) DEFAULT NULL,
+ "pallet_code_id" bigint DEFAULT NULL,
+ "pallet_code" varchar(64) DEFAULT NULL,
+ "batch_id" bigint DEFAULT NULL,
+ "batch_code" varchar(64) DEFAULT NULL,
+ "item_id" bigint DEFAULT NULL,
+ "item_code" varchar(64) DEFAULT NULL,
+ "item_name" varchar(128) DEFAULT NULL,
+ "sales_id" bigint DEFAULT NULL,
+ "sales_code" varchar(64) DEFAULT NULL,
+ "client_id" bigint DEFAULT NULL,
+ "client_name" varchar(128) DEFAULT NULL,
+ "dealer_province" varchar(64) DEFAULT NULL,
+ "dealer_city" varchar(64) DEFAULT NULL,
+ "scan_province" varchar(64) DEFAULT NULL,
+ "scan_city" varchar(64) DEFAULT NULL,
+ "warning_type" varchar(32) DEFAULT NULL,
+ "scan_event_id" bigint DEFAULT NULL,
+ "status" tinyint NOT NULL DEFAULT 10,
+ "handle_user_id" bigint DEFAULT NULL,
+ "handle_time" timestamp DEFAULT NULL,
+ "handle_remark" varchar(255) DEFAULT NULL,
+ "event_time" timestamp NOT NULL,
+ "creator" varchar(64) DEFAULT '',
+ "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "updater" varchar(64) DEFAULT '',
+ "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "deleted" bit NOT NULL DEFAULT FALSE,
+ PRIMARY KEY ("id")
+);
+
+-- ----------------------------
+-- MES 鏁版嵁瀹屾暣鎬ф牎楠岃褰�
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS "mes_trace_integrity_record" (
+ "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+ "biz_type" varchar(32) NOT NULL,
+ "biz_id" bigint NOT NULL,
+ "biz_code" varchar(64) DEFAULT NULL,
+ "content_hash" varchar(64) NOT NULL,
+ "event_time" timestamp NOT NULL,
+ "creator" varchar(64) DEFAULT '',
+ "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "updater" varchar(64) DEFAULT '',
+ "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "deleted" bit NOT NULL DEFAULT FALSE,
+ PRIMARY KEY ("id")
+);
diff --git a/yudao-server/src/main/resources/static/trace.html b/yudao-server/src/main/resources/static/trace.html
index be5c7f5..afafce6 100644
--- a/yudao-server/src/main/resources/static/trace.html
+++ b/yudao-server/src/main/resources/static/trace.html
@@ -141,6 +141,34 @@
.scroll-list::-webkit-scrollbar { width: 4px; }
.scroll-list::-webkit-scrollbar-thumb { background: #d1d5db; border-radius: 2px; }
+ /* 姝e搧楠岃瘉鍗★紙椤堕儴锛屾壂鐮佷紭鍏堝睍绀猴級 */
+ .verify-card {
+ border: 1px solid var(--primary-light);
+ background: linear-gradient(180deg, #eef8ee, #fff);
+ }
+ .verify-card .card-bd { padding: 14px 16px; }
+ .verify-title {
+ display: flex; align-items: center; gap: 8px;
+ font-size: 16px; font-weight: 700; color: var(--primary);
+ margin-bottom: 4px;
+ }
+ .verify-title::before { content: ""; width: 5px; height: 16px; border-radius: 2px; background: var(--primary); }
+ .verify-sub { font-size: 12px; color: var(--text-sub); margin-bottom: 10px; }
+ .verify-badge { margin-bottom: 10px; }
+ .verify-stats { margin-top: 10px; border-top: 1px dashed var(--border); padding-top: 4px; }
+
+ /* 鍙姌鍙犲崱鐗� */
+ .card.collapsible .card-hd { cursor: pointer; position: relative; padding-right: 30px; }
+ .card.collapsible .card-hd::after {
+ content: "鈻�"; position: absolute; right: 12px; top: 50%;
+ transform: translateY(-50%); color: var(--text-sub); font-size: 12px;
+ transition: transform .2s;
+ }
+ .card.collapsible:not(.open) .card-hd::after { transform: translateY(-50%) rotate(-90deg); }
+ .card.collapsible .card-hd .count { margin-right: 16px; }
+ .card.collapsible .card-bd { display: none; }
+ .card.collapsible.open .card-bd { display: block; }
+
footer {
max-width: 480px; margin: 0 auto;
padding: 20px 16px 28px; text-align: center;
@@ -207,11 +235,17 @@
return '<span class="badge ' + item[1] + '">' + esc(item[0]) + '</span>';
}
- function card(title, countHtml, bodyHtml) {
- return '<div class="card">' +
- '<div class="card-hd"><span class="bar"></span>' + esc(title) +
+ function card(title, countHtml, bodyHtml, opts) {
+ opts = opts || {};
+ var collapsible = !!opts.collapsible;
+ var open = collapsible && !!opts.open;
+ var hd = '<div class="card-hd"' +
+ (collapsible ? ' onclick="this.parentNode.classList.toggle(\'open\')"' : '') +
+ '><span class="bar"></span>' + esc(title) +
(countHtml ? '<span class="count">' + countHtml + '</span>' : '') +
- '</div>' + '<div class="card-bd">' + bodyHtml + '</div>' + '</div>';
+ '</div>';
+ return '<div class="card' + (collapsible ? ' collapsible' : '') + (open ? ' open' : '') + '">' +
+ hd + '<div class="card-bd">' + bodyHtml + '</div>' + '</div>';
}
function kv(k, v, dim) {
@@ -257,6 +291,7 @@
return;
}
var html = '';
+ html += buildVerifyCard(d);
html += buildItemCard(d);
html += buildBatchCard(d);
html += buildQualityCard(d);
@@ -269,13 +304,59 @@
window.scrollTo({ top: 0, behavior: 'smooth' });
}
+ // 鍖哄潡0锛氭鍝侀獙璇侊紙椤堕儴锛屾壂鐮佷紭鍏堝睍绀洪獙璇佺粨璁轰笌鏌ヨ缁熻锛�
+ function stripUrl(v) {
+ if (!v) return v;
+ if (/^https?:\/\//i.test(v)) {
+ var m = v.match(/[?&]code=([^&]*)/);
+ return m ? decodeURIComponent(m[1]) : '';
+ }
+ return v;
+ }
+
+ function buildVerifyCard(d) {
+ var typeLabel = { BAG: '琚嬬爜', PALLET: '鎵樼洏鐮�', BATCH: '鎵规鐮�' }[d.sourceType] || '杩芥函鐮�';
+ var code = stripUrl(d.requestCode) || d.batchCode || d.tempCode || '-';
+ var bagNo = '-';
+ if (d.sourceType === 'BAG' && d.bags) {
+ for (var i = 0; i < d.bags.length; i++) {
+ if (d.bags[i].code === code) {
+ bagNo = d.bags[i].bagNo;
+ break;
+ }
+ }
+ }
+ var statsHtml = '<div class="verify-stats">';
+ if (d.antiFake && d.antiFake.scanCount > 0) {
+ statsHtml += kv('绱鏌ヨ', esc(d.antiFake.scanCount) + ' 娆�') +
+ kv('棣栨鏌ヨ', fmtDate(d.antiFake.firstScanTime)) +
+ kv('鏈�杩戞煡璇�', fmtDate(d.antiFake.lastScanTime));
+ } else {
+ statsHtml += kv('绱鏌ヨ', '鏆傛棤鏌ヨ璁板綍');
+ }
+ statsHtml += '</div>';
+ return '<div class="card verify-card">' +
+ '<div class="card-bd">' +
+ '<div class="verify-title">姝e搧楠岃瘉</div>' +
+ '<div class="verify-badge"><span class="badge-big green">鉁� 姝e搧楠岃瘉閫氳繃</span></div>' +
+ '<div class="verify-sub">璇ヨ拷婧爜涓烘瑙勬笭閬撲骇鍝侊紝婧簮淇℃伅鐪熷疄鏈夋晥</div>' +
+ kv('杩芥函绫诲瀷', typeLabel) +
+ kv(typeLabel, text(code)) +
+ (d.sourceType === 'BAG' ? kv('琚嬪彿', bagNo) : '') +
+ kv('鎵规鍙�', text(d.batchCode)) +
+ kv('鍝佺', text(d.itemName)) +
+ statsHtml +
+ '</div></div>';
+ }
+
// 鍖哄潡1锛氬搧绉嶄俊鎭�
function buildItemCard(d) {
if (!d.itemCode && !d.itemName && !d.itemSpecification) return '';
return card('鍝佺淇℃伅', null,
kv('鍝佺鍚嶇О', text(d.itemName)) +
kv('瑙勬牸', text(d.itemSpecification)) +
- kv('鍝佺缂栫爜', text(d.itemCode))
+ kv('鍝佺缂栫爜', text(d.itemCode)),
+ { collapsible: true, open: true }
);
}
@@ -293,7 +374,8 @@
kv('宸茬敓鎴愯鐮�', fmtNum(d.bagQuantity)) +
kv('宸茬敓鎴愭墭鐩�', fmtNum(d.palletQuantity)) +
kv('鍏ュ簱鏃堕棿', fmtDate(d.inboundTime)) +
- (d.remark ? kv('澶囨敞', text(d.remark)) : '')
+ (d.remark ? kv('澶囨敞', text(d.remark)) : ''),
+ { collapsible: true, open: true }
);
}
@@ -325,7 +407,8 @@
kv('妫�楠屽憳', text(q.inspectorName)) +
kv('妫�楠屾椂闂�', fmtDate(q.inspectedAt)) +
(q.reason ? kv('涓嶅悎鏍煎師鍥�', text(q.reason)) : '') +
- (rows ? '<div style="margin-top:8px">' + rows + '</div>' : '')
+ (rows ? '<div style="margin-top:8px">' + rows + '</div>' : ''),
+ { collapsible: true, open: false }
);
}
@@ -341,7 +424,7 @@
esc(type) + '锛�' + esc(name) + '</span>';
});
html += '</div>';
- return card('鐢熶骇浜哄憳', null, html);
+ return card('鐢熶骇浜哄憳', null, html, { collapsible: true, open: false });
}
// 鍖哄潡5锛氭壂鐮佸叆搴撲簨浠�
@@ -353,7 +436,8 @@
kv('鍏ュ簱鏁伴噺', fmtNum(e.quantity)) +
kv('璁惧缂栫爜', text(e.deviceCode)) +
kv('浜х嚎', text(e.lineCode)) +
- kv('鍏ュ簱鏃堕棿', fmtDate(e.eventTime))
+ kv('鍏ュ簱鏃堕棿', fmtDate(e.eventTime)),
+ { collapsible: true, open: false }
);
}
@@ -367,7 +451,7 @@
fmtNum(p.bagCount) + ' / ' + fmtNum(p.capacity) + '</td></tr>';
});
rows += '</tbody></table>';
- return card('鎵樼洏淇℃伅', countHtml, rows);
+ return card('鎵樼洏淇℃伅', countHtml, rows, { collapsible: true, open: false });
}
// 鍖哄潡7锛氳鐮侊紙涓�琚嬩竴鐮侊級
@@ -381,7 +465,8 @@
});
rows += '</tbody></table>';
return card('琚嬬爜淇℃伅', countHtml,
- '<div class="scroll-list">' + rows + '</div>'
+ '<div class="scroll-list">' + rows + '</div>',
+ { collapsible: true, open: false }
);
}
@@ -394,7 +479,7 @@
rows += '<tr><td>' + text(s.receiptCode) + '</td><td>' + text(s.vendorName) + '</td><td>' + fmtNum(s.receivedQuantity) + '</td><td>' + fmtDate(s.receiptDate) + '</td></tr>';
});
rows += '</tbody></table>';
- html += card('閲囪喘鏉ユ簮', null, rows);
+ html += card('閲囪喘鏉ユ簮', null, rows, { collapsible: true, open: false });
}
if (!isEmptyList(d.salesTargets)) {
var rows2 = '<table class="mini-table"><thead><tr><th>閿�鍞嚭搴撳崟</th><th>瀹㈡埛</th><th>鏁伴噺</th><th>鏃ユ湡</th></tr></thead><tbody>';
@@ -402,7 +487,7 @@
rows2 += '<tr><td>' + text(s.outCode || s.salesOrderCode || '') + '</td><td>' + text(s.customerName) + '</td><td>' + fmtNum(s.quantity) + '</td><td>' + fmtDate(s.outTime) + '</td></tr>';
});
rows2 += '</tbody></table>';
- html += card('閿�鍞幓鍚�', null, rows2);
+ html += card('閿�鍞幓鍚�', null, rows2, { collapsible: true, open: false });
}
if (!isEmptyList(d.processTraces)) {
var rows3 = '<table class="mini-table"><thead><tr><th>鑺傜偣</th><th>璇存槑</th><th>鏃堕棿</th></tr></thead><tbody>';
@@ -410,7 +495,7 @@
rows3 += '<tr><td>' + text(t.nodeName) + '</td><td>' + text(t.description) + '</td><td>' + fmtDate(t.processTime) + '</td></tr>';
});
rows3 += '</tbody></table>';
- html += card('鍔犲伐娴佽浆', null, rows3);
+ html += card('鍔犲伐娴佽浆', null, rows3, { collapsible: true, open: false });
}
return html;
}
--
Gitblit v1.9.3