From 453fece707fc1e611554fbb10125383eba01449a Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 18 九月 2026 14:39:09 +0800
Subject: [PATCH] feat(mes): 添加产品检验单Word导出功能

---
 docs/project-business/data/flows.json                                                                                              |    4 
 .playwright-mcp/page-2026-09-18T06-17-38-106Z.yml                                                                                  |  170 ++
 docs/project-business/mermaid/05-quality-flow.mmd                                                                                  |    1 
 .playwright-mcp/page-2026-09-18T06-20-02-132Z.yml                                                                                  |  437 ++++++
 .playwright-mcp/page-2026-09-18T06-22-24-743Z.yml                                                                                  |  504 +++++++
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/MesQcIndicatorResultController.java |   28 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcReportServiceImpl.java                  |    4 
 .playwright-mcp/page-2026-09-18T06-18-24-102Z.yml                                                                                  |  437 ++++++
 .playwright-mcp/page-2026-09-18T06-19-31-080Z.yml                                                                                  |  701 ++++++++++
 yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcProductReportWordBuilderTest.java       |  124 +
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/vo/MesQcQcReportRespVO.java         |    6 
 .image/09bc21b456252f6d27b9b9ef43252019.jpg                                                                                        |    0 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcProductReportWordBuilder.java           |  326 ++++
 .playwright-mcp/IQC-20260917001-产品质量检验单.docx                                                                                       |    0 
 .playwright-mcp/page-2026-09-18T06-13-00-160Z.yml                                                                                  |    1 
 .playwright-mcp/page-2026-09-18T06-17-54-686Z.yml                                                                                  |  701 ++++++++++
 docs/project-business/index.html                                                                                                   |    6 
 .playwright-mcp/page-2026-09-18T06-13-24-852Z.yml                                                                                  |  190 ++
 .playwright-mcp/page-2026-09-18T06-22-49-485Z.yml                                                                                  |  437 ++++++
 yudao-server/src/main/resources/application-local.yaml                                                                             |    4 
 20 files changed, 4,074 insertions(+), 7 deletions(-)

diff --git a/.image/09bc21b456252f6d27b9b9ef43252019.jpg b/.image/09bc21b456252f6d27b9b9ef43252019.jpg
new file mode 100644
index 0000000..522be1e
--- /dev/null
+++ b/.image/09bc21b456252f6d27b9b9ef43252019.jpg
Binary files differ
diff --git "a/.playwright-mcp/IQC-20260917001-\344\272\247\345\223\201\350\264\250\351\207\217\346\243\200\351\252\214\345\215\225.docx" "b/.playwright-mcp/IQC-20260917001-\344\272\247\345\223\201\350\264\250\351\207\217\346\243\200\351\252\214\345\215\225.docx"
new file mode 100644
index 0000000..7e05412
--- /dev/null
+++ "b/.playwright-mcp/IQC-20260917001-\344\272\247\345\223\201\350\264\250\351\207\217\346\243\200\351\252\214\345\215\225.docx"
Binary files differ
diff --git a/.playwright-mcp/page-2026-09-18T06-13-00-160Z.yml b/.playwright-mcp/page-2026-09-18T06-13-00-160Z.yml
new file mode 100644
index 0000000..6adf37e
--- /dev/null
+++ b/.playwright-mcp/page-2026-09-18T06-13-00-160Z.yml
@@ -0,0 +1 @@
+- generic [active]: 宸ヤ笟AI鏅洪�犲钩鍙�
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-09-18T06-13-24-852Z.yml b/.playwright-mcp/page-2026-09-18T06-13-24-852Z.yml
new file mode 100644
index 0000000..87261a9
--- /dev/null
+++ b/.playwright-mcp/page-2026-09-18T06-13-24-852Z.yml
@@ -0,0 +1,190 @@
+- 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]: 浜у搧璁捐
+        - listitem [ref=e85]:
+          - generic [ref=e86] [cursor=pointer]: 鐢熶骇绠℃帶
+        - listitem [ref=e93]:
+          - generic [ref=e94] [cursor=pointer]: 璐ㄩ噺绠$悊
+          - list [ref=e593]:
+            - menuitem "妫�娴嬮」璁剧疆" [ref=e594] [cursor=pointer]
+            - menuitem "璐ㄦ鏂规" [ref=e599] [cursor=pointer]
+            - menuitem "寰呮浠诲姟" [ref=e604] [cursor=pointer]
+            - menuitem "鏉ユ枡妫�楠�" [ref=e611] [cursor=pointer]
+            - menuitem "杩囩▼妫�楠�" [ref=e616] [cursor=pointer]
+            - menuitem "閫�鏂欐楠�" [ref=e621] [cursor=pointer]
+            - menuitem "鍑鸿揣妫�楠�" [ref=e626] [cursor=pointer]
+            - menuitem "鎵规杩芥函" [ref=e631] [cursor=pointer]
+            - menuitem "涓嶅悎鏍煎搧澶勭悊" [ref=e637] [cursor=pointer]
+            - menuitem "甯歌缂洪櫡" [ref=e642] [cursor=pointer]
+        - listitem [ref=e100]:
+          - generic [ref=e101] [cursor=pointer]: 鎶ヨ〃绠$悊
+        - listitem [ref=e108]:
+          - generic [ref=e109] [cursor=pointer]: 鍐崇瓥BI澶у睆
+        - listitem [ref=e115]:
+          - generic [ref=e116] [cursor=pointer]: 鍗忓悓鍔炲叕
+        - listitem [ref=e122]:
+          - generic [ref=e123] [cursor=pointer]: 浜哄姏璧勬簮
+        - listitem [ref=e129]:
+          - generic [ref=e130] [cursor=pointer]: 鍞悗绠$悊
+        - listitem [ref=e136]:
+          - generic [ref=e137] [cursor=pointer]: 鍩虹璁炬柦
+        - listitem [ref=e143]:
+          - generic [ref=e144] [cursor=pointer]: 绯荤粺绠$悊
+      - generic [ref=e151] [cursor=pointer]
+  - generic [ref=e156]:
+    - generic [ref=e157]:
+      - banner [ref=e158]:
+        - button [ref=e159] [cursor=pointer]
+        - button [ref=e162] [cursor=pointer]
+        - navigation "breadcrumb" [ref=e167]:
+          - list [ref=e168]:
+            - listitem [ref=e169]:
+              - link "棣栭〉" [disabled] [ref=e170]
+        - generic [ref=e177]:
+          - generic [ref=e179] [cursor=pointer]:
+            - generic [ref=e183]: 鎼滅储
+            - generic [ref=e184]: Ctrl K
+          - button [ref=e186] [cursor=pointer]
+          - button "dark" [ref=e191] [cursor=pointer]
+          - button [ref=e200] [cursor=pointer]
+          - button [ref=e206] [cursor=pointer]
+          - button [ref=e209] [cursor=pointer]
+          - button [ref=e215] [cursor=pointer]:
+            - button [ref=e217]
+          - button "宸ヤ綔鍙�" [ref=e221] [cursor=pointer]
+          - button [ref=e225] [cursor=pointer]:
+            - img "瓒呯骇绠$悊鍛�" [ref=e230]
+      - generic [ref=e232]:
+        - generic [ref=e233]: 棣栭〉
+        - generic [ref=e254]:
+          - button [ref=e255] [cursor=pointer]
+          - generic [ref=e262] [cursor=pointer]
+          - generic [ref=e266] [cursor=pointer]
+    - main [ref=e273]:
+      - generic [ref=e276]:
+        - generic [ref=e277]:
+          - generic [ref=e278]:
+            - heading "涓嬪崍濂斤紝娆㈣繋鍥炴潵" [level=1] [ref=e279]
+            - paragraph [ref=e280]: 2026骞�9鏈�18鏃� 鏄熸湡浜�
+          - generic [ref=e281]: 绯荤粺杩愯涓�
+        - generic [ref=e286]:
+          - generic [ref=e295] [cursor=pointer]:
+            - generic [ref=e296]: 鐢熶骇璁㈠崟
+            - generic [ref=e297]:
+              - generic [ref=e298]: "0"
+              - generic [ref=e300]: 杩涜涓�
+            - generic [ref=e301]:
+              - text: 寰呮帓浜� 0
+              - generic [ref=e303]: "|"
+              - text: 宸插畬鎴� 0
+          - generic [ref=e315] [cursor=pointer]:
+            - generic [ref=e316]: 浠婃棩浜ч噺
+            - generic [ref=e317]:
+              - generic [ref=e318]: "0"
+              - generic [ref=e320]: 浠�
+            - generic [ref=e321]: 鏄ㄦ棩 0 浠�
+          - generic [ref=e332] [cursor=pointer]:
+            - generic [ref=e333]: 璐ㄩ噺鍚堟牸鐜�
+            - generic [ref=e334]:
+              - generic [ref=e335]: "0.0"
+              - generic [ref=e337]: "%"
+            - generic [ref=e338]: 鍚堟牸 0 | 涓嶈壇 0
+          - generic [ref=e350] [cursor=pointer]:
+            - generic [ref=e351]: 璁惧杩愯鐜�
+            - generic [ref=e352]:
+              - generic [ref=e353]: "100.0"
+              - generic [ref=e355]: "%"
+            - generic [ref=e356]:
+              - generic [ref=e357]: 鍋滄満 0
+              - generic [ref=e358]: "|"
+              - generic [ref=e359]: 缁存姢 0
+        - generic [ref=e362]:
+          - generic [ref=e373] [cursor=pointer]:
+            - generic [ref=e374]: 閲囪喘璁㈠崟
+            - generic [ref=e375]:
+              - generic [ref=e376]: "1"
+              - generic [ref=e378]: 绗�
+            - generic [ref=e379]: ERP 閲囪喘绠$悊
+          - generic [ref=e390] [cursor=pointer]:
+            - generic [ref=e391]: 閿�鍞鍗�
+            - generic [ref=e392]:
+              - generic [ref=e393]: "1"
+              - generic [ref=e395]: 绗�
+            - generic [ref=e396]: ERP 閿�鍞鐞�
+          - generic [ref=e408] [cursor=pointer]:
+            - generic [ref=e409]: 鐗╂枡搴撳瓨
+            - generic [ref=e410]:
+              - generic [ref=e411]: "0"
+              - generic [ref=e413]: 鏉�
+            - generic [ref=e414]: MES 搴撳瓨鍙拌处
+          - generic [ref=e426] [cursor=pointer]:
+            - generic [ref=e427]: 鎴戠殑寰呭姙
+            - generic [ref=e428]:
+              - generic [ref=e429]: "0"
+              - generic [ref=e431]: 椤�
+            - generic [ref=e432]: BPM 寰呭鎵�
+        - generic [ref=e435]:
+          - generic [ref=e436]:
+            - heading "AI 鏅鸿兘鍒嗘瀽" [level=3] [ref=e437]
+            - generic [ref=e438]: 0 涓伐鍗曞彲鍒嗘瀽
+          - generic [ref=e439]:
+            - generic [ref=e447] [cursor=pointer]:
+              - generic [ref=e448]: AI 鐗╂枡棰勬祴
+              - generic [ref=e449]: 棰勬祴鐗╂枡闇�姹備笌鐭己椋庨櫓
+            - generic [ref=e458] [cursor=pointer]:
+              - generic [ref=e459]: AI 鏃堕暱棰勬祴
+              - generic [ref=e460]: 棰勬祴鍚勫伐搴忕敓浜ц�楁椂
+            - generic [ref=e467] [cursor=pointer]:
+              - generic [ref=e468]: AI 椋庨櫓棰勬祴
+              - generic [ref=e469]: 璇嗗埆娼滃湪鐢熶骇椋庨櫓骞剁粰鍑哄缓璁�
+            - generic [ref=e479] [cursor=pointer]:
+              - generic [ref=e480]: AI 浜や粯璇勪及
+              - generic [ref=e481]: 璇勪及璁㈠崟浜や粯鍑嗘椂鐜囦笌寤舵湡鍥犵礌
+        - generic [ref=e484]:
+          - heading "鐢熶骇瓒嬪娍锛堣繎7澶╋級" [level=3] [ref=e487]
+          - generic [ref=e492]:
+            - generic [ref=e493]:
+              - generic [ref=e499] [cursor=pointer]:
+                - generic [ref=e500]: 瀹夌伅鍛煎彨
+                - generic [ref=e501]:
+                  - generic [ref=e502]: "0"
+                  - generic [ref=e504]: 鏈缃�
+              - generic [ref=e510] [cursor=pointer]:
+                - generic [ref=e511]: 缁翠慨宸ュ崟
+                - generic [ref=e512]:
+                  - generic [ref=e513]: "0"
+                  - generic [ref=e515]: 寰呭鐞�
+            - heading "宸ュ崟鐘舵�佸垎甯�" [level=4] [ref=e517]
+        - generic [ref=e525]:
+          - heading "蹇嵎鎿嶄綔" [level=3] [ref=e526]
+          - generic [ref=e527]:
+            - generic [ref=e528] [cursor=pointer]: 鐢熶骇宸ュ崟
+            - generic [ref=e535] [cursor=pointer]: 鐢熶骇鎶ュ伐
+            - generic [ref=e542] [cursor=pointer]: 璐ㄦ绠$悊
+            - generic [ref=e550] [cursor=pointer]: 璁惧鐐规
+            - generic [ref=e557] [cursor=pointer]: 鐢熶骇鎺掔▼
+            - generic [ref=e564] [cursor=pointer]: 瀹夌伅鍛煎彨
+            - generic [ref=e569] [cursor=pointer]: 鐗╂枡搴撳瓨
+            - generic [ref=e577] [cursor=pointer]: 宸ヨ壓璺嚎
+            - generic [ref=e585] [cursor=pointer]: 鏁版嵁鎶ヨ〃
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-09-18T06-17-38-106Z.yml b/.playwright-mcp/page-2026-09-18T06-17-38-106Z.yml
new file mode 100644
index 0000000..2d458dd
--- /dev/null
+++ b/.playwright-mcp/page-2026-09-18T06-17-38-106Z.yml
@@ -0,0 +1,170 @@
+- 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]: 浜у搧璁捐
+        - listitem [ref=e85]:
+          - generic [ref=e86] [cursor=pointer]: 鐢熶骇绠℃帶
+        - listitem [ref=e93]:
+          - generic [ref=e94] [cursor=pointer]: 璐ㄩ噺绠$悊
+          - list [ref=e593]:
+            - menuitem "妫�娴嬮」璁剧疆" [ref=e594] [cursor=pointer]
+            - menuitem "璐ㄦ鏂规" [ref=e599] [cursor=pointer]
+            - menuitem "寰呮浠诲姟" [ref=e604] [cursor=pointer]
+            - menuitem "鏉ユ枡妫�楠�" [active] [ref=e611] [cursor=pointer]
+            - menuitem "杩囩▼妫�楠�" [ref=e616] [cursor=pointer]
+            - menuitem "閫�鏂欐楠�" [ref=e621] [cursor=pointer]
+            - menuitem "鍑鸿揣妫�楠�" [ref=e626] [cursor=pointer]
+            - menuitem "鎵规杩芥函" [ref=e631] [cursor=pointer]
+            - menuitem "涓嶅悎鏍煎搧澶勭悊" [ref=e637] [cursor=pointer]
+            - menuitem "甯歌缂洪櫡" [ref=e642] [cursor=pointer]
+        - listitem [ref=e100]:
+          - generic [ref=e101] [cursor=pointer]: 鎶ヨ〃绠$悊
+        - listitem [ref=e108]:
+          - generic [ref=e109] [cursor=pointer]: 鍐崇瓥BI澶у睆
+        - listitem [ref=e115]:
+          - generic [ref=e116] [cursor=pointer]: 鍗忓悓鍔炲叕
+        - listitem [ref=e122]:
+          - generic [ref=e123] [cursor=pointer]: 浜哄姏璧勬簮
+        - listitem [ref=e129]:
+          - generic [ref=e130] [cursor=pointer]: 鍞悗绠$悊
+        - listitem [ref=e136]:
+          - generic [ref=e137] [cursor=pointer]: 鍩虹璁炬柦
+        - listitem [ref=e143]:
+          - generic [ref=e144] [cursor=pointer]: 绯荤粺绠$悊
+      - generic [ref=e151] [cursor=pointer]
+  - generic [ref=e156]:
+    - generic [ref=e157]:
+      - banner [ref=e158]:
+        - button [ref=e159] [cursor=pointer]
+        - button [ref=e162] [cursor=pointer]
+        - navigation "breadcrumb" [ref=e167]:
+          - list [ref=e168]:
+            - listitem [ref=e649]:
+              - link "璐ㄩ噺绠$悊" [ref=e650] [cursor=pointer]:
+                - /url: javascript:void 0
+              - listitem [ref=e654]
+            - listitem [ref=e657]:
+              - link "鏉ユ枡妫�楠�" [disabled] [ref=e658]
+        - generic [ref=e177]:
+          - generic [ref=e179] [cursor=pointer]:
+            - generic [ref=e183]: 鎼滅储
+            - generic [ref=e184]: Ctrl K
+          - button [ref=e186] [cursor=pointer]
+          - button "dark" [ref=e191] [cursor=pointer]
+          - button [ref=e200] [cursor=pointer]
+          - button [ref=e206] [cursor=pointer]
+          - button [ref=e209] [cursor=pointer]
+          - button [ref=e215] [cursor=pointer]:
+            - button [ref=e217]
+          - button "宸ヤ綔鍙�" [ref=e221] [cursor=pointer]
+          - button [ref=e225] [cursor=pointer]:
+            - img "瓒呯骇绠$悊鍛�" [ref=e230]
+      - generic [ref=e232]:
+        - generic [ref=e237]:
+          - generic [ref=e238] [cursor=pointer]: 棣栭〉
+          - generic [ref=e664] [cursor=pointer]: 鏉ユ枡妫�楠�
+        - generic [ref=e254]:
+          - button [ref=e255] [cursor=pointer]
+          - generic [ref=e262] [cursor=pointer]
+          - generic [ref=e266] [cursor=pointer]
+    - main [ref=e273]:
+      - generic [ref=e684]:
+        - generic [ref=e689]:
+          - generic [ref=e690]: 妫�楠屽崟缂栧彿
+          - generic [ref=e693]:
+            - generic [ref=e694]: 渚涘簲鍟�
+            - generic [ref=e700] [cursor=pointer]:
+              - combobox "渚涘簲鍟�" [ref=e702]
+              - generic: 璇烽�夋嫨渚涘簲鍟�
+          - generic [ref=e703]: 渚涘簲鍟嗘壒娆�
+          - generic [ref=e706]:
+            - generic [ref=e707]: 浜у搧鐗╂枡
+            - textbox "璇烽�夋嫨浜у搧鐗╂枡" [ref=e714]
+          - generic [ref=e717]:
+            - generic [ref=e718]: 妫�娴嬬粨鏋�
+            - generic [ref=e724] [cursor=pointer]:
+              - combobox "妫�娴嬬粨鏋�" [ref=e726]
+              - generic: 璇烽�夋嫨妫�娴嬬粨鏋�
+          - generic [ref=e727]: 鏉ユ枡鏃ユ湡
+          - generic [ref=e730]: 妫�娴嬫棩鏈�
+          - generic [ref=e733]:
+            - generic [ref=e734]: 妫�娴嬩汉鍛�
+            - generic [ref=e740] [cursor=pointer]:
+              - combobox "妫�娴嬩汉鍛�" [ref=e742]
+              - generic: 璇烽�夋嫨妫�娴嬩汉鍛�
+          - generic [ref=e743]: 鏀惰捣
+        - generic [ref=e751]:
+          - generic [ref=e753]:
+            - generic [ref=e754]: 鏉ユ枡妫�楠屽崟鍒楄〃
+            - generic [ref=e758]:
+              - generic [ref=e760]:
+                - button "鏂板鏉ユ枡妫�楠屽崟" [ref=e762] [cursor=pointer]
+                - button "瀵煎嚭" [ref=e766] [cursor=pointer]
+              - button "顫�" [ref=e769] [cursor=pointer]
+            - generic [ref=e771]:
+              - button "瞟�" [ref=e772] [cursor=pointer]
+              - button "顪�" [ref=e774] [cursor=pointer]
+              - button "顦�" [ref=e776] [cursor=pointer]
+          - generic [ref=e783]:
+            - generic [ref=e784]:
+              - table [ref=e788]:
+                - rowgroup [ref=e805]:
+                  - row [ref=e806]:
+                    - columnheader "鏉ユ枡妫�楠屽崟缂栧彿" [ref=e807]
+                    - columnheader "鏉ユ枡妫�楠屽崟鍚嶇О" [ref=e812]
+                    - columnheader "渚涘簲鍟嗙畝绉�" [ref=e817]
+                    - columnheader "渚涘簲鍟嗘壒娆″彿" [ref=e822]
+                    - columnheader "浜у搧鐗╂枡缂栫爜" [ref=e827]
+                    - columnheader "浜у搧鐗╂枡鍚嶇О" [ref=e832]
+                    - columnheader "鎺ユ敹鏁伴噺" [ref=e837]
+                    - columnheader "妫�娴嬫暟閲�" [ref=e842]
+                    - columnheader "涓嶅悎鏍兼暟" [ref=e847]
+                    - columnheader "妫�娴嬬粨鏋�" [ref=e852]
+                    - columnheader "鏉ユ枡鏃ユ湡" [ref=e857]
+                    - columnheader "妫�娴嬫棩鏈�" [ref=e862]
+                    - columnheader "妫�娴嬩汉鍛�" [ref=e867]
+                    - columnheader "鍗曟嵁鐘舵��" [ref=e872]
+              - generic [ref=e878]:
+                - table:
+                  - rowgroup
+            - generic [ref=e880]:
+              - table [ref=e883]:
+                - rowgroup [ref=e900]:
+                  - row [ref=e901]:
+                    - columnheader "鎿嶄綔" [ref=e902]
+              - generic [ref=e908]:
+                - table:
+                  - rowgroup
+          - generic [ref=e921]:
+            - generic [ref=e922]: 鍏� 0 鏉¤褰�
+            - generic [ref=e924] [cursor=pointer]:
+              - generic "20鏉�/椤�" [ref=e925]:
+                - textbox "璇烽�夋嫨" [ref=e926]: 20鏉�/椤�
+              - generic [ref=e927]: 睿�
+            - button "飱�" [ref=e930]
+            - button "顧�" [ref=e932]
+            - button "顫�" [ref=e934]
+            - button "1" [ref=e937] [cursor=pointer]
+            - button "顫�" [ref=e938]
+            - button "顧�" [ref=e940]
+            - button "顦�" [ref=e942]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-09-18T06-17-54-686Z.yml b/.playwright-mcp/page-2026-09-18T06-17-54-686Z.yml
new file mode 100644
index 0000000..b61975b
--- /dev/null
+++ b/.playwright-mcp/page-2026-09-18T06-17-54-686Z.yml
@@ -0,0 +1,701 @@
+- 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]: 浜у搧璁捐
+          - listitem [ref=e85]:
+            - generic [ref=e86] [cursor=pointer]: 鐢熶骇绠℃帶
+          - listitem [ref=e93]:
+            - generic [ref=e94] [cursor=pointer]: 璐ㄩ噺绠$悊
+            - list [ref=e593]:
+              - menuitem "妫�娴嬮」璁剧疆" [ref=e594] [cursor=pointer]
+              - menuitem "璐ㄦ鏂规" [ref=e599] [cursor=pointer]
+              - menuitem "寰呮浠诲姟" [ref=e604] [cursor=pointer]
+              - menuitem "鏉ユ枡妫�楠�" [ref=e611] [cursor=pointer]
+              - menuitem "杩囩▼妫�楠�" [ref=e616] [cursor=pointer]
+              - menuitem "閫�鏂欐楠�" [ref=e621] [cursor=pointer]
+              - menuitem "鍑鸿揣妫�楠�" [ref=e626] [cursor=pointer]
+              - menuitem "鎵规杩芥函" [ref=e631] [cursor=pointer]
+              - menuitem "涓嶅悎鏍煎搧澶勭悊" [ref=e637] [cursor=pointer]
+              - menuitem "甯歌缂洪櫡" [ref=e642] [cursor=pointer]
+          - listitem [ref=e100]:
+            - generic [ref=e101] [cursor=pointer]: 鎶ヨ〃绠$悊
+          - listitem [ref=e108]:
+            - generic [ref=e109] [cursor=pointer]: 鍐崇瓥BI澶у睆
+          - listitem [ref=e115]:
+            - generic [ref=e116] [cursor=pointer]: 鍗忓悓鍔炲叕
+          - listitem [ref=e122]:
+            - generic [ref=e123] [cursor=pointer]: 浜哄姏璧勬簮
+          - listitem [ref=e129]:
+            - generic [ref=e130] [cursor=pointer]: 鍞悗绠$悊
+          - listitem [ref=e136]:
+            - generic [ref=e137] [cursor=pointer]: 鍩虹璁炬柦
+          - listitem [ref=e143]:
+            - generic [ref=e144] [cursor=pointer]: 绯荤粺绠$悊
+        - generic [ref=e151] [cursor=pointer]
+    - generic [ref=e156]:
+      - generic [ref=e157]:
+        - banner [ref=e158]:
+          - button [ref=e159] [cursor=pointer]
+          - button [ref=e162] [cursor=pointer]
+          - navigation "breadcrumb" [ref=e167]:
+            - list [ref=e168]:
+              - listitem [ref=e649]:
+                - link "璐ㄩ噺绠$悊" [ref=e650] [cursor=pointer]:
+                  - /url: javascript:void 0
+                - listitem [ref=e654]
+              - listitem [ref=e657]:
+                - link "鏉ユ枡妫�楠�" [disabled] [ref=e658]
+          - generic [ref=e177]:
+            - generic [ref=e179] [cursor=pointer]:
+              - generic [ref=e183]: 鎼滅储
+              - generic [ref=e184]: Ctrl K
+            - button [ref=e186] [cursor=pointer]
+            - button "dark" [ref=e191] [cursor=pointer]
+            - button [ref=e200] [cursor=pointer]
+            - button [ref=e206] [cursor=pointer]
+            - button [ref=e209] [cursor=pointer]
+            - button [ref=e215] [cursor=pointer]:
+              - button [ref=e217]
+            - button "宸ヤ綔鍙�" [ref=e221] [cursor=pointer]
+            - button [ref=e225] [cursor=pointer]:
+              - img "瓒呯骇绠$悊鍛�" [ref=e230]
+        - generic [ref=e232]:
+          - generic [ref=e237]:
+            - generic [ref=e238] [cursor=pointer]: 棣栭〉
+            - generic [ref=e664] [cursor=pointer]: 鏉ユ枡妫�楠�
+          - generic [ref=e254]:
+            - button [ref=e255] [cursor=pointer]
+            - generic [ref=e262] [cursor=pointer]
+            - generic [ref=e266] [cursor=pointer]
+      - main [ref=e273]:
+        - generic [ref=e684]:
+          - generic [ref=e689]:
+            - generic [ref=e690]:
+              - generic [ref=e691]: 妫�楠屽崟缂栧彿
+              - textbox "妫�楠屽崟缂栧彿" [ref=e948]:
+                - /placeholder: 璇疯緭鍏ユ楠屽崟缂栧彿
+            - generic [ref=e693]:
+              - generic [ref=e694]: 渚涘簲鍟�
+              - generic [ref=e700] [cursor=pointer]:
+                - combobox "渚涘簲鍟�" [ref=e702]
+                - generic: 璇烽�夋嫨渚涘簲鍟�
+            - generic [ref=e703]:
+              - generic [ref=e704]: 渚涘簲鍟嗘壒娆�
+              - textbox "渚涘簲鍟嗘壒娆�" [ref=e954]:
+                - /placeholder: 璇疯緭鍏ヤ緵搴斿晢鎵规鍙�
+            - generic [ref=e706]:
+              - generic [ref=e707]: 浜у搧鐗╂枡
+              - textbox "璇烽�夋嫨浜у搧鐗╂枡" [ref=e714]
+            - generic [ref=e717]:
+              - generic [ref=e718]: 妫�娴嬬粨鏋�
+              - generic [ref=e724] [cursor=pointer]:
+                - combobox "妫�娴嬬粨鏋�" [ref=e726]
+                - generic: 璇烽�夋嫨妫�娴嬬粨鏋�
+            - generic [ref=e727]:
+              - generic [ref=e728]: 鏉ユ枡鏃ユ湡
+              - generic [ref=e962]:
+                - textbox "鏉ユ枡鏃ユ湡" [ref=e964]:
+                  - /placeholder: 寮�濮嬫椂闂�
+                - generic "to" [ref=e966]:
+                  - img "swap-right" [ref=e967]
+                - textbox "缁撴潫鏃堕棿" [ref=e971]
+                - generic:
+                  - img "calendar"
+            - generic [ref=e730]:
+              - generic [ref=e731]: 妫�娴嬫棩鏈�
+              - generic [ref=e975]:
+                - textbox "妫�娴嬫棩鏈�" [ref=e977]:
+                  - /placeholder: 寮�濮嬫椂闂�
+                - generic "to" [ref=e979]:
+                  - img "swap-right" [ref=e980]
+                - textbox "缁撴潫鏃堕棿" [ref=e984]
+                - generic:
+                  - img "calendar"
+            - generic [ref=e733]:
+              - generic [ref=e734]: 妫�娴嬩汉鍛�
+              - generic [ref=e740] [cursor=pointer]:
+                - combobox "妫�娴嬩汉鍛�" [ref=e742]
+                - generic: 璇烽�夋嫨妫�娴嬩汉鍛�
+            - generic [ref=e743]:
+              - button "閲� 缃�" [ref=e985] [cursor=pointer]
+              - button "鎼� 绱�" [ref=e987] [cursor=pointer]
+              - generic [ref=e744] [cursor=pointer]: 鏀惰捣
+          - generic [ref=e751]:
+            - generic [ref=e753]:
+              - generic [ref=e754]: 鏉ユ枡妫�楠屽崟鍒楄〃
+              - generic [ref=e758]:
+                - generic [ref=e760]:
+                  - button "鏂板鏉ユ枡妫�楠屽崟" [ref=e762] [cursor=pointer]
+                  - button "瀵煎嚭" [ref=e766] [cursor=pointer]
+                - button "顫�" [ref=e769] [cursor=pointer]
+              - generic [ref=e771]:
+                - button "瞟�" [ref=e772] [cursor=pointer]
+                - button "顪�" [ref=e774] [cursor=pointer]
+                - button "顦�" [ref=e776] [cursor=pointer]
+            - generic [ref=e783]:
+              - generic [ref=e784]:
+                - table [ref=e788]:
+                  - rowgroup [ref=e805]:
+                    - row [ref=e806]:
+                      - columnheader "鏉ユ枡妫�楠屽崟缂栧彿" [ref=e807]
+                      - columnheader "鏉ユ枡妫�楠屽崟鍚嶇О" [ref=e812]
+                      - columnheader "渚涘簲鍟嗙畝绉�" [ref=e817]
+                      - columnheader "渚涘簲鍟嗘壒娆″彿" [ref=e822]
+                      - columnheader "浜у搧鐗╂枡缂栫爜" [ref=e827]
+                      - columnheader "浜у搧鐗╂枡鍚嶇О" [ref=e832]
+                      - columnheader "鎺ユ敹鏁伴噺" [ref=e837]
+                      - columnheader "妫�娴嬫暟閲�" [ref=e842]
+                      - columnheader "涓嶅悎鏍兼暟" [ref=e847]
+                      - columnheader "妫�娴嬬粨鏋�" [ref=e852]
+                      - columnheader "鏉ユ枡鏃ユ湡" [ref=e857]
+                      - columnheader "妫�娴嬫棩鏈�" [ref=e862]
+                      - columnheader "妫�娴嬩汉鍛�" [ref=e867]
+                      - columnheader "鍗曟嵁鐘舵��" [ref=e872]
+                - table [ref=e993]:
+                  - rowgroup [ref=e1010]:
+                    - row "IQC-DEMO-03 澹儻鏉ユ枡妫�楠�-03 JN-20260918-A03 4 澹儻 800 80 4 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1011]:
+                      - cell [ref=e1012]:
+                        - button "IQC-DEMO-03" [ref=e1015] [cursor=pointer]
+                      - cell "澹儻鏉ユ枡妫�楠�-03" [ref=e1017]
+                      - cell [ref=e1021]
+                      - cell "JN-20260918-A03" [ref=e1025]
+                      - cell "4" [ref=e1029]
+                      - cell "澹儻" [ref=e1033]
+                      - cell "800" [ref=e1037]
+                      - cell "80" [ref=e1041]
+                      - cell "4" [ref=e1045]
+                      - cell [ref=e1049]
+                      - cell "2026-09-17" [ref=e1051]
+                      - cell "2026-09-18" [ref=e1055]
+                      - cell "寮犱笁" [ref=e1059]
+                      - cell "宸插畬鎴�" [ref=e1063]
+                    - row "IQC-DEMO-02 绮捐悩鏉ユ枡妫�楠�-02 JN-20260918-A02 2 绮捐悩 1500 150 0 鏍¢獙閫氳繃 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1067]:
+                      - cell [ref=e1068]:
+                        - button "IQC-DEMO-02" [ref=e1071] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-02" [ref=e1073]
+                      - cell [ref=e1077]
+                      - cell "JN-20260918-A02" [ref=e1081]
+                      - cell "2" [ref=e1085]
+                      - cell "绮捐悩" [ref=e1089]
+                      - cell "1500" [ref=e1093]
+                      - cell "150" [ref=e1097]
+                      - cell "0" [ref=e1101]
+                      - cell "鏍¢獙閫氳繃" [ref=e1105]
+                      - cell "2026-09-17" [ref=e1109]
+                      - cell "2026-09-18" [ref=e1113]
+                      - cell "寮犱笁" [ref=e1117]
+                      - cell "宸插畬鎴�" [ref=e1121]
+                    - row "IQC-DEMO-01 绮捐悩鏉ユ枡妫�楠�-01 JN-20260918-A01 2 绮捐悩 2000 200 2 鏍¢獙閫氳繃 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1125]:
+                      - cell [ref=e1126]:
+                        - button "IQC-DEMO-01" [active] [ref=e1129] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-01" [ref=e1131]
+                      - cell [ref=e1135]
+                      - cell "JN-20260918-A01" [ref=e1139]
+                      - cell "2" [ref=e1143]
+                      - cell "绮捐悩" [ref=e1147]
+                      - cell "2000" [ref=e1151]
+                      - cell "200" [ref=e1155]
+                      - cell "2" [ref=e1159]
+                      - cell "鏍¢獙閫氳繃" [ref=e1163]
+                      - cell "2026-09-17" [ref=e1167]
+                      - cell "2026-09-18" [ref=e1171]
+                      - cell "寮犱笁" [ref=e1175]
+                      - cell "宸插畬鎴�" [ref=e1179]
+                    - row "IQC_20260917001 绮捐悩鏉ユ枡妫�楠�-0917 2 绮捐悩 100 100 0 2026-09-17 2026-09-17 瓒呯骇绠$悊鍛� 鑽夌" [ref=e1183]:
+                      - cell [ref=e1184]:
+                        - button "IQC_20260917001" [ref=e1187] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-0917" [ref=e1189]
+                      - cell [ref=e1193]
+                      - cell [ref=e1197]
+                      - cell "2" [ref=e1201]
+                      - cell "绮捐悩" [ref=e1205]
+                      - cell "100" [ref=e1209]
+                      - cell "100" [ref=e1213]
+                      - cell "0" [ref=e1217]
+                      - cell [ref=e1221]
+                      - cell "2026-09-17" [ref=e1223]
+                      - cell "2026-09-17" [ref=e1227]
+                      - cell "瓒呯骇绠$悊鍛�" [ref=e1231]
+                      - cell "鑽夌" [ref=e1235]
+              - generic [ref=e880]:
+                - table [ref=e883]:
+                  - rowgroup [ref=e900]:
+                    - row [ref=e901]:
+                      - columnheader "鎿嶄綔" [ref=e902]
+                - table [ref=e1239]:
+                  - rowgroup [ref=e1242]:
+                    - row [ref=e1243]:
+                      - cell [ref=e1244]:
+                        - generic [ref=e1248]:
+                          - button "璇︽儏" [ref=e1250] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1257] [cursor=pointer]
+                    - row [ref=e1263]:
+                      - cell [ref=e1264]:
+                        - generic [ref=e1268]:
+                          - button "璇︽儏" [ref=e1270] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1277] [cursor=pointer]
+                    - row [ref=e1283]:
+                      - cell [ref=e1284]:
+                        - generic [ref=e1288]:
+                          - button "璇︽儏" [ref=e1290] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1297] [cursor=pointer]
+                    - row [ref=e1303]:
+                      - cell [ref=e1304]:
+                        - generic [ref=e1308]:
+                          - button "淇敼" [ref=e1310] [cursor=pointer]
+                          - button "鍒犻櫎" [ref=e1317] [cursor=pointer]
+                          - button "璇︽儏" [ref=e1322] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1329] [cursor=pointer]
+            - generic [ref=e921]:
+              - generic [ref=e922]: 鍏� 4 鏉¤褰�
+              - generic [ref=e924] [cursor=pointer]:
+                - generic "20鏉�/椤�" [ref=e925]:
+                  - textbox "璇烽�夋嫨" [ref=e926]: 20鏉�/椤�
+                - generic [ref=e927]: 睿�
+              - button "飱�" [ref=e930]
+              - button "顧�" [ref=e932]
+              - button "顫�" [ref=e934]
+              - button "1" [ref=e937] [cursor=pointer]
+              - button "顫�" [ref=e938]
+              - button "顧�" [ref=e940]
+              - button "顦�" [ref=e942]
+  - dialog [ref=e1336]:
+    - heading "鏌ョ湅鏉ユ枡妫�楠屽崟" [level=2] [ref=e1338]
+    - generic [ref=e1340]:
+      - generic [ref=e1342]:
+        - generic [ref=e1343]:
+          - generic [ref=e1344]:
+            - generic [ref=e1345]: "*"
+            - text: 妫�楠屽崟缂栧彿
+          - generic [ref=e1349]:
+            - textbox "* 妫�楠屽崟缂栧彿" [disabled] [ref=e1350]:
+              - /placeholder: 璇疯緭鍏ユ楠屽崟缂栧彿
+              - text: IQC-DEMO-01
+            - button "鐢� 鎴�" [disabled] [ref=e1352]
+        - generic [ref=e1354]:
+          - generic [ref=e1355]:
+            - generic [ref=e1356]: "*"
+            - text: 妫�楠屽崟鍚嶇О
+          - textbox "* 妫�楠屽崟鍚嶇О" [disabled] [ref=e1361]:
+            - /placeholder: 璇疯緭鍏ユ楠屽崟鍚嶇О
+            - text: 绮捐悩鏉ユ枡妫�楠�-01
+        - generic [ref=e1362]:
+          - generic [ref=e1363]:
+            - generic [ref=e1364]: "*"
+            - text: 浜у搧鐗╂枡
+          - textbox "璇烽�夋嫨浜у搧鐗╂枡" [disabled] [ref=e1371]: 绮捐悩
+        - generic [ref=e1377]:
+          - generic [ref=e1378]: 渚涘簲鍟�
+          - generic [ref=e1384]:
+            - combobox "渚涘簲鍟�" [disabled] [ref=e1386]
+            - generic: 璇烽�夋嫨渚涘簲鍟�
+        - generic [ref=e1387]:
+          - generic [ref=e1388]: 渚涘簲鍟嗘壒娆″彿
+          - textbox "渚涘簲鍟嗘壒娆″彿" [disabled] [ref=e1393]:
+            - /placeholder: 璇疯緭鍏ヤ緵搴斿晢鎵规鍙�
+            - text: JN-20260918-A01
+        - generic [ref=e1394]:
+          - generic [ref=e1395]:
+            - generic [ref=e1396]: "*"
+            - text: 鏈鎺ユ敹鏁伴噺
+          - spinbutton "* 鏈鎺ユ敹鏁伴噺" [disabled] [ref=e1403]: "2000.00"
+        - generic [ref=e1404]:
+          - generic [ref=e1405]:
+            - generic [ref=e1406]: "*"
+            - text: 鍚堟牸鍝佹暟閲�
+          - spinbutton "* 鍚堟牸鍝佹暟閲�" [disabled] [ref=e1413]: "198"
+        - generic [ref=e1414]:
+          - generic [ref=e1415]:
+            - generic [ref=e1416]: "*"
+            - text: 涓嶅悎鏍煎搧鏁伴噺
+            - img [ref=e1417] [cursor=pointer]
+          - spinbutton "* 涓嶅悎鏍煎搧鏁伴噺" [disabled] [ref=e1426]: "2"
+        - generic [ref=e1427]:
+          - generic [ref=e1428]:
+            - generic [ref=e1429]: "*"
+            - text: 鏉ユ枡鏃ユ湡
+          - generic [ref=e1435]:
+            - textbox "* 鏉ユ枡鏃ユ湡" [disabled] [ref=e1436]:
+              - /placeholder: 璇烽�夋嫨鏉ユ枡鏃ユ湡
+              - text: 2026-09-17
+            - generic:
+              - img "calendar"
+        - generic [ref=e1437]:
+          - generic [ref=e1438]:
+            - generic [ref=e1439]: "*"
+            - text: 妫�娴嬩汉鍛�
+          - generic [ref=e1445]:
+            - combobox "* 妫�娴嬩汉鍛�" [disabled] [ref=e1447]
+            - generic "寮犱笁" [ref=e1448]
+        - generic [ref=e1449]:
+          - generic [ref=e1450]:
+            - generic [ref=e1451]: "*"
+            - text: 妫�娴嬫棩鏈�
+          - generic [ref=e1457]:
+            - textbox "* 妫�娴嬫棩鏈�" [disabled] [ref=e1458]:
+              - /placeholder: 璇烽�夋嫨妫�娴嬫棩鏈�
+              - text: 2026-09-18
+            - generic:
+              - img "calendar"
+        - generic [ref=e1459]:
+          - generic [ref=e1460]: 妫�娴嬬粨鏋�
+          - generic [ref=e1466]:
+            - combobox "妫�娴嬬粨鏋�" [disabled] [ref=e1468]
+            - generic "鏍¢獙閫氳繃" [ref=e1469]
+        - generic [ref=e1470]:
+          - generic [ref=e1471]: 澶囨敞
+          - textbox "澶囨敞" [disabled] [ref=e1476]:
+            - /placeholder: 璇疯緭鍏ュ娉�
+            - text: 婕旂ず鏁版嵁
+      - generic [ref=e1478]:
+        - generic [ref=e1479]: 缂洪櫡鎯呭喌
+        - table [ref=e1482]:
+          - rowgroup [ref=e1483]:
+            - row [ref=e1484]:
+              - rowheader "鑷村懡缂洪櫡鏁�" [ref=e1485]
+              - cell "0" [ref=e1486]
+              - rowheader "涓ラ噸缂洪櫡鏁�" [ref=e1488]
+              - cell "0" [ref=e1489]
+              - rowheader "杞诲井缂洪櫡鏁�" [ref=e1491]
+              - cell "0" [ref=e1492]
+            - row [ref=e1494]:
+              - rowheader "鑷村懡缂洪櫡鐜�" [ref=e1495]
+              - cell "0%" [ref=e1496]
+              - rowheader "涓ラ噸缂洪櫡鐜�" [ref=e1498]
+              - cell "0%" [ref=e1499]
+              - rowheader "杞诲井缂洪櫡鐜�" [ref=e1501]
+              - cell "0%" [ref=e1502]
+      - generic [ref=e1504]:
+        - tablist [ref=e1505]:
+          - generic [ref=e1507]:
+            - tab "妫�楠岄」" [selected] [ref=e1509] [cursor=pointer]
+            - tab "妫�娴嬬粨鏋�" [ref=e1511] [cursor=pointer]
+        - tabpanel "妫�楠岄」" [ref=e1514]:
+          - generic [ref=e1519]:
+            - generic [ref=e1521]:
+              - generic [ref=e1522]: 妫�楠岄」
+              - generic [ref=e1525]:
+                - button "瞟�" [ref=e1526] [cursor=pointer]
+                - button "顪�" [ref=e1528] [cursor=pointer]
+                - button "顦�" [ref=e1530] [cursor=pointer]
+            - generic [ref=e1537]:
+              - generic [ref=e1538]:
+                - table [ref=e1542]:
+                  - rowgroup [ref=e1557]:
+                    - row [ref=e1558]:
+                      - columnheader "妫�娴嬮」鍚嶇О" [ref=e1559]
+                      - columnheader "妫�娴嬮」绫诲瀷" [ref=e1564]
+                      - columnheader "妫�娴嬪伐鍏�" [ref=e1569]
+                      - columnheader "妫�娴嬭姹�" [ref=e1574]
+                      - columnheader "鏍囧噯鍊�" [ref=e1579]
+                      - columnheader "鍗曚綅" [ref=e1584]
+                      - columnheader "璇樊涓婇檺" [ref=e1589]
+                      - columnheader "璇樊涓嬮檺" [ref=e1594]
+                      - columnheader "鑷村懡缂洪櫡鏁�" [ref=e1599]
+                      - columnheader "涓ラ噸缂洪櫡鏁�" [ref=e1604]
+                      - columnheader "杞诲井缂洪櫡鏁�" [ref=e1609]
+                      - columnheader "澶囨敞" [ref=e1614]
+                - table [ref=e1622]:
+                  - rowgroup [ref=e1637]:
+                    - row "澶栬 鎬ц兘 鐩祴 搴旀緞娓呴�忔槑锛屾棤鏈烘鏉傝川" [ref=e1638]:
+                      - cell "澶栬" [ref=e1639]
+                      - cell "鎬ц兘" [ref=e1643]
+                      - cell "鐩祴" [ref=e1647]
+                      - cell "搴旀緞娓呴�忔槑锛屾棤鏈烘鏉傝川" [ref=e1651]
+                      - cell [ref=e1655]
+                      - cell [ref=e1659]
+                      - cell [ref=e1663]
+                      - cell [ref=e1667]
+                      - cell [ref=e1671]
+                      - cell [ref=e1675]
+                      - cell [ref=e1679]
+                      - cell [ref=e1683]
+                    - row "鑹插害 鎬ц兘 閾傞挻姣旇壊浠� 鑹插害 Hazen 鈮� 10 10" [ref=e1687]:
+                      - cell "鑹插害" [ref=e1688]
+                      - cell "鎬ц兘" [ref=e1692]
+                      - cell "閾傞挻姣旇壊浠�" [ref=e1696]
+                      - cell "鑹插害 Hazen 鈮� 10" [ref=e1700]
+                      - cell "10" [ref=e1704]
+                      - cell [ref=e1708]
+                      - cell [ref=e1712]
+                      - cell [ref=e1716]
+                      - cell [ref=e1720]
+                      - cell [ref=e1724]
+                      - cell [ref=e1728]
+                      - cell [ref=e1732]
+                    - row "姘村垎 鎬ц兘 鍗″皵璐逛紤姘村垎浠� 姘村垎娴嬪畾鍒嗙粍" [ref=e1736]:
+                      - cell "姘村垎" [ref=e1737]
+                      - cell "鎬ц兘" [ref=e1741]
+                      - cell "鍗″皵璐逛紤姘村垎浠�" [ref=e1745]
+                      - cell "姘村垎娴嬪畾鍒嗙粍" [ref=e1749]
+                      - cell [ref=e1753]
+                      - cell [ref=e1757]
+                      - cell [ref=e1761]
+                      - cell [ref=e1765]
+                      - cell [ref=e1769]
+                      - cell [ref=e1773]
+                      - cell [ref=e1777]
+                      - cell [ref=e1781]
+                    - row "璇曟牱璐ㄩ噺 m 鎬ц兘 鍒嗘瀽澶╁钩 绉伴噺" [ref=e1785]:
+                      - cell "璇曟牱璐ㄩ噺 m" [ref=e1786]
+                      - cell "鎬ц兘" [ref=e1790]
+                      - cell "鍒嗘瀽澶╁钩" [ref=e1794]
+                      - cell "绉伴噺" [ref=e1798]
+                      - cell [ref=e1802]
+                      - cell [ref=e1806]
+                      - cell [ref=e1810]
+                      - cell [ref=e1814]
+                      - cell [ref=e1818]
+                      - cell [ref=e1822]
+                      - cell [ref=e1826]
+                      - cell [ref=e1830]
+                    - row "璇曟牱+绉伴噺鐡� m1 鎬ц兘 鍒嗘瀽澶╁钩 绉伴噺" [ref=e1834]:
+                      - cell "璇曟牱+绉伴噺鐡� m1" [ref=e1835]
+                      - cell "鎬ц兘" [ref=e1839]
+                      - cell "鍒嗘瀽澶╁钩" [ref=e1843]
+                      - cell "绉伴噺" [ref=e1847]
+                      - cell [ref=e1851]
+                      - cell [ref=e1855]
+                      - cell [ref=e1859]
+                      - cell [ref=e1863]
+                      - cell [ref=e1867]
+                      - cell [ref=e1871]
+                      - cell [ref=e1875]
+                      - cell [ref=e1879]
+                    - row "绉伴噺鐡� m0 鎬ц兘 鍒嗘瀽澶╁钩 绉伴噺" [ref=e1883]:
+                      - cell "绉伴噺鐡� m0" [ref=e1884]
+                      - cell "鎬ц兘" [ref=e1888]
+                      - cell "鍒嗘瀽澶╁钩" [ref=e1892]
+                      - cell "绉伴噺" [ref=e1896]
+                      - cell [ref=e1900]
+                      - cell [ref=e1904]
+                      - cell [ref=e1908]
+                      - cell [ref=e1912]
+                      - cell [ref=e1916]
+                      - cell [ref=e1920]
+                      - cell [ref=e1924]
+                      - cell [ref=e1928]
+                    - row "姘村垎缁撴灉 w 鎬ц兘 鎸夊叕寮忚绠�" [ref=e1932]:
+                      - cell "姘村垎缁撴灉 w" [ref=e1933]
+                      - cell "鎬ц兘" [ref=e1937]
+                      - cell [ref=e1941]
+                      - cell "鎸夊叕寮忚绠�" [ref=e1945]
+                      - cell [ref=e1949]
+                      - cell [ref=e1953]
+                      - cell [ref=e1957]
+                      - cell [ref=e1961]
+                      - cell [ref=e1965]
+                      - cell [ref=e1969]
+                      - cell [ref=e1973]
+                      - cell [ref=e1977]
+                    - row "閰稿惈閲� 鎬ц兘 鐢典綅婊村畾浠� 閰稿惈閲忔祴瀹氬垎缁�" [ref=e1981]:
+                      - cell "閰稿惈閲�" [ref=e1982]
+                      - cell "鎬ц兘" [ref=e1986]
+                      - cell "鐢典綅婊村畾浠�" [ref=e1990]
+                      - cell "閰稿惈閲忔祴瀹氬垎缁�" [ref=e1994]
+                      - cell [ref=e1998]
+                      - cell [ref=e2002]
+                      - cell [ref=e2006]
+                      - cell [ref=e2010]
+                      - cell [ref=e2014]
+                      - cell [ref=e2018]
+                      - cell [ref=e2022]
+                      - cell [ref=e2026]
+                    - row "鏍囨恫娴撳害 c 鎬ц兘 鑷姩鐢典綅婊村畾浠� 鏍囧畾" [ref=e2030]:
+                      - cell "鏍囨恫娴撳害 c" [ref=e2031]
+                      - cell "鎬ц兘" [ref=e2035]
+                      - cell "鑷姩鐢典綅婊村畾浠�" [ref=e2039]
+                      - cell "鏍囧畾" [ref=e2043]
+                      - cell [ref=e2047]
+                      - cell [ref=e2051]
+                      - cell [ref=e2055]
+                      - cell [ref=e2059]
+                      - cell [ref=e2063]
+                      - cell [ref=e2067]
+                      - cell [ref=e2071]
+                      - cell [ref=e2075]
+                    - row "娑堣�楁淮瀹氭恫浣撶Н V 鎬ц兘 鑷姩鐢典綅婊村畾浠� 婊村畾" [ref=e2079]:
+                      - cell "娑堣�楁淮瀹氭恫浣撶Н V" [ref=e2080]
+                      - cell "鎬ц兘" [ref=e2084]
+                      - cell "鑷姩鐢典綅婊村畾浠�" [ref=e2088]
+                      - cell "婊村畾" [ref=e2092]
+                      - cell [ref=e2096]
+                      - cell [ref=e2100]
+                      - cell [ref=e2104]
+                      - cell [ref=e2108]
+                      - cell [ref=e2112]
+                      - cell [ref=e2116]
+                      - cell [ref=e2120]
+                      - cell [ref=e2124]
+                    - row "璇曟牱璐ㄩ噺 m 鎬ц兘 鍒嗘瀽澶╁钩 绉伴噺" [ref=e2128]:
+                      - cell "璇曟牱璐ㄩ噺 m" [ref=e2129]
+                      - cell "鎬ц兘" [ref=e2133]
+                      - cell "鍒嗘瀽澶╁钩" [ref=e2137]
+                      - cell "绉伴噺" [ref=e2141]
+                      - cell [ref=e2145]
+                      - cell [ref=e2149]
+                      - cell [ref=e2153]
+                      - cell [ref=e2157]
+                      - cell [ref=e2161]
+                      - cell [ref=e2165]
+                      - cell [ref=e2169]
+                      - cell [ref=e2173]
+                    - row "閰稿惈閲忕粨鏋� w3 鎬ц兘 鎸夊叕寮忚绠�" [ref=e2177]:
+                      - cell "閰稿惈閲忕粨鏋� w3" [ref=e2178]
+                      - cell "鎬ц兘" [ref=e2182]
+                      - cell [ref=e2186]
+                      - cell "鎸夊叕寮忚绠�" [ref=e2190]
+                      - cell [ref=e2194]
+                      - cell [ref=e2198]
+                      - cell [ref=e2202]
+                      - cell [ref=e2206]
+                      - cell [ref=e2210]
+                      - cell [ref=e2214]
+                      - cell [ref=e2218]
+                      - cell [ref=e2222]
+                    - row "姝d竵閱囧惈閲� 鎬ц兘 姘旂浉鑹茶氨浠� 姝d竵閱囧惈閲忔祴瀹氬垎缁�" [ref=e2226]:
+                      - cell "姝d竵閱囧惈閲�" [ref=e2227]
+                      - cell "鎬ц兘" [ref=e2231]
+                      - cell "姘旂浉鑹茶氨浠�" [ref=e2235]
+                      - cell "姝d竵閱囧惈閲忔祴瀹氬垎缁�" [ref=e2239]
+                      - cell [ref=e2243]
+                      - cell [ref=e2247]
+                      - cell [ref=e2251]
+                      - cell [ref=e2255]
+                      - cell [ref=e2259]
+                      - cell [ref=e2263]
+                      - cell [ref=e2267]
+                      - cell [ref=e2271]
+                    - row "姝d竵閱囧惈閲� /% 鎬ц兘 姘旂浉鑹茶氨浠� 澶栨爣娉�" [ref=e2275]:
+                      - cell "姝d竵閱囧惈閲� /%" [ref=e2276]
+                      - cell "鎬ц兘" [ref=e2280]
+                      - cell "姘旂浉鑹茶氨浠�" [ref=e2284]
+                      - cell "澶栨爣娉�" [ref=e2288]
+                      - cell [ref=e2292]
+                      - cell [ref=e2296]
+                      - cell [ref=e2300]
+                      - cell [ref=e2304]
+                      - cell [ref=e2308]
+                      - cell [ref=e2312]
+                      - cell [ref=e2316]
+                      - cell [ref=e2320]
+                    - row "瀵嗗害 鎬ц兘 瀵嗗害璁� 瀵嗗害 (20鈩�) 809~812 810" [ref=e2324]:
+                      - cell "瀵嗗害" [ref=e2325]
+                      - cell "鎬ц兘" [ref=e2329]
+                      - cell "瀵嗗害璁�" [ref=e2333]
+                      - cell "瀵嗗害 (20鈩�) 809~812" [ref=e2337]
+                      - cell "810" [ref=e2341]
+                      - cell [ref=e2345]
+                      - cell [ref=e2349]
+                      - cell [ref=e2353]
+                      - cell [ref=e2357]
+                      - cell [ref=e2361]
+                      - cell [ref=e2365]
+                      - cell [ref=e2369]
+                    - row "鎶樺厜鐜� 鎬ц兘 闃胯礉鎶樺厜浠� 鎶樺厜鐜� n虏鈦癉 1.399" [ref=e2373]:
+                      - cell "鎶樺厜鐜�" [ref=e2374]
+                      - cell "鎬ц兘" [ref=e2378]
+                      - cell "闃胯礉鎶樺厜浠�" [ref=e2382]
+                      - cell "鎶樺厜鐜� n虏鈦癉" [ref=e2386]
+                      - cell "1.399" [ref=e2390]
+                      - cell [ref=e2394]
+                      - cell [ref=e2398]
+                      - cell [ref=e2402]
+                      - cell [ref=e2406]
+                      - cell [ref=e2410]
+                      - cell [ref=e2414]
+                      - cell [ref=e2418]
+              - generic [ref=e2422]:
+                - table [ref=e2425]:
+                  - rowgroup [ref=e2440]:
+                    - row [ref=e2441]:
+                      - columnheader "鎿嶄綔" [ref=e2442]
+                - table [ref=e2449]:
+                  - rowgroup [ref=e2452]:
+                    - row [ref=e2453]:
+                      - cell [ref=e2454]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2460] [cursor=pointer]
+                    - row [ref=e2466]:
+                      - cell [ref=e2467]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2473] [cursor=pointer]
+                    - row [ref=e2479]:
+                      - cell [ref=e2480]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2486] [cursor=pointer]
+                    - row [ref=e2492]:
+                      - cell [ref=e2493]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2499] [cursor=pointer]
+                    - row [ref=e2505]:
+                      - cell [ref=e2506]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2512] [cursor=pointer]
+                    - row [ref=e2518]:
+                      - cell [ref=e2519]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2525] [cursor=pointer]
+                    - row [ref=e2531]:
+                      - cell [ref=e2532]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2538] [cursor=pointer]
+                    - row [ref=e2544]:
+                      - cell [ref=e2545]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2551] [cursor=pointer]
+                    - row [ref=e2557]:
+                      - cell [ref=e2558]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2564] [cursor=pointer]
+                    - row [ref=e2570]:
+                      - cell [ref=e2571]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2577] [cursor=pointer]
+                    - row [ref=e2583]:
+                      - cell [ref=e2584]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2590] [cursor=pointer]
+                    - row [ref=e2596]:
+                      - cell [ref=e2597]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2603] [cursor=pointer]
+                    - row [ref=e2609]:
+                      - cell [ref=e2610]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2616] [cursor=pointer]
+                    - row [ref=e2622]:
+                      - cell [ref=e2623]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2629] [cursor=pointer]
+                    - row [ref=e2635]:
+                      - cell [ref=e2636]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2642] [cursor=pointer]
+                    - row [ref=e2648]:
+                      - cell [ref=e2649]:
+                        - button "缂洪櫡鍒楄〃" [ref=e2655] [cursor=pointer]
+            - generic [ref=e2673]:
+              - generic [ref=e2674]: 鍏� 16 鏉¤褰�
+              - generic [ref=e2676] [cursor=pointer]:
+                - generic "20鏉�/椤�" [ref=e2677]:
+                  - textbox "璇烽�夋嫨" [ref=e2678]: 20鏉�/椤�
+                - generic [ref=e2679]: 睿�
+              - button "飱�" [ref=e2682]
+              - button "顧�" [ref=e2684]
+              - button "顫�" [ref=e2686]
+              - button "1" [ref=e2689] [cursor=pointer]
+              - button "顫�" [ref=e2690]
+              - button "顧�" [ref=e2692]
+              - button "顦�" [ref=e2694]
+    - button [ref=e2696] [cursor=pointer]
+    - generic [ref=e2706]:
+      - button "璐ㄦ鍔╂墜" [ref=e2708] [cursor=pointer]
+      - button "鍙� 娑�" [ref=e2710] [cursor=pointer]
+    - button [ref=e2712] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-09-18T06-18-24-102Z.yml b/.playwright-mcp/page-2026-09-18T06-18-24-102Z.yml
new file mode 100644
index 0000000..d3450d6
--- /dev/null
+++ b/.playwright-mcp/page-2026-09-18T06-18-24-102Z.yml
@@ -0,0 +1,437 @@
+- 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]: 浜у搧璁捐
+          - listitem [ref=e85]:
+            - generic [ref=e86] [cursor=pointer]: 鐢熶骇绠℃帶
+          - listitem [ref=e93]:
+            - generic [ref=e94] [cursor=pointer]: 璐ㄩ噺绠$悊
+            - list [ref=e593]:
+              - menuitem "妫�娴嬮」璁剧疆" [ref=e594] [cursor=pointer]
+              - menuitem "璐ㄦ鏂规" [ref=e599] [cursor=pointer]
+              - menuitem "寰呮浠诲姟" [ref=e604] [cursor=pointer]
+              - menuitem "鏉ユ枡妫�楠�" [ref=e611] [cursor=pointer]
+              - menuitem "杩囩▼妫�楠�" [ref=e616] [cursor=pointer]
+              - menuitem "閫�鏂欐楠�" [ref=e621] [cursor=pointer]
+              - menuitem "鍑鸿揣妫�楠�" [ref=e626] [cursor=pointer]
+              - menuitem "鎵规杩芥函" [ref=e631] [cursor=pointer]
+              - menuitem "涓嶅悎鏍煎搧澶勭悊" [ref=e637] [cursor=pointer]
+              - menuitem "甯歌缂洪櫡" [ref=e642] [cursor=pointer]
+          - listitem [ref=e100]:
+            - generic [ref=e101] [cursor=pointer]: 鎶ヨ〃绠$悊
+          - listitem [ref=e108]:
+            - generic [ref=e109] [cursor=pointer]: 鍐崇瓥BI澶у睆
+          - listitem [ref=e115]:
+            - generic [ref=e116] [cursor=pointer]: 鍗忓悓鍔炲叕
+          - listitem [ref=e122]:
+            - generic [ref=e123] [cursor=pointer]: 浜哄姏璧勬簮
+          - listitem [ref=e129]:
+            - generic [ref=e130] [cursor=pointer]: 鍞悗绠$悊
+          - listitem [ref=e136]:
+            - generic [ref=e137] [cursor=pointer]: 鍩虹璁炬柦
+          - listitem [ref=e143]:
+            - generic [ref=e144] [cursor=pointer]: 绯荤粺绠$悊
+        - generic [ref=e151] [cursor=pointer]
+    - generic [ref=e156]:
+      - generic [ref=e157]:
+        - banner [ref=e158]:
+          - button [ref=e159] [cursor=pointer]
+          - button [ref=e162] [cursor=pointer]
+          - navigation "breadcrumb" [ref=e167]:
+            - list [ref=e168]:
+              - listitem [ref=e649]:
+                - link "璐ㄩ噺绠$悊" [ref=e650] [cursor=pointer]:
+                  - /url: javascript:void 0
+                - listitem [ref=e654]
+              - listitem [ref=e657]:
+                - link "鏉ユ枡妫�楠�" [disabled] [ref=e658]
+          - generic [ref=e177]:
+            - generic [ref=e179] [cursor=pointer]:
+              - generic [ref=e183]: 鎼滅储
+              - generic [ref=e184]: Ctrl K
+            - button [ref=e186] [cursor=pointer]
+            - button "dark" [ref=e191] [cursor=pointer]
+            - button [ref=e200] [cursor=pointer]
+            - button [ref=e206] [cursor=pointer]
+            - button [ref=e209] [cursor=pointer]
+            - button [ref=e215] [cursor=pointer]:
+              - button [ref=e217]
+            - button "宸ヤ綔鍙�" [ref=e221] [cursor=pointer]
+            - button [ref=e225] [cursor=pointer]:
+              - img "瓒呯骇绠$悊鍛�" [ref=e230]
+        - generic [ref=e232]:
+          - generic [ref=e237]:
+            - generic [ref=e238] [cursor=pointer]: 棣栭〉
+            - generic [ref=e664] [cursor=pointer]: 鏉ユ枡妫�楠�
+          - generic [ref=e254]:
+            - button [ref=e255] [cursor=pointer]
+            - generic [ref=e262] [cursor=pointer]
+            - generic [ref=e266] [cursor=pointer]
+      - main [ref=e273]:
+        - generic [ref=e684]:
+          - generic [ref=e689]:
+            - generic [ref=e690]:
+              - generic [ref=e691]: 妫�楠屽崟缂栧彿
+              - textbox "妫�楠屽崟缂栧彿" [ref=e948]:
+                - /placeholder: 璇疯緭鍏ユ楠屽崟缂栧彿
+            - generic [ref=e693]:
+              - generic [ref=e694]: 渚涘簲鍟�
+              - generic [ref=e700] [cursor=pointer]:
+                - combobox "渚涘簲鍟�" [ref=e702]
+                - generic: 璇烽�夋嫨渚涘簲鍟�
+            - generic [ref=e703]:
+              - generic [ref=e704]: 渚涘簲鍟嗘壒娆�
+              - textbox "渚涘簲鍟嗘壒娆�" [ref=e954]:
+                - /placeholder: 璇疯緭鍏ヤ緵搴斿晢鎵规鍙�
+            - generic [ref=e706]:
+              - generic [ref=e707]: 浜у搧鐗╂枡
+              - textbox "璇烽�夋嫨浜у搧鐗╂枡" [ref=e714]
+            - generic [ref=e717]:
+              - generic [ref=e718]: 妫�娴嬬粨鏋�
+              - generic [ref=e724] [cursor=pointer]:
+                - combobox "妫�娴嬬粨鏋�" [ref=e726]
+                - generic: 璇烽�夋嫨妫�娴嬬粨鏋�
+            - generic [ref=e727]:
+              - generic [ref=e728]: 鏉ユ枡鏃ユ湡
+              - generic [ref=e962]:
+                - textbox "鏉ユ枡鏃ユ湡" [ref=e964]:
+                  - /placeholder: 寮�濮嬫椂闂�
+                - generic "to" [ref=e966]:
+                  - img "swap-right" [ref=e967]
+                - textbox "缁撴潫鏃堕棿" [ref=e971]
+                - generic:
+                  - img "calendar"
+            - generic [ref=e730]:
+              - generic [ref=e731]: 妫�娴嬫棩鏈�
+              - generic [ref=e975]:
+                - textbox "妫�娴嬫棩鏈�" [ref=e977]:
+                  - /placeholder: 寮�濮嬫椂闂�
+                - generic "to" [ref=e979]:
+                  - img "swap-right" [ref=e980]
+                - textbox "缁撴潫鏃堕棿" [ref=e984]
+                - generic:
+                  - img "calendar"
+            - generic [ref=e733]:
+              - generic [ref=e734]: 妫�娴嬩汉鍛�
+              - generic [ref=e740] [cursor=pointer]:
+                - combobox "妫�娴嬩汉鍛�" [ref=e742]
+                - generic: 璇烽�夋嫨妫�娴嬩汉鍛�
+            - generic [ref=e743]:
+              - button "閲� 缃�" [ref=e985] [cursor=pointer]
+              - button "鎼� 绱�" [ref=e987] [cursor=pointer]
+              - generic [ref=e744] [cursor=pointer]: 鏀惰捣
+          - generic [ref=e751]:
+            - generic [ref=e753]:
+              - generic [ref=e754]: 鏉ユ枡妫�楠屽崟鍒楄〃
+              - generic [ref=e758]:
+                - generic [ref=e760]:
+                  - button "鏂板鏉ユ枡妫�楠屽崟" [ref=e762] [cursor=pointer]
+                  - button "瀵煎嚭" [ref=e766] [cursor=pointer]
+                - button "顫�" [ref=e769] [cursor=pointer]
+              - generic [ref=e771]:
+                - button "瞟�" [ref=e772] [cursor=pointer]
+                - button "顪�" [ref=e774] [cursor=pointer]
+                - button "顦�" [ref=e776] [cursor=pointer]
+            - generic [ref=e783]:
+              - generic [ref=e784]:
+                - table [ref=e788]:
+                  - rowgroup [ref=e805]:
+                    - row [ref=e806]:
+                      - columnheader "鏉ユ枡妫�楠屽崟缂栧彿" [ref=e807]
+                      - columnheader "鏉ユ枡妫�楠屽崟鍚嶇О" [ref=e812]
+                      - columnheader "渚涘簲鍟嗙畝绉�" [ref=e817]
+                      - columnheader "渚涘簲鍟嗘壒娆″彿" [ref=e822]
+                      - columnheader "浜у搧鐗╂枡缂栫爜" [ref=e827]
+                      - columnheader "浜у搧鐗╂枡鍚嶇О" [ref=e832]
+                      - columnheader "鎺ユ敹鏁伴噺" [ref=e837]
+                      - columnheader "妫�娴嬫暟閲�" [ref=e842]
+                      - columnheader "涓嶅悎鏍兼暟" [ref=e847]
+                      - columnheader "妫�娴嬬粨鏋�" [ref=e852]
+                      - columnheader "鏉ユ枡鏃ユ湡" [ref=e857]
+                      - columnheader "妫�娴嬫棩鏈�" [ref=e862]
+                      - columnheader "妫�娴嬩汉鍛�" [ref=e867]
+                      - columnheader "鍗曟嵁鐘舵��" [ref=e872]
+                - table [ref=e993]:
+                  - rowgroup [ref=e1010]:
+                    - row "IQC-DEMO-03 澹儻鏉ユ枡妫�楠�-03 JN-20260918-A03 4 澹儻 800 80 4 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1011]:
+                      - cell [ref=e1012]:
+                        - button "IQC-DEMO-03" [ref=e1015] [cursor=pointer]
+                      - cell "澹儻鏉ユ枡妫�楠�-03" [ref=e1017]
+                      - cell [ref=e1021]
+                      - cell "JN-20260918-A03" [ref=e1025]
+                      - cell "4" [ref=e1029]
+                      - cell "澹儻" [ref=e1033]
+                      - cell "800" [ref=e1037]
+                      - cell "80" [ref=e1041]
+                      - cell "4" [ref=e1045]
+                      - cell [ref=e1049]
+                      - cell "2026-09-17" [ref=e1051]
+                      - cell "2026-09-18" [ref=e1055]
+                      - cell "寮犱笁" [ref=e1059]
+                      - cell "宸插畬鎴�" [ref=e1063]
+                    - row "IQC-DEMO-02 绮捐悩鏉ユ枡妫�楠�-02 JN-20260918-A02 2 绮捐悩 1500 150 0 鏍¢獙閫氳繃 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1067]:
+                      - cell [ref=e1068]:
+                        - button "IQC-DEMO-02" [ref=e1071] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-02" [ref=e1073]
+                      - cell [ref=e1077]
+                      - cell "JN-20260918-A02" [ref=e1081]
+                      - cell "2" [ref=e1085]
+                      - cell "绮捐悩" [ref=e1089]
+                      - cell "1500" [ref=e1093]
+                      - cell "150" [ref=e1097]
+                      - cell "0" [ref=e1101]
+                      - cell "鏍¢獙閫氳繃" [ref=e1105]
+                      - cell "2026-09-17" [ref=e1109]
+                      - cell "2026-09-18" [ref=e1113]
+                      - cell "寮犱笁" [ref=e1117]
+                      - cell "宸插畬鎴�" [ref=e1121]
+                    - row "IQC-DEMO-01 绮捐悩鏉ユ枡妫�楠�-01 JN-20260918-A01 2 绮捐悩 2000 200 2 鏍¢獙閫氳繃 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1125]:
+                      - cell [ref=e1126]:
+                        - button "IQC-DEMO-01" [ref=e1129] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-01" [ref=e1131]
+                      - cell [ref=e1135]
+                      - cell "JN-20260918-A01" [ref=e1139]
+                      - cell "2" [ref=e1143]
+                      - cell "绮捐悩" [ref=e1147]
+                      - cell "2000" [ref=e1151]
+                      - cell "200" [ref=e1155]
+                      - cell "2" [ref=e1159]
+                      - cell "鏍¢獙閫氳繃" [ref=e1163]
+                      - cell "2026-09-17" [ref=e1167]
+                      - cell "2026-09-18" [ref=e1171]
+                      - cell "寮犱笁" [ref=e1175]
+                      - cell "宸插畬鎴�" [ref=e1179]
+                    - row "IQC_20260917001 绮捐悩鏉ユ枡妫�楠�-0917 2 绮捐悩 100 100 0 2026-09-17 2026-09-17 瓒呯骇绠$悊鍛� 鑽夌" [ref=e1183]:
+                      - cell [ref=e1184]:
+                        - button "IQC_20260917001" [ref=e1187] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-0917" [ref=e1189]
+                      - cell [ref=e1193]
+                      - cell [ref=e1197]
+                      - cell "2" [ref=e1201]
+                      - cell "绮捐悩" [ref=e1205]
+                      - cell "100" [ref=e1209]
+                      - cell "100" [ref=e1213]
+                      - cell "0" [ref=e1217]
+                      - cell [ref=e1221]
+                      - cell "2026-09-17" [ref=e1223]
+                      - cell "2026-09-17" [ref=e1227]
+                      - cell "瓒呯骇绠$悊鍛�" [ref=e1231]
+                      - cell "鑽夌" [ref=e1235]
+              - generic [ref=e880]:
+                - table [ref=e883]:
+                  - rowgroup [ref=e900]:
+                    - row [ref=e901]:
+                      - columnheader "鎿嶄綔" [ref=e902]
+                - table [ref=e1239]:
+                  - rowgroup [ref=e1242]:
+                    - row [ref=e1243]:
+                      - cell [ref=e1244]:
+                        - generic [ref=e1248]:
+                          - button "璇︽儏" [ref=e1250] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1257] [cursor=pointer]
+                    - row [ref=e1263]:
+                      - cell [ref=e1264]:
+                        - generic [ref=e1268]:
+                          - button "璇︽儏" [ref=e1270] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1277] [cursor=pointer]
+                    - row [ref=e1283]:
+                      - cell [ref=e1284]:
+                        - generic [ref=e1288]:
+                          - button "璇︽儏" [ref=e1290] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1297] [cursor=pointer]
+                    - row [ref=e1303]:
+                      - cell [ref=e1304]:
+                        - generic [ref=e1308]:
+                          - button "淇敼" [ref=e1310] [cursor=pointer]
+                          - button "鍒犻櫎" [ref=e1317] [cursor=pointer]
+                          - button "璇︽儏" [ref=e1322] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1329] [cursor=pointer]
+            - generic [ref=e921]:
+              - generic [ref=e922]: 鍏� 4 鏉¤褰�
+              - generic [ref=e924] [cursor=pointer]:
+                - generic "20鏉�/椤�" [ref=e925]:
+                  - textbox "璇烽�夋嫨" [ref=e926]: 20鏉�/椤�
+                - generic [ref=e927]: 睿�
+              - button "飱�" [ref=e930]
+              - button "顧�" [ref=e932]
+              - button "顫�" [ref=e934]
+              - button "1" [ref=e937] [cursor=pointer]
+              - button "顫�" [ref=e938]
+              - button "顧�" [ref=e940]
+              - button "顦�" [ref=e942]
+  - dialog [ref=e1336]:
+    - heading "鏌ョ湅鏉ユ枡妫�楠屽崟" [level=2] [ref=e1338]
+    - generic [ref=e1340]:
+      - generic [ref=e1342]:
+        - generic [ref=e1343]:
+          - generic [ref=e1344]:
+            - generic [ref=e1345]: "*"
+            - text: 妫�楠屽崟缂栧彿
+          - generic [ref=e1349]:
+            - textbox "* 妫�楠屽崟缂栧彿" [disabled] [ref=e1350]:
+              - /placeholder: 璇疯緭鍏ユ楠屽崟缂栧彿
+              - text: IQC-DEMO-01
+            - button "鐢� 鎴�" [disabled] [ref=e1352]
+        - generic [ref=e1354]:
+          - generic [ref=e1355]:
+            - generic [ref=e1356]: "*"
+            - text: 妫�楠屽崟鍚嶇О
+          - textbox "* 妫�楠屽崟鍚嶇О" [disabled] [ref=e1361]:
+            - /placeholder: 璇疯緭鍏ユ楠屽崟鍚嶇О
+            - text: 绮捐悩鏉ユ枡妫�楠�-01
+        - generic [ref=e1362]:
+          - generic [ref=e1363]:
+            - generic [ref=e1364]: "*"
+            - text: 浜у搧鐗╂枡
+          - textbox "璇烽�夋嫨浜у搧鐗╂枡" [disabled] [ref=e1371]: 绮捐悩
+        - generic [ref=e1377]:
+          - generic [ref=e1378]: 渚涘簲鍟�
+          - generic [ref=e1384]:
+            - combobox "渚涘簲鍟�" [disabled] [ref=e1386]
+            - generic: 璇烽�夋嫨渚涘簲鍟�
+        - generic [ref=e1387]:
+          - generic [ref=e1388]: 渚涘簲鍟嗘壒娆″彿
+          - textbox "渚涘簲鍟嗘壒娆″彿" [disabled] [ref=e1393]:
+            - /placeholder: 璇疯緭鍏ヤ緵搴斿晢鎵规鍙�
+            - text: JN-20260918-A01
+        - generic [ref=e1394]:
+          - generic [ref=e1395]:
+            - generic [ref=e1396]: "*"
+            - text: 鏈鎺ユ敹鏁伴噺
+          - spinbutton "* 鏈鎺ユ敹鏁伴噺" [disabled] [ref=e1403]: "2000.00"
+        - generic [ref=e1404]:
+          - generic [ref=e1405]:
+            - generic [ref=e1406]: "*"
+            - text: 鍚堟牸鍝佹暟閲�
+          - spinbutton "* 鍚堟牸鍝佹暟閲�" [disabled] [ref=e1413]: "198"
+        - generic [ref=e1414]:
+          - generic [ref=e1415]:
+            - generic [ref=e1416]: "*"
+            - text: 涓嶅悎鏍煎搧鏁伴噺
+            - img [ref=e1417] [cursor=pointer]
+          - spinbutton "* 涓嶅悎鏍煎搧鏁伴噺" [disabled] [ref=e1426]: "2"
+        - generic [ref=e1427]:
+          - generic [ref=e1428]:
+            - generic [ref=e1429]: "*"
+            - text: 鏉ユ枡鏃ユ湡
+          - generic [ref=e1435]:
+            - textbox "* 鏉ユ枡鏃ユ湡" [disabled] [ref=e1436]:
+              - /placeholder: 璇烽�夋嫨鏉ユ枡鏃ユ湡
+              - text: 2026-09-17
+            - generic:
+              - img "calendar"
+        - generic [ref=e1437]:
+          - generic [ref=e1438]:
+            - generic [ref=e1439]: "*"
+            - text: 妫�娴嬩汉鍛�
+          - generic [ref=e1445]:
+            - combobox "* 妫�娴嬩汉鍛�" [disabled] [ref=e1447]
+            - generic "寮犱笁" [ref=e1448]
+        - generic [ref=e1449]:
+          - generic [ref=e1450]:
+            - generic [ref=e1451]: "*"
+            - text: 妫�娴嬫棩鏈�
+          - generic [ref=e1457]:
+            - textbox "* 妫�娴嬫棩鏈�" [disabled] [ref=e1458]:
+              - /placeholder: 璇烽�夋嫨妫�娴嬫棩鏈�
+              - text: 2026-09-18
+            - generic:
+              - img "calendar"
+        - generic [ref=e1459]:
+          - generic [ref=e1460]: 妫�娴嬬粨鏋�
+          - generic [ref=e1466]:
+            - combobox "妫�娴嬬粨鏋�" [disabled] [ref=e1468]
+            - generic "鏍¢獙閫氳繃" [ref=e1469]
+        - generic [ref=e1470]:
+          - generic [ref=e1471]: 澶囨敞
+          - textbox "澶囨敞" [disabled] [ref=e1476]:
+            - /placeholder: 璇疯緭鍏ュ娉�
+            - text: 婕旂ず鏁版嵁
+      - generic [ref=e1478]:
+        - generic [ref=e1479]: 缂洪櫡鎯呭喌
+        - table [ref=e1482]:
+          - rowgroup [ref=e1483]:
+            - row [ref=e1484]:
+              - rowheader "鑷村懡缂洪櫡鏁�" [ref=e1485]
+              - cell "0" [ref=e1486]
+              - rowheader "涓ラ噸缂洪櫡鏁�" [ref=e1488]
+              - cell "0" [ref=e1489]
+              - rowheader "杞诲井缂洪櫡鏁�" [ref=e1491]
+              - cell "0" [ref=e1492]
+            - row [ref=e1494]:
+              - rowheader "鑷村懡缂洪櫡鐜�" [ref=e1495]
+              - cell "0%" [ref=e1496]
+              - rowheader "涓ラ噸缂洪櫡鐜�" [ref=e1498]
+              - cell "0%" [ref=e1499]
+              - rowheader "杞诲井缂洪櫡鐜�" [ref=e1501]
+              - cell "0%" [ref=e1502]
+      - generic [ref=e1504]:
+        - tablist [ref=e1505]:
+          - generic [ref=e1507]:
+            - tab "妫�楠岄」" [ref=e1509] [cursor=pointer]
+            - tab "妫�娴嬬粨鏋�" [active] [selected] [ref=e1511] [cursor=pointer]
+        - generic [ref=e1513]:
+          - text: 瞟� 顪� 顦� 睿� 飱� 顧� 顫� 顫� 顧� 顦�
+          - tabpanel "妫�娴嬬粨鏋�" [ref=e2716]:
+            - generic [ref=e2721]:
+              - generic [ref=e2723]:
+                - generic [ref=e2724]: 妫�娴嬬粨鏋�
+                - generic [ref=e2727]:
+                  - button "瞟�" [ref=e2728] [cursor=pointer]
+                  - button "顪�" [ref=e2730] [cursor=pointer]
+                  - button "顦�" [ref=e2732] [cursor=pointer]
+              - generic [ref=e2740]:
+                - table [ref=e2744]:
+                  - rowgroup [ref=e2750]:
+                    - row [ref=e2751]:
+                      - columnheader "鏍峰搧缂栧彿" [ref=e2752]
+                      - columnheader "鐗╄祫SN" [ref=e2757]
+                      - columnheader "澶囨敞" [ref=e2762]
+                      - columnheader "鎿嶄綔" [ref=e2767]
+                - table [ref=e2775]:
+                  - rowgroup [ref=e2781]:
+                    - row "MIR-DEMO-01 YP-A001 璇︽儏" [ref=e2782]:
+                      - cell "MIR-DEMO-01" [ref=e2783]
+                      - cell "YP-A001" [ref=e2787]
+                      - cell [ref=e2791]
+                      - cell [ref=e2795]:
+                        - button "璇︽儏" [ref=e2801] [cursor=pointer]
+              - generic [ref=e2809]:
+                - generic [ref=e2810]: 鍏� 1 鏉¤褰�
+                - generic [ref=e2812] [cursor=pointer]:
+                  - generic "20鏉�/椤�" [ref=e2813]:
+                    - textbox "璇烽�夋嫨" [ref=e2814]: 20鏉�/椤�
+                  - generic [ref=e2815]: 睿�
+                - button "飱�" [ref=e2818]
+                - button "顧�" [ref=e2820]
+                - button "顫�" [ref=e2822]
+                - button "1" [ref=e2825] [cursor=pointer]
+                - button "顫�" [ref=e2826]
+                - button "顧�" [ref=e2828]
+                - button "顦�" [ref=e2830]
+    - button [ref=e2696] [cursor=pointer]
+    - generic [ref=e2706]:
+      - button "璐ㄦ鍔╂墜" [ref=e2708] [cursor=pointer]
+      - button "鍙� 娑�" [ref=e2710] [cursor=pointer]
+    - button [ref=e2712] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-09-18T06-19-31-080Z.yml b/.playwright-mcp/page-2026-09-18T06-19-31-080Z.yml
new file mode 100644
index 0000000..a537c8d
--- /dev/null
+++ b/.playwright-mcp/page-2026-09-18T06-19-31-080Z.yml
@@ -0,0 +1,701 @@
+- 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]: 浜у搧璁捐
+          - listitem [ref=e85]:
+            - generic [ref=e86] [cursor=pointer]: 鐢熶骇绠℃帶
+          - listitem [ref=e93]:
+            - generic [ref=e94] [cursor=pointer]: 璐ㄩ噺绠$悊
+            - list [ref=e593]:
+              - menuitem "妫�娴嬮」璁剧疆" [ref=e594] [cursor=pointer]
+              - menuitem "璐ㄦ鏂规" [ref=e599] [cursor=pointer]
+              - menuitem "寰呮浠诲姟" [ref=e604] [cursor=pointer]
+              - menuitem "鏉ユ枡妫�楠�" [ref=e611] [cursor=pointer]
+              - menuitem "杩囩▼妫�楠�" [ref=e616] [cursor=pointer]
+              - menuitem "閫�鏂欐楠�" [ref=e621] [cursor=pointer]
+              - menuitem "鍑鸿揣妫�楠�" [ref=e626] [cursor=pointer]
+              - menuitem "鎵规杩芥函" [ref=e631] [cursor=pointer]
+              - menuitem "涓嶅悎鏍煎搧澶勭悊" [ref=e637] [cursor=pointer]
+              - menuitem "甯歌缂洪櫡" [ref=e642] [cursor=pointer]
+          - listitem [ref=e100]:
+            - generic [ref=e101] [cursor=pointer]: 鎶ヨ〃绠$悊
+          - listitem [ref=e108]:
+            - generic [ref=e109] [cursor=pointer]: 鍐崇瓥BI澶у睆
+          - listitem [ref=e115]:
+            - generic [ref=e116] [cursor=pointer]: 鍗忓悓鍔炲叕
+          - listitem [ref=e122]:
+            - generic [ref=e123] [cursor=pointer]: 浜哄姏璧勬簮
+          - listitem [ref=e129]:
+            - generic [ref=e130] [cursor=pointer]: 鍞悗绠$悊
+          - listitem [ref=e136]:
+            - generic [ref=e137] [cursor=pointer]: 鍩虹璁炬柦
+          - listitem [ref=e143]:
+            - generic [ref=e144] [cursor=pointer]: 绯荤粺绠$悊
+        - generic [ref=e151] [cursor=pointer]
+    - generic [ref=e156]:
+      - generic [ref=e157]:
+        - banner [ref=e158]:
+          - button [ref=e159] [cursor=pointer]
+          - button [ref=e162] [cursor=pointer]
+          - navigation "breadcrumb" [ref=e167]:
+            - list [ref=e168]:
+              - listitem [ref=e649]:
+                - link "璐ㄩ噺绠$悊" [ref=e650] [cursor=pointer]:
+                  - /url: javascript:void 0
+                - listitem [ref=e654]
+              - listitem [ref=e657]:
+                - link "鏉ユ枡妫�楠�" [disabled] [ref=e658]
+          - generic [ref=e177]:
+            - generic [ref=e179] [cursor=pointer]:
+              - generic [ref=e183]: 鎼滅储
+              - generic [ref=e184]: Ctrl K
+            - button [ref=e186] [cursor=pointer]
+            - button "dark" [ref=e191] [cursor=pointer]
+            - button [ref=e200] [cursor=pointer]
+            - button [ref=e206] [cursor=pointer]
+            - button [ref=e209] [cursor=pointer]
+            - button [ref=e215] [cursor=pointer]:
+              - button [ref=e217]
+            - button "宸ヤ綔鍙�" [ref=e221] [cursor=pointer]
+            - button [ref=e225] [cursor=pointer]:
+              - img "瓒呯骇绠$悊鍛�" [ref=e230]
+        - generic [ref=e232]:
+          - generic [ref=e237]:
+            - generic [ref=e238] [cursor=pointer]: 棣栭〉
+            - generic [ref=e664] [cursor=pointer]: 鏉ユ枡妫�楠�
+          - generic [ref=e254]:
+            - button [ref=e255] [cursor=pointer]
+            - generic [ref=e262] [cursor=pointer]
+            - generic [ref=e266] [cursor=pointer]
+      - main [ref=e273]:
+        - generic [ref=e684]:
+          - generic [ref=e689]:
+            - generic [ref=e690]:
+              - generic [ref=e691]: 妫�楠屽崟缂栧彿
+              - textbox "妫�楠屽崟缂栧彿" [ref=e948]:
+                - /placeholder: 璇疯緭鍏ユ楠屽崟缂栧彿
+            - generic [ref=e693]:
+              - generic [ref=e694]: 渚涘簲鍟�
+              - generic [ref=e700] [cursor=pointer]:
+                - combobox "渚涘簲鍟�" [ref=e702]
+                - generic: 璇烽�夋嫨渚涘簲鍟�
+            - generic [ref=e703]:
+              - generic [ref=e704]: 渚涘簲鍟嗘壒娆�
+              - textbox "渚涘簲鍟嗘壒娆�" [ref=e954]:
+                - /placeholder: 璇疯緭鍏ヤ緵搴斿晢鎵规鍙�
+            - generic [ref=e706]:
+              - generic [ref=e707]: 浜у搧鐗╂枡
+              - textbox "璇烽�夋嫨浜у搧鐗╂枡" [ref=e714]
+            - generic [ref=e717]:
+              - generic [ref=e718]: 妫�娴嬬粨鏋�
+              - generic [ref=e724] [cursor=pointer]:
+                - combobox "妫�娴嬬粨鏋�" [ref=e726]
+                - generic: 璇烽�夋嫨妫�娴嬬粨鏋�
+            - generic [ref=e727]:
+              - generic [ref=e728]: 鏉ユ枡鏃ユ湡
+              - generic [ref=e962]:
+                - textbox "鏉ユ枡鏃ユ湡" [ref=e964]:
+                  - /placeholder: 寮�濮嬫椂闂�
+                - generic "to" [ref=e966]:
+                  - img "swap-right" [ref=e967]
+                - textbox "缁撴潫鏃堕棿" [ref=e971]
+                - generic:
+                  - img "calendar"
+            - generic [ref=e730]:
+              - generic [ref=e731]: 妫�娴嬫棩鏈�
+              - generic [ref=e975]:
+                - textbox "妫�娴嬫棩鏈�" [ref=e977]:
+                  - /placeholder: 寮�濮嬫椂闂�
+                - generic "to" [ref=e979]:
+                  - img "swap-right" [ref=e980]
+                - textbox "缁撴潫鏃堕棿" [ref=e984]
+                - generic:
+                  - img "calendar"
+            - generic [ref=e733]:
+              - generic [ref=e734]: 妫�娴嬩汉鍛�
+              - generic [ref=e740] [cursor=pointer]:
+                - combobox "妫�娴嬩汉鍛�" [ref=e742]
+                - generic: 璇烽�夋嫨妫�娴嬩汉鍛�
+            - generic [ref=e743]:
+              - button "閲� 缃�" [ref=e985] [cursor=pointer]
+              - button "鎼� 绱�" [ref=e987] [cursor=pointer]
+              - generic [ref=e744] [cursor=pointer]: 鏀惰捣
+          - generic [ref=e751]:
+            - generic [ref=e753]:
+              - generic [ref=e754]: 鏉ユ枡妫�楠屽崟鍒楄〃
+              - generic [ref=e758]:
+                - generic [ref=e760]:
+                  - button "鏂板鏉ユ枡妫�楠屽崟" [ref=e762] [cursor=pointer]
+                  - button "瀵煎嚭" [ref=e766] [cursor=pointer]
+                - button "顫�" [ref=e769] [cursor=pointer]
+              - generic [ref=e771]:
+                - button "瞟�" [ref=e772] [cursor=pointer]
+                - button "顪�" [ref=e774] [cursor=pointer]
+                - button "顦�" [ref=e776] [cursor=pointer]
+            - generic [ref=e783]:
+              - generic [ref=e784]:
+                - table [ref=e788]:
+                  - rowgroup [ref=e805]:
+                    - row [ref=e806]:
+                      - columnheader "鏉ユ枡妫�楠屽崟缂栧彿" [ref=e807]
+                      - columnheader "鏉ユ枡妫�楠屽崟鍚嶇О" [ref=e812]
+                      - columnheader "渚涘簲鍟嗙畝绉�" [ref=e817]
+                      - columnheader "渚涘簲鍟嗘壒娆″彿" [ref=e822]
+                      - columnheader "浜у搧鐗╂枡缂栫爜" [ref=e827]
+                      - columnheader "浜у搧鐗╂枡鍚嶇О" [ref=e832]
+                      - columnheader "鎺ユ敹鏁伴噺" [ref=e837]
+                      - columnheader "妫�娴嬫暟閲�" [ref=e842]
+                      - columnheader "涓嶅悎鏍兼暟" [ref=e847]
+                      - columnheader "妫�娴嬬粨鏋�" [ref=e852]
+                      - columnheader "鏉ユ枡鏃ユ湡" [ref=e857]
+                      - columnheader "妫�娴嬫棩鏈�" [ref=e862]
+                      - columnheader "妫�娴嬩汉鍛�" [ref=e867]
+                      - columnheader "鍗曟嵁鐘舵��" [ref=e872]
+                - table [ref=e993]:
+                  - rowgroup [ref=e1010]:
+                    - row "IQC-DEMO-03 澹儻鏉ユ枡妫�楠�-03 JN-20260918-A03 4 澹儻 800 80 4 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1011]:
+                      - cell [ref=e1012]:
+                        - button "IQC-DEMO-03" [ref=e1015] [cursor=pointer]
+                      - cell "澹儻鏉ユ枡妫�楠�-03" [ref=e1017]
+                      - cell [ref=e1021]
+                      - cell "JN-20260918-A03" [ref=e1025]
+                      - cell "4" [ref=e1029]
+                      - cell "澹儻" [ref=e1033]
+                      - cell "800" [ref=e1037]
+                      - cell "80" [ref=e1041]
+                      - cell "4" [ref=e1045]
+                      - cell [ref=e1049]
+                      - cell "2026-09-17" [ref=e1051]
+                      - cell "2026-09-18" [ref=e1055]
+                      - cell "寮犱笁" [ref=e1059]
+                      - cell "宸插畬鎴�" [ref=e1063]
+                    - row "IQC-DEMO-02 绮捐悩鏉ユ枡妫�楠�-02 JN-20260918-A02 2 绮捐悩 1500 150 0 鏍¢獙閫氳繃 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1067]:
+                      - cell [ref=e1068]:
+                        - button "IQC-DEMO-02" [ref=e1071] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-02" [ref=e1073]
+                      - cell [ref=e1077]
+                      - cell "JN-20260918-A02" [ref=e1081]
+                      - cell "2" [ref=e1085]
+                      - cell "绮捐悩" [ref=e1089]
+                      - cell "1500" [ref=e1093]
+                      - cell "150" [ref=e1097]
+                      - cell "0" [ref=e1101]
+                      - cell "鏍¢獙閫氳繃" [ref=e1105]
+                      - cell "2026-09-17" [ref=e1109]
+                      - cell "2026-09-18" [ref=e1113]
+                      - cell "寮犱笁" [ref=e1117]
+                      - cell "宸插畬鎴�" [ref=e1121]
+                    - row "IQC-DEMO-01 绮捐悩鏉ユ枡妫�楠�-01 JN-20260918-A01 2 绮捐悩 2000 200 2 鏍¢獙閫氳繃 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1125]:
+                      - cell [ref=e1126]:
+                        - button "IQC-DEMO-01" [active] [ref=e1129] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-01" [ref=e1131]
+                      - cell [ref=e1135]
+                      - cell "JN-20260918-A01" [ref=e1139]
+                      - cell "2" [ref=e1143]
+                      - cell "绮捐悩" [ref=e1147]
+                      - cell "2000" [ref=e1151]
+                      - cell "200" [ref=e1155]
+                      - cell "2" [ref=e1159]
+                      - cell "鏍¢獙閫氳繃" [ref=e1163]
+                      - cell "2026-09-17" [ref=e1167]
+                      - cell "2026-09-18" [ref=e1171]
+                      - cell "寮犱笁" [ref=e1175]
+                      - cell "宸插畬鎴�" [ref=e1179]
+                    - row "IQC_20260917001 绮捐悩鏉ユ枡妫�楠�-0917 2 绮捐悩 100 100 0 2026-09-17 2026-09-17 瓒呯骇绠$悊鍛� 鑽夌" [ref=e1183]:
+                      - cell [ref=e1184]:
+                        - button "IQC_20260917001" [ref=e1187] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-0917" [ref=e1189]
+                      - cell [ref=e1193]
+                      - cell [ref=e1197]
+                      - cell "2" [ref=e1201]
+                      - cell "绮捐悩" [ref=e1205]
+                      - cell "100" [ref=e1209]
+                      - cell "100" [ref=e1213]
+                      - cell "0" [ref=e1217]
+                      - cell [ref=e1221]
+                      - cell "2026-09-17" [ref=e1223]
+                      - cell "2026-09-17" [ref=e1227]
+                      - cell "瓒呯骇绠$悊鍛�" [ref=e1231]
+                      - cell "鑽夌" [ref=e1235]
+              - generic [ref=e880]:
+                - table [ref=e883]:
+                  - rowgroup [ref=e900]:
+                    - row [ref=e901]:
+                      - columnheader "鎿嶄綔" [ref=e902]
+                - table [ref=e1239]:
+                  - rowgroup [ref=e1242]:
+                    - row [ref=e1243]:
+                      - cell [ref=e1244]:
+                        - generic [ref=e1248]:
+                          - button "璇︽儏" [ref=e1250] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1257] [cursor=pointer]
+                    - row [ref=e1263]:
+                      - cell [ref=e1264]:
+                        - generic [ref=e1268]:
+                          - button "璇︽儏" [ref=e1270] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1277] [cursor=pointer]
+                    - row [ref=e1283]:
+                      - cell [ref=e1284]:
+                        - generic [ref=e1288]:
+                          - button "璇︽儏" [ref=e1290] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1297] [cursor=pointer]
+                    - row [ref=e1303]:
+                      - cell [ref=e1304]:
+                        - generic [ref=e1308]:
+                          - button "淇敼" [ref=e1310] [cursor=pointer]
+                          - button "鍒犻櫎" [ref=e1317] [cursor=pointer]
+                          - button "璇︽儏" [ref=e1322] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1329] [cursor=pointer]
+            - generic [ref=e921]:
+              - generic [ref=e922]: 鍏� 4 鏉¤褰�
+              - generic [ref=e924] [cursor=pointer]:
+                - generic "20鏉�/椤�" [ref=e925]:
+                  - textbox "璇烽�夋嫨" [ref=e926]: 20鏉�/椤�
+                - generic [ref=e927]: 睿�
+              - button "飱�" [ref=e930]
+              - button "顧�" [ref=e932]
+              - button "顫�" [ref=e934]
+              - button "1" [ref=e937] [cursor=pointer]
+              - button "顫�" [ref=e938]
+              - button "顧�" [ref=e940]
+              - button "顦�" [ref=e942]
+  - dialog [ref=e2833]:
+    - heading "鏌ョ湅鏉ユ枡妫�楠屽崟" [level=2] [ref=e2835]
+    - generic [ref=e2837]:
+      - generic [ref=e2839]:
+        - generic [ref=e2840]:
+          - generic [ref=e2841]:
+            - generic [ref=e2842]: "*"
+            - text: 妫�楠屽崟缂栧彿
+          - generic [ref=e2846]:
+            - textbox "* 妫�楠屽崟缂栧彿" [disabled] [ref=e2847]:
+              - /placeholder: 璇疯緭鍏ユ楠屽崟缂栧彿
+              - text: IQC-DEMO-01
+            - button "鐢� 鎴�" [disabled] [ref=e2849]
+        - generic [ref=e2851]:
+          - generic [ref=e2852]:
+            - generic [ref=e2853]: "*"
+            - text: 妫�楠屽崟鍚嶇О
+          - textbox "* 妫�楠屽崟鍚嶇О" [disabled] [ref=e2858]:
+            - /placeholder: 璇疯緭鍏ユ楠屽崟鍚嶇О
+            - text: 绮捐悩鏉ユ枡妫�楠�-01
+        - generic [ref=e2859]:
+          - generic [ref=e2860]:
+            - generic [ref=e2861]: "*"
+            - text: 浜у搧鐗╂枡
+          - textbox "璇烽�夋嫨浜у搧鐗╂枡" [disabled] [ref=e2868]: 绮捐悩
+        - generic [ref=e2874]:
+          - generic [ref=e2875]: 渚涘簲鍟�
+          - generic [ref=e2881]:
+            - combobox "渚涘簲鍟�" [disabled] [ref=e2883]
+            - generic: 璇烽�夋嫨渚涘簲鍟�
+        - generic [ref=e2884]:
+          - generic [ref=e2885]: 渚涘簲鍟嗘壒娆″彿
+          - textbox "渚涘簲鍟嗘壒娆″彿" [disabled] [ref=e2890]:
+            - /placeholder: 璇疯緭鍏ヤ緵搴斿晢鎵规鍙�
+            - text: JN-20260918-A01
+        - generic [ref=e2891]:
+          - generic [ref=e2892]:
+            - generic [ref=e2893]: "*"
+            - text: 鏈鎺ユ敹鏁伴噺
+          - spinbutton "* 鏈鎺ユ敹鏁伴噺" [disabled] [ref=e2900]: "2000.00"
+        - generic [ref=e2901]:
+          - generic [ref=e2902]:
+            - generic [ref=e2903]: "*"
+            - text: 鍚堟牸鍝佹暟閲�
+          - spinbutton "* 鍚堟牸鍝佹暟閲�" [disabled] [ref=e2910]: "198"
+        - generic [ref=e2911]:
+          - generic [ref=e2912]:
+            - generic [ref=e2913]: "*"
+            - text: 涓嶅悎鏍煎搧鏁伴噺
+            - img [ref=e2914] [cursor=pointer]
+          - spinbutton "* 涓嶅悎鏍煎搧鏁伴噺" [disabled] [ref=e2923]: "2"
+        - generic [ref=e2924]:
+          - generic [ref=e2925]:
+            - generic [ref=e2926]: "*"
+            - text: 鏉ユ枡鏃ユ湡
+          - generic [ref=e2932]:
+            - textbox "* 鏉ユ枡鏃ユ湡" [disabled] [ref=e2933]:
+              - /placeholder: 璇烽�夋嫨鏉ユ枡鏃ユ湡
+              - text: 2026-09-17
+            - generic:
+              - img "calendar"
+        - generic [ref=e2934]:
+          - generic [ref=e2935]:
+            - generic [ref=e2936]: "*"
+            - text: 妫�娴嬩汉鍛�
+          - generic [ref=e2942]:
+            - combobox "* 妫�娴嬩汉鍛�" [disabled] [ref=e2944]
+            - generic "寮犱笁" [ref=e2945]
+        - generic [ref=e2946]:
+          - generic [ref=e2947]:
+            - generic [ref=e2948]: "*"
+            - text: 妫�娴嬫棩鏈�
+          - generic [ref=e2954]:
+            - textbox "* 妫�娴嬫棩鏈�" [disabled] [ref=e2955]:
+              - /placeholder: 璇烽�夋嫨妫�娴嬫棩鏈�
+              - text: 2026-09-18
+            - generic:
+              - img "calendar"
+        - generic [ref=e2956]:
+          - generic [ref=e2957]: 妫�娴嬬粨鏋�
+          - generic [ref=e2963]:
+            - combobox "妫�娴嬬粨鏋�" [disabled] [ref=e2965]
+            - generic "鏍¢獙閫氳繃" [ref=e2966]
+        - generic [ref=e2967]:
+          - generic [ref=e2968]: 澶囨敞
+          - textbox "澶囨敞" [disabled] [ref=e2973]:
+            - /placeholder: 璇疯緭鍏ュ娉�
+            - text: 婕旂ず鏁版嵁
+      - generic [ref=e2975]:
+        - generic [ref=e2976]: 缂洪櫡鎯呭喌
+        - table [ref=e2979]:
+          - rowgroup [ref=e2980]:
+            - row [ref=e2981]:
+              - rowheader "鑷村懡缂洪櫡鏁�" [ref=e2982]
+              - cell "0" [ref=e2983]
+              - rowheader "涓ラ噸缂洪櫡鏁�" [ref=e2985]
+              - cell "0" [ref=e2986]
+              - rowheader "杞诲井缂洪櫡鏁�" [ref=e2988]
+              - cell "0" [ref=e2989]
+            - row [ref=e2991]:
+              - rowheader "鑷村懡缂洪櫡鐜�" [ref=e2992]
+              - cell "0%" [ref=e2993]
+              - rowheader "涓ラ噸缂洪櫡鐜�" [ref=e2995]
+              - cell "0%" [ref=e2996]
+              - rowheader "杞诲井缂洪櫡鐜�" [ref=e2998]
+              - cell "0%" [ref=e2999]
+      - generic [ref=e3001]:
+        - tablist [ref=e3002]:
+          - generic [ref=e3004]:
+            - tab "妫�楠岄」" [selected] [ref=e3006] [cursor=pointer]
+            - tab "妫�娴嬬粨鏋�" [ref=e3008] [cursor=pointer]
+        - tabpanel "妫�楠岄」" [ref=e3011]:
+          - generic [ref=e3016]:
+            - generic [ref=e3018]:
+              - generic [ref=e3019]: 妫�楠岄」
+              - generic [ref=e3022]:
+                - button "瞟�" [ref=e3023] [cursor=pointer]
+                - button "顪�" [ref=e3025] [cursor=pointer]
+                - button "顦�" [ref=e3027] [cursor=pointer]
+            - generic [ref=e3034]:
+              - generic [ref=e3035]:
+                - table [ref=e3039]:
+                  - rowgroup [ref=e3054]:
+                    - row [ref=e3055]:
+                      - columnheader "妫�娴嬮」鍚嶇О" [ref=e3056]
+                      - columnheader "妫�娴嬮」绫诲瀷" [ref=e3061]
+                      - columnheader "妫�娴嬪伐鍏�" [ref=e3066]
+                      - columnheader "妫�娴嬭姹�" [ref=e3071]
+                      - columnheader "鏍囧噯鍊�" [ref=e3076]
+                      - columnheader "鍗曚綅" [ref=e3081]
+                      - columnheader "璇樊涓婇檺" [ref=e3086]
+                      - columnheader "璇樊涓嬮檺" [ref=e3091]
+                      - columnheader "鑷村懡缂洪櫡鏁�" [ref=e3096]
+                      - columnheader "涓ラ噸缂洪櫡鏁�" [ref=e3101]
+                      - columnheader "杞诲井缂洪櫡鏁�" [ref=e3106]
+                      - columnheader "澶囨敞" [ref=e3111]
+                - table [ref=e3119]:
+                  - rowgroup [ref=e3134]:
+                    - row "澶栬 鎬ц兘 鐩祴 搴旀緞娓呴�忔槑锛屾棤鏈烘鏉傝川" [ref=e3135]:
+                      - cell "澶栬" [ref=e3136]
+                      - cell "鎬ц兘" [ref=e3140]
+                      - cell "鐩祴" [ref=e3144]
+                      - cell "搴旀緞娓呴�忔槑锛屾棤鏈烘鏉傝川" [ref=e3148]
+                      - cell [ref=e3152]
+                      - cell [ref=e3156]
+                      - cell [ref=e3160]
+                      - cell [ref=e3164]
+                      - cell [ref=e3168]
+                      - cell [ref=e3172]
+                      - cell [ref=e3176]
+                      - cell [ref=e3180]
+                    - row "鑹插害 鎬ц兘 閾傞挻姣旇壊浠� 鑹插害 Hazen 鈮� 10 10" [ref=e3184]:
+                      - cell "鑹插害" [ref=e3185]
+                      - cell "鎬ц兘" [ref=e3189]
+                      - cell "閾傞挻姣旇壊浠�" [ref=e3193]
+                      - cell "鑹插害 Hazen 鈮� 10" [ref=e3197]
+                      - cell "10" [ref=e3201]
+                      - cell [ref=e3205]
+                      - cell [ref=e3209]
+                      - cell [ref=e3213]
+                      - cell [ref=e3217]
+                      - cell [ref=e3221]
+                      - cell [ref=e3225]
+                      - cell [ref=e3229]
+                    - row "姘村垎 鎬ц兘 鍗″皵璐逛紤姘村垎浠� 姘村垎娴嬪畾鍒嗙粍" [ref=e3233]:
+                      - cell "姘村垎" [ref=e3234]
+                      - cell "鎬ц兘" [ref=e3238]
+                      - cell "鍗″皵璐逛紤姘村垎浠�" [ref=e3242]
+                      - cell "姘村垎娴嬪畾鍒嗙粍" [ref=e3246]
+                      - cell [ref=e3250]
+                      - cell [ref=e3254]
+                      - cell [ref=e3258]
+                      - cell [ref=e3262]
+                      - cell [ref=e3266]
+                      - cell [ref=e3270]
+                      - cell [ref=e3274]
+                      - cell [ref=e3278]
+                    - row "璇曟牱璐ㄩ噺 m 鎬ц兘 鍒嗘瀽澶╁钩 绉伴噺" [ref=e3282]:
+                      - cell "璇曟牱璐ㄩ噺 m" [ref=e3283]
+                      - cell "鎬ц兘" [ref=e3287]
+                      - cell "鍒嗘瀽澶╁钩" [ref=e3291]
+                      - cell "绉伴噺" [ref=e3295]
+                      - cell [ref=e3299]
+                      - cell [ref=e3303]
+                      - cell [ref=e3307]
+                      - cell [ref=e3311]
+                      - cell [ref=e3315]
+                      - cell [ref=e3319]
+                      - cell [ref=e3323]
+                      - cell [ref=e3327]
+                    - row "璇曟牱+绉伴噺鐡� m1 鎬ц兘 鍒嗘瀽澶╁钩 绉伴噺" [ref=e3331]:
+                      - cell "璇曟牱+绉伴噺鐡� m1" [ref=e3332]
+                      - cell "鎬ц兘" [ref=e3336]
+                      - cell "鍒嗘瀽澶╁钩" [ref=e3340]
+                      - cell "绉伴噺" [ref=e3344]
+                      - cell [ref=e3348]
+                      - cell [ref=e3352]
+                      - cell [ref=e3356]
+                      - cell [ref=e3360]
+                      - cell [ref=e3364]
+                      - cell [ref=e3368]
+                      - cell [ref=e3372]
+                      - cell [ref=e3376]
+                    - row "绉伴噺鐡� m0 鎬ц兘 鍒嗘瀽澶╁钩 绉伴噺" [ref=e3380]:
+                      - cell "绉伴噺鐡� m0" [ref=e3381]
+                      - cell "鎬ц兘" [ref=e3385]
+                      - cell "鍒嗘瀽澶╁钩" [ref=e3389]
+                      - cell "绉伴噺" [ref=e3393]
+                      - cell [ref=e3397]
+                      - cell [ref=e3401]
+                      - cell [ref=e3405]
+                      - cell [ref=e3409]
+                      - cell [ref=e3413]
+                      - cell [ref=e3417]
+                      - cell [ref=e3421]
+                      - cell [ref=e3425]
+                    - row "姘村垎缁撴灉 w 鎬ц兘 鎸夊叕寮忚绠�" [ref=e3429]:
+                      - cell "姘村垎缁撴灉 w" [ref=e3430]
+                      - cell "鎬ц兘" [ref=e3434]
+                      - cell [ref=e3438]
+                      - cell "鎸夊叕寮忚绠�" [ref=e3442]
+                      - cell [ref=e3446]
+                      - cell [ref=e3450]
+                      - cell [ref=e3454]
+                      - cell [ref=e3458]
+                      - cell [ref=e3462]
+                      - cell [ref=e3466]
+                      - cell [ref=e3470]
+                      - cell [ref=e3474]
+                    - row "閰稿惈閲� 鎬ц兘 鐢典綅婊村畾浠� 閰稿惈閲忔祴瀹氬垎缁�" [ref=e3478]:
+                      - cell "閰稿惈閲�" [ref=e3479]
+                      - cell "鎬ц兘" [ref=e3483]
+                      - cell "鐢典綅婊村畾浠�" [ref=e3487]
+                      - cell "閰稿惈閲忔祴瀹氬垎缁�" [ref=e3491]
+                      - cell [ref=e3495]
+                      - cell [ref=e3499]
+                      - cell [ref=e3503]
+                      - cell [ref=e3507]
+                      - cell [ref=e3511]
+                      - cell [ref=e3515]
+                      - cell [ref=e3519]
+                      - cell [ref=e3523]
+                    - row "鏍囨恫娴撳害 c 鎬ц兘 鑷姩鐢典綅婊村畾浠� 鏍囧畾" [ref=e3527]:
+                      - cell "鏍囨恫娴撳害 c" [ref=e3528]
+                      - cell "鎬ц兘" [ref=e3532]
+                      - cell "鑷姩鐢典綅婊村畾浠�" [ref=e3536]
+                      - cell "鏍囧畾" [ref=e3540]
+                      - cell [ref=e3544]
+                      - cell [ref=e3548]
+                      - cell [ref=e3552]
+                      - cell [ref=e3556]
+                      - cell [ref=e3560]
+                      - cell [ref=e3564]
+                      - cell [ref=e3568]
+                      - cell [ref=e3572]
+                    - row "娑堣�楁淮瀹氭恫浣撶Н V 鎬ц兘 鑷姩鐢典綅婊村畾浠� 婊村畾" [ref=e3576]:
+                      - cell "娑堣�楁淮瀹氭恫浣撶Н V" [ref=e3577]
+                      - cell "鎬ц兘" [ref=e3581]
+                      - cell "鑷姩鐢典綅婊村畾浠�" [ref=e3585]
+                      - cell "婊村畾" [ref=e3589]
+                      - cell [ref=e3593]
+                      - cell [ref=e3597]
+                      - cell [ref=e3601]
+                      - cell [ref=e3605]
+                      - cell [ref=e3609]
+                      - cell [ref=e3613]
+                      - cell [ref=e3617]
+                      - cell [ref=e3621]
+                    - row "璇曟牱璐ㄩ噺 m 鎬ц兘 鍒嗘瀽澶╁钩 绉伴噺" [ref=e3625]:
+                      - cell "璇曟牱璐ㄩ噺 m" [ref=e3626]
+                      - cell "鎬ц兘" [ref=e3630]
+                      - cell "鍒嗘瀽澶╁钩" [ref=e3634]
+                      - cell "绉伴噺" [ref=e3638]
+                      - cell [ref=e3642]
+                      - cell [ref=e3646]
+                      - cell [ref=e3650]
+                      - cell [ref=e3654]
+                      - cell [ref=e3658]
+                      - cell [ref=e3662]
+                      - cell [ref=e3666]
+                      - cell [ref=e3670]
+                    - row "閰稿惈閲忕粨鏋� w3 鎬ц兘 鎸夊叕寮忚绠�" [ref=e3674]:
+                      - cell "閰稿惈閲忕粨鏋� w3" [ref=e3675]
+                      - cell "鎬ц兘" [ref=e3679]
+                      - cell [ref=e3683]
+                      - cell "鎸夊叕寮忚绠�" [ref=e3687]
+                      - cell [ref=e3691]
+                      - cell [ref=e3695]
+                      - cell [ref=e3699]
+                      - cell [ref=e3703]
+                      - cell [ref=e3707]
+                      - cell [ref=e3711]
+                      - cell [ref=e3715]
+                      - cell [ref=e3719]
+                    - row "姝d竵閱囧惈閲� 鎬ц兘 姘旂浉鑹茶氨浠� 姝d竵閱囧惈閲忔祴瀹氬垎缁�" [ref=e3723]:
+                      - cell "姝d竵閱囧惈閲�" [ref=e3724]
+                      - cell "鎬ц兘" [ref=e3728]
+                      - cell "姘旂浉鑹茶氨浠�" [ref=e3732]
+                      - cell "姝d竵閱囧惈閲忔祴瀹氬垎缁�" [ref=e3736]
+                      - cell [ref=e3740]
+                      - cell [ref=e3744]
+                      - cell [ref=e3748]
+                      - cell [ref=e3752]
+                      - cell [ref=e3756]
+                      - cell [ref=e3760]
+                      - cell [ref=e3764]
+                      - cell [ref=e3768]
+                    - row "姝d竵閱囧惈閲� /% 鎬ц兘 姘旂浉鑹茶氨浠� 澶栨爣娉�" [ref=e3772]:
+                      - cell "姝d竵閱囧惈閲� /%" [ref=e3773]
+                      - cell "鎬ц兘" [ref=e3777]
+                      - cell "姘旂浉鑹茶氨浠�" [ref=e3781]
+                      - cell "澶栨爣娉�" [ref=e3785]
+                      - cell [ref=e3789]
+                      - cell [ref=e3793]
+                      - cell [ref=e3797]
+                      - cell [ref=e3801]
+                      - cell [ref=e3805]
+                      - cell [ref=e3809]
+                      - cell [ref=e3813]
+                      - cell [ref=e3817]
+                    - row "瀵嗗害 鎬ц兘 瀵嗗害璁� 瀵嗗害 (20鈩�) 809~812 810" [ref=e3821]:
+                      - cell "瀵嗗害" [ref=e3822]
+                      - cell "鎬ц兘" [ref=e3826]
+                      - cell "瀵嗗害璁�" [ref=e3830]
+                      - cell "瀵嗗害 (20鈩�) 809~812" [ref=e3834]
+                      - cell "810" [ref=e3838]
+                      - cell [ref=e3842]
+                      - cell [ref=e3846]
+                      - cell [ref=e3850]
+                      - cell [ref=e3854]
+                      - cell [ref=e3858]
+                      - cell [ref=e3862]
+                      - cell [ref=e3866]
+                    - row "鎶樺厜鐜� 鎬ц兘 闃胯礉鎶樺厜浠� 鎶樺厜鐜� n虏鈦癉 1.399" [ref=e3870]:
+                      - cell "鎶樺厜鐜�" [ref=e3871]
+                      - cell "鎬ц兘" [ref=e3875]
+                      - cell "闃胯礉鎶樺厜浠�" [ref=e3879]
+                      - cell "鎶樺厜鐜� n虏鈦癉" [ref=e3883]
+                      - cell "1.399" [ref=e3887]
+                      - cell [ref=e3891]
+                      - cell [ref=e3895]
+                      - cell [ref=e3899]
+                      - cell [ref=e3903]
+                      - cell [ref=e3907]
+                      - cell [ref=e3911]
+                      - cell [ref=e3915]
+              - generic [ref=e3919]:
+                - table [ref=e3922]:
+                  - rowgroup [ref=e3937]:
+                    - row [ref=e3938]:
+                      - columnheader "鎿嶄綔" [ref=e3939]
+                - table [ref=e3946]:
+                  - rowgroup [ref=e3949]:
+                    - row [ref=e3950]:
+                      - cell [ref=e3951]:
+                        - button "缂洪櫡鍒楄〃" [ref=e3957] [cursor=pointer]
+                    - row [ref=e3963]:
+                      - cell [ref=e3964]:
+                        - button "缂洪櫡鍒楄〃" [ref=e3970] [cursor=pointer]
+                    - row [ref=e3976]:
+                      - cell [ref=e3977]:
+                        - button "缂洪櫡鍒楄〃" [ref=e3983] [cursor=pointer]
+                    - row [ref=e3989]:
+                      - cell [ref=e3990]:
+                        - button "缂洪櫡鍒楄〃" [ref=e3996] [cursor=pointer]
+                    - row [ref=e4002]:
+                      - cell [ref=e4003]:
+                        - button "缂洪櫡鍒楄〃" [ref=e4009] [cursor=pointer]
+                    - row [ref=e4015]:
+                      - cell [ref=e4016]:
+                        - button "缂洪櫡鍒楄〃" [ref=e4022] [cursor=pointer]
+                    - row [ref=e4028]:
+                      - cell [ref=e4029]:
+                        - button "缂洪櫡鍒楄〃" [ref=e4035] [cursor=pointer]
+                    - row [ref=e4041]:
+                      - cell [ref=e4042]:
+                        - button "缂洪櫡鍒楄〃" [ref=e4048] [cursor=pointer]
+                    - row [ref=e4054]:
+                      - cell [ref=e4055]:
+                        - button "缂洪櫡鍒楄〃" [ref=e4061] [cursor=pointer]
+                    - row [ref=e4067]:
+                      - cell [ref=e4068]:
+                        - button "缂洪櫡鍒楄〃" [ref=e4074] [cursor=pointer]
+                    - row [ref=e4080]:
+                      - cell [ref=e4081]:
+                        - button "缂洪櫡鍒楄〃" [ref=e4087] [cursor=pointer]
+                    - row [ref=e4093]:
+                      - cell [ref=e4094]:
+                        - button "缂洪櫡鍒楄〃" [ref=e4100] [cursor=pointer]
+                    - row [ref=e4106]:
+                      - cell [ref=e4107]:
+                        - button "缂洪櫡鍒楄〃" [ref=e4113] [cursor=pointer]
+                    - row [ref=e4119]:
+                      - cell [ref=e4120]:
+                        - button "缂洪櫡鍒楄〃" [ref=e4126] [cursor=pointer]
+                    - row [ref=e4132]:
+                      - cell [ref=e4133]:
+                        - button "缂洪櫡鍒楄〃" [ref=e4139] [cursor=pointer]
+                    - row [ref=e4145]:
+                      - cell [ref=e4146]:
+                        - button "缂洪櫡鍒楄〃" [ref=e4152] [cursor=pointer]
+            - generic [ref=e4170]:
+              - generic [ref=e4171]: 鍏� 16 鏉¤褰�
+              - generic [ref=e4173] [cursor=pointer]:
+                - generic "20鏉�/椤�" [ref=e4174]:
+                  - textbox "璇烽�夋嫨" [ref=e4175]: 20鏉�/椤�
+                - generic [ref=e4176]: 睿�
+              - button "飱�" [ref=e4179]
+              - button "顧�" [ref=e4181]
+              - button "顫�" [ref=e4183]
+              - button "1" [ref=e4186] [cursor=pointer]
+              - button "顫�" [ref=e4187]
+              - button "顧�" [ref=e4189]
+              - button "顦�" [ref=e4191]
+    - button [ref=e4193] [cursor=pointer]
+    - generic [ref=e4203]:
+      - button "璐ㄦ鍔╂墜" [ref=e4205] [cursor=pointer]
+      - button "鍙� 娑�" [ref=e4207] [cursor=pointer]
+    - button [ref=e4209] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-09-18T06-20-02-132Z.yml b/.playwright-mcp/page-2026-09-18T06-20-02-132Z.yml
new file mode 100644
index 0000000..094c1b9
--- /dev/null
+++ b/.playwright-mcp/page-2026-09-18T06-20-02-132Z.yml
@@ -0,0 +1,437 @@
+- 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]: 浜у搧璁捐
+          - listitem [ref=e85]:
+            - generic [ref=e86] [cursor=pointer]: 鐢熶骇绠℃帶
+          - listitem [ref=e93]:
+            - generic [ref=e94] [cursor=pointer]: 璐ㄩ噺绠$悊
+            - list [ref=e593]:
+              - menuitem "妫�娴嬮」璁剧疆" [ref=e594] [cursor=pointer]
+              - menuitem "璐ㄦ鏂规" [ref=e599] [cursor=pointer]
+              - menuitem "寰呮浠诲姟" [ref=e604] [cursor=pointer]
+              - menuitem "鏉ユ枡妫�楠�" [ref=e611] [cursor=pointer]
+              - menuitem "杩囩▼妫�楠�" [ref=e616] [cursor=pointer]
+              - menuitem "閫�鏂欐楠�" [ref=e621] [cursor=pointer]
+              - menuitem "鍑鸿揣妫�楠�" [ref=e626] [cursor=pointer]
+              - menuitem "鎵规杩芥函" [ref=e631] [cursor=pointer]
+              - menuitem "涓嶅悎鏍煎搧澶勭悊" [ref=e637] [cursor=pointer]
+              - menuitem "甯歌缂洪櫡" [ref=e642] [cursor=pointer]
+          - listitem [ref=e100]:
+            - generic [ref=e101] [cursor=pointer]: 鎶ヨ〃绠$悊
+          - listitem [ref=e108]:
+            - generic [ref=e109] [cursor=pointer]: 鍐崇瓥BI澶у睆
+          - listitem [ref=e115]:
+            - generic [ref=e116] [cursor=pointer]: 鍗忓悓鍔炲叕
+          - listitem [ref=e122]:
+            - generic [ref=e123] [cursor=pointer]: 浜哄姏璧勬簮
+          - listitem [ref=e129]:
+            - generic [ref=e130] [cursor=pointer]: 鍞悗绠$悊
+          - listitem [ref=e136]:
+            - generic [ref=e137] [cursor=pointer]: 鍩虹璁炬柦
+          - listitem [ref=e143]:
+            - generic [ref=e144] [cursor=pointer]: 绯荤粺绠$悊
+        - generic [ref=e151] [cursor=pointer]
+    - generic [ref=e156]:
+      - generic [ref=e157]:
+        - banner [ref=e158]:
+          - button [ref=e159] [cursor=pointer]
+          - button [ref=e162] [cursor=pointer]
+          - navigation "breadcrumb" [ref=e167]:
+            - list [ref=e168]:
+              - listitem [ref=e649]:
+                - link "璐ㄩ噺绠$悊" [ref=e650] [cursor=pointer]:
+                  - /url: javascript:void 0
+                - listitem [ref=e654]
+              - listitem [ref=e657]:
+                - link "鏉ユ枡妫�楠�" [disabled] [ref=e658]
+          - generic [ref=e177]:
+            - generic [ref=e179] [cursor=pointer]:
+              - generic [ref=e183]: 鎼滅储
+              - generic [ref=e184]: Ctrl K
+            - button [ref=e186] [cursor=pointer]
+            - button "dark" [ref=e191] [cursor=pointer]
+            - button [ref=e200] [cursor=pointer]
+            - button [ref=e206] [cursor=pointer]
+            - button [ref=e209] [cursor=pointer]
+            - button [ref=e215] [cursor=pointer]:
+              - button [ref=e217]
+            - button "宸ヤ綔鍙�" [ref=e221] [cursor=pointer]
+            - button [ref=e225] [cursor=pointer]:
+              - img "瓒呯骇绠$悊鍛�" [ref=e230]
+        - generic [ref=e232]:
+          - generic [ref=e237]:
+            - generic [ref=e238] [cursor=pointer]: 棣栭〉
+            - generic [ref=e664] [cursor=pointer]: 鏉ユ枡妫�楠�
+          - generic [ref=e254]:
+            - button [ref=e255] [cursor=pointer]
+            - generic [ref=e262] [cursor=pointer]
+            - generic [ref=e266] [cursor=pointer]
+      - main [ref=e273]:
+        - generic [ref=e684]:
+          - generic [ref=e689]:
+            - generic [ref=e690]:
+              - generic [ref=e691]: 妫�楠屽崟缂栧彿
+              - textbox "妫�楠屽崟缂栧彿" [ref=e948]:
+                - /placeholder: 璇疯緭鍏ユ楠屽崟缂栧彿
+            - generic [ref=e693]:
+              - generic [ref=e694]: 渚涘簲鍟�
+              - generic [ref=e700] [cursor=pointer]:
+                - combobox "渚涘簲鍟�" [ref=e702]
+                - generic: 璇烽�夋嫨渚涘簲鍟�
+            - generic [ref=e703]:
+              - generic [ref=e704]: 渚涘簲鍟嗘壒娆�
+              - textbox "渚涘簲鍟嗘壒娆�" [ref=e954]:
+                - /placeholder: 璇疯緭鍏ヤ緵搴斿晢鎵规鍙�
+            - generic [ref=e706]:
+              - generic [ref=e707]: 浜у搧鐗╂枡
+              - textbox "璇烽�夋嫨浜у搧鐗╂枡" [ref=e714]
+            - generic [ref=e717]:
+              - generic [ref=e718]: 妫�娴嬬粨鏋�
+              - generic [ref=e724] [cursor=pointer]:
+                - combobox "妫�娴嬬粨鏋�" [ref=e726]
+                - generic: 璇烽�夋嫨妫�娴嬬粨鏋�
+            - generic [ref=e727]:
+              - generic [ref=e728]: 鏉ユ枡鏃ユ湡
+              - generic [ref=e962]:
+                - textbox "鏉ユ枡鏃ユ湡" [ref=e964]:
+                  - /placeholder: 寮�濮嬫椂闂�
+                - generic "to" [ref=e966]:
+                  - img "swap-right" [ref=e967]
+                - textbox "缁撴潫鏃堕棿" [ref=e971]
+                - generic:
+                  - img "calendar"
+            - generic [ref=e730]:
+              - generic [ref=e731]: 妫�娴嬫棩鏈�
+              - generic [ref=e975]:
+                - textbox "妫�娴嬫棩鏈�" [ref=e977]:
+                  - /placeholder: 寮�濮嬫椂闂�
+                - generic "to" [ref=e979]:
+                  - img "swap-right" [ref=e980]
+                - textbox "缁撴潫鏃堕棿" [ref=e984]
+                - generic:
+                  - img "calendar"
+            - generic [ref=e733]:
+              - generic [ref=e734]: 妫�娴嬩汉鍛�
+              - generic [ref=e740] [cursor=pointer]:
+                - combobox "妫�娴嬩汉鍛�" [ref=e742]
+                - generic: 璇烽�夋嫨妫�娴嬩汉鍛�
+            - generic [ref=e743]:
+              - button "閲� 缃�" [ref=e985] [cursor=pointer]
+              - button "鎼� 绱�" [ref=e987] [cursor=pointer]
+              - generic [ref=e744] [cursor=pointer]: 鏀惰捣
+          - generic [ref=e751]:
+            - generic [ref=e753]:
+              - generic [ref=e754]: 鏉ユ枡妫�楠屽崟鍒楄〃
+              - generic [ref=e758]:
+                - generic [ref=e760]:
+                  - button "鏂板鏉ユ枡妫�楠屽崟" [ref=e762] [cursor=pointer]
+                  - button "瀵煎嚭" [ref=e766] [cursor=pointer]
+                - button "顫�" [ref=e769] [cursor=pointer]
+              - generic [ref=e771]:
+                - button "瞟�" [ref=e772] [cursor=pointer]
+                - button "顪�" [ref=e774] [cursor=pointer]
+                - button "顦�" [ref=e776] [cursor=pointer]
+            - generic [ref=e783]:
+              - generic [ref=e784]:
+                - table [ref=e788]:
+                  - rowgroup [ref=e805]:
+                    - row [ref=e806]:
+                      - columnheader "鏉ユ枡妫�楠屽崟缂栧彿" [ref=e807]
+                      - columnheader "鏉ユ枡妫�楠屽崟鍚嶇О" [ref=e812]
+                      - columnheader "渚涘簲鍟嗙畝绉�" [ref=e817]
+                      - columnheader "渚涘簲鍟嗘壒娆″彿" [ref=e822]
+                      - columnheader "浜у搧鐗╂枡缂栫爜" [ref=e827]
+                      - columnheader "浜у搧鐗╂枡鍚嶇О" [ref=e832]
+                      - columnheader "鎺ユ敹鏁伴噺" [ref=e837]
+                      - columnheader "妫�娴嬫暟閲�" [ref=e842]
+                      - columnheader "涓嶅悎鏍兼暟" [ref=e847]
+                      - columnheader "妫�娴嬬粨鏋�" [ref=e852]
+                      - columnheader "鏉ユ枡鏃ユ湡" [ref=e857]
+                      - columnheader "妫�娴嬫棩鏈�" [ref=e862]
+                      - columnheader "妫�娴嬩汉鍛�" [ref=e867]
+                      - columnheader "鍗曟嵁鐘舵��" [ref=e872]
+                - table [ref=e993]:
+                  - rowgroup [ref=e1010]:
+                    - row "IQC-DEMO-03 澹儻鏉ユ枡妫�楠�-03 JN-20260918-A03 4 澹儻 800 80 4 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1011]:
+                      - cell [ref=e1012]:
+                        - button "IQC-DEMO-03" [ref=e1015] [cursor=pointer]
+                      - cell "澹儻鏉ユ枡妫�楠�-03" [ref=e1017]
+                      - cell [ref=e1021]
+                      - cell "JN-20260918-A03" [ref=e1025]
+                      - cell "4" [ref=e1029]
+                      - cell "澹儻" [ref=e1033]
+                      - cell "800" [ref=e1037]
+                      - cell "80" [ref=e1041]
+                      - cell "4" [ref=e1045]
+                      - cell [ref=e1049]
+                      - cell "2026-09-17" [ref=e1051]
+                      - cell "2026-09-18" [ref=e1055]
+                      - cell "寮犱笁" [ref=e1059]
+                      - cell "宸插畬鎴�" [ref=e1063]
+                    - row "IQC-DEMO-02 绮捐悩鏉ユ枡妫�楠�-02 JN-20260918-A02 2 绮捐悩 1500 150 0 鏍¢獙閫氳繃 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1067]:
+                      - cell [ref=e1068]:
+                        - button "IQC-DEMO-02" [ref=e1071] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-02" [ref=e1073]
+                      - cell [ref=e1077]
+                      - cell "JN-20260918-A02" [ref=e1081]
+                      - cell "2" [ref=e1085]
+                      - cell "绮捐悩" [ref=e1089]
+                      - cell "1500" [ref=e1093]
+                      - cell "150" [ref=e1097]
+                      - cell "0" [ref=e1101]
+                      - cell "鏍¢獙閫氳繃" [ref=e1105]
+                      - cell "2026-09-17" [ref=e1109]
+                      - cell "2026-09-18" [ref=e1113]
+                      - cell "寮犱笁" [ref=e1117]
+                      - cell "宸插畬鎴�" [ref=e1121]
+                    - row "IQC-DEMO-01 绮捐悩鏉ユ枡妫�楠�-01 JN-20260918-A01 2 绮捐悩 2000 200 2 鏍¢獙閫氳繃 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1125]:
+                      - cell [ref=e1126]:
+                        - button "IQC-DEMO-01" [ref=e1129] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-01" [ref=e1131]
+                      - cell [ref=e1135]
+                      - cell "JN-20260918-A01" [ref=e1139]
+                      - cell "2" [ref=e1143]
+                      - cell "绮捐悩" [ref=e1147]
+                      - cell "2000" [ref=e1151]
+                      - cell "200" [ref=e1155]
+                      - cell "2" [ref=e1159]
+                      - cell "鏍¢獙閫氳繃" [ref=e1163]
+                      - cell "2026-09-17" [ref=e1167]
+                      - cell "2026-09-18" [ref=e1171]
+                      - cell "寮犱笁" [ref=e1175]
+                      - cell "宸插畬鎴�" [ref=e1179]
+                    - row "IQC_20260917001 绮捐悩鏉ユ枡妫�楠�-0917 2 绮捐悩 100 100 0 2026-09-17 2026-09-17 瓒呯骇绠$悊鍛� 鑽夌" [ref=e1183]:
+                      - cell [ref=e1184]:
+                        - button "IQC_20260917001" [ref=e1187] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-0917" [ref=e1189]
+                      - cell [ref=e1193]
+                      - cell [ref=e1197]
+                      - cell "2" [ref=e1201]
+                      - cell "绮捐悩" [ref=e1205]
+                      - cell "100" [ref=e1209]
+                      - cell "100" [ref=e1213]
+                      - cell "0" [ref=e1217]
+                      - cell [ref=e1221]
+                      - cell "2026-09-17" [ref=e1223]
+                      - cell "2026-09-17" [ref=e1227]
+                      - cell "瓒呯骇绠$悊鍛�" [ref=e1231]
+                      - cell "鑽夌" [ref=e1235]
+              - generic [ref=e880]:
+                - table [ref=e883]:
+                  - rowgroup [ref=e900]:
+                    - row [ref=e901]:
+                      - columnheader "鎿嶄綔" [ref=e902]
+                - table [ref=e1239]:
+                  - rowgroup [ref=e1242]:
+                    - row [ref=e1243]:
+                      - cell [ref=e1244]:
+                        - generic [ref=e1248]:
+                          - button "璇︽儏" [ref=e1250] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1257] [cursor=pointer]
+                    - row [ref=e1263]:
+                      - cell [ref=e1264]:
+                        - generic [ref=e1268]:
+                          - button "璇︽儏" [ref=e1270] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1277] [cursor=pointer]
+                    - row [ref=e1283]:
+                      - cell [ref=e1284]:
+                        - generic [ref=e1288]:
+                          - button "璇︽儏" [ref=e1290] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1297] [cursor=pointer]
+                    - row [ref=e1303]:
+                      - cell [ref=e1304]:
+                        - generic [ref=e1308]:
+                          - button "淇敼" [ref=e1310] [cursor=pointer]
+                          - button "鍒犻櫎" [ref=e1317] [cursor=pointer]
+                          - button "璇︽儏" [ref=e1322] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1329] [cursor=pointer]
+            - generic [ref=e921]:
+              - generic [ref=e922]: 鍏� 4 鏉¤褰�
+              - generic [ref=e924] [cursor=pointer]:
+                - generic "20鏉�/椤�" [ref=e925]:
+                  - textbox "璇烽�夋嫨" [ref=e926]: 20鏉�/椤�
+                - generic [ref=e927]: 睿�
+              - button "飱�" [ref=e930]
+              - button "顧�" [ref=e932]
+              - button "顫�" [ref=e934]
+              - button "1" [ref=e937] [cursor=pointer]
+              - button "顫�" [ref=e938]
+              - button "顧�" [ref=e940]
+              - button "顦�" [ref=e942]
+  - dialog [ref=e2833]:
+    - heading "鏌ョ湅鏉ユ枡妫�楠屽崟" [level=2] [ref=e2835]
+    - generic [ref=e2837]:
+      - generic [ref=e2839]:
+        - generic [ref=e2840]:
+          - generic [ref=e2841]:
+            - generic [ref=e2842]: "*"
+            - text: 妫�楠屽崟缂栧彿
+          - generic [ref=e2846]:
+            - textbox "* 妫�楠屽崟缂栧彿" [disabled] [ref=e2847]:
+              - /placeholder: 璇疯緭鍏ユ楠屽崟缂栧彿
+              - text: IQC-DEMO-01
+            - button "鐢� 鎴�" [disabled] [ref=e2849]
+        - generic [ref=e2851]:
+          - generic [ref=e2852]:
+            - generic [ref=e2853]: "*"
+            - text: 妫�楠屽崟鍚嶇О
+          - textbox "* 妫�楠屽崟鍚嶇О" [disabled] [ref=e2858]:
+            - /placeholder: 璇疯緭鍏ユ楠屽崟鍚嶇О
+            - text: 绮捐悩鏉ユ枡妫�楠�-01
+        - generic [ref=e2859]:
+          - generic [ref=e2860]:
+            - generic [ref=e2861]: "*"
+            - text: 浜у搧鐗╂枡
+          - textbox "璇烽�夋嫨浜у搧鐗╂枡" [disabled] [ref=e2868]: 绮捐悩
+        - generic [ref=e2874]:
+          - generic [ref=e2875]: 渚涘簲鍟�
+          - generic [ref=e2881]:
+            - combobox "渚涘簲鍟�" [disabled] [ref=e2883]
+            - generic: 璇烽�夋嫨渚涘簲鍟�
+        - generic [ref=e2884]:
+          - generic [ref=e2885]: 渚涘簲鍟嗘壒娆″彿
+          - textbox "渚涘簲鍟嗘壒娆″彿" [disabled] [ref=e2890]:
+            - /placeholder: 璇疯緭鍏ヤ緵搴斿晢鎵规鍙�
+            - text: JN-20260918-A01
+        - generic [ref=e2891]:
+          - generic [ref=e2892]:
+            - generic [ref=e2893]: "*"
+            - text: 鏈鎺ユ敹鏁伴噺
+          - spinbutton "* 鏈鎺ユ敹鏁伴噺" [disabled] [ref=e2900]: "2000.00"
+        - generic [ref=e2901]:
+          - generic [ref=e2902]:
+            - generic [ref=e2903]: "*"
+            - text: 鍚堟牸鍝佹暟閲�
+          - spinbutton "* 鍚堟牸鍝佹暟閲�" [disabled] [ref=e2910]: "198"
+        - generic [ref=e2911]:
+          - generic [ref=e2912]:
+            - generic [ref=e2913]: "*"
+            - text: 涓嶅悎鏍煎搧鏁伴噺
+            - img [ref=e2914] [cursor=pointer]
+          - spinbutton "* 涓嶅悎鏍煎搧鏁伴噺" [disabled] [ref=e2923]: "2"
+        - generic [ref=e2924]:
+          - generic [ref=e2925]:
+            - generic [ref=e2926]: "*"
+            - text: 鏉ユ枡鏃ユ湡
+          - generic [ref=e2932]:
+            - textbox "* 鏉ユ枡鏃ユ湡" [disabled] [ref=e2933]:
+              - /placeholder: 璇烽�夋嫨鏉ユ枡鏃ユ湡
+              - text: 2026-09-17
+            - generic:
+              - img "calendar"
+        - generic [ref=e2934]:
+          - generic [ref=e2935]:
+            - generic [ref=e2936]: "*"
+            - text: 妫�娴嬩汉鍛�
+          - generic [ref=e2942]:
+            - combobox "* 妫�娴嬩汉鍛�" [disabled] [ref=e2944]
+            - generic "寮犱笁" [ref=e2945]
+        - generic [ref=e2946]:
+          - generic [ref=e2947]:
+            - generic [ref=e2948]: "*"
+            - text: 妫�娴嬫棩鏈�
+          - generic [ref=e2954]:
+            - textbox "* 妫�娴嬫棩鏈�" [disabled] [ref=e2955]:
+              - /placeholder: 璇烽�夋嫨妫�娴嬫棩鏈�
+              - text: 2026-09-18
+            - generic:
+              - img "calendar"
+        - generic [ref=e2956]:
+          - generic [ref=e2957]: 妫�娴嬬粨鏋�
+          - generic [ref=e2963]:
+            - combobox "妫�娴嬬粨鏋�" [disabled] [ref=e2965]
+            - generic "鏍¢獙閫氳繃" [ref=e2966]
+        - generic [ref=e2967]:
+          - generic [ref=e2968]: 澶囨敞
+          - textbox "澶囨敞" [disabled] [ref=e2973]:
+            - /placeholder: 璇疯緭鍏ュ娉�
+            - text: 婕旂ず鏁版嵁
+      - generic [ref=e2975]:
+        - generic [ref=e2976]: 缂洪櫡鎯呭喌
+        - table [ref=e2979]:
+          - rowgroup [ref=e2980]:
+            - row [ref=e2981]:
+              - rowheader "鑷村懡缂洪櫡鏁�" [ref=e2982]
+              - cell "0" [ref=e2983]
+              - rowheader "涓ラ噸缂洪櫡鏁�" [ref=e2985]
+              - cell "0" [ref=e2986]
+              - rowheader "杞诲井缂洪櫡鏁�" [ref=e2988]
+              - cell "0" [ref=e2989]
+            - row [ref=e2991]:
+              - rowheader "鑷村懡缂洪櫡鐜�" [ref=e2992]
+              - cell "0%" [ref=e2993]
+              - rowheader "涓ラ噸缂洪櫡鐜�" [ref=e2995]
+              - cell "0%" [ref=e2996]
+              - rowheader "杞诲井缂洪櫡鐜�" [ref=e2998]
+              - cell "0%" [ref=e2999]
+      - generic [ref=e3001]:
+        - tablist [ref=e3002]:
+          - generic [ref=e3004]:
+            - tab "妫�楠岄」" [ref=e3006] [cursor=pointer]
+            - tab "妫�娴嬬粨鏋�" [active] [selected] [ref=e3008] [cursor=pointer]
+        - generic [ref=e3010]:
+          - text: 瞟� 顪� 顦� 睿� 飱� 顧� 顫� 顫� 顧� 顦�
+          - tabpanel "妫�娴嬬粨鏋�" [ref=e4213]:
+            - generic [ref=e4218]:
+              - generic [ref=e4220]:
+                - generic [ref=e4221]: 妫�娴嬬粨鏋�
+                - generic [ref=e4224]:
+                  - button "瞟�" [ref=e4225] [cursor=pointer]
+                  - button "顪�" [ref=e4227] [cursor=pointer]
+                  - button "顦�" [ref=e4229] [cursor=pointer]
+              - generic [ref=e4237]:
+                - table [ref=e4241]:
+                  - rowgroup [ref=e4247]:
+                    - row [ref=e4248]:
+                      - columnheader "鏍峰搧缂栧彿" [ref=e4249]
+                      - columnheader "鐗╄祫SN" [ref=e4254]
+                      - columnheader "澶囨敞" [ref=e4259]
+                      - columnheader "鎿嶄綔" [ref=e4264]
+                - table [ref=e4272]:
+                  - rowgroup [ref=e4278]:
+                    - row "MIR-DEMO-01 YP-A001 璇︽儏" [ref=e4279]:
+                      - cell "MIR-DEMO-01" [ref=e4280]
+                      - cell "YP-A001" [ref=e4284]
+                      - cell [ref=e4288]
+                      - cell [ref=e4292]:
+                        - button "璇︽儏" [ref=e4298] [cursor=pointer]
+              - generic [ref=e4306]:
+                - generic [ref=e4307]: 鍏� 1 鏉¤褰�
+                - generic [ref=e4309] [cursor=pointer]:
+                  - generic "20鏉�/椤�" [ref=e4310]:
+                    - textbox "璇烽�夋嫨" [ref=e4311]: 20鏉�/椤�
+                  - generic [ref=e4312]: 睿�
+                - button "飱�" [ref=e4315]
+                - button "顧�" [ref=e4317]
+                - button "顫�" [ref=e4319]
+                - button "1" [ref=e4322] [cursor=pointer]
+                - button "顫�" [ref=e4323]
+                - button "顧�" [ref=e4325]
+                - button "顦�" [ref=e4327]
+    - button [ref=e4193] [cursor=pointer]
+    - generic [ref=e4203]:
+      - button "璐ㄦ鍔╂墜" [ref=e4205] [cursor=pointer]
+      - button "鍙� 娑�" [ref=e4207] [cursor=pointer]
+    - button [ref=e4209] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-09-18T06-22-24-743Z.yml b/.playwright-mcp/page-2026-09-18T06-22-24-743Z.yml
new file mode 100644
index 0000000..7b0e591
--- /dev/null
+++ b/.playwright-mcp/page-2026-09-18T06-22-24-743Z.yml
@@ -0,0 +1,504 @@
+- 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]: 浜у搧璁捐
+          - listitem [ref=e85]:
+            - generic [ref=e86] [cursor=pointer]: 鐢熶骇绠℃帶
+          - listitem [ref=e93]:
+            - generic [ref=e94] [cursor=pointer]: 璐ㄩ噺绠$悊
+            - list [ref=e593]:
+              - menuitem "妫�娴嬮」璁剧疆" [ref=e594] [cursor=pointer]
+              - menuitem "璐ㄦ鏂规" [ref=e599] [cursor=pointer]
+              - menuitem "寰呮浠诲姟" [ref=e604] [cursor=pointer]
+              - menuitem "鏉ユ枡妫�楠�" [ref=e611] [cursor=pointer]
+              - menuitem "杩囩▼妫�楠�" [ref=e616] [cursor=pointer]
+              - menuitem "閫�鏂欐楠�" [ref=e621] [cursor=pointer]
+              - menuitem "鍑鸿揣妫�楠�" [ref=e626] [cursor=pointer]
+              - menuitem "鎵规杩芥函" [ref=e631] [cursor=pointer]
+              - menuitem "涓嶅悎鏍煎搧澶勭悊" [ref=e637] [cursor=pointer]
+              - menuitem "甯歌缂洪櫡" [ref=e642] [cursor=pointer]
+          - listitem [ref=e100]:
+            - generic [ref=e101] [cursor=pointer]: 鎶ヨ〃绠$悊
+          - listitem [ref=e108]:
+            - generic [ref=e109] [cursor=pointer]: 鍐崇瓥BI澶у睆
+          - listitem [ref=e115]:
+            - generic [ref=e116] [cursor=pointer]: 鍗忓悓鍔炲叕
+          - listitem [ref=e122]:
+            - generic [ref=e123] [cursor=pointer]: 浜哄姏璧勬簮
+          - listitem [ref=e129]:
+            - generic [ref=e130] [cursor=pointer]: 鍞悗绠$悊
+          - listitem [ref=e136]:
+            - generic [ref=e137] [cursor=pointer]: 鍩虹璁炬柦
+          - listitem [ref=e143]:
+            - generic [ref=e144] [cursor=pointer]: 绯荤粺绠$悊
+        - generic [ref=e151] [cursor=pointer]
+    - generic [ref=e156]:
+      - generic [ref=e157]:
+        - banner [ref=e158]:
+          - button [ref=e159] [cursor=pointer]
+          - button [ref=e162] [cursor=pointer]
+          - navigation "breadcrumb" [ref=e167]:
+            - list [ref=e168]:
+              - listitem [ref=e649]:
+                - link "璐ㄩ噺绠$悊" [ref=e650] [cursor=pointer]:
+                  - /url: javascript:void 0
+                - listitem [ref=e654]
+              - listitem [ref=e657]:
+                - link "鏉ユ枡妫�楠�" [disabled] [ref=e658]
+          - generic [ref=e177]:
+            - generic [ref=e179] [cursor=pointer]:
+              - generic [ref=e183]: 鎼滅储
+              - generic [ref=e184]: Ctrl K
+            - button [ref=e186] [cursor=pointer]
+            - button "dark" [ref=e191] [cursor=pointer]
+            - button [ref=e200] [cursor=pointer]
+            - button [ref=e206] [cursor=pointer]
+            - button [ref=e209] [cursor=pointer]
+            - button [ref=e215] [cursor=pointer]:
+              - button [ref=e217]
+            - button "宸ヤ綔鍙�" [ref=e221] [cursor=pointer]
+            - button [ref=e225] [cursor=pointer]:
+              - img "瓒呯骇绠$悊鍛�" [ref=e230]
+        - generic [ref=e232]:
+          - generic [ref=e237]:
+            - generic [ref=e238] [cursor=pointer]: 棣栭〉
+            - generic [ref=e664] [cursor=pointer]: 鏉ユ枡妫�楠�
+          - generic [ref=e254]:
+            - button [ref=e255] [cursor=pointer]
+            - generic [ref=e262] [cursor=pointer]
+            - generic [ref=e266] [cursor=pointer]
+      - main [ref=e273]:
+        - generic [ref=e684]:
+          - generic [ref=e689]:
+            - generic [ref=e690]:
+              - generic [ref=e691]: 妫�楠屽崟缂栧彿
+              - textbox "妫�楠屽崟缂栧彿" [ref=e948]:
+                - /placeholder: 璇疯緭鍏ユ楠屽崟缂栧彿
+            - generic [ref=e693]:
+              - generic [ref=e694]: 渚涘簲鍟�
+              - generic [ref=e700] [cursor=pointer]:
+                - combobox "渚涘簲鍟�" [ref=e702]
+                - generic: 璇烽�夋嫨渚涘簲鍟�
+            - generic [ref=e703]:
+              - generic [ref=e704]: 渚涘簲鍟嗘壒娆�
+              - textbox "渚涘簲鍟嗘壒娆�" [ref=e954]:
+                - /placeholder: 璇疯緭鍏ヤ緵搴斿晢鎵规鍙�
+            - generic [ref=e706]:
+              - generic [ref=e707]: 浜у搧鐗╂枡
+              - textbox "璇烽�夋嫨浜у搧鐗╂枡" [ref=e714]
+            - generic [ref=e717]:
+              - generic [ref=e718]: 妫�娴嬬粨鏋�
+              - generic [ref=e724] [cursor=pointer]:
+                - combobox "妫�娴嬬粨鏋�" [ref=e726]
+                - generic: 璇烽�夋嫨妫�娴嬬粨鏋�
+            - generic [ref=e727]:
+              - generic [ref=e728]: 鏉ユ枡鏃ユ湡
+              - generic [ref=e962]:
+                - textbox "鏉ユ枡鏃ユ湡" [ref=e964]:
+                  - /placeholder: 寮�濮嬫椂闂�
+                - generic "to" [ref=e966]:
+                  - img "swap-right" [ref=e967]
+                - textbox "缁撴潫鏃堕棿" [ref=e971]
+                - generic:
+                  - img "calendar"
+            - generic [ref=e730]:
+              - generic [ref=e731]: 妫�娴嬫棩鏈�
+              - generic [ref=e975]:
+                - textbox "妫�娴嬫棩鏈�" [ref=e977]:
+                  - /placeholder: 寮�濮嬫椂闂�
+                - generic "to" [ref=e979]:
+                  - img "swap-right" [ref=e980]
+                - textbox "缁撴潫鏃堕棿" [ref=e984]
+                - generic:
+                  - img "calendar"
+            - generic [ref=e733]:
+              - generic [ref=e734]: 妫�娴嬩汉鍛�
+              - generic [ref=e740] [cursor=pointer]:
+                - combobox "妫�娴嬩汉鍛�" [ref=e742]
+                - generic: 璇烽�夋嫨妫�娴嬩汉鍛�
+            - generic [ref=e743]:
+              - button "閲� 缃�" [ref=e985] [cursor=pointer]
+              - button "鎼� 绱�" [ref=e987] [cursor=pointer]
+              - generic [ref=e744] [cursor=pointer]: 鏀惰捣
+          - generic [ref=e751]:
+            - generic [ref=e753]:
+              - generic [ref=e754]: 鏉ユ枡妫�楠屽崟鍒楄〃
+              - generic [ref=e758]:
+                - generic [ref=e760]:
+                  - button "鏂板鏉ユ枡妫�楠屽崟" [ref=e762] [cursor=pointer]
+                  - button "瀵煎嚭" [ref=e766] [cursor=pointer]
+                - button "顫�" [ref=e769] [cursor=pointer]
+              - generic [ref=e771]:
+                - button "瞟�" [ref=e772] [cursor=pointer]
+                - button "顪�" [ref=e774] [cursor=pointer]
+                - button "顦�" [ref=e776] [cursor=pointer]
+            - generic [ref=e783]:
+              - generic [ref=e784]:
+                - table [ref=e788]:
+                  - rowgroup [ref=e805]:
+                    - row [ref=e806]:
+                      - columnheader "鏉ユ枡妫�楠屽崟缂栧彿" [ref=e807]
+                      - columnheader "鏉ユ枡妫�楠屽崟鍚嶇О" [ref=e812]
+                      - columnheader "渚涘簲鍟嗙畝绉�" [ref=e817]
+                      - columnheader "渚涘簲鍟嗘壒娆″彿" [ref=e822]
+                      - columnheader "浜у搧鐗╂枡缂栫爜" [ref=e827]
+                      - columnheader "浜у搧鐗╂枡鍚嶇О" [ref=e832]
+                      - columnheader "鎺ユ敹鏁伴噺" [ref=e837]
+                      - columnheader "妫�娴嬫暟閲�" [ref=e842]
+                      - columnheader "涓嶅悎鏍兼暟" [ref=e847]
+                      - columnheader "妫�娴嬬粨鏋�" [ref=e852]
+                      - columnheader "鏉ユ枡鏃ユ湡" [ref=e857]
+                      - columnheader "妫�娴嬫棩鏈�" [ref=e862]
+                      - columnheader "妫�娴嬩汉鍛�" [ref=e867]
+                      - columnheader "鍗曟嵁鐘舵��" [ref=e872]
+                - table [ref=e993]:
+                  - rowgroup [ref=e1010]:
+                    - row "IQC-DEMO-03 澹儻鏉ユ枡妫�楠�-03 JN-20260918-A03 4 澹儻 800 80 4 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1011]:
+                      - cell [ref=e1012]:
+                        - button "IQC-DEMO-03" [ref=e1015] [cursor=pointer]
+                      - cell "澹儻鏉ユ枡妫�楠�-03" [ref=e1017]
+                      - cell [ref=e1021]
+                      - cell "JN-20260918-A03" [ref=e1025]
+                      - cell "4" [ref=e1029]
+                      - cell "澹儻" [ref=e1033]
+                      - cell "800" [ref=e1037]
+                      - cell "80" [ref=e1041]
+                      - cell "4" [ref=e1045]
+                      - cell [ref=e1049]
+                      - cell "2026-09-17" [ref=e1051]
+                      - cell "2026-09-18" [ref=e1055]
+                      - cell "寮犱笁" [ref=e1059]
+                      - cell "宸插畬鎴�" [ref=e1063]
+                    - row "IQC-DEMO-02 绮捐悩鏉ユ枡妫�楠�-02 JN-20260918-A02 2 绮捐悩 1500 150 0 鏍¢獙閫氳繃 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1067]:
+                      - cell [ref=e1068]:
+                        - button "IQC-DEMO-02" [ref=e1071] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-02" [ref=e1073]
+                      - cell [ref=e1077]
+                      - cell "JN-20260918-A02" [ref=e1081]
+                      - cell "2" [ref=e1085]
+                      - cell "绮捐悩" [ref=e1089]
+                      - cell "1500" [ref=e1093]
+                      - cell "150" [ref=e1097]
+                      - cell "0" [ref=e1101]
+                      - cell "鏍¢獙閫氳繃" [ref=e1105]
+                      - cell "2026-09-17" [ref=e1109]
+                      - cell "2026-09-18" [ref=e1113]
+                      - cell "寮犱笁" [ref=e1117]
+                      - cell "宸插畬鎴�" [ref=e1121]
+                    - row "IQC-DEMO-01 绮捐悩鏉ユ枡妫�楠�-01 JN-20260918-A01 2 绮捐悩 2000 200 2 鏍¢獙閫氳繃 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1125]:
+                      - cell [ref=e1126]:
+                        - button "IQC-DEMO-01" [ref=e1129] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-01" [ref=e1131]
+                      - cell [ref=e1135]
+                      - cell "JN-20260918-A01" [ref=e1139]
+                      - cell "2" [ref=e1143]
+                      - cell "绮捐悩" [ref=e1147]
+                      - cell "2000" [ref=e1151]
+                      - cell "200" [ref=e1155]
+                      - cell "2" [ref=e1159]
+                      - cell "鏍¢獙閫氳繃" [ref=e1163]
+                      - cell "2026-09-17" [ref=e1167]
+                      - cell "2026-09-18" [ref=e1171]
+                      - cell "寮犱笁" [ref=e1175]
+                      - cell "宸插畬鎴�" [ref=e1179]
+                    - row "IQC_20260917001 绮捐悩鏉ユ枡妫�楠�-0917 2 绮捐悩 100 100 0 2026-09-17 2026-09-17 瓒呯骇绠$悊鍛� 鑽夌" [ref=e1183]:
+                      - cell [ref=e1184]:
+                        - button "IQC_20260917001" [ref=e1187] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-0917" [ref=e1189]
+                      - cell [ref=e1193]
+                      - cell [ref=e1197]
+                      - cell "2" [ref=e1201]
+                      - cell "绮捐悩" [ref=e1205]
+                      - cell "100" [ref=e1209]
+                      - cell "100" [ref=e1213]
+                      - cell "0" [ref=e1217]
+                      - cell [ref=e1221]
+                      - cell "2026-09-17" [ref=e1223]
+                      - cell "2026-09-17" [ref=e1227]
+                      - cell "瓒呯骇绠$悊鍛�" [ref=e1231]
+                      - cell "鑽夌" [ref=e1235]
+              - generic [ref=e880]:
+                - table [ref=e883]:
+                  - rowgroup [ref=e900]:
+                    - row [ref=e901]:
+                      - columnheader "鎿嶄綔" [ref=e902]
+                - table [ref=e1239]:
+                  - rowgroup [ref=e1242]:
+                    - row [ref=e1243]:
+                      - cell [ref=e1244]:
+                        - generic [ref=e1248]:
+                          - button "璇︽儏" [ref=e1250] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1257] [cursor=pointer]
+                    - row [ref=e1263]:
+                      - cell [ref=e1264]:
+                        - generic [ref=e1268]:
+                          - button "璇︽儏" [ref=e1270] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1277] [cursor=pointer]
+                    - row [ref=e1283]:
+                      - cell [ref=e1284]:
+                        - generic [ref=e1288]:
+                          - button "璇︽儏" [ref=e1290] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1297] [cursor=pointer]
+                    - row [ref=e1303]:
+                      - cell [ref=e1304]:
+                        - generic [ref=e1308]:
+                          - button "淇敼" [ref=e1310] [cursor=pointer]
+                          - button "鍒犻櫎" [ref=e1317] [cursor=pointer]
+                          - button "璇︽儏" [ref=e1322] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1329] [cursor=pointer]
+            - generic [ref=e921]:
+              - generic [ref=e922]: 鍏� 4 鏉¤褰�
+              - generic [ref=e924] [cursor=pointer]:
+                - generic "20鏉�/椤�" [ref=e925]:
+                  - textbox "璇烽�夋嫨" [ref=e926]: 20鏉�/椤�
+                - generic [ref=e927]: 睿�
+              - button "飱�" [ref=e930]
+              - button "顧�" [ref=e932]
+              - button "顫�" [ref=e934]
+              - button "1" [ref=e937] [cursor=pointer]
+              - button "顫�" [ref=e938]
+              - button "顧�" [ref=e940]
+              - button "顦�" [ref=e942]
+  - dialog [ref=e2833]:
+    - heading "鏌ョ湅鏉ユ枡妫�楠屽崟" [level=2] [ref=e2835]
+    - generic [ref=e2837]:
+      - generic [ref=e2839]:
+        - generic [ref=e2840]:
+          - generic [ref=e2841]:
+            - generic [ref=e2842]: "*"
+            - text: 妫�楠屽崟缂栧彿
+          - generic [ref=e2846]:
+            - textbox "* 妫�楠屽崟缂栧彿" [disabled] [ref=e2847]:
+              - /placeholder: 璇疯緭鍏ユ楠屽崟缂栧彿
+              - text: IQC-DEMO-01
+            - button "鐢� 鎴�" [disabled] [ref=e2849]
+        - generic [ref=e2851]:
+          - generic [ref=e2852]:
+            - generic [ref=e2853]: "*"
+            - text: 妫�楠屽崟鍚嶇О
+          - textbox "* 妫�楠屽崟鍚嶇О" [disabled] [ref=e2858]:
+            - /placeholder: 璇疯緭鍏ユ楠屽崟鍚嶇О
+            - text: 绮捐悩鏉ユ枡妫�楠�-01
+        - generic [ref=e2859]:
+          - generic [ref=e2860]:
+            - generic [ref=e2861]: "*"
+            - text: 浜у搧鐗╂枡
+          - textbox "璇烽�夋嫨浜у搧鐗╂枡" [disabled] [ref=e2868]: 绮捐悩
+        - generic [ref=e2874]:
+          - generic [ref=e2875]: 渚涘簲鍟�
+          - generic [ref=e2881]:
+            - combobox "渚涘簲鍟�" [disabled] [ref=e2883]
+            - generic: 璇烽�夋嫨渚涘簲鍟�
+        - generic [ref=e2884]:
+          - generic [ref=e2885]: 渚涘簲鍟嗘壒娆″彿
+          - textbox "渚涘簲鍟嗘壒娆″彿" [disabled] [ref=e2890]:
+            - /placeholder: 璇疯緭鍏ヤ緵搴斿晢鎵规鍙�
+            - text: JN-20260918-A01
+        - generic [ref=e2891]:
+          - generic [ref=e2892]:
+            - generic [ref=e2893]: "*"
+            - text: 鏈鎺ユ敹鏁伴噺
+          - spinbutton "* 鏈鎺ユ敹鏁伴噺" [disabled] [ref=e2900]: "2000.00"
+        - generic [ref=e2901]:
+          - generic [ref=e2902]:
+            - generic [ref=e2903]: "*"
+            - text: 鍚堟牸鍝佹暟閲�
+          - spinbutton "* 鍚堟牸鍝佹暟閲�" [disabled] [ref=e2910]: "198"
+        - generic [ref=e2911]:
+          - generic [ref=e2912]:
+            - generic [ref=e2913]: "*"
+            - text: 涓嶅悎鏍煎搧鏁伴噺
+            - img [ref=e2914] [cursor=pointer]
+          - spinbutton "* 涓嶅悎鏍煎搧鏁伴噺" [disabled] [ref=e2923]: "2"
+        - generic [ref=e2924]:
+          - generic [ref=e2925]:
+            - generic [ref=e2926]: "*"
+            - text: 鏉ユ枡鏃ユ湡
+          - generic [ref=e2932]:
+            - textbox "* 鏉ユ枡鏃ユ湡" [disabled] [ref=e2933]:
+              - /placeholder: 璇烽�夋嫨鏉ユ枡鏃ユ湡
+              - text: 2026-09-17
+            - generic:
+              - img "calendar"
+        - generic [ref=e2934]:
+          - generic [ref=e2935]:
+            - generic [ref=e2936]: "*"
+            - text: 妫�娴嬩汉鍛�
+          - generic [ref=e2942]:
+            - combobox "* 妫�娴嬩汉鍛�" [disabled] [ref=e2944]
+            - generic "寮犱笁" [ref=e2945]
+        - generic [ref=e2946]:
+          - generic [ref=e2947]:
+            - generic [ref=e2948]: "*"
+            - text: 妫�娴嬫棩鏈�
+          - generic [ref=e2954]:
+            - textbox "* 妫�娴嬫棩鏈�" [disabled] [ref=e2955]:
+              - /placeholder: 璇烽�夋嫨妫�娴嬫棩鏈�
+              - text: 2026-09-18
+            - generic:
+              - img "calendar"
+        - generic [ref=e2956]:
+          - generic [ref=e2957]: 妫�娴嬬粨鏋�
+          - generic [ref=e2963]:
+            - combobox "妫�娴嬬粨鏋�" [disabled] [ref=e2965]
+            - generic "鏍¢獙閫氳繃" [ref=e2966]
+        - generic [ref=e2967]:
+          - generic [ref=e2968]: 澶囨敞
+          - textbox "澶囨敞" [disabled] [ref=e2973]:
+            - /placeholder: 璇疯緭鍏ュ娉�
+            - text: 婕旂ず鏁版嵁
+      - generic [ref=e2975]:
+        - generic [ref=e2976]: 缂洪櫡鎯呭喌
+        - table [ref=e2979]:
+          - rowgroup [ref=e2980]:
+            - row [ref=e2981]:
+              - rowheader "鑷村懡缂洪櫡鏁�" [ref=e2982]
+              - cell "0" [ref=e2983]
+              - rowheader "涓ラ噸缂洪櫡鏁�" [ref=e2985]
+              - cell "0" [ref=e2986]
+              - rowheader "杞诲井缂洪櫡鏁�" [ref=e2988]
+              - cell "0" [ref=e2989]
+            - row [ref=e2991]:
+              - rowheader "鑷村懡缂洪櫡鐜�" [ref=e2992]
+              - cell "0%" [ref=e2993]
+              - rowheader "涓ラ噸缂洪櫡鐜�" [ref=e2995]
+              - cell "0%" [ref=e2996]
+              - rowheader "杞诲井缂洪櫡鐜�" [ref=e2998]
+              - cell "0%" [ref=e2999]
+      - generic [ref=e3001]:
+        - tablist [ref=e3002]:
+          - generic [ref=e3004]:
+            - tab "妫�楠岄」" [ref=e3006] [cursor=pointer]
+            - tab "妫�娴嬬粨鏋�" [selected] [ref=e3008] [cursor=pointer]
+        - generic [ref=e3010]:
+          - text: 瞟� 顪� 顦� 睿� 飱� 顧� 顫� 顫� 顧� 顦�
+          - tabpanel "妫�娴嬬粨鏋�" [ref=e4213]:
+            - generic [ref=e4218]:
+              - generic [ref=e4220]:
+                - generic [ref=e4221]: 妫�娴嬬粨鏋�
+                - generic [ref=e4224]:
+                  - button "瞟�" [ref=e4225] [cursor=pointer]
+                  - button "顪�" [ref=e4227] [cursor=pointer]
+                  - button "顦�" [ref=e4229] [cursor=pointer]
+              - generic [ref=e4237]:
+                - table [ref=e4241]:
+                  - rowgroup [ref=e4247]:
+                    - row [ref=e4248]:
+                      - columnheader "鏍峰搧缂栧彿" [ref=e4249]
+                      - columnheader "鐗╄祫SN" [ref=e4254]
+                      - columnheader "澶囨敞" [ref=e4259]
+                      - columnheader "鎿嶄綔" [ref=e4264]
+                - table [ref=e4272]:
+                  - rowgroup [ref=e4278]:
+                    - row "MIR-DEMO-01 YP-A001 璇︽儏" [ref=e4279]:
+                      - cell "MIR-DEMO-01" [ref=e4280]
+                      - cell "YP-A001" [ref=e4284]
+                      - cell [ref=e4288]
+                      - cell [ref=e4292]:
+                        - button "璇︽儏" [active] [ref=e4298] [cursor=pointer]
+              - generic [ref=e4306]:
+                - generic [ref=e4307]: 鍏� 1 鏉¤褰�
+                - generic [ref=e4309] [cursor=pointer]:
+                  - generic "20鏉�/椤�" [ref=e4310]:
+                    - textbox "璇烽�夋嫨" [ref=e4311]: 20鏉�/椤�
+                  - generic [ref=e4312]: 睿�
+                - button "飱�" [ref=e4315]
+                - button "顧�" [ref=e4317]
+                - button "顫�" [ref=e4319]
+                - button "1" [ref=e4322] [cursor=pointer]
+                - button "顫�" [ref=e4323]
+                - button "顧�" [ref=e4325]
+                - button "顦�" [ref=e4327]
+    - button [ref=e4193] [cursor=pointer]
+    - generic [ref=e4203]:
+      - button "璐ㄦ鍔╂墜" [ref=e4205] [cursor=pointer]
+      - button "鍙� 娑�" [ref=e4207] [cursor=pointer]
+    - button [ref=e4209] [cursor=pointer]
+  - dialog [ref=e4330]:
+    - heading "鏌ョ湅妫�楠岀粨鏋�" [level=2] [ref=e4332]
+    - generic [ref=e4335]:
+      - generic [ref=e4337]:
+        - generic [ref=e4338]:
+          - generic [ref=e4339]:
+            - generic [ref=e4340]: "*"
+            - text: 鏍峰搧缂栧彿
+          - generic [ref=e4344]:
+            - textbox "* 鏍峰搧缂栧彿" [disabled] [ref=e4345]:
+              - /placeholder: 璇疯緭鍏ユ牱鍝佺紪鍙�
+              - text: MIR-DEMO-01
+            - button "鐢� 鎴�" [ref=e4347] [cursor=pointer]
+        - generic [ref=e4349]:
+          - generic [ref=e4350]: 鐗╄祫 SN
+          - textbox "鐗╄祫 SN" [disabled] [ref=e4355]:
+            - /placeholder: 璇疯緭鍏ョ墿璧� SN
+            - text: YP-A001
+        - generic [ref=e4356]:
+          - generic [ref=e4357]: 澶囨敞
+          - textbox "澶囨敞" [disabled] [ref=e4362]:
+            - /placeholder: 璇疯緭鍏ュ娉�
+      - separator [ref=e4363]:
+        - generic [ref=e4364]: 妫�娴嬪��
+      - generic [ref=e4365]:
+        - generic [ref=e4368]:
+          - generic "妫�娴嬮」1锛氬瑙�" [ref=e4370]: "妫�娴嬮」1锛氬瑙� :"
+          - textbox [disabled] [ref=e4374]: 婢勬竻閫忔槑娑蹭綋锛屾棤鏈烘鏉傝川
+        - generic [ref=e4377]:
+          - generic "妫�娴嬮」2锛氳壊搴︼紙Hazen锛�" [ref=e4379]: "妫�娴嬮」2锛氳壊搴︼紙Hazen锛� :"
+          - textbox [disabled] [ref=e4383]: "5"
+        - generic [ref=e4386]:
+          - generic "妫�娴嬮」3锛氳瘯鏍疯川閲� m锛坓锛�" [ref=e4388]: "妫�娴嬮」3锛氳瘯鏍疯川閲� m锛坓锛� :"
+          - textbox [disabled] [ref=e4392]: "10.52"
+        - generic [ref=e4395]:
+          - generic "妫�娴嬮」4锛氳瘯鏍�+绉伴噺鐡� m1锛坓锛�" [ref=e4397]: "妫�娴嬮」4锛氳瘯鏍�+绉伴噺鐡� m1锛坓锛� :"
+          - textbox [disabled] [ref=e4401]: "12.35"
+        - generic [ref=e4404]:
+          - generic "妫�娴嬮」5锛氱О閲忕摱 m0锛坓锛�" [ref=e4406]: "妫�娴嬮」5锛氱О閲忕摱 m0锛坓锛� :"
+          - textbox [disabled] [ref=e4410]: "1.83"
+        - generic [ref=e4413]:
+          - generic "妫�娴嬮」6锛氭按鍒嗙粨鏋� w锛�%锛�" [ref=e4415]: "妫�娴嬮」6锛氭按鍒嗙粨鏋� w锛�%锛� :"
+          - textbox [disabled] [ref=e4419]: "0.048"
+        - generic [ref=e4422]:
+          - generic "妫�娴嬮」7锛氭爣娑叉祿搴� c锛坢ol/L锛�" [ref=e4424]: "妫�娴嬮」7锛氭爣娑叉祿搴� c锛坢ol/L锛� :"
+          - textbox [disabled] [ref=e4428]: "0.1005"
+        - generic [ref=e4431]:
+          - generic "妫�娴嬮」8锛氭秷鑰楁淮瀹氭恫浣撶Н V锛坢L锛�" [ref=e4433]: "妫�娴嬮」8锛氭秷鑰楁淮瀹氭恫浣撶Н V锛坢L锛� :"
+          - textbox [disabled] [ref=e4437]: "0.15"
+        - generic [ref=e4440]:
+          - generic "妫�娴嬮」9锛氳瘯鏍疯川閲� m锛坓锛�" [ref=e4442]: "妫�娴嬮」9锛氳瘯鏍疯川閲� m锛坓锛� :"
+          - textbox [disabled] [ref=e4446]: "10.02"
+        - generic [ref=e4449]:
+          - generic "妫�娴嬮」10锛氶吀鍚噺缁撴灉 w3锛�%锛�" [ref=e4451]: "妫�娴嬮」10锛氶吀鍚噺缁撴灉 w3锛�%锛� :"
+          - textbox [disabled] [ref=e4455]: 0.090銆�0.095
+        - generic [ref=e4458]:
+          - generic "妫�娴嬮」11锛氭涓侀唶鍚噺 /%锛�%锛�" [ref=e4460]: "妫�娴嬮」11锛氭涓侀唶鍚噺 /%锛�%锛� :"
+          - textbox [disabled] [ref=e4464]: 99.82銆�99.85銆�99.87
+        - generic [ref=e4467]:
+          - generic "妫�娴嬮」12锛氬瘑搴︼紙kg/m鲁锛�" [ref=e4469]: "妫�娴嬮」12锛氬瘑搴︼紙kg/m鲁锛� :"
+          - textbox [disabled] [ref=e4473]: "810"
+        - generic [ref=e4476]:
+          - generic "妫�娴嬮」13锛氭姌鍏夌巼锛坣虏鈦癉锛�" [ref=e4478]: "妫�娴嬮」13锛氭姌鍏夌巼锛坣虏鈦癉锛� :"
+          - textbox [disabled] [ref=e4482]: "1.3993"
+    - button [ref=e4483] [cursor=pointer]
+    - button "鍙� 娑�" [ref=e4494] [cursor=pointer]
+    - button [ref=e4496] [cursor=pointer]
\ No newline at end of file
diff --git a/.playwright-mcp/page-2026-09-18T06-22-49-485Z.yml b/.playwright-mcp/page-2026-09-18T06-22-49-485Z.yml
new file mode 100644
index 0000000..f95803b
--- /dev/null
+++ b/.playwright-mcp/page-2026-09-18T06-22-49-485Z.yml
@@ -0,0 +1,437 @@
+- 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]: 浜у搧璁捐
+          - listitem [ref=e85]:
+            - generic [ref=e86] [cursor=pointer]: 鐢熶骇绠℃帶
+          - listitem [ref=e93]:
+            - generic [ref=e94] [cursor=pointer]: 璐ㄩ噺绠$悊
+            - list [ref=e593]:
+              - menuitem "妫�娴嬮」璁剧疆" [ref=e594] [cursor=pointer]
+              - menuitem "璐ㄦ鏂规" [ref=e599] [cursor=pointer]
+              - menuitem "寰呮浠诲姟" [ref=e604] [cursor=pointer]
+              - menuitem "鏉ユ枡妫�楠�" [ref=e611] [cursor=pointer]
+              - menuitem "杩囩▼妫�楠�" [ref=e616] [cursor=pointer]
+              - menuitem "閫�鏂欐楠�" [ref=e621] [cursor=pointer]
+              - menuitem "鍑鸿揣妫�楠�" [ref=e626] [cursor=pointer]
+              - menuitem "鎵规杩芥函" [ref=e631] [cursor=pointer]
+              - menuitem "涓嶅悎鏍煎搧澶勭悊" [ref=e637] [cursor=pointer]
+              - menuitem "甯歌缂洪櫡" [ref=e642] [cursor=pointer]
+          - listitem [ref=e100]:
+            - generic [ref=e101] [cursor=pointer]: 鎶ヨ〃绠$悊
+          - listitem [ref=e108]:
+            - generic [ref=e109] [cursor=pointer]: 鍐崇瓥BI澶у睆
+          - listitem [ref=e115]:
+            - generic [ref=e116] [cursor=pointer]: 鍗忓悓鍔炲叕
+          - listitem [ref=e122]:
+            - generic [ref=e123] [cursor=pointer]: 浜哄姏璧勬簮
+          - listitem [ref=e129]:
+            - generic [ref=e130] [cursor=pointer]: 鍞悗绠$悊
+          - listitem [ref=e136]:
+            - generic [ref=e137] [cursor=pointer]: 鍩虹璁炬柦
+          - listitem [ref=e143]:
+            - generic [ref=e144] [cursor=pointer]: 绯荤粺绠$悊
+        - generic [ref=e151] [cursor=pointer]
+    - generic [ref=e156]:
+      - generic [ref=e157]:
+        - banner [ref=e158]:
+          - button [ref=e159] [cursor=pointer]
+          - button [ref=e162] [cursor=pointer]
+          - navigation "breadcrumb" [ref=e167]:
+            - list [ref=e168]:
+              - listitem [ref=e649]:
+                - link "璐ㄩ噺绠$悊" [ref=e650] [cursor=pointer]:
+                  - /url: javascript:void 0
+                - listitem [ref=e654]
+              - listitem [ref=e657]:
+                - link "鏉ユ枡妫�楠�" [disabled] [ref=e658]
+          - generic [ref=e177]:
+            - generic [ref=e179] [cursor=pointer]:
+              - generic [ref=e183]: 鎼滅储
+              - generic [ref=e184]: Ctrl K
+            - button [ref=e186] [cursor=pointer]
+            - button "dark" [ref=e191] [cursor=pointer]
+            - button [ref=e200] [cursor=pointer]
+            - button [ref=e206] [cursor=pointer]
+            - button [ref=e209] [cursor=pointer]
+            - button [ref=e215] [cursor=pointer]:
+              - button [ref=e217]
+            - button "宸ヤ綔鍙�" [ref=e221] [cursor=pointer]
+            - button [ref=e225] [cursor=pointer]:
+              - img "瓒呯骇绠$悊鍛�" [ref=e230]
+        - generic [ref=e232]:
+          - generic [ref=e237]:
+            - generic [ref=e238] [cursor=pointer]: 棣栭〉
+            - generic [ref=e664] [cursor=pointer]: 鏉ユ枡妫�楠�
+          - generic [ref=e254]:
+            - button [ref=e255] [cursor=pointer]
+            - generic [ref=e262] [cursor=pointer]
+            - generic [ref=e266] [cursor=pointer]
+      - main [ref=e273]:
+        - generic [ref=e684]:
+          - generic [ref=e689]:
+            - generic [ref=e690]:
+              - generic [ref=e691]: 妫�楠屽崟缂栧彿
+              - textbox "妫�楠屽崟缂栧彿" [ref=e948]:
+                - /placeholder: 璇疯緭鍏ユ楠屽崟缂栧彿
+            - generic [ref=e693]:
+              - generic [ref=e694]: 渚涘簲鍟�
+              - generic [ref=e700] [cursor=pointer]:
+                - combobox "渚涘簲鍟�" [ref=e702]
+                - generic: 璇烽�夋嫨渚涘簲鍟�
+            - generic [ref=e703]:
+              - generic [ref=e704]: 渚涘簲鍟嗘壒娆�
+              - textbox "渚涘簲鍟嗘壒娆�" [ref=e954]:
+                - /placeholder: 璇疯緭鍏ヤ緵搴斿晢鎵规鍙�
+            - generic [ref=e706]:
+              - generic [ref=e707]: 浜у搧鐗╂枡
+              - textbox "璇烽�夋嫨浜у搧鐗╂枡" [ref=e714]
+            - generic [ref=e717]:
+              - generic [ref=e718]: 妫�娴嬬粨鏋�
+              - generic [ref=e724] [cursor=pointer]:
+                - combobox "妫�娴嬬粨鏋�" [ref=e726]
+                - generic: 璇烽�夋嫨妫�娴嬬粨鏋�
+            - generic [ref=e727]:
+              - generic [ref=e728]: 鏉ユ枡鏃ユ湡
+              - generic [ref=e962]:
+                - textbox "鏉ユ枡鏃ユ湡" [ref=e964]:
+                  - /placeholder: 寮�濮嬫椂闂�
+                - generic "to" [ref=e966]:
+                  - img "swap-right" [ref=e967]
+                - textbox "缁撴潫鏃堕棿" [ref=e971]
+                - generic:
+                  - img "calendar"
+            - generic [ref=e730]:
+              - generic [ref=e731]: 妫�娴嬫棩鏈�
+              - generic [ref=e975]:
+                - textbox "妫�娴嬫棩鏈�" [ref=e977]:
+                  - /placeholder: 寮�濮嬫椂闂�
+                - generic "to" [ref=e979]:
+                  - img "swap-right" [ref=e980]
+                - textbox "缁撴潫鏃堕棿" [ref=e984]
+                - generic:
+                  - img "calendar"
+            - generic [ref=e733]:
+              - generic [ref=e734]: 妫�娴嬩汉鍛�
+              - generic [ref=e740] [cursor=pointer]:
+                - combobox "妫�娴嬩汉鍛�" [ref=e742]
+                - generic: 璇烽�夋嫨妫�娴嬩汉鍛�
+            - generic [ref=e743]:
+              - button "閲� 缃�" [ref=e985] [cursor=pointer]
+              - button "鎼� 绱�" [ref=e987] [cursor=pointer]
+              - generic [ref=e744] [cursor=pointer]: 鏀惰捣
+          - generic [ref=e751]:
+            - generic [ref=e753]:
+              - generic [ref=e754]: 鏉ユ枡妫�楠屽崟鍒楄〃
+              - generic [ref=e758]:
+                - generic [ref=e760]:
+                  - button "鏂板鏉ユ枡妫�楠屽崟" [ref=e762] [cursor=pointer]
+                  - button "瀵煎嚭" [ref=e766] [cursor=pointer]
+                - button "顫�" [ref=e769] [cursor=pointer]
+              - generic [ref=e771]:
+                - button "瞟�" [ref=e772] [cursor=pointer]
+                - button "顪�" [ref=e774] [cursor=pointer]
+                - button "顦�" [ref=e776] [cursor=pointer]
+            - generic [ref=e783]:
+              - generic [ref=e784]:
+                - table [ref=e788]:
+                  - rowgroup [ref=e805]:
+                    - row [ref=e806]:
+                      - columnheader "鏉ユ枡妫�楠屽崟缂栧彿" [ref=e807]
+                      - columnheader "鏉ユ枡妫�楠屽崟鍚嶇О" [ref=e812]
+                      - columnheader "渚涘簲鍟嗙畝绉�" [ref=e817]
+                      - columnheader "渚涘簲鍟嗘壒娆″彿" [ref=e822]
+                      - columnheader "浜у搧鐗╂枡缂栫爜" [ref=e827]
+                      - columnheader "浜у搧鐗╂枡鍚嶇О" [ref=e832]
+                      - columnheader "鎺ユ敹鏁伴噺" [ref=e837]
+                      - columnheader "妫�娴嬫暟閲�" [ref=e842]
+                      - columnheader "涓嶅悎鏍兼暟" [ref=e847]
+                      - columnheader "妫�娴嬬粨鏋�" [ref=e852]
+                      - columnheader "鏉ユ枡鏃ユ湡" [ref=e857]
+                      - columnheader "妫�娴嬫棩鏈�" [ref=e862]
+                      - columnheader "妫�娴嬩汉鍛�" [ref=e867]
+                      - columnheader "鍗曟嵁鐘舵��" [ref=e872]
+                - table [ref=e993]:
+                  - rowgroup [ref=e1010]:
+                    - row "IQC-DEMO-03 澹儻鏉ユ枡妫�楠�-03 JN-20260918-A03 4 澹儻 800 80 4 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1011]:
+                      - cell [ref=e1012]:
+                        - button "IQC-DEMO-03" [ref=e1015] [cursor=pointer]
+                      - cell "澹儻鏉ユ枡妫�楠�-03" [ref=e1017]
+                      - cell [ref=e1021]
+                      - cell "JN-20260918-A03" [ref=e1025]
+                      - cell "4" [ref=e1029]
+                      - cell "澹儻" [ref=e1033]
+                      - cell "800" [ref=e1037]
+                      - cell "80" [ref=e1041]
+                      - cell "4" [ref=e1045]
+                      - cell [ref=e1049]
+                      - cell "2026-09-17" [ref=e1051]
+                      - cell "2026-09-18" [ref=e1055]
+                      - cell "寮犱笁" [ref=e1059]
+                      - cell "宸插畬鎴�" [ref=e1063]
+                    - row "IQC-DEMO-02 绮捐悩鏉ユ枡妫�楠�-02 JN-20260918-A02 2 绮捐悩 1500 150 0 鏍¢獙閫氳繃 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1067]:
+                      - cell [ref=e1068]:
+                        - button "IQC-DEMO-02" [ref=e1071] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-02" [ref=e1073]
+                      - cell [ref=e1077]
+                      - cell "JN-20260918-A02" [ref=e1081]
+                      - cell "2" [ref=e1085]
+                      - cell "绮捐悩" [ref=e1089]
+                      - cell "1500" [ref=e1093]
+                      - cell "150" [ref=e1097]
+                      - cell "0" [ref=e1101]
+                      - cell "鏍¢獙閫氳繃" [ref=e1105]
+                      - cell "2026-09-17" [ref=e1109]
+                      - cell "2026-09-18" [ref=e1113]
+                      - cell "寮犱笁" [ref=e1117]
+                      - cell "宸插畬鎴�" [ref=e1121]
+                    - row "IQC-DEMO-01 绮捐悩鏉ユ枡妫�楠�-01 JN-20260918-A01 2 绮捐悩 2000 200 2 鏍¢獙閫氳繃 2026-09-17 2026-09-18 寮犱笁 宸插畬鎴�" [ref=e1125]:
+                      - cell [ref=e1126]:
+                        - button "IQC-DEMO-01" [ref=e1129] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-01" [ref=e1131]
+                      - cell [ref=e1135]
+                      - cell "JN-20260918-A01" [ref=e1139]
+                      - cell "2" [ref=e1143]
+                      - cell "绮捐悩" [ref=e1147]
+                      - cell "2000" [ref=e1151]
+                      - cell "200" [ref=e1155]
+                      - cell "2" [ref=e1159]
+                      - cell "鏍¢獙閫氳繃" [ref=e1163]
+                      - cell "2026-09-17" [ref=e1167]
+                      - cell "2026-09-18" [ref=e1171]
+                      - cell "寮犱笁" [ref=e1175]
+                      - cell "宸插畬鎴�" [ref=e1179]
+                    - row "IQC_20260917001 绮捐悩鏉ユ枡妫�楠�-0917 2 绮捐悩 100 100 0 2026-09-17 2026-09-17 瓒呯骇绠$悊鍛� 鑽夌" [ref=e1183]:
+                      - cell [ref=e1184]:
+                        - button "IQC_20260917001" [ref=e1187] [cursor=pointer]
+                      - cell "绮捐悩鏉ユ枡妫�楠�-0917" [ref=e1189]
+                      - cell [ref=e1193]
+                      - cell [ref=e1197]
+                      - cell "2" [ref=e1201]
+                      - cell "绮捐悩" [ref=e1205]
+                      - cell "100" [ref=e1209]
+                      - cell "100" [ref=e1213]
+                      - cell "0" [ref=e1217]
+                      - cell [ref=e1221]
+                      - cell "2026-09-17" [ref=e1223]
+                      - cell "2026-09-17" [ref=e1227]
+                      - cell "瓒呯骇绠$悊鍛�" [ref=e1231]
+                      - cell "鑽夌" [ref=e1235]
+              - generic [ref=e880]:
+                - table [ref=e883]:
+                  - rowgroup [ref=e900]:
+                    - row [ref=e901]:
+                      - columnheader "鎿嶄綔" [ref=e902]
+                - table [ref=e1239]:
+                  - rowgroup [ref=e1242]:
+                    - row [ref=e1243]:
+                      - cell [ref=e1244]:
+                        - generic [ref=e1248]:
+                          - button "璇︽儏" [ref=e1250] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1257] [cursor=pointer]
+                    - row [ref=e1263]:
+                      - cell [ref=e1264]:
+                        - generic [ref=e1268]:
+                          - button "璇︽儏" [ref=e1270] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1277] [cursor=pointer]
+                    - row [ref=e1283]:
+                      - cell [ref=e1284]:
+                        - generic [ref=e1288]:
+                          - button "璇︽儏" [ref=e1290] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1297] [cursor=pointer]
+                    - row [ref=e1303]:
+                      - cell [ref=e1304]:
+                        - generic [ref=e1308]:
+                          - button "淇敼" [ref=e1310] [cursor=pointer]
+                          - button "鍒犻櫎" [ref=e1317] [cursor=pointer]
+                          - button "璇︽儏" [ref=e1322] [cursor=pointer]
+                          - button "璐ㄦ鎶ュ憡" [ref=e1329] [cursor=pointer]
+            - generic [ref=e921]:
+              - generic [ref=e922]: 鍏� 4 鏉¤褰�
+              - generic [ref=e924] [cursor=pointer]:
+                - generic "20鏉�/椤�" [ref=e925]:
+                  - textbox "璇烽�夋嫨" [ref=e926]: 20鏉�/椤�
+                - generic [ref=e927]: 睿�
+              - button "飱�" [ref=e930]
+              - button "顧�" [ref=e932]
+              - button "顫�" [ref=e934]
+              - button "1" [ref=e937] [cursor=pointer]
+              - button "顫�" [ref=e938]
+              - button "顧�" [ref=e940]
+              - button "顦�" [ref=e942]
+  - dialog [ref=e2833]:
+    - heading "鏌ョ湅鏉ユ枡妫�楠屽崟" [level=2] [ref=e2835]
+    - generic [ref=e2837]:
+      - generic [ref=e2839]:
+        - generic [ref=e2840]:
+          - generic [ref=e2841]:
+            - generic [ref=e2842]: "*"
+            - text: 妫�楠屽崟缂栧彿
+          - generic [ref=e2846]:
+            - textbox "* 妫�楠屽崟缂栧彿" [disabled] [ref=e2847]:
+              - /placeholder: 璇疯緭鍏ユ楠屽崟缂栧彿
+              - text: IQC-DEMO-01
+            - button "鐢� 鎴�" [disabled] [ref=e2849]
+        - generic [ref=e2851]:
+          - generic [ref=e2852]:
+            - generic [ref=e2853]: "*"
+            - text: 妫�楠屽崟鍚嶇О
+          - textbox "* 妫�楠屽崟鍚嶇О" [disabled] [ref=e2858]:
+            - /placeholder: 璇疯緭鍏ユ楠屽崟鍚嶇О
+            - text: 绮捐悩鏉ユ枡妫�楠�-01
+        - generic [ref=e2859]:
+          - generic [ref=e2860]:
+            - generic [ref=e2861]: "*"
+            - text: 浜у搧鐗╂枡
+          - textbox "璇烽�夋嫨浜у搧鐗╂枡" [disabled] [ref=e2868]: 绮捐悩
+        - generic [ref=e2874]:
+          - generic [ref=e2875]: 渚涘簲鍟�
+          - generic [ref=e2881]:
+            - combobox "渚涘簲鍟�" [disabled] [ref=e2883]
+            - generic: 璇烽�夋嫨渚涘簲鍟�
+        - generic [ref=e2884]:
+          - generic [ref=e2885]: 渚涘簲鍟嗘壒娆″彿
+          - textbox "渚涘簲鍟嗘壒娆″彿" [disabled] [ref=e2890]:
+            - /placeholder: 璇疯緭鍏ヤ緵搴斿晢鎵规鍙�
+            - text: JN-20260918-A01
+        - generic [ref=e2891]:
+          - generic [ref=e2892]:
+            - generic [ref=e2893]: "*"
+            - text: 鏈鎺ユ敹鏁伴噺
+          - spinbutton "* 鏈鎺ユ敹鏁伴噺" [disabled] [ref=e2900]: "2000.00"
+        - generic [ref=e2901]:
+          - generic [ref=e2902]:
+            - generic [ref=e2903]: "*"
+            - text: 鍚堟牸鍝佹暟閲�
+          - spinbutton "* 鍚堟牸鍝佹暟閲�" [disabled] [ref=e2910]: "198"
+        - generic [ref=e2911]:
+          - generic [ref=e2912]:
+            - generic [ref=e2913]: "*"
+            - text: 涓嶅悎鏍煎搧鏁伴噺
+            - img [ref=e2914] [cursor=pointer]
+          - spinbutton "* 涓嶅悎鏍煎搧鏁伴噺" [disabled] [ref=e2923]: "2"
+        - generic [ref=e2924]:
+          - generic [ref=e2925]:
+            - generic [ref=e2926]: "*"
+            - text: 鏉ユ枡鏃ユ湡
+          - generic [ref=e2932]:
+            - textbox "* 鏉ユ枡鏃ユ湡" [disabled] [ref=e2933]:
+              - /placeholder: 璇烽�夋嫨鏉ユ枡鏃ユ湡
+              - text: 2026-09-17
+            - generic:
+              - img "calendar"
+        - generic [ref=e2934]:
+          - generic [ref=e2935]:
+            - generic [ref=e2936]: "*"
+            - text: 妫�娴嬩汉鍛�
+          - generic [ref=e2942]:
+            - combobox "* 妫�娴嬩汉鍛�" [disabled] [ref=e2944]
+            - generic "寮犱笁" [ref=e2945]
+        - generic [ref=e2946]:
+          - generic [ref=e2947]:
+            - generic [ref=e2948]: "*"
+            - text: 妫�娴嬫棩鏈�
+          - generic [ref=e2954]:
+            - textbox "* 妫�娴嬫棩鏈�" [disabled] [ref=e2955]:
+              - /placeholder: 璇烽�夋嫨妫�娴嬫棩鏈�
+              - text: 2026-09-18
+            - generic:
+              - img "calendar"
+        - generic [ref=e2956]:
+          - generic [ref=e2957]: 妫�娴嬬粨鏋�
+          - generic [ref=e2963]:
+            - combobox "妫�娴嬬粨鏋�" [disabled] [ref=e2965]
+            - generic "鏍¢獙閫氳繃" [ref=e2966]
+        - generic [ref=e2967]:
+          - generic [ref=e2968]: 澶囨敞
+          - textbox "澶囨敞" [disabled] [ref=e2973]:
+            - /placeholder: 璇疯緭鍏ュ娉�
+            - text: 婕旂ず鏁版嵁
+      - generic [ref=e2975]:
+        - generic [ref=e2976]: 缂洪櫡鎯呭喌
+        - table [ref=e2979]:
+          - rowgroup [ref=e2980]:
+            - row [ref=e2981]:
+              - rowheader "鑷村懡缂洪櫡鏁�" [ref=e2982]
+              - cell "0" [ref=e2983]
+              - rowheader "涓ラ噸缂洪櫡鏁�" [ref=e2985]
+              - cell "0" [ref=e2986]
+              - rowheader "杞诲井缂洪櫡鏁�" [ref=e2988]
+              - cell "0" [ref=e2989]
+            - row [ref=e2991]:
+              - rowheader "鑷村懡缂洪櫡鐜�" [ref=e2992]
+              - cell "0%" [ref=e2993]
+              - rowheader "涓ラ噸缂洪櫡鐜�" [ref=e2995]
+              - cell "0%" [ref=e2996]
+              - rowheader "杞诲井缂洪櫡鐜�" [ref=e2998]
+              - cell "0%" [ref=e2999]
+      - generic [ref=e3001]:
+        - tablist [ref=e3002]:
+          - generic [ref=e3004]:
+            - tab "妫�楠岄」" [ref=e3006] [cursor=pointer]
+            - tab "妫�娴嬬粨鏋�" [selected] [ref=e3008] [cursor=pointer]
+        - generic [ref=e3010]:
+          - text: 瞟� 顪� 顦� 睿� 飱� 顧� 顫� 顫� 顧� 顦�
+          - tabpanel "妫�娴嬬粨鏋�" [ref=e4213]:
+            - generic [ref=e4218]:
+              - generic [ref=e4220]:
+                - generic [ref=e4221]: 妫�娴嬬粨鏋�
+                - generic [ref=e4224]:
+                  - button "瞟�" [ref=e4225] [cursor=pointer]
+                  - button "顪�" [ref=e4227] [cursor=pointer]
+                  - button "顦�" [ref=e4229] [cursor=pointer]
+              - generic [ref=e4237]:
+                - table [ref=e4241]:
+                  - rowgroup [ref=e4247]:
+                    - row [ref=e4248]:
+                      - columnheader "鏍峰搧缂栧彿" [ref=e4249]
+                      - columnheader "鐗╄祫SN" [ref=e4254]
+                      - columnheader "澶囨敞" [ref=e4259]
+                      - columnheader "鎿嶄綔" [ref=e4264]
+                - table [ref=e4272]:
+                  - rowgroup [ref=e4278]:
+                    - row "MIR-DEMO-01 YP-A001 璇︽儏" [ref=e4279]:
+                      - cell "MIR-DEMO-01" [ref=e4280]
+                      - cell "YP-A001" [ref=e4284]
+                      - cell [ref=e4288]
+                      - cell [ref=e4292]:
+                        - button "璇︽儏" [active] [ref=e4298] [cursor=pointer]
+              - generic [ref=e4306]:
+                - generic [ref=e4307]: 鍏� 1 鏉¤褰�
+                - generic [ref=e4309] [cursor=pointer]:
+                  - generic "20鏉�/椤�" [ref=e4310]:
+                    - textbox "璇烽�夋嫨" [ref=e4311]: 20鏉�/椤�
+                  - generic [ref=e4312]: 睿�
+                - button "飱�" [ref=e4315]
+                - button "顧�" [ref=e4317]
+                - button "顫�" [ref=e4319]
+                - button "1" [ref=e4322] [cursor=pointer]
+                - button "顫�" [ref=e4323]
+                - button "顧�" [ref=e4325]
+                - button "顦�" [ref=e4327]
+    - button [ref=e4193] [cursor=pointer]
+    - generic [ref=e4203]:
+      - button "璐ㄦ鍔╂墜" [ref=e4205] [cursor=pointer]
+      - button "鍙� 娑�" [ref=e4207] [cursor=pointer]
+    - button [ref=e4209] [cursor=pointer]
\ No newline at end of file
diff --git a/docs/project-business/data/flows.json b/docs/project-business/data/flows.json
index 7b8e761..aef97e3 100644
--- a/docs/project-business/data/flows.json
+++ b/docs/project-business/data/flows.json
@@ -29,13 +29,13 @@
        {"stage": "鑱斿姩", "action": "瀹℃壒閫氳繃鎸夊伐搴忔爣璁�: 鍊掑啿鈫掕嚜鍔ㄧ墿鏂欐秷鑰楁墸绾胯竟搴�(鍏佽璐熷簱瀛�)锛涜川妫�鈫掍骇鍑哄緟妫�琛岀瓑 IPQC锛涘叧閿潪妫�鈫掔洿鎺ヤ骇鍑哄叆搴�", "roles": ["绯荤粺鑷姩"]},
        {"stage": "瀹屽伐", "action": "浠呮湯閬撳伐搴忓洖鍐欏伐鍗曞凡鐢熶骇鏁伴噺锛岃揪鏍囪嚜鍔ㄥ畬鎴愶紱MPS 绱鍒ゆ柇瀹屾垚骞跺彂浜嬩欢缁欓攢鍞鍗�", "roles": ["绯荤粺鑷姩"]}]},
     {"id": "quality", "name": "璐ㄩ噺娴佺▼", "mermaid": "mermaid/05-quality-flow.mmd", "color": "#e06c6c",
-     "summary": "鍥涢亾妫�楠岄椄鍙�(IQC/IPQC/OQC/RQC锛屼簩鎬� 0鈫�4) + 鍒ゅ畾鍥涙灉(鍚堟牸/鐗归噰/閫�璐�/鎶ュ簾) + NCR 璇勫澶勭疆鍏抽棴锛汚I 鎻愪緵鍒ゅ畾寤鸿锛汵CR 褰撳墠浠呭彴璐︿笉瑙﹀彂杩斿伐鍗曘�傛敮鎸佸寲宸ユ姤鍛婅寖寮忥細鍒嗙粍鎸囨爣鏍�+鍏紡鏂囨湰+骞宠娴嬮噺鎵规+閲囨牱琛ㄥご+绛惧瓧鍖猴紝娴忚鍣ㄦ墦鍗版楠屾姤鍛娿��",
+     "summary": "鍥涢亾妫�楠岄椄鍙�(IQC/IPQC/OQC/RQC锛屼簩鎬� 0鈫�4) + 鍒ゅ畾鍥涙灉(鍚堟牸/鐗归噰/閫�璐�/鎶ュ簾) + NCR 璇勫澶勭疆鍏抽棴锛汚I 鎻愪緵鍒ゅ畾寤鸿锛汵CR 褰撳墠浠呭彴璐︿笉瑙﹀彂杩斿伐鍗曘�傛敮鎸佸寲宸ユ姤鍛婅寖寮忥細鍒嗙粍鎸囨爣鏍�+鍏紡鏂囨湰+骞宠娴嬮噺鎵规+閲囨牱琛ㄥご+绛惧瓧鍖猴紝娴忚鍣ㄦ墦鍗版楠屾姤鍛婏紱骞跺彲瀵煎嚭浜у搧妫�楠屽崟 Word锛堢焊璐ㄦ楠屽崟鐗堝紡锛屽垽瀹氱粨璁�/璐ㄦ绔�/妫�楠屄峰鏍嘎锋壒鍑嗙瀛楃暀绌烘墜濉紝Word 鎵撳嵃锛夈��",
      "steps": [
        {"stage": "鏉ユ枡", "action": "鍒拌揣閫氱煡/澶栧崗鍏ュ簱鈫扞QC锛岀粨璁哄洖鍐欐帹杩涘緟鍏ュ簱鎴栬Е鍙戦��璐�", "roles": ["IQC 璐ㄦ鍛�"]},
        {"stage": "杩囩▼", "action": "鎶ュ伐璐ㄦ宸ュ簭浜у嚭琛屸啋IPQC锛屽悎鏍兼媶琛屽叆搴撱�佷笉鍚堟牸鐢熸垚 NCR", "roles": ["IPQC 璐ㄦ鍛�"]},
        {"stage": "鍑鸿揣", "action": "閿�鍞嚭搴撴彁浜も啋OQC锛屽畬鎴愬悗鍑哄簱鍗曡繘鍏ュ緟鎷h揣", "roles": ["OQC 璐ㄦ鍛�"]},
        {"stage": "閫�璐�", "action": "閫�鏂�/閿�鍞��璐�/鍞悗閫�璐р啋RQC锛岀粨璁哄洖璋冨崟鎹笌鍞悗", "roles": ["RQC 璐ㄦ鍛�"]},
-       {"stage": "鎶ュ憡", "action": "妫�楠岀粨鏋滄寜鍒嗙粍鏍�+娴嬮噺鎵规褰曞叆锛�/indicator-result/report 鑱氬悎鍚庡墠绔墦鍗版楠屾姤鍛�(鍚噰鏍峰湴鐐�/璇佷功缂栧彿/鎵ц鏍囧噯/澶嶆牳路瀹℃牳绛惧瓧鍖�)", "roles": ["璐ㄦ鍛�", "澶嶆牳浜�", "瀹℃牳浜�"]},
+       {"stage": "鎶ュ憡", "action": "妫�楠岀粨鏋滄寜鍒嗙粍鏍�+娴嬮噺鎵规褰曞叆锛�/indicator-result/report 鑱氬悎鍚庡墠绔墦鍗版楠屾姤鍛�(鍚噰鏍峰湴鐐�/璇佷功缂栧彿/鎵ц鏍囧噯/澶嶆牳路瀹℃牳绛惧瓧鍖�)锛�/indicator-result/export-product-word 瀵煎嚭浜у搧妫�楠屽崟Word(鏃犳妧鏈寚鏍囧垪路鍒ゅ畾缁撹/璐ㄦ涓撶敤绔�/妫�楠屄峰鏍嘎锋壒鍑嗙瀛楃暀绌烘墜濉峰钩琛屾祴閲忛】鍙峰悎骞堵蜂笅杞藉悗Word鎵撳嵃锛涜川妫�鍗曡鎯呮娴嬬粨鏋淭ab鍙寜鏍峰搧鏌ョ湅鍙妫�娴嬪�兼槑缁�)", "roles": ["璐ㄦ鍛�", "澶嶆牳浜�", "瀹℃牳浜�"]},
        {"stage": "涓嶅悎鏍�", "action": "NCR: 寰呰瘎瀹♀啋璇勫鈫掑缃�(閫�璐�/鎶ュ簾/杩斿伐/璁╂鎺ユ敹/闄嶇骇)鈫掑叧闂�", "roles": ["璐ㄩ噺宸ョ▼甯�"]}]},
     {"id": "warehouse", "name": "浠撳偍娴佺▼", "mermaid": "mermaid/06-warehouse-flow.mmd", "color": "#7e6bd6",
      "summary": "15 绫诲崟鎹┍鍔ㄥ簱瀛樺彴璐�(鍏厓缁勩�佸洓閲�)鍙樺姩锛屽叏閮ㄧ粡浜嬪姟娴佹按鐣欑棔锛涙敮鎸佽皟鎷ㄥ湪閫斻�佺洏鐐硅皟鏁淬�佹壒娆�/SN 杩芥函銆佸簱瀛樺崰鐢ㄤ笌鍥涚骇鍐荤粨銆佺嚎杈硅櫄鎷熷簱璐熷簱瀛橈紱瀵瑰 WmsStockApi 渚� ERP 鏀跺彂銆�",
diff --git a/docs/project-business/index.html b/docs/project-business/index.html
index 0bac6c9..2cf6913 100644
--- a/docs/project-business/index.html
+++ b/docs/project-business/index.html
@@ -475,7 +475,7 @@
     {"name": "OQC鍑鸿揣妫�楠�", "module": "璐ㄩ噺", "table": "mes_qc_oqc", "doc": "閿�鍞嚭搴撴彁浜よЕ鍙戯紝瀹屾垚鎺ㄨ繘鍑哄簱鍗曞緟鎷h揣", "upstream": ["閿�鍞嚭搴撳崟"], "downstream": ["閿�鍞嚭搴撳崟(鎺ㄨ繘)"], "keywords": "OQC 鍑鸿揣妫�楠� 鍑哄巶妫�楠�"},
     {"name": "RQC閫�璐ф楠�", "module": "璐ㄩ噺", "table": "mes_qc_rqc", "doc": "鐢熶骇閫�鏂�/閿�鍞��璐�/鍞悗閫�璐цЕ鍙戯紝缁撹鍥炶皟鍞悗锛涘洓绫绘楠屽崟鍧囨敮鎸侀噰鏍峰湴鐐�/璇佷功缂栧彿/鎵ц鏍囧噯琛ㄥご涓庡鏍嘎峰鏍镐汉锛屽苟鍙墦鍗版楠屾姤鍛�", "upstream": ["閫�鏂�", "閫�璐�"], "downstream": ["閫�璐у叆搴�", "鍞悗鍥炶皟", "妫�楠屾姤鍛婃墦鍗�"], "keywords": "RQC 閫�璐ф楠�"},
     {"name": "妫�楠屾寚鏍�", "module": "璐ㄩ噺", "table": "mes_qc_indicator", "doc": "鏀寔涓ょ骇鍒嗙粍鏍�(itemType褰曞叆/鍒嗙粍+parentId)銆佸叕寮忔枃鏈睍绀恒�佸崟浣嶆枃鏈�佸悓绾ф帓搴忥紱鍒嗙粍椤逛笉褰曞�硷紱鏈夊瓙椤圭鍒狅紱鍚屽眰绾у悕绉板彲閲嶅", "upstream": [], "downstream": ["璐ㄦ鏂规", "妫�楠屾姤鍛婃墦鍗�"], "keywords": "妫�楠屾寚鏍� indicator 鍒嗙粍 鍏紡 鍖栧伐"},
-    {"name": "妫�楠屾姤鍛婃墦鍗�", "module": "璐ㄩ噺", "table": "mes_qc_indicator_result_detail", "doc": "鍖栧伐鎶ュ憡鑼冨紡锛氬钩琛屾祴閲忔壒娆�(measure_no)+鍒嗙粍鐭╅樀+鍏紡鍒�+绛惧瓧鍖猴紱/mes/qc/indicator-result/report 鑱氬悎锛屽墠绔祻瑙堝櫒鎵撳嵃", "upstream": ["IQC鏉ユ枡妫�楠�", "IPQC杩囩▼妫�楠�", "OQC鍑鸿揣妫�楠�", "RQC閫�璐ф楠�", "妫�楠屾寚鏍�"], "downstream": [], "keywords": "鎵撳嵃 鎶ュ憡 娴嬮噺鎵规 绛惧瓧 姝d竵閱� GB/T6027"},
+    {"name": "妫�楠屾姤鍛婃墦鍗�", "module": "璐ㄩ噺", "table": "mes_qc_indicator_result_detail", "doc": "鍖栧伐鎶ュ憡鑼冨紡锛氬钩琛屾祴閲忔壒娆�(measure_no)+鍒嗙粍鐭╅樀+鍏紡鍒�+绛惧瓧鍖猴紱/mes/qc/indicator-result/report 鑱氬悎锛屽墠绔祻瑙堝櫒鎵撳嵃锛涘彟鏈変骇鍝佹楠屽崟Word瀵煎嚭 /mes/qc/indicator-result/export-product-word锛堢焊璐ㄦ楠屽崟鐗堝紡锛氭棤鎶�鏈寚鏍囧垪锛屽垽瀹氱粨璁�/璐ㄦ涓撶敤绔犵暀绌烘墜濉紝骞宠娴嬮噺椤垮彿鍚堝苟锛岀敓浜у崟浣嶅啓姝汇�佺敓浜ф椂闂�=鍗曟嵁鍒涘缓鏃堕棿锛屼笅杞藉悗Word鎵撳嵃锛�", "upstream": ["IQC鏉ユ枡妫�楠�", "IPQC杩囩▼妫�楠�", "OQC鍑鸿揣妫�楠�", "RQC閫�璐ф楠�", "妫�楠屾寚鏍�"], "downstream": [], "keywords": "鎵撳嵃 鎶ュ憡 娴嬮噺鎵规 绛惧瓧 姝d竵閱� GB/T6027 Word 浜у搧妫�楠屽崟"},
     {"name": "NCR涓嶅悎鏍煎搧", "module": "璐ㄩ噺", "table": "mes_qc_ncr", "doc": "寰呰瘎瀹�0鈫掑凡璇勫6鈫掑凡澶勭疆7鈫掑凡鍏抽棴8锛屽缃�:閫�璐�/鎶ュ簾/杩斿伐/璁╂鎺ユ敹/闄嶇骇", "upstream": ["IQC/IPQC/OQC/RQC"], "downstream": ["閫�璐�/鎶ュ簾/杩斿伐(鍙拌处)"], "keywords": "NCR 涓嶅悎鏍� 澶勭疆 鐗归噰 鎶ュ簾"},
     {"name": "璁惧", "module": "璁惧", "table": "mes_dv_machinery", "doc": "鍙拌处鐘舵��:鍋滄満/鐢熶骇涓�/淇濆吇涓紱鐐规路淇濆吇路缁翠慨宸ュ崟锛汚I 椋庨櫓棰勬祴娑堣垂鍏舵暟鎹�", "upstream": [], "downstream": ["鐐规", "缁翠慨", "鐢熶骇椋庨櫓棰勬祴"], "keywords": "璁惧 鐐规 淇濆吇 缁翠慨 machinery"},
     {"name": "鍞悗宸ュ崟", "module": "鍞悗", "table": "after_sale_ticket", "doc": "鑽夌0鈫掑鐞嗕腑10鈫掑緟鍏ュ簱30鈫掑緟閫�娆�40鈫掑畬缁�50鈫掑叧闂�60/鍙栨秷99锛屽垽瀹�:涓�鑸�/缁翠慨/閫�璐�", "upstream": ["瀹㈡埛鍙嶉(浜哄伐褰曞叆)"], "downstream": ["缁翠慨璁板綍", "閫�璐х敵璇�"], "keywords": "鍞悗 宸ュ崟 ticket 缁翠慨"},
@@ -516,13 +516,13 @@
        {"stage": "鑱斿姩", "action": "瀹℃壒閫氳繃鎸夊伐搴忔爣璁�: 鍊掑啿鈫掕嚜鍔ㄧ墿鏂欐秷鑰楁墸绾胯竟搴�(鍏佽璐熷簱瀛�)锛涜川妫�鈫掍骇鍑哄緟妫�琛岀瓑 IPQC锛涘叧閿潪妫�鈫掔洿鎺ヤ骇鍑哄叆搴�", "roles": ["绯荤粺鑷姩"]},
        {"stage": "瀹屽伐", "action": "浠呮湯閬撳伐搴忓洖鍐欏伐鍗曞凡鐢熶骇鏁伴噺锛岃揪鏍囪嚜鍔ㄥ畬鎴愶紱MPS 绱鍒ゆ柇瀹屾垚骞跺彂浜嬩欢缁欓攢鍞鍗�", "roles": ["绯荤粺鑷姩"]}]},
     {"id": "quality", "name": "璐ㄩ噺娴佺▼", "mermaid": "mermaid/05-quality-flow.mmd", "color": "#e06c6c",
-     "summary": "鍥涢亾妫�楠岄椄鍙�(IQC/IPQC/OQC/RQC锛屼簩鎬� 0鈫�4) + 鍒ゅ畾鍥涙灉(鍚堟牸/鐗归噰/閫�璐�/鎶ュ簾) + NCR 璇勫澶勭疆鍏抽棴锛汚I 鎻愪緵鍒ゅ畾寤鸿锛汵CR 褰撳墠浠呭彴璐︿笉瑙﹀彂杩斿伐鍗曘�傛敮鎸佸寲宸ユ姤鍛婅寖寮忥細鍒嗙粍鎸囨爣鏍�+鍏紡鏂囨湰+骞宠娴嬮噺鎵规+閲囨牱琛ㄥご+绛惧瓧鍖猴紝娴忚鍣ㄦ墦鍗版楠屾姤鍛娿��",
+     "summary": "鍥涢亾妫�楠岄椄鍙�(IQC/IPQC/OQC/RQC锛屼簩鎬� 0鈫�4) + 鍒ゅ畾鍥涙灉(鍚堟牸/鐗归噰/閫�璐�/鎶ュ簾) + NCR 璇勫澶勭疆鍏抽棴锛汚I 鎻愪緵鍒ゅ畾寤鸿锛汵CR 褰撳墠浠呭彴璐︿笉瑙﹀彂杩斿伐鍗曘�傛敮鎸佸寲宸ユ姤鍛婅寖寮忥細鍒嗙粍鎸囨爣鏍�+鍏紡鏂囨湰+骞宠娴嬮噺鎵规+閲囨牱琛ㄥご+绛惧瓧鍖猴紝娴忚鍣ㄦ墦鍗版楠屾姤鍛婏紱骞跺彲瀵煎嚭浜у搧妫�楠屽崟 Word锛堢焊璐ㄧ増寮忥紝鍒ゅ畾缁撹/璐ㄦ绔�/妫�楠屄峰鏍嘎锋壒鍑嗙瀛楃暀绌烘墜濉紝Word 鎵撳嵃锛夈��",
      "steps": [
        {"stage": "鏉ユ枡", "action": "鍒拌揣閫氱煡/澶栧崗鍏ュ簱鈫扞QC锛岀粨璁哄洖鍐欐帹杩涘緟鍏ュ簱鎴栬Е鍙戦��璐�", "roles": ["IQC 璐ㄦ鍛�"]},
        {"stage": "杩囩▼", "action": "鎶ュ伐璐ㄦ宸ュ簭浜у嚭琛屸啋IPQC锛屽悎鏍兼媶琛屽叆搴撱�佷笉鍚堟牸鐢熸垚 NCR", "roles": ["IPQC 璐ㄦ鍛�"]},
        {"stage": "鍑鸿揣", "action": "閿�鍞嚭搴撴彁浜も啋OQC锛屽畬鎴愬悗鍑哄簱鍗曡繘鍏ュ緟鎷h揣", "roles": ["OQC 璐ㄦ鍛�"]},
        {"stage": "閫�璐�", "action": "閫�鏂�/閿�鍞��璐�/鍞悗閫�璐р啋RQC锛岀粨璁哄洖璋冨崟鎹笌鍞悗", "roles": ["RQC 璐ㄦ鍛�"]},
-       {"stage": "鎶ュ憡", "action": "妫�楠岀粨鏋滄寜鍒嗙粍鏍�+娴嬮噺鎵规褰曞叆锛�/indicator-result/report 鑱氬悎鍚庡墠绔墦鍗版楠屾姤鍛�(鍚噰鏍峰湴鐐�/璇佷功缂栧彿/鎵ц鏍囧噯/澶嶆牳路瀹℃牳绛惧瓧鍖�)", "roles": ["璐ㄦ鍛�", "澶嶆牳浜�", "瀹℃牳浜�"]},
+       {"stage": "鎶ュ憡", "action": "妫�楠岀粨鏋滄寜鍒嗙粍鏍�+娴嬮噺鎵规褰曞叆锛�/indicator-result/report 鑱氬悎鍚庡墠绔墦鍗版楠屾姤鍛�(鍚噰鏍峰湴鐐�/璇佷功缂栧彿/鎵ц鏍囧噯/澶嶆牳路瀹℃牳绛惧瓧鍖�)锛�/indicator-result/export-product-word 瀵煎嚭浜у搧妫�楠屽崟Word(鏃犳妧鏈寚鏍囧垪路鍒ゅ畾缁撹/璐ㄦ绔�/妫�楠屄峰鏍嘎锋壒鍑嗙瀛楃暀绌烘墜濉稺ord鎵撳嵃锛涜鎯呮娴嬬粨鏋淭ab鍙寜鏍峰搧鏌ョ湅鍙鏄庣粏)", "roles": ["璐ㄦ鍛�", "澶嶆牳浜�", "瀹℃牳浜�"]},
        {"stage": "涓嶅悎鏍�", "action": "NCR: 寰呰瘎瀹♀啋璇勫鈫掑缃�(閫�璐�/鎶ュ簾/杩斿伐/璁╂鎺ユ敹/闄嶇骇)鈫掑叧闂�", "roles": ["璐ㄩ噺宸ョ▼甯�"]}]},
     {"id": "warehouse", "name": "浠撳偍娴佺▼", "mermaid": "mermaid/06-warehouse-flow.mmd", "color": "#7e6bd6",
      "summary": "15 绫诲崟鎹┍鍔ㄥ簱瀛樺彴璐�(鍏厓缁勩�佸洓閲�)鍙樺姩锛屽叏閮ㄧ粡浜嬪姟娴佹按鐣欑棔锛涙敮鎸佽皟鎷ㄥ湪閫斻�佺洏鐐硅皟鏁淬�佹壒娆�/SN 杩芥函銆佸簱瀛樺崰鐢ㄤ笌鍥涚骇鍐荤粨銆佺嚎杈硅櫄鎷熷簱璐熷簱瀛橈紱瀵瑰 WmsStockApi 渚� ERP 鏀跺彂銆�",
diff --git a/docs/project-business/mermaid/05-quality-flow.mmd b/docs/project-business/mermaid/05-quality-flow.mmd
index 8fa15da..af16dd4 100644
--- a/docs/project-business/mermaid/05-quality-flow.mmd
+++ b/docs/project-business/mermaid/05-quality-flow.mmd
@@ -20,3 +20,4 @@
   Q8[鏀拺鏁版嵁:璐ㄦ鏂规路妫�楠屾寚鏍嚶风己闄峰簱路鎸囨爣缁撴灉] --- A1
   Q9[鍖栧伐鎶ュ憡澧炲己:鎸囨爣鍒嗙粍鏍�+鍏紡鏂囨湰路骞宠娴嬮噺鎵规路閲囨牱鍦扮偣/璇佷功缂栧彿/鎵ц鏍囧噯琛ㄥご路澶嶆牳浜�/瀹℃牳浜篯 --- Q8
   A1 & A2 & A3 & A4 --> P1[妫�楠屾姤鍛婂崟鎵撳嵃路鍓嶇娴忚鍣ㄦ墦鍗奥峰惈绛惧瓧鍖篯
+  A1 & A2 & A3 & A4 --> P2[浜у搧妫�楠屽崟Word瀵煎嚭路export-product-word路鏃犳妧鏈寚鏍囧垪路鍒ゅ畾缁撹/璐ㄦ绔犵暀绌烘墜濉稺ord鎵撳嵃]
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/MesQcIndicatorResultController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/MesQcIndicatorResultController.java
index 6e5a382..6a8021e 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/MesQcIndicatorResultController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/MesQcIndicatorResultController.java
@@ -1,8 +1,10 @@
 package cn.iocoder.yudao.module.mes.controller.admin.qc.indicatorresult;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.http.HttpUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.mes.controller.admin.qc.indicatorresult.vo.*;
 import cn.iocoder.yudao.module.mes.dal.dataobject.qc.indicator.MesQcIndicatorDO;
@@ -16,6 +18,7 @@
 import cn.iocoder.yudao.module.mes.enums.qc.MesQcIndicatorItemTypeEnum;
 import cn.iocoder.yudao.module.mes.service.qc.indicator.MesQcIndicatorService;
 import cn.iocoder.yudao.module.mes.service.qc.indicatorresult.MesQcIndicatorResultService;
+import cn.iocoder.yudao.module.mes.service.qc.indicatorresult.MesQcProductReportWordBuilder;
 import cn.iocoder.yudao.module.mes.service.qc.indicatorresult.MesQcReportService;
 import cn.iocoder.yudao.module.mes.service.qc.ipqc.MesQcIpqcLineService;
 import cn.iocoder.yudao.module.mes.service.qc.iqc.MesQcIqcLineService;
@@ -26,11 +29,13 @@
 import io.swagger.v3.oas.annotations.Parameters;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -137,6 +142,29 @@
         return success(reportService.getQcReportData(qcId, qcType, resultId));
     }
 
+    @GetMapping("/export-product-word")
+    @Operation(summary = "瀵煎嚭浜у搧妫�楠屽崟 Word锛堢焊璐ㄦ楠屽崟鐗堝紡锛氭棤鎶�鏈寚鏍囧垪锛屽垽瀹氱粨璁�/璐ㄦ涓撶敤绔犵暀绌烘墜濉紝鎵撳嵃鐢� Word 鎵撳紑锛�")
+    @Parameters({
+            @Parameter(name = "qcId", description = "璐ㄦ鍗旾D", required = true, example = "1"),
+            @Parameter(name = "qcType", description = "璐ㄦ绫诲瀷", required = true, example = "1"),
+            @Parameter(name = "resultId", description = "妫�楠岀粨鏋滐紙鏍峰搧锛夌紪鍙凤紝鍙笉浼狅紱澶氭牱鍝佹椂鐢ㄤ簬閫夋嫨", example = "1")
+    })
+    @PreAuthorize("@ss.hasAnyPermissions('mes:qc-iqc:query', 'mes:qc-ipqc:query', 'mes:qc-oqc:query', 'mes:qc-rqc:query')")
+    public void exportProductWord(
+            @RequestParam("qcId") Long qcId,
+            @RequestParam("qcType") Integer qcType,
+            @RequestParam(value = "resultId", required = false) Long resultId,
+            HttpServletResponse response) throws IOException {
+        MesQcQcReportRespVO report = reportService.getQcReportData(qcId, qcType, resultId);
+        byte[] docx = MesQcProductReportWordBuilder.build(report);
+        String productName = StrUtil.isNotBlank(report.getItemName()) ? report.getItemName() : "浜у搧";
+        String filename = productName + "浜у搧璐ㄩ噺妫�楠屽崟"
+                + (StrUtil.isNotBlank(report.getDocCode()) ? "-" + report.getDocCode() : "") + ".docx";
+        response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
+        response.addHeader("Content-Disposition", "attachment;filename=" + HttpUtils.encodeUtf8(filename));
+        response.getOutputStream().write(docx);
+    }
+
     // ==================== 鎷兼帴 VO ====================
 
     /**
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/vo/MesQcQcReportRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/vo/MesQcQcReportRespVO.java
index cb51007..9ca3a6f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/vo/MesQcQcReportRespVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/vo/MesQcQcReportRespVO.java
@@ -52,6 +52,12 @@
     @Schema(description = "妫�娴嬬粨鏋滐紙瀛楀吀 mes_qc_check_result锛�", example = "1")
     private Integer checkResult;
 
+    @Schema(description = "妫�楠屾棩鏈�", example = "2026-08-30T01:00:00")
+    private LocalDateTime inspectDate;
+
+    @Schema(description = "璐ㄦ鍗曞垱寤烘椂闂达紝浜у搧妫�楠屽崟鎵撳嵃涓虹敓浜ф椂闂�", example = "2026-08-29T10:00:00")
+    private LocalDateTime docCreateTime;
+
     // ========== 绛惧瓧鍖� ==========
 
     @Schema(description = "鍒嗘瀽鑰咃紙妫�娴嬩汉锛夌敤鎴风紪鍙�", example = "1")
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcProductReportWordBuilder.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcProductReportWordBuilder.java
new file mode 100644
index 0000000..bee442a
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcProductReportWordBuilder.java
@@ -0,0 +1,326 @@
+package cn.iocoder.yudao.module.mes.service.qc.indicatorresult;
+
+import cn.iocoder.yudao.module.mes.controller.admin.qc.indicatorresult.vo.MesQcQcReportRespVO;
+import cn.iocoder.yudao.module.mes.enums.qc.MesQcIndicatorItemTypeEnum;
+import org.apache.poi.xwpf.usermodel.*;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 浜у搧妫�楠屽崟锛堢焊璐�"脳脳浜у搧璐ㄩ噺妫�楠屽崟"鐗堝紡锛塛ord 鏋勫缓鍣�
+ *
+ * 鐗堝紡锛氭爣棰橈紙鍏徃 + 浜у搧妫�楠屽崟锛夆啋 琛ㄥご淇℃伅 5 琛� 鈫� 妫�楠岄」鐩�/妫�楠岀粨鏋� 涓ゅ垪鐭╅樀 鈫�
+ * 鍒ゅ畾缁撹/璐ㄦ涓撶敤绔狅紙鐣欑┖锛屾墦鍗板悗鎵嬪~锛夆啋 澶囨敞 鈫� 妫�楠�/澶嶆牳/鎵瑰噯绛惧瓧琛屻��
+ * 涓嶅惈鎶�鏈寚鏍囧垪锛涘垎缁勯」涓嶅睍绀猴紝褰曞叆椤瑰钩閾猴紱骞宠娴嬮噺澶氬�奸】鍙峰悎骞躲��
+ */
+public class MesQcProductReportWordBuilder {
+
+    /** 鐢熶骇鍗曚綅鍥哄畾鏂囨锛堜笌绾歌川鎶ュ憡涓�鑷达紝鍐欐锛� */
+    private static final String COMPANY_NAME = "瀹佸涔濇硴鍖栧伐绉戞妧鏈夐檺鍏徃";
+
+    /** 澶囨敞榛樿鏂囨锛堟棤鍗曟嵁澶囨敞鏃朵娇鐢紝涓庣焊璐ㄦ姤鍛婁竴鑷达級 */
+    private static final String DEFAULT_REMARK = "妫�楠岀粨鏋滀粎瀵规牱鍝佹湰韬垨鏈壒娆¤礋璐c��";
+
+    /** 绌哄�煎崰浣嶇锛屼笌绾歌川鎶ュ憡 "/" 鍐欐硶涓�鑷� */
+    private static final String EMPTY = "/";
+
+    /** 鍥涘垪琛ㄥ锛坱wips锛夛紝鎬诲 9000 鈮� 15.9cm锛岄�傞厤 A4 绔栫増 2.5cm 椤佃竟璺� */
+    private static final int[] COL_WIDTHS = {1700, 2800, 1700, 2800};
+    private static final int TABLE_WIDTH = 9000;
+
+    private static final String FONT = "瀹嬩綋";
+    private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+
+    private MesQcProductReportWordBuilder() {
+    }
+
+    /**
+     * 鏋勫缓浜у搧妫�楠屽崟 docx 瀛楄妭
+     */
+    public static byte[] build(MesQcQcReportRespVO report) throws IOException {
+        try (XWPFDocument doc = new XWPFDocument(); ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            setupPage(doc);
+            writeTitle(doc, report);
+            writeHeaderTable(doc, report);
+            writeItemTable(doc, report);
+            writeConclusionTable(doc);
+            writeRemarkTable(doc, report);
+            writeSignLine(doc);
+            doc.write(out);
+            return out.toByteArray();
+        }
+    }
+
+    // ========== 椤甸潰/鏍囬 ==========
+
+    private static void setupPage(XWPFDocument doc) {
+        CTBody body = doc.getDocument().getBody();
+        CTSectPr sectPr = body.isSetSectPr() ? body.getSectPr() : body.addNewSectPr();
+        // A4 绔栫増
+        CTPageSz pageSz = sectPr.addNewPgSz();
+        pageSz.setW(BigInteger.valueOf(11906));
+        pageSz.setH(BigInteger.valueOf(16838));
+        CTPageMar pageMar = sectPr.addNewPgMar();
+        BigInteger margin = BigInteger.valueOf(1418); // 2.5cm
+        pageMar.setLeft(margin);
+        pageMar.setRight(margin);
+        pageMar.setTop(margin);
+        pageMar.setBottom(margin);
+    }
+
+    private static void writeTitle(XWPFDocument doc, MesQcQcReportRespVO report) {
+        String product = notBlank(report.getItemName()) ? report.getItemName()
+                : (notBlank(report.getDocName()) ? report.getDocName() : "浜у搧");
+        addParagraph(doc, COMPANY_NAME, 16, true, ParagraphAlignment.CENTER);
+        addParagraph(doc, product + "浜у搧璐ㄩ噺妫�楠屽崟", 14, true, ParagraphAlignment.CENTER);
+    }
+
+    // ========== 琛ㄥご淇℃伅 ==========
+
+    private static XWPFTable writeHeaderTable(XWPFDocument doc, MesQcQcReportRespVO report) {
+        XWPFTable table = createTable(doc);
+        addRow(table, label("鐢熶骇鍗曚綅"), value(COMPANY_NAME, 3));
+        addRow(table, label("鐢熶骇鏃堕棿"), value(formatDate(report.getDocCreateTime())),
+                label("鎵�    鍙�"), value(blank(report.getBatchNo())));
+        addRow(table, label("閲囨牱鍦扮偣"), value(blank(report.getSamplingLocation())),
+                label("鎵�    閲�"), value(formatQuantity(report.getBatchQuantity())));
+        addRow(table, label("閲� 鏍� 鑰�"), value(blank(report.getInspectorName())),
+                label("鍙栨牱鏃ユ湡"), value(formatDate(report.getSamplingTime())));
+        addRow(table, label("鎵ц鏍囧噯"), value(blank(report.getExecuteStandard())),
+                label("妫�楠屾棩鏈�"), value(formatDate(report.getInspectDate())));
+        return table;
+    }
+
+    // ========== 妫�楠岄」鐩煩闃� ==========
+
+    private static XWPFTable writeItemTable(XWPFDocument doc, MesQcQcReportRespVO report) {
+        XWPFTable table = createTable(doc);
+        addRow(table, labelSpan("妫�楠岄」鐩�", 2), labelSpan("妫�楠岀粨鏋�", 2));
+        List<MesQcQcReportRespVO.ReportItem> records = new ArrayList<>();
+        collectRecordItems(report.getItems(), records);
+        if (records.isEmpty()) {
+            addRow(table, valueSpan(EMPTY, 2), valueSpan(EMPTY, 2));
+            return table;
+        }
+        for (MesQcQcReportRespVO.ReportItem item : records) {
+            addRow(table, valueSpan(blank(item.getIndicatorName()), 2), valueSpan(joinMeasures(item), 2));
+        }
+        return table;
+    }
+
+    /**
+     * 骞抽摵褰曞叆椤癸細鍒嗙粍椤癸紙itemType=2锛変笉灞曠ず琛屾湰韬紝浠呭睍寮�鍏跺瓙褰曞叆椤�
+     */
+    private static void collectRecordItems(List<MesQcQcReportRespVO.ReportItem> nodes,
+                                           List<MesQcQcReportRespVO.ReportItem> out) {
+        if (nodes == null) {
+            return;
+        }
+        for (MesQcQcReportRespVO.ReportItem node : nodes) {
+            boolean group = node.getItemType() != null
+                    && node.getItemType().equals(MesQcIndicatorItemTypeEnum.GROUP.getType());
+            if (group) {
+                collectRecordItems(node.getChildren(), out);
+            } else {
+                out.add(node);
+            }
+        }
+    }
+
+    /**
+     * 骞宠娴嬮噺澶氬�奸】鍙峰悎骞讹紱鏃犲�兼椂 "/"
+     */
+    private static String joinMeasures(MesQcQcReportRespVO.ReportItem item) {
+        List<MesQcQcReportRespVO.ReportMeasure> measures = item.getMeasures();
+        if (measures == null || measures.isEmpty()) {
+            return EMPTY;
+        }
+        return measures.stream()
+                .map(MesQcQcReportRespVO.ReportMeasure::getValue)
+                .filter(MesQcProductReportWordBuilder::notBlank)
+                .reduce((a, b) -> a + "銆�" + b)
+                .orElse(EMPTY);
+    }
+
+    // ========== 鍒ゅ畾缁撹 / 璐ㄦ涓撶敤绔狅紙鐣欑┖鍚庡~锛� ==========
+
+    private static XWPFTable writeConclusionTable(XWPFDocument doc) {
+        XWPFTable table = createTable(doc);
+        XWPFTableRow row = addRow(table, valueLeftSpan("鍒ゅ畾缁撹锛�", 2), valueLeftSpan("璐ㄦ涓撶敤绔狅細", 2));
+        // 棰勭暀鎵嬪啓/鐩栫珷楂樺害
+        setRowHeight(row, 2550);
+        return table;
+    }
+
+    // ========== 澶囨敞 ==========
+
+    private static XWPFTable writeRemarkTable(XWPFDocument doc, MesQcQcReportRespVO report) {
+        XWPFTable table = createTable(doc);
+        return addRowTo(table, label("澶�    娉�"),
+                valueLeftSpan(notBlank(report.getRemark()) ? report.getRemark() : DEFAULT_REMARK, 3));
+    }
+
+    // ========== 绛惧瓧琛� ==========
+
+    /** 绛惧瓧琛屽浐瀹氱暀绌猴紝涓庡垽瀹氱粨璁�/璐ㄦ涓撶敤绔犱竴鑷达紝鎵撳嵃鍚庢墜鍐� */
+    private static void writeSignLine(XWPFDocument doc) {
+        XWPFParagraph paragraph = doc.createParagraph();
+        paragraph.setAlignment(ParagraphAlignment.LEFT);
+        paragraph.setSpacingBefore(400);
+        addRun(paragraph, "妫�楠岋細銆�銆�銆�銆�銆�銆�銆�銆�銆�澶嶆牳锛氥��銆�銆�銆�銆�銆�銆�銆�銆�鎵瑰噯锛氥��銆�銆�銆�銆�銆�銆�銆�", 12, true);
+    }
+
+    // ========== 琛ㄦ牸鍩虹 ==========
+
+    private static XWPFTable createTable(XWPFDocument doc) {
+        // POI 榛樿琛ㄨ嚜甯� 1 涓┖琛� + tblPr锛堝惈鍏ㄨ竟妗嗭級锛屽垹鎺夐粯璁よ澶嶇敤鍏� tblPr 鍗冲彲
+        XWPFTable table = doc.createTable();
+        while (table.getNumberOfRows() > 0) {
+            table.removeRow(0);
+        }
+        CTTbl ctTbl = table.getCTTbl();
+        CTTblPr tblPr = ctTbl.getTblPr();
+        CTTblWidth tblW = tblPr.getTblW();
+        tblW.setType(STTblWidth.DXA);
+        tblW.setW(BigInteger.valueOf(TABLE_WIDTH));
+        if (!tblPr.isSetTblLayout()) {
+            tblPr.addNewTblLayout().setType(STTblLayoutType.FIXED);
+        }
+        // POI 鏂板缓鐨勮〃涓嶅惈 tblGrid锛岀洿鎺ヨˉ涓�
+        CTTblGrid grid = ctTbl.addNewTblGrid();
+        for (int width : COL_WIDTHS) {
+            grid.addNewGridCol().setW(BigInteger.valueOf(width));
+        }
+        return table;
+    }
+
+    /**
+     * 杩藉姞涓�琛岋紱姣忎釜鐗囨鎸夌粰瀹� span 鐢熸垚鍚堝苟鍗曞厓鏍硷紝span 鍚堣椤讳负 4
+     */
+    private static XWPFTableRow addRow(XWPFTable table, CellSpec... specs) {
+        XWPFTableRow row = table.createRow();
+        // createRow() 浼氭寜棣栬鍒楁暟鑷姩琛ユ牸锛屾竻鎺夊悗鎸夌墖娈甸噸寤�
+        while (row.getCtRow().sizeOfTcArray() > 0) {
+            row.getCtRow().removeTc(0);
+        }
+        int colIndex = 0;
+        for (CellSpec spec : specs) {
+            XWPFTableCell cell = row.createCell();
+            applyCell(cell, spec, colIndex);
+            colIndex += spec.span();
+        }
+        return row;
+    }
+
+    private static XWPFTable addRowTo(XWPFTable table, CellSpec... specs) {
+        addRow(table, specs);
+        return table;
+    }
+
+    private static void applyCell(XWPFTableCell cell, CellSpec spec, int colIndex) {
+        CTTc tc = cell.getCTTc();
+        CTTcPr tcPr = tc.isSetTcPr() ? tc.getTcPr() : tc.addNewTcPr();
+        int width = 0;
+        for (int i = 0; i < spec.span(); i++) {
+            width += COL_WIDTHS[colIndex + i];
+        }
+        CTTblWidth tcW = tcPr.isSetTcW() ? tcPr.getTcW() : tcPr.addNewTcW();
+        tcW.setType(STTblWidth.DXA);
+        tcW.setW(BigInteger.valueOf(width));
+        if (spec.span() > 1) {
+            if (!tcPr.isSetGridSpan()) {
+                tcPr.addNewGridSpan().setVal(BigInteger.valueOf(spec.span()));
+            } else {
+                tcPr.getGridSpan().setVal(BigInteger.valueOf(spec.span()));
+            }
+        }
+        cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
+        XWPFParagraph paragraph = cell.getParagraphArray(0) != null
+                ? cell.getParagraphArray(0) : cell.addParagraph();
+        paragraph.setAlignment(spec.align());
+        addRun(paragraph, spec.text(), 12, spec.bold());
+    }
+
+    // ========== 鍗曞厓鏍肩墖娈垫弿杩� ==========
+
+    private record CellSpec(String text, int span, boolean bold, ParagraphAlignment align) {
+    }
+
+    private static CellSpec label(String text) {
+        return new CellSpec(text, 1, true, ParagraphAlignment.CENTER);
+    }
+
+    private static CellSpec labelSpan(String text, int span) {
+        return new CellSpec(text, span, true, ParagraphAlignment.CENTER);
+    }
+
+    private static CellSpec value(String text) {
+        return new CellSpec(text, 1, false, ParagraphAlignment.CENTER);
+    }
+
+    private static CellSpec value(String text, int span) {
+        return new CellSpec(text, span, false, ParagraphAlignment.CENTER);
+    }
+
+    private static CellSpec valueSpan(String text, int span) {
+        return new CellSpec(text, span, false, ParagraphAlignment.CENTER);
+    }
+
+    private static CellSpec valueLeftSpan(String text, int span) {
+        return new CellSpec(text, span, false, ParagraphAlignment.LEFT);
+    }
+
+    // ========== 灏忓伐鍏� ==========
+
+    private static void setRowHeight(XWPFTableRow row, int twips) {
+        CTRow ctRow = row.getCtRow();
+        CTTrPr trPr = ctRow.isSetTrPr() ? ctRow.getTrPr() : ctRow.addNewTrPr();
+        CTHeight height = trPr.addNewTrHeight();
+        height.setVal(BigInteger.valueOf(twips));
+        height.setHRule(STHeightRule.AT_LEAST);
+    }
+
+    private static void addParagraph(XWPFDocument doc, String text, int size, boolean bold,
+                                     ParagraphAlignment align) {
+        XWPFParagraph paragraph = doc.createParagraph();
+        paragraph.setAlignment(align);
+        addRun(paragraph, text, size, bold);
+    }
+
+    private static void addRun(XWPFParagraph paragraph, String text, int size, boolean bold) {
+        XWPFRun run = paragraph.createRun();
+        run.setText(text);
+        run.setFontSize(size);
+        run.setBold(bold);
+        run.setFontFamily(FONT);
+        run.setFontFamily(FONT, XWPFRun.FontCharRange.eastAsia);
+    }
+
+    private static boolean notBlank(String s) {
+        return s != null && !s.isBlank();
+    }
+
+    private static String blank(String s) {
+        return notBlank(s) ? s : EMPTY;
+    }
+
+    private static String formatDate(LocalDateTime time) {
+        return time == null ? EMPTY : time.format(DATE_FORMATTER);
+    }
+
+    private static String formatQuantity(BigDecimal quantity) {
+        if (quantity == null) {
+            return EMPTY;
+        }
+        return quantity.stripTrailingZeros().toPlainString();
+    }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcReportServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcReportServiceImpl.java
index 9bb028c..e6245ab 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcReportServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcReportServiceImpl.java
@@ -109,6 +109,7 @@
                     .setExecuteStandard(doc.getExecuteStandard())
                     .setInspectorUserId(doc.getInspectorUserId()).setAuditUserId(doc.getAuditUserId())
                     .setApproveUserId(doc.getApproveUserId()).setCheckResult(doc.getCheckResult())
+                    .setInspectDate(doc.getInspectDate()).setDocCreateTime(doc.getCreateTime())
                     .setRemark(doc.getRemark());
             List<MesQcIqcLineDO> lines = iqcLineService.getIqcLineListByIqcId(qcId);
             for (MesQcIqcLineDO line : lines) {
@@ -126,6 +127,7 @@
                     .setExecuteStandard(doc.getExecuteStandard())
                     .setInspectorUserId(doc.getInspectorUserId()).setAuditUserId(doc.getAuditUserId())
                     .setApproveUserId(doc.getApproveUserId()).setCheckResult(doc.getCheckResult())
+                    .setInspectDate(doc.getInspectDate()).setDocCreateTime(doc.getCreateTime())
                     .setRemark(doc.getRemark());
             List<MesQcIpqcLineDO> lines = ipqcLineService.getIpqcLineListByIpqcId(qcId);
             for (MesQcIpqcLineDO line : lines) {
@@ -143,6 +145,7 @@
                     .setExecuteStandard(doc.getExecuteStandard())
                     .setInspectorUserId(doc.getInspectorUserId()).setAuditUserId(doc.getAuditUserId())
                     .setApproveUserId(doc.getApproveUserId()).setCheckResult(doc.getCheckResult())
+                    .setInspectDate(doc.getInspectDate()).setDocCreateTime(doc.getCreateTime())
                     .setRemark(doc.getRemark());
             List<MesQcOqcLineDO> lines = oqcLineService.getOqcLineListByOqcId(qcId);
             for (MesQcOqcLineDO line : lines) {
@@ -160,6 +163,7 @@
                     .setExecuteStandard(doc.getExecuteStandard())
                     .setInspectorUserId(doc.getInspectorUserId()).setAuditUserId(doc.getAuditUserId())
                     .setApproveUserId(doc.getApproveUserId()).setCheckResult(doc.getCheckResult())
+                    .setInspectDate(doc.getInspectDate()).setDocCreateTime(doc.getCreateTime())
                     .setRemark(doc.getRemark());
             List<MesQcRqcLineDO> lines = rqcLineService.getRqcLineListByRqcId(qcId);
             for (MesQcRqcLineDO line : lines) {
diff --git a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcProductReportWordBuilderTest.java b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcProductReportWordBuilderTest.java
new file mode 100644
index 0000000..9de4db1
--- /dev/null
+++ b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcProductReportWordBuilderTest.java
@@ -0,0 +1,124 @@
+package cn.iocoder.yudao.module.mes.service.qc.indicatorresult;
+
+import cn.iocoder.yudao.module.mes.controller.admin.qc.indicatorresult.vo.MesQcQcReportRespVO;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.apache.poi.xwpf.usermodel.XWPFTable;
+import org.junit.jupiter.api.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * {@link MesQcProductReportWordBuilder} 鐨勫崟鍏冩祴璇曪紙鐗堝紡鍐掔儫锛氱敓鎴愬彲璇诲洖 + 鍏抽敭鍐呭鏂█锛�
+ *
+ * 鐢熸垚鐨勬牱渚嬫枃浠朵細杈撳嚭鍒� target/MesQcProductReportWordBuilder-sample.docx锛屽彲鐢� Word 浜哄伐鏍稿鐗堝紡銆�
+ */
+public class MesQcProductReportWordBuilderTest {
+
+    @Test
+    public void testBuild() throws IOException {
+        byte[] docx = MesQcProductReportWordBuilder.build(randomReport());
+        assertTrue(docx.length > 0);
+
+        // 杈撳嚭鏍蜂緥鏂囦欢锛屼究浜庝汉宸ョ敤 Word 鎵撳紑鏍稿
+        Path sample = Path.of("target", "MesQcProductReportWordBuilder-sample.docx");
+        Files.createDirectories(sample.getParent());
+        try (OutputStreamHolder ignored = new OutputStreamHolder(sample, docx)) {
+            // no-op
+        }
+
+        try (InputStream in = new ByteArrayInputStream(docx); XWPFDocument doc = new XWPFDocument(in)) {
+            List<XWPFTable> tables = doc.getTables();
+            assertEquals(4, tables.size(), "琛ㄥご/妫�楠岄」鐩�/鍒ゅ畾缁撹/澶囨敞 鍏� 4 寮犺〃");
+
+            // 琛ㄥご棣栬锛氱敓浜у崟浣� + 鍏徃鍚�
+            assertTrue(tables.get(0).getRow(0).getCell(0).getText().contains("鐢熶骇鍗曚綅"));
+            assertTrue(tables.get(0).getRow(0).getCell(1).getText().contains("瀹佸涔濇硴鍖栧伐绉戞妧鏈夐檺鍏徃"));
+
+            // 妫�楠岄」鐩〃锛氳〃澶磋 + 澶栬 + 鍒嗙粍灞曞紑鐨勫綍鍏ラ」锛堥吀鍚噺鍒嗙粍琚殣钘忥級
+            XWPFTable itemTable = tables.get(1);
+            assertEquals(4, itemTable.getNumberOfRows());
+            assertEquals("澶栬", itemTable.getRow(1).getCell(0).getText().trim());
+            assertEquals("閫忔槑娑蹭綋锛屾棤鍙鏉傝川", itemTable.getRow(1).getCell(1).getText().trim());
+            // 骞宠娴嬮噺椤垮彿鍚堝苟
+            assertEquals("10.023銆�10.115", itemTable.getRow(2).getCell(1).getText().trim());
+            assertEquals("/", itemTable.getRow(3).getCell(1).getText().trim());
+
+            // 鍒ゅ畾缁撹/璐ㄦ涓撶敤绔犵暀绌�
+            assertTrue(itemTable.getRow(2).getCell(0).getText().contains("璇曟牱璐ㄩ噺 m /g"));
+            assertEquals("鍒ゅ畾缁撹锛�", tables.get(2).getRow(0).getCell(0).getText().trim());
+            assertEquals("璐ㄦ涓撶敤绔狅細", tables.get(2).getRow(0).getCell(1).getText().trim());
+
+            // 澶囨敞榛樿鏂囨
+            assertTrue(tables.get(3).getRow(0).getCell(1).getText().contains("妫�楠岀粨鏋滀粎瀵规牱鍝佹湰韬垨鏈壒娆¤礋璐�"));
+
+            // 绛惧瓧琛岀暀绌猴紙鎵撳嵃鍚庢墜鍐欙級锛屼笉寰楀嚭鐜板鍚�
+            String signLine = doc.getParagraphs().stream()
+                    .filter(p -> p.getText().contains("鎵瑰噯锛�"))
+                    .findFirst().orElseThrow().getText();
+            assertTrue(signLine.contains("妫�楠岋細") && signLine.contains("澶嶆牳锛�"));
+            assertTrue(!signLine.contains("鏉庡崥") && !signLine.contains("鍛ㄤ簹娲�") && !signLine.contains("鍖呯繝钀�"),
+                    "绛惧瓧琛屽簲鐣欑┖锛屼笉杈撳嚭妫�楠�/澶嶆牳/鎵瑰噯濮撳悕");
+        }
+    }
+
+    private static MesQcQcReportRespVO randomReport() {
+        MesQcQcReportRespVO report = new MesQcQcReportRespVO();
+        report.setQcType(3).setDocCode("OQC20260106001").setItemName("宸ヤ笟鐢ㄦ涓侀唶")
+                .setBatchNo("20260100001").setSamplingLocation("鎴愬搧姝d竵閱囧偍缃愶紙V0008A锛�")
+                .setExecuteStandard("GB/T 6027-2023")
+                .setSamplingTime(LocalDateTime.of(2026, 1, 6, 9, 0))
+                .setInspectDate(LocalDateTime.of(2026, 1, 6, 15, 0))
+                .setDocCreateTime(LocalDateTime.of(2026, 1, 6, 8, 0))
+                .setInspectorName("鏉庡崥").setAuditName("鍛ㄤ簹娲�").setApproveName("鍖呯繝钀�");
+
+        MesQcQcReportRespVO.ReportItem appearance = new MesQcQcReportRespVO.ReportItem();
+        appearance.setIndicatorName("澶栬").setItemType(1).setSortOrder(10);
+        appearance.setMeasures(List.of(measure(1, "閫忔槑娑蹭綋锛屾棤鍙鏉傝川")));
+
+        MesQcQcReportRespVO.ReportItem acidGroup = new MesQcQcReportRespVO.ReportItem();
+        acidGroup.setIndicatorName("閰稿惈閲�").setItemType(2).setSortOrder(20);
+        acidGroup.setFormulaText("w3 = c 脳 V 脳 0.06005 / m 脳 100%");
+        MesQcQcReportRespVO.ReportItem mass = new MesQcQcReportRespVO.ReportItem();
+        mass.setIndicatorName("璇曟牱璐ㄩ噺 m /g").setItemType(1).setSortOrder(1);
+        mass.setMeasures(List.of(measure(1, "10.023"), measure(2, "10.115")));
+        acidGroup.setChildren(List.of(mass));
+
+        MesQcQcReportRespVO.ReportItem water = new MesQcQcReportRespVO.ReportItem();
+        water.setIndicatorName("姘村垎锛寃/%锛屸墹").setItemType(1).setSortOrder(30);
+        water.setMeasures(List.of());
+
+        report.setItems(List.of(appearance, acidGroup, water));
+        report.setBatchQuantity(null);
+        return report;
+    }
+
+    private static MesQcQcReportRespVO.ReportMeasure measure(int measureNo, String value) {
+        MesQcQcReportRespVO.ReportMeasure measure = new MesQcQcReportRespVO.ReportMeasure();
+        measure.setMeasureNo(measureNo);
+        measure.setValue(value);
+        return measure;
+    }
+
+    /** try-with-resources 杈呭姪锛氬啓鍑烘牱渚嬫枃浠� */
+    private static class OutputStreamHolder implements AutoCloseable {
+        OutputStreamHolder(Path path, byte[] content) throws IOException {
+            Files.write(path, content);
+        }
+
+        @Override
+        public void close() {
+        }
+    }
+
+}
diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml
index c169c66..1984163 100644
--- a/yudao-server/src/main/resources/application-local.yaml
+++ b/yudao-server/src/main/resources/application-local.yaml
@@ -1,5 +1,5 @@
 server:
-  port: 48080
+  port: 48081
 
 --- #################### 鏁版嵁搴撶浉鍏抽厤缃� ####################
 spring:
@@ -65,7 +65,7 @@
       primary: master
       datasource:
         master:
-          url: jdbc:mysql://localhost:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 杩炴帴鐨勭ず渚�
+          url: jdbc:mysql://localhost:3306/mom-jhhg?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 杩炴帴鐨勭ず渚�
           username: root
           password: 123456
 

--
Gitblit v1.9.3