From f87ce86307056f63f79312178037cc8714eb2b13 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 29 九月 2026 14:17:52 +0800
Subject: [PATCH] feat(docs): 添加档案管理模块业务流程文档

---
 docs/project-business/index.html |  165 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 149 insertions(+), 16 deletions(-)

diff --git a/docs/project-business/index.html b/docs/project-business/index.html
index 741b1a8..a46b01c 100644
--- a/docs/project-business/index.html
+++ b/docs/project-business/index.html
@@ -10,7 +10,7 @@
   --line:#24344f; --text:#dbe4f0; --muted:#8fa1b8;
   --c-base:#8a94a6; --c-sale:#4f9cff; --c-sup:#c9a86a; --c-erp:#5fc79e;
   --c-prod:#e0b34f; --c-wm:#7e6bd6; --c-qc:#e06c6c; --c-dv:#59a8b8;
-  --c-as:#c78bd6; --c-hrm:#9db85a; --c-bpm:#e6a23c; --c-ai:#56c8d8; --c-fin:#3ec9a7; --c-ums:#d6955c; --c-res:#e070a8;
+  --c-as:#c78bd6; --c-hrm:#9db85a; --c-bpm:#e6a23c; --c-ai:#56c8d8; --c-fin:#3ec9a7; --c-ums:#d6955c; --c-res:#e070a8; --c-arch:#7fb3d5;
 }
 *{box-sizing:border-box;margin:0;padding:0}
 html,body{height:100%}
@@ -114,6 +114,7 @@
   <a data-t="flow-finance"><span class="dot" style="background:var(--c-fin)"></span>璐㈠姟鎶ラ攢娴佺▼</a>
   <a data-t="flow-ums"><span class="dot" style="background:var(--c-ums)"></span>浼氬憳鍏ヤ細娴佺▼</a>
   <a data-t="flow-research"><span class="dot" style="background:var(--c-res)"></span>璇鹃绠$悊娴佺▼</a>
+  <a data-t="flow-archive"><span class="dot" style="background:var(--c-arch)"></span>妗f绠$悊娴佺▼</a>
   <div class="group">缁撴瀯涓庢暟鎹�</div>
   <a data-t="relation"><span class="dot" style="background:var(--c-bpm)"></span>绯荤粺鍏崇郴</a>
   <a data-t="dataflow"><span class="dot" style="background:var(--c-fin)"></span>鏁版嵁娴�</a>
@@ -143,6 +144,7 @@
 <section class="page" id="flow-finance"></section>
 <section class="page" id="flow-ums"></section>
 <section class="page" id="flow-research"></section>
+<section class="page" id="flow-archive"></section>
 <section class="page" id="relation">
   <h2 class="pt">绯荤粺鍏崇郴</h2>
   <p class="desc">妯″潡涔嬮棿鐨勮皟鐢ㄤ笌鏁版嵁渚濊禆锛氬疄绾�=鍗曟嵁/鏁版嵁娴佸悜锛岃櫄绾�=瀹℃壒鍥炶皟涓庤緟鍔╄兘鍔涖��</p>
@@ -195,6 +197,7 @@
       "FIN锛堝彂绁ㄦ姤閿�锛岀嫭绔嬫ā鍧楋級",
       "UMS锛堝浼氫細鍛橈紝鐙珛妯″潡锛�",
       "RES锛堢鐮旇棰橈紝鐙珛妯″潡锛�",
+      "ARC锛堟。妗堢鐞嗭紝鐙珛妯″潡锛�",
       "CRM锛堝鎴峰叧绯伙級",
       "SRM锛堜緵搴斿晢鍏崇郴锛�",
       "HRM锛堜汉鍔涜祫婧愶級",
@@ -206,14 +209,14 @@
     "businessPositioning": "璁╁伐鍘傜殑璁㈠崟銆佺墿鏂欍�佺敓浜с�佸簱瀛樸�佽川閲忋�佷汉鍛樸�佽祫閲戝湪涓�涓郴缁熷唴闂幆娴佽浆锛岀鐞嗗眰鍙�氳繃 BI 澶у睆鎺屾彙鍏ㄥ眬銆�",
     "coreChain": "CRM 鍟嗘満/鍚堝悓 鈫� ERP 閿�鍞鍗� 鈫� MES 涓荤敓浜ц鍒�/宸ュ崟/鎶ュ伐 鈫� MES 璐ㄦ涓庝粨鍌� 鈫� 閿�鍞嚭搴撳彂璐� 鈫� 寮�绁ㄥ洖娆� 鈫� 鍞悗闂幆",
     "techBase": "Spring Boot + MyBatis + Flowable + Redis + Quartz/RocketMQ/Kafka + Milvus 鍚戦噺搴� + 閫氫箟鍗冮棶",
-    "database": "MySQL 8.4锛岃繍琛屽簱 mom-jssm 鍏� 427 寮犺〃锛堝惈 system_*銆乥pm_*銆乤ct_* 搴曞骇琛ㄤ笌 mes_*/erp_*/crm_*/srm_*/hrm_*/mdm_*/ai_*/finance_*/ums_*/research_* 涓氬姟琛級锛屽绉熸埛宸插叧闂�",
+    "database": "MySQL 8.4锛岃繍琛屽簱 mom-jssm 鍏� 430 寮犺〃锛堝惈 system_*銆乥pm_*銆乤ct_* 搴曞骇琛ㄤ笌 mes_*/erp_*/crm_*/srm_*/hrm_*/mdm_*/ai_*/finance_*/ums_*/research_*/archive_* 涓氬姟琛級锛屽绉熸埛宸插叧闂�",
     "frontend": "mom-pro2-before锛圴ue3 绠$悊鍚庡彴锛屽悓浠撳簱瀛樻斁锛屽彧璇诲弬鑰冿級"
   },
   "stats": {
-    "businessModules": 16,
-    "coreObjects": 56,
-    "documentFlows": 9,
-    "approvalListeners": 15,
+    "businessModules": 17,
+    "coreObjects": 59,
+    "documentFlows": 10,
+    "approvalListeners": 24,
     "aiCapabilities": 8,
     "wmBillTypes": 15
   },
@@ -344,10 +347,18 @@
     "璇鹃绠$悊锛氱粡璐规嫧浠樺彴璐︾殑銆屽凡鎷ㄤ粯(20)銆嶇瓑浠蜂簬鎶ラ攢鍗曘�屽凡閫氳繃(20)銆嶏紝涓嶅惈鍑虹撼瀹為檯浠樻鍔ㄤ綔锛涜嫢鏃ュ悗闇�瑕佺嫭绔嬬殑銆屽凡浠樻銆嶇姸鎬侊紝闇�鍙﹀鐘舵�佷笌瀹℃壒鑺傜偣銆愪簩鏈熷彲鎵╁睍銆�",
     "璇鹃绠$悊锛氱敵鎶ュ崟涓� ums_member 鏄蒋鍏宠仈锛堟棤澶栭敭锛夛紝浼氬憳琚垹闄ゅ悗鐢虫姤鍗曚細鐣欎笅鎮┖ memberId锛涙垚鍛樺垪琛ㄩ渶瀹归敊灞曠ず銆屼細鍛樺凡鍒犻櫎銆嶃�愬緟纭鏄惁鍔犲閿垨鍒犻櫎淇濇姢銆�",
     "璇鹃绠$悊锛欱PM 娴佺▼ research_topic_approve 涓夎妭鐐归粯璁ゅ鎵逛汉涓恒�岃鑹�=瓒呯骇绠$悊鍛�(1) + 渚濇瀹℃壒銆嶏紝璇� dev 搴撹秴绾х鐞嗗憳瑙掕壊涓嬫湁 4 涓敤鎴凤紙admin/寮犲/椹姵/椹礊锛夛紝姣忎釜鑺傜偣闇� 4 浜轰細绛炬墠鎺ㄨ繘锛涘叏鏂板畨瑁呭簱璇ヨ鑹蹭粎 admin 涓�浜恒�佹祦绋嬪彲寮�绠卞嵆鐢ㄣ�俤ev 搴撻渶鍑忓皯瓒呯骇绠$悊鍛樼敤鎴锋垨鏀瑰湪 BPM 璁捐鍣ㄤ腑涓烘瘡鑺傜偣鎸囧畾瀹℃壒浜恒�愮幆澧冮厤缃」锛岄潪浠g爜缂洪櫡銆�",
-    "璇鹃绠$悊锛氱珛椤归�氱煡澶嶇敤 system_notice 绯荤粺鍏憡锛屼笉鏂板 system_notify_template銆佷笉鍙戠珯鍐呬俊锛涘闇�鐭俊/绔欏唴淇″畾鍚戦�氱煡闇�鍙﹁閰嶇疆銆愬緟纭閫氱煡娓犻亾銆�"
+    "璇鹃绠$悊锛氱珛椤归�氱煡澶嶇敤 system_notice 绯荤粺鍏憡锛屼笉鏂板 system_notify_template銆佷笉鍙戠珯鍐呬俊锛涘闇�鐭俊/绔欏唴淇″畾鍚戦�氱煡闇�鍙﹁閰嶇疆銆愬緟纭閫氱煡娓犻亾銆�",
+    "妗f绠$悊锛氭。妗堝�熼槄 BPM 娴佺▼ archive_borrow_approve 涓烘墜宸ュ鍑洪儴缃蹭骇鐗╋紙_archive_bpm_export.sql 鍐� act_*/bpm 琛ㄧ殑 UUID 涓庢椂闂存埑鍙兘鍦ㄩ儴缃叉椂鐢熸垚锛屾棤娉曢鍐欙級锛屽繀椤诲厛鍦� BPM 妯″瀷閮ㄧ讲鍐嶅鍑哄啀鍚堝苟杩� config_export_all 闃舵涓�锛涢『搴忛敊浼氬鑷存柊搴撳垵濮嬪寲鏃惰娴佺▼缂哄け銆愰儴缃查『搴忕‖绾︽潫锛屽凡鍦ㄦ枃浠跺ご涓� README 鍙岄噸鏍囨敞銆�",
+    "妗f绠$悊锛氳彍鍗� 1075600~1075699 涓庡悇 archive:* 鏉冮檺鐐逛粎鍦ㄥ綊妗h剼鏈腑锛屾櫘閫氳鑹叉湭閰� system_role_menu锛岄潪瓒呯鐧诲綍鐪嬩笉鍒般�屾。妗堢鐞嗐�嶇洰褰曘�愬緟纭鏄惁琛ユ巿鏉冿紝涓庤储鍔℃姤閿�/浼氬憳绠$悊鍚岀被闂銆�",
+    "妗f绠$悊锛氭。妗堜笌鏉ユ簮鍗曟嵁锛堣棰樼敵鎶ヤ功/浼氬憳/鎶ラ攢鍗曪級涓鸿蒋鍏宠仈锛屾潵婧愬崟鎹鍒犻櫎鍚庢。妗堢殑 source_id/source_no 浼氭垚涓烘偓绌哄揩鐓э紱妗f鏈韩涓嶉殢鏉ユ簮鍗曟嵁鍒犻櫎鑰屽垹闄ゃ�愬緟纭鏄惁闇�瑕佸垹闄や繚鎶ゆ垨澶栭敭銆�",
+    "妗f绠$悊锛氶渶姹備腑鐨勩�屽浼氭枃浠躲�佷細璁邯瑕併�佽皟鐮旀姤鍛娿�佸鏈鏂囥�佸悎鍚屽崗璁�嶇瓑鐢靛瓙鏂囨。鐢便�屾枃涔︽。妗堛�嶅垎绫绘壙杞斤紝绯荤粺鍐呮棤瀵瑰簲鏉ユ簮妯″潡锛屼粎鏀寔鎵嬪伐褰曞叆骞舵寕鐢靛瓙闄勪欢锛涘悎鍚屾。妗堟湭绾冲叆鑷姩褰掓。锛堢敤鎴锋槑纭帓闄わ級銆愬凡纭鐨勮竟鐣屻��",
+    "妗f绠$悊锛氶�炬湡鎻愰啋鎸夌敤鎴峰喅绛栦粎鏌ヨ鏃跺疄鏃惰绠楋紙涓嶅缓 infra_job銆佷笉鍙戠珯鍐呬俊锛夛紝鍊熼槄鍒楄〃銆岄�炬湡銆嶅垪涓� /overdue-page 鐙珛鍏ュ彛鍛堢幇锛涜嫢鏃ュ悗闇�瑕佸埌鏈熶富鍔ㄦ帹閫侊紝闇�鍙﹀姞瀹氭椂浠诲姟涓庨�氱煡娓犻亾銆愮敤鎴峰凡纭鐨勭畝鍖栵紝浜屾湡鍙墿灞曘��",
+    "妗f绠$悊锛氥�屽悓涓�妗f浠呭厑璁镐竴鏉℃湭褰掕繕鍊熼槄鍗曘�嶇敱搴旂敤灞� submit 鏍¢獙 + 瀹℃壒閫氳繃鏃舵潯浠舵洿鏂帮紙UPDATE ... WHERE status=10锛夊叡鍚屼繚璇侊紝MySQL 鏃犳硶瀵广�岄儴鍒嗙姸鎬佸敮涓�銆嶅缓绾︽潫锛涙牎楠屼笌鏇存柊涔嬮棿鐨勭悊璁虹獥鍙e凡鏀舵暃涓哄彲鎰熺煡鐨勫啿绐佹姤閿欙紙妗f宸茶鍗犵敤锛夎�岄潪鑴忔暟鎹�愬凡鎺ュ彈鐨勯闄┿��",
+    "妗f绠$悊锛氭。妗堢粺璁℃寜鍒嗙被/瀵嗙骇/杞戒綋涓夌粍 GROUP BY 鑱氬悎锛堟棤 N+1锛夛紝褰撳墠閲忕骇鍙帴鍙楋紱妗f杩囦竾鍚庨渶鏀逛负缂撳瓨鎴栫墿鍖栫粺璁¤〃銆愭湰鏈熶笉鍋氥��",
+    "妗f绠$悊锛氳法妯″潡鏀硅〃鈥斺�攔esearch_application / ums_member / finance_reimbursement 鍚勬柊澧炲彲绌哄垪 archive_document_id锛坅rchive_module_migration.sql 鐢� information_schema 瀹堝崼淇濊瘉骞傜瓑锛夛紝闇�涓庝笁鏂规ā鍧楃‘璁ゅ彉鏇寸獥鍙c�愯法妯″潡鏀硅〃锛屾棤鐮村潖鎬с��"
   ],
   "generatedAt": "2026-09-29",
-  "analysisBasis": "鍩轰簬 dev_business 鍒嗘敮 87bf4a99 婧愮爜锛�6 缁勫苟琛屾簮鐮佽蛋璇伙紙MES 鐢熶骇璐ㄩ噺 / MES 浠撳偍 / ERP / CRM+SRM / 鍞悗+HRM / AI+BI+MDM+BPM+搴曞骇锛夛紱2026-09-28 澧為噺琛ュ厖 yudao-module-finance 鐙珛璐㈠姟鎶ラ攢妯″潡锛堟姤閿�鍗� + 鏄庣粏 + 鍙戠エ闄勪欢 + BPM 瀹℃壒 + 褰掓。锛変笌 yudao-module-ums 鐙珛浼氬憳绠$悊妯″潡锛堝叆浼氱敵璇� + BPM 涓ょ骇瀹℃壒 + 瀹℃壒閫氳繃鑷姩寤轰細鍛樹笌鐧诲綍璐﹀彿 + 浼氬憳鍒楄〃/閫氳褰曪級锛�2026-09-28 澧為噺锛欱PM 娴佺▼瀹氫箟 ums_membership_approve锛堝叆浼氬鎵癸級宸插湪 mom-jssm 閮ㄧ讲骞跺苟鍏� config_export_all 闃舵涓�锛堝垎绫� ums_membership_approve锛岀涔﹀鍒濆 鈫� 鐞嗕簨浼氬璁紝涓よ妭鐐瑰鎵逛汉鍧囦负銆岃鑹层�嶇瓥鐣ャ�佽鑹�=瓒呯骇绠$悊鍛�(1) 鍏滃簳锛岃〃鍗曠被鍨�=鑷畾涔夎〃鍗曪紝鏌ョ湅璺緞 /ums/application/detail/approve/index.vue锛夛紱鍚屾椂淇 mom-jssm 鐢� CREATE TABLE ... LIKE 鍏嬮殕瀵艰嚧鐨� 47 涓寚鍚� ruoyi-vue-pro 鐨� act_*/flw_* 璺ㄥ簱澶栭敭锛堥噸寤轰负鎸囧悜 mom-jssm 鑷韩锛屽鍎胯棰勬涓� 0锛夛紱2026-09-28 澧為噺锛氭柊澧� yudao-module-research 鐙珛绉戠爺璇鹃妯″潡涓�鏈燂紙璇鹃鎸囧崡鍙戝竷 + 鍦ㄧ嚎鐢虫姤 + 涓撳璇勫鏄庣粏 + BPM 涓夌骇绔嬮」瀹℃壒 + 绔嬮」閫氱煡鍏憡 + 缁忚垂鎷ㄤ粯璁板綍锛�4 寮� research_* 琛� / 5 涓瓧鍏� / bpm_category id=8002 / 娴佺▼ research_topic_approve / 鑿滃崟 1075510~1075553锛夛紝骞跺苟鍏� config_export_all_20260928 闃舵涓�锛涚敵鎶ヤ汉鍙� ums_member锛堣蒋鍏宠仈锛夈�佺珛椤归�氱煡澶嶇敤 system_notice 鍏憡銆佹嫧娆惧嚟璇佽蛋 system 闄勪欢涓績 recordType=research_fund_record锛�2026-09-29 澧為噺锛氳棰樼粡璐规嫧浠樺鎺ヨ储鍔℃姤閿�鈥斺�旀柊寤� yudao-module-finance-api锛團inanceReimbursementApi锛氬缓鍗�+鎻愪氦/鏀瑰崟+閲嶆彁/鍒犻櫎/鏌ヨ鍥涙柟娉曪紝鏈湴 Spring Bean 璋冪敤锛屾棤闇� Feign锛夛紝璇鹃渚х櫥璁版嫧娆炬椂 1:1 鑷姩鐢熸垚 finance_reimbursement锛堢郴缁熺敓鎴� 1 琛屾槑缁嗭細璐圭敤绫诲瀷=鍏朵粬 5銆佸彂绁ㄩ噾棰�=鎷ㄤ粯閲戦銆佸彂绁ㄦ棩鏈�=鎷ㄤ粯鏃ユ湡銆佽鏄�=銆岃棰樸�斿悕銆曠 N 鏈熸嫧娆俱�嶏級骞剁珛鍗虫彁浜� BPM锛屽洖鍐� reimbursement_id/reimbursement_no銆佸彴璐︾疆銆屾姤閿�瀹℃壒涓�(15)銆嶏紱鍑瘉鏀逛负鐧昏鏃跺繀濉苟鍙岀粦锛坮esearch_fund_record + finance_reimbursement锛夛紱鏂板 ResearchFundStatusListener锛堢 15 涓笟鍔$洃鍚櫒锛屼笌 finance 鑷繁鐨� FinanceReimbursementStatusListener 璁㈤槄鍚屼竴娴佺▼ key 骞惰瑙﹀彂锛夋寜瀹℃壒缁撴灉鍥炲啓鍙拌处锛氶�氳繃鈫掑凡鎷ㄤ粯(20)銆侀┏鍥炩啋宸查┏鍥�(30)+椹冲洖鍘熷洜/鏃堕棿銆佸彇娑堟祦绋嬧啋閫�鍥炲緟鎷ㄤ粯(0)鍙敼鍚庡彲閲嶆柊鍙戣捣锛堝彂璧蜂汉鎾ゅ洖鍙妸瀹炰緥閫�鍥炲彂璧疯妭鐐广�佹祦绋嬫湭缁撴潫锛屼笉瑙﹀彂鍥炲啓锛屽彴璐︿繚鎸� 15锛夛紱鏂伴�� 2 鑺傜偣 BPMN docs/sql/finance_reimbursement_approve.bpmn锛堣储鍔″鏍� 鈫� 璐㈠姟涓荤瀹℃壒锛宑ategory id=216 宸插瓨鍦級锛�2026-09-29 宸插湪 mom-jssm 閮ㄧ讲涓虹増鏈� 1锛坒orm_type=20銆佽嚜瀹氫箟琛ㄥ崟鍒涘缓璺緞 /finance/reimbursement/index銆佹煡鐪嬭矾寰� /finance/reimbursement/detail/approve/index.vue锛夊苟骞跺叆 config_export_all_20260929 闃舵涓�锛屼袱绾у鎵瑰叏閫氳繃/椹冲洖/鍙栨秷涓夋潯鍥炲啓閾捐矾鍧囧凡绔埌绔獙璇�"
+  "analysisBasis": "鍩轰簬 dev_business 鍒嗘敮 87bf4a99 婧愮爜锛�6 缁勫苟琛屾簮鐮佽蛋璇伙紙MES 鐢熶骇璐ㄩ噺 / MES 浠撳偍 / ERP / CRM+SRM / 鍞悗+HRM / AI+BI+MDM+BPM+搴曞骇锛夛紱2026-09-28 澧為噺琛ュ厖 yudao-module-finance 鐙珛璐㈠姟鎶ラ攢妯″潡锛堟姤閿�鍗� + 鏄庣粏 + 鍙戠エ闄勪欢 + BPM 瀹℃壒 + 褰掓。锛変笌 yudao-module-ums 鐙珛浼氬憳绠$悊妯″潡锛堝叆浼氱敵璇� + BPM 涓ょ骇瀹℃壒 + 瀹℃壒閫氳繃鑷姩寤轰細鍛樹笌鐧诲綍璐﹀彿 + 浼氬憳鍒楄〃/閫氳褰曪級锛�2026-09-28 澧為噺锛欱PM 娴佺▼瀹氫箟 ums_membership_approve锛堝叆浼氬鎵癸級宸插湪 mom-jssm 閮ㄧ讲骞跺苟鍏� config_export_all 闃舵涓�锛堝垎绫� ums_membership_approve锛岀涔﹀鍒濆 鈫� 鐞嗕簨浼氬璁紝涓よ妭鐐瑰鎵逛汉鍧囦负銆岃鑹层�嶇瓥鐣ャ�佽鑹�=瓒呯骇绠$悊鍛�(1) 鍏滃簳锛岃〃鍗曠被鍨�=鑷畾涔夎〃鍗曪紝鏌ョ湅璺緞 /ums/application/detail/approve/index.vue锛夛紱鍚屾椂淇 mom-jssm 鐢� CREATE TABLE ... LIKE 鍏嬮殕瀵艰嚧鐨� 47 涓寚鍚� ruoyi-vue-pro 鐨� act_*/flw_* 璺ㄥ簱澶栭敭锛堥噸寤轰负鎸囧悜 mom-jssm 鑷韩锛屽鍎胯棰勬涓� 0锛夛紱2026-09-28 澧為噺锛氭柊澧� yudao-module-research 鐙珛绉戠爺璇鹃妯″潡涓�鏈燂紙璇鹃鎸囧崡鍙戝竷 + 鍦ㄧ嚎鐢虫姤 + 涓撳璇勫鏄庣粏 + BPM 涓夌骇绔嬮」瀹℃壒 + 绔嬮」閫氱煡鍏憡 + 缁忚垂鎷ㄤ粯璁板綍锛�4 寮� research_* 琛� / 5 涓瓧鍏� / bpm_category id=8002 / 娴佺▼ research_topic_approve / 鑿滃崟 1075510~1075553锛夛紝骞跺苟鍏� config_export_all_20260928 闃舵涓�锛涚敵鎶ヤ汉鍙� ums_member锛堣蒋鍏宠仈锛夈�佺珛椤归�氱煡澶嶇敤 system_notice 鍏憡銆佹嫧娆惧嚟璇佽蛋 system 闄勪欢涓績 recordType=research_fund_record锛�2026-09-29 澧為噺锛氳棰樼粡璐规嫧浠樺鎺ヨ储鍔℃姤閿�鈥斺�旀柊寤� yudao-module-finance-api锛團inanceReimbursementApi锛氬缓鍗�+鎻愪氦/鏀瑰崟+閲嶆彁/鍒犻櫎/鏌ヨ鍥涙柟娉曪紝鏈湴 Spring Bean 璋冪敤锛屾棤闇� Feign锛夛紝璇鹃渚х櫥璁版嫧娆炬椂 1:1 鑷姩鐢熸垚 finance_reimbursement锛堢郴缁熺敓鎴� 1 琛屾槑缁嗭細璐圭敤绫诲瀷=鍏朵粬 5銆佸彂绁ㄩ噾棰�=鎷ㄤ粯閲戦銆佸彂绁ㄦ棩鏈�=鎷ㄤ粯鏃ユ湡銆佽鏄�=銆岃棰樸�斿悕銆曠 N 鏈熸嫧娆俱�嶏級骞剁珛鍗虫彁浜� BPM锛屽洖鍐� reimbursement_id/reimbursement_no銆佸彴璐︾疆銆屾姤閿�瀹℃壒涓�(15)銆嶏紱鍑瘉鏀逛负鐧昏鏃跺繀濉苟鍙岀粦锛坮esearch_fund_record + finance_reimbursement锛夛紱鏂板 ResearchFundStatusListener锛堢 15 涓笟鍔$洃鍚櫒锛屼笌 finance 鑷繁鐨� FinanceReimbursementStatusListener 璁㈤槄鍚屼竴娴佺▼ key 骞惰瑙﹀彂锛夋寜瀹℃壒缁撴灉鍥炲啓鍙拌处锛氶�氳繃鈫掑凡鎷ㄤ粯(20)銆侀┏鍥炩啋宸查┏鍥�(30)+椹冲洖鍘熷洜/鏃堕棿銆佸彇娑堟祦绋嬧啋閫�鍥炲緟鎷ㄤ粯(0)鍙敼鍚庡彲閲嶆柊鍙戣捣锛堝彂璧蜂汉鎾ゅ洖鍙妸瀹炰緥閫�鍥炲彂璧疯妭鐐广�佹祦绋嬫湭缁撴潫锛屼笉瑙﹀彂鍥炲啓锛屽彴璐︿繚鎸� 15锛夛紱鏂伴�� 2 鑺傜偣 BPMN docs/sql/finance_reimbursement_approve.bpmn锛堣储鍔″鏍� 鈫� 璐㈠姟涓荤瀹℃壒锛宑ategory id=216 宸插瓨鍦級锛�2026-09-29 宸插湪 mom-jssm 閮ㄧ讲涓虹増鏈� 1锛坒orm_type=20銆佽嚜瀹氫箟琛ㄥ崟鍒涘缓璺緞 /finance/reimbursement/index銆佹煡鐪嬭矾寰� /finance/reimbursement/detail/approve/index.vue锛夊苟骞跺叆 config_export_all_20260929 闃舵涓�锛屼袱绾у鎵瑰叏閫氳繃/椹冲洖/鍙栨秷涓夋潯鍥炲啓閾捐矾鍧囧凡绔埌绔獙璇侊紱2026-09-29 澧為噺锛氭柊澧� yudao-module-archive 鐙珛妗f绠$悊妯″潡 + yudao-module-archive-api锛圓rchiveDocumentApi锛歛rchiveBySource 鎸� sourceType+sourceId 骞傜瓑褰掓。 / isArchived / getBySource 涓夋柟娉曪紝鏈湴 Spring Bean 璋冪敤锛屾棤 Feign锛夛紝瑕嗙洊涔︽灦鍒嗙被锛坅rchive_category 鏍戝舰銆乧ode 鍞竴銆乨efaultSecretLevel 榛樿瀵嗙骇銆�6 鏉″垵濮嬪垎绫伙細浼氬憳/璇鹃/浼氳/璐㈠姟/鏂囦功/鍏氬缓锛岃储鍔¢粯璁ゅ瘑绾�=淇濆瘑 3锛夈�佹。妗堢鐞嗭紙archive_document锛欴A+yyyyMMdd+6 浣嶆祦姘寸紪鍙枫�佸瘑绾т笁妗� 1 鍏紑 2 鍐呴儴 3 淇濆瘑銆佽浇浣撲笁鍨� 1 鐢靛瓙 2 瀹炰綋 3 鐢靛瓙+瀹炰綋銆佸疄浣撲綅缃洓瀛楁 shelfNo/layerNo/columnNo/boxNo + storePlace銆佹潵婧愬洓绫� sourceType 1 鎵嬪伐 2 璇鹃 3 浼氬憳 4 璐㈠姟甯� sourceNo/sourceId/sourceTitle 鍐椾綑蹇収銆佺姸鎬� 10 鍦ㄥ簱 20 鍊熷嚭涓�佺數瀛愰檮浠惰蛋 system 闄勪欢涓績 recordType=archive_document銆乤rchiveBySource 骞傜瓑鐭矾 + 涓夋柟琛� archive_document_id 鍥炲啓浣滀负宸插綊妗g‖鏍囪锛岄噸澶嶅綊妗g敱鏉ユ簮渚ч敊璇爜鎷︽埅涓� archive 渚� DOCUMENT_DUPLICATE_SOURCE 鍏滃簳锛夈�佸�熼槄鐧昏涓庡鎵癸紙archive_borrow锛欽Y+鍚岀骇娴佹按缂栧彿銆佸�熼槄浜轰俊鎭�/鍊熼槄鐩殑/褰掕繕鏈熼檺銆佺姸鎬� 0 鑽夌 15 瀹℃壒涓� 20 鍊熷嚭涓� 30 宸插綊杩� 35 宸查┏鍥烇紝浠� 0/35 鍙敼鍙噸鎻愩�佷粎 0 鍙垹銆佷粎 20 鍙櫥璁板綊杩橈紱submit 鍓嶆牎楠屽悓妗f涓嶅緱宸叉湁 15/20 鍦ㄩ�斿�熼槄锛屽厛瑙f瀽娴佺▼鍐嶅缓鍗曟潨缁濆鍎胯崏绋匡紱BPM 娴佺▼ archive_borrow_approve 涓ょ骇锛氭。妗堢鐞嗗憳瀹℃牳 鈫� 鍒嗙棰嗗瀹℃壒锛涚洃鍚櫒 ArchiveBorrowStatusListener 鎸� businessKey 鍥炲啓 20+approveTime / 35+椹冲洖鍘熷洜鏃堕棿 / 閫�鍥� 0锛屽鎵归�氳繃鏃舵潯浠舵洿鏂版。妗� SET status=20 WHERE status=10锛�0 琛屽垯鎶ユ。妗堝凡琚崰鐢ㄥ苟鍥炴粴锛夈�佸綊杩樼櫥璁帮紙鏉′欢鏇存柊 20鈫�30 + returnTime/褰掕繕纭浜猴紝鍐嶆妸妗f鏉′欢鏇存柊鍥� 10锛屽舰鎴愰棴鐜級銆侀�炬湡瀹炴椂璁$畻锛坥verdue=status==20 涓� returnDeadline<浠婂ぉ锛屼笉寤� infra_job 涓嶅彂绔欏唴淇★紝鍒楄〃銆岄�炬湡銆嶅垪 + /archive/borrow/overdue-page 鐙珛鍏ュ彛锛夈�佹。妗堢粺璁★紙4 鍗$墖锛氭�绘暟/鍦ㄥ簱/鍊熷嚭/閫炬湡 + 鍒嗙被/瀵嗙骇/杞戒綋涓夌粍 GROUP BY 鑱氬悎锛屾棤 N+1锛夛紱鏁忔劅妗f鐢ㄥ瘑绾у瓧娈� + 鐙珛鏉冮檺鐐� archive:document:sensitive锛�/get 瓒婃潈鎶� DOCUMENT_SENSITIVE_NO_PERMISSION銆�/page 涓� /export-excel 寮哄埗杩囨护 secret_level<>3锛岀粺涓�璧� applySecretLevelFilter / validateSecretLevelVisible 涓ょ鏈夋柟娉曪紱鏂板 3 寮犺〃 archive_category/archive_document/archive_borrow銆�6 涓瓧鍏革紙82000~82005锛夈�乥pm_category id=8003 + 鎵嬪啓 docs/sql/archive_borrow_approve.bpmn锛坈ategory=archive_borrow_approve銆乫orm_type=20銆佸垱寤鸿矾寰� /archive/borrow/index銆佹煡鐪嬭矾寰� /archive/borrow/detail/approve/index.vue锛夊凡鍦� mom-jssm 閮ㄧ讲涓虹増鏈� 1銆佽彍鍗� 1075600~1075699锛涗笁鏂瑰綊妗h仈鍔ㄤ负鍒楄〃椤垫墜鍔ㄣ�屽綊妗c�嶆寜閽紙闈炰簨浠堕┍鍔紝褰掓。涓嶅洖鍐欐潵婧愪笟鍔$姸鎬侊級锛氳棰� research_application status=20 宸茬珛椤� 鈫� sourceType=2 瀵嗙骇 2 鍐呴儴 sourceNo=绔嬮」缂栧彿锛涗細鍛� ums_member status=1 姝e父 鈫� sourceType=3锛涜储鍔� finance_reimbursement status=20 鈫� sourceType=4 瀵嗙骇 3 淇濆瘑锛屼笌鏃㈡湁 20鈫�40 + archiveTime 鍚屼簨鍔″彔鍔狅紱涓夊紶鏉ユ簮琛ㄥ悇鏂板鍙┖鍒� archive_document_id锛坅rchive_module_migration.sql 鐢� information_schema 瀹堝崼淇濊瘉骞傜瓑锛夈�傚叏搴撹〃鏁� 427鈫�430锛涗笟鍔$姸鎬佺洃鍚櫒瀹為檯璁℃暟淇涓� 24 涓� *StatusListener锛�14 涓户鎵� BpmProcessInstanceStatusEventListener锛夈�傛湰妯″潡涓嶅弽鍚戜緷璧� ums/finance/research锛屼粎鎻愪緵 -api 瀛愭ā鍧楃敱涓夋柟鎵嬪姩璋冪敤锛涗緷璧栨柟鍚� research/ums/finance 鈫� archive-api锛屾棤鐜�傛湰娆″悓姝ユ洿鏂扮殑涓氬姟鍙鍖栦骇鐗╋細鏂板 mermaid/15-archive-flow.mmd锛屽閲忎慨璁� 01-business-mindmap / 08-module-relation / 09-data-flow / 10-business-object锛屼互鍙� data/modules.json锛堟柊澧� arc 妯″潡銆乥pm 鐩戝惉鍣ㄨ鏁� 15鈫�24锛夈�乷bjects.json锛堟柊澧炴。妗堝垎绫�/妗f/鍊熼槄鍗� 3 瀵硅薄 + 璇鹃鐢虫姤涔�/浼氬憳/鎶ラ攢鍗曞悇琛� archive_document_id锛夈�乫lows.json锛堟柊澧� archive 娴佺▼ 9 姝ワ級銆乺oles.json锛堟柊澧炴。妗堢鐞嗗憳/鍊熼槄浜�/鍊熼槄瀹℃壒浜�/褰掓。缁忓姙浜� 4 瑙掕壊锛夈�乥usiness.json"
 }</script>
 <script type="application/json" id="data-modules">{
   "modules": [
@@ -464,10 +475,19 @@
      "upstream": ["浼氬憳绠$悊(ums_member 鍙栫敵鎶ヤ汉濮撳悕/鍗曚綅/鑱岀О/鐢佃瘽)", "BPM(娴佺▼瀹氫箟 research_topic_approve / finance_reimbursement_approve)"],
      "downstream": ["system(system_notice 绔嬮」閫氱煡鍏憡)", "system(闄勪欢涓績)", "璐㈠姟(缁忚垂鎷ㄤ粯鐢熸垚 finance_reimbursement 鎶ラ攢鍗暵峰凡瀵规帴)"],
      "coreTables": ["research_guideline", "research_application", "research_topic_review", "research_fund_record"]},
+    {"key": "arc", "name": "妗f绠$悊锛堢嫭绔嬶級", "color": "#7fb3d5", "tag": "ARC", "flow": "archive",
+     "positioning": "瀛︿細/鍗忎細鍨嬪疄浣撲笌鐢靛瓙妗f鍏ㄧ敓鍛藉懆鏈燂細鍒嗙被涔︽灦瑙勬暣 鈫� 妗f鐧昏涓庢绱� 鈫� 鍊熼槄瀹℃壒 鈫� 褰掕繕闂幆 鈫� 瀛橀噺涓庢祦杞粺璁★紝骞舵帴鏀惰棰�/浼氬憳/璐㈠姟涓夋柟鐨勫綊妗h仈鍔�",
+     "problem": "璇鹃鏉愭枡銆佷細鍛樻潗鏂欍�佽储鍔″嚟璇佹暎钀藉悇妯″潡鏃犲褰掗泦锛涚焊璐ㄦ。妗堝瓨鏀句綅缃潬绾夸笅鍙拌处锛屽�熼槄涓庡綊杩樻棤鐣欑棔銆侀�炬湡鏃犱汉绠★紱璐㈠姟绛夋晱鎰熸。妗堟棤瀵嗙骇绠℃帶",
+     "features": ["妗f鍒嗙被鏍�(涔︽灦路鍒嗗眰鍒嗗垪)锛氫細鍛�/璇鹃/浼氳/璐㈠姟/鏂囦功/鍏氬缓 6 鏉″垵濮嬪垎绫宦风紪鐮佸敮涓�路鏀寔鐖跺瓙灞傜骇", "鍒嗙被榛樿瀵嗙骇(璐㈠姟鍒嗙被=淇濆瘑)路鍒嗙被鏈夊瓙鍒嗙被鎴栦笅鏈夋。妗堢鍒�", "妗f涓昏〃锛氱數瀛愰檮浠� + 瀹炰綋浣嶇疆鍥涘瓧娈�(涔︽灦鍙�/灞傚彿/鍒楀彿/鍐屽彿妗f鐩�)+瀛樻斁浣嶇疆鎻忚堪", "妗f缂栧彿 DA+yyyyMMdd+6浣嶆祦姘�(Redis 姣忔棩閲嶇疆)路鍊熼槄鍗曞彿 JY+鍚屾棩娴佹按", "瀵嗙骇涓夋。 鍏紑1/鍐呴儴2/淇濆瘑3 + 鐙珛鏉冮檺鐐� archive:document:sensitive(鏃犳潈闄愭椂鍒楄〃涓庡鍑哄己鍒惰繃婊ゃ�佽鎯呮姤閿�)", "杞戒綋涓夊瀷 鐢靛瓙1/瀹炰綋2/鐢靛瓙+瀹炰綋3", "鏉ユ簮鍥涚被 鎵嬪伐1/璇鹃2/浼氬憳3/璐㈠姟4(璁板綍鏉ユ簮鍗曞彿/ID/鏍囬蹇収渚夸簬妫�绱�)", "鍏ㄥ瓧娈垫绱細鏍囬/鍏抽敭璇� tags/鏉ユ簮鍗曞彿/鍒嗙被/瀵嗙骇/杞戒綋/鐘舵��/褰掓。鏃ユ湡鍖洪棿 + Excel 瀵煎嚭", "鍊熼槄鐧昏(鍊熼槄浜�/閮ㄩ棬/鐢佃瘽/鏃ユ湡/鐩殑/褰掕繕鏈熼檺)+BPM 涓ょ骇瀹℃壒(妗f绠$悊鍛樺鏍糕啋鍒嗙棰嗗瀹℃壒)路娴佺▼ key=archive_borrow_approve", "褰掕繕鐧昏锛氬疄鏃舵洿鏂版。妗堢姸鎬佸洖銆屽湪搴撱�嶏紝褰㈡垚瀹屾暣娴佽浆闂幆", "閫炬湡鏈繕浠呮煡璇㈡椂瀹炴椂璁$畻(overdueDays)路鍒楄〃绾㈣壊銆岄�炬湡 N 澶┿�峊ag + /overdue-page 鐙珛鍏ュ彛 + 銆屽彧鐪嬮�炬湡銆嶅垏鎹⒙蜂笉寤� infra_job 涓嶅彂绔欏唴淇�", "妗f缁熻锛氭�绘暟/鍦ㄥ簱/鍊熷嚭涓�/閫炬湡鏈繕 + 鎸夊垎绫�/瀵嗙骇/杞戒綋涓夌粍鍒嗗竷(4 鍗$墖 + 3 鍥捐〃)", "瀵瑰鎻愪緵 yudao-module-archive-api(ArchiveDocumentApi锛歛rchiveBySource 骞傜瓑/ isArchived / getBySource)渚涜棰樎蜂細鍛樎疯储鍔′笁鏂规墜鍔ㄥ綊妗�", "闄勪欢璧� system 闄勪欢涓績(recordType=archive_document / archive_borrow)"],
+     "objects": ["妗f鍒嗙被", "妗f", "鍊熼槄鍗�"],
+     "roles": ["妗f绠$悊鍛�", "鍒嗙棰嗗(鍊熼槄瀹℃壒)", "鍊熼槄浜�", "褰掓。缁忓姙浜�(璇鹃/浼氬憳/璐㈠姟)"],
+     "upstream": ["璇鹃绠$悊(宸茬珛椤圭敵鎶ヤ功路archiveApplication)", "浼氬憳绠$悊(姝e父浼氬憳路archiveMember)", "璐㈠姟鎶ラ攢(宸查�氳繃鎶ラ攢鍗暵锋棦鏈� archive 鍙犲姞)", "BPM(娴佺▼瀹氫箟 archive_borrow_approve)"],
+     "downstream": ["system(闄勪欢涓績 storage_attachment)", "鏉ユ簮琛ㄥ洖鍐� archive_document_id"],
+     "coreTables": ["archive_category", "archive_document", "archive_borrow"]},
     {"key": "bpm", "name": "鍗忓悓瀹℃壒", "color": "#e6a23c", "tag": "BPM", "flow": null,
      "positioning": "鍏ㄧ郴缁熷崟鎹鎵逛腑鏋紙Flowable锛�",
      "problem": "澶氭ā鍧楀崟鎹渶瑕佺伒娲诲彲閰嶇殑澶氱骇瀹℃壒",
-     "features": ["BPMN+閽夐拤椋庢牸鍙岃璁″櫒", "娴佺▼瀹氫箟閮ㄧ讲", "瀹℃壒浜嬩欢缁熶竴鍥炶皟(BpmProcessInstanceStatusEvent)", "15涓笟鍔$洃鍚櫒(鍚屼竴娴佺▼ key 鍏佽澶氫釜鐩戝惉鍣ㄥ苟琛屄峰悇鑷寜 key 杩囨护)", "琛ㄥ崟路鐢ㄦ埛缁劼锋妱閫伮峰姞绛�"],
+     "features": ["BPMN+閽夐拤椋庢牸鍙岃璁″櫒", "娴佺▼瀹氫箟閮ㄧ讲", "瀹℃壒浜嬩欢缁熶竴鍥炶皟(BpmProcessInstanceStatusEvent)", "24涓笟鍔$姸鎬佺洃鍚櫒(*StatusListener路鍚屼竴娴佺▼ key 鍏佽澶氫釜鐩戝惉鍣ㄥ苟琛屄峰悇鑷寜 key 杩囨护路妗f鍊熼槄 ArchiveBorrowStatusListener 涓庤储鍔�/璇鹃鐩戝惉鍣ㄨ闃呬笉鍚� key 浜掍笉骞叉壈)", "琛ㄥ崟路鐢ㄦ埛缁劼锋妱閫伮峰姞绛�"],
      "objects": ["娴佺▼妯″瀷", "娴佺▼瀹炰緥", "瀹℃壒浠诲姟"],
      "roles": ["瀹℃壒浜�(鎸夋祦绋嬮厤缃�)", "娴佺▼绠$悊鍛�"],
      "upstream": ["鍚勪笟鍔℃彁浜ゅ鎵�"], "downstream": ["鍥炶皟鏇存柊鍚勪笟鍔″崟鎹姸鎬�"],
@@ -537,13 +557,16 @@
     {"name": "鎺掔彮璁″垝", "module": "璁惧", "table": "mes_cal_plan", "doc": "鐝粍脳鐝脳鏃ユ湡鎺掔彮锛屼緵鐢熶骇涓庤�冨嫟寮曠敤", "upstream": [], "downstream": ["鐢熶骇浠诲姟", "鑰冨嫟"], "keywords": "鎺掔彮 鐝粍 鐝 鏃ュ巻"},
     {"name": "鎶ュ憡妯℃澘", "module": "璐ㄦ鎶ュ憡", "table": "qc_report_template", "doc": "鏅鸿兘璐ㄦ鎶ュ憡妯℃澘锛屽惎鐢�0/鍋滅敤1锛涚敾甯冨唴瀹瑰瓨鍦� qc_report_template_version锛堣崏绋�0/宸插彂甯�1/宸插仠鐢�2锛屽凡鍙戝竷涓嶅彲瑕嗙洊锛夛紝currentVersion 鎸囧悜褰撳墠宸插彂甯冪増鏈紱婧愭枃浠剁粡 AI 瀵煎叆璇嗗埆鎴愯崏绋垮悗鐢变汉宸ョ‘璁ゆ墠鎴愪负鐗堟湰锛涘悓涓�妯℃澘閲嶅瀵煎叆鎸夈�愭浛鎹€�戝鐞嗏�斺�斿厛鍒犳棫闄勪欢锛堣繛甯� blob 琛屼笌纾佺洏鏂囦欢锛夊啀缁戞柊鐨勶紝涓嶇暀瀛ゅ効鏂囦欢锛涘垹闄ゆā鏉夸細杩炲甫娓呴檮浠�", "upstream": ["浜哄伐璁捐(GrapesJS 璁捐鍣�)", "AI 瀵煎叆鑽夌(qc-report/ai-import/draft)"], "downstream": ["妯℃澘鐗堟湰", "鎶ュ憡瀹炰緥"], "keywords": "鎶ュ憡妯℃澘 璐ㄦ鎶ュ憡 template 璁捐鍣� 鐗堟湰 AI瀵煎叆 璇嗗埆 鑽夌 婧愭枃浠舵浛鎹�"},
     {"name": "鎶ュ憡瀹炰緥", "module": "璐ㄦ鎶ュ憡", "table": "qc_report_instance", "doc": "鍑轰欢浜х墿锛岀紪鍙� QR+yyyyMMdd+4浣嶆祦姘存寜澶╃嫭绔嬩笖涓氬姟鍞竴锛屽彲鏄惧紡鎸囧畾瑕嗙洊锛堟敞鎰� uk_report_no 涓嶅尯鍒嗚蒋鍒犻櫎锛屽垹鎺夌殑鍙蜂笉鍥炴敹锛夛紱涓ゆ潯鍑轰欢鍏ュ彛锛氶�氱敤 generate锛堣皟鐢ㄦ柟鑷甫 context锛変笌 generate-from-qc锛堟暟鎹粠 MES 璐ㄦ鍗曞彇锛屾潈闄愮爜 qc-report:instance:generate 宸插叆 system_menu id=1075416锛屼簲閬撴牎楠屾寜涓氬姟浼樺厛绾у彧鎶ョ涓�澶勶細105_000 绫诲瀷闈炴硶 / 105_001 鍗曟嵁涓嶅瓨鍦� / 105_002 鏈畬鎴� / 105_003 鏈垽瀹� / 105_005 妯℃澘绫诲瀷涓嶇 / 105_006 鏃犲彲鐢ㄦ楠岄」锛涘洓寮犺川妫�鍗曞垪琛ㄧ殑琛屾搷浣溿�屽嚭鎶ュ憡銆嶄粎鍦� status=宸插畬鎴愭椂鍙锛屽脊绐楀彧鍒� reportType 涓�鑷淬�佹ā鏉垮惎鐢ㄣ�佷笖 currentVersion 鎸囧悜鐨勭増鏈凡鍙戝竷鐨勬ā鏉匡紙鍚庣 /qc-report/template/selectable 鍒ゅ畾鈥斺�斿仠鐢ㄧ増鏈笉娓呯┖ currentVersion锛屽墠绔嬁鍒嗛〉缁撴灉鑷繁鎺ㄥ浼氭紡锛夛紝缁撴灉灏卞湴灞曠ず骞惰烦鏈〉鍒楄〃锛夛紱鍐荤粨 data_snapshot锛堝垽瀹氬悗鏁版嵁锛屽惈鍚庣绠楀ソ鐨� PASS/FAIL 涓庡悎鏍肩巼锛変笌 render_html锛況egenerate 鍙噸娓叉帓鐗堛�佹暟鎹笌缂栧彿涓嶅彉锛沚usiness_id/business_type 瀛� MES 琛ㄥ悕锛坢es_qc_iqc 绛夛級涓庡崟鎹� ID锛屽彲鍙嶆煡銆佷竴鍗曞彲鍑哄浠斤紱鎶ュ憡澶村彟甯﹀崟鎹師鍒ゅ畾 qcResult(鏁�)/qcResultText(涓枃锛屽悎鏍�/鐗归噰/涓嶅悎鏍奸��璐�/涓嶅悎鏍兼姤搴�)锛屼笌寮曟搸涓夋�佸垽瀹氬苟瀛樹簰涓嶈鐩栵紱鍝嶅簲甯� undecidableCount=蹇収涓� result 涓虹┖涓茬殑椤规暟涓� warnings锛堝垎缁勬爣棰樿烦杩�/鎸囨爣宸插垹/鏈綍瀹炴祴鍊�/鏍峰搧瓒�3锛夛紝涓よ�呴兘涓嶈惤搴撱�佷簨鍚庣湅涓嶅埌", "upstream": ["鎶ュ憡妯℃澘鐗堟湰", "璐ㄦ鍗曚笂涓嬫枃(閫氱敤 generate 鐢辫皟鐢ㄦ柟浼犲叆)", "MES 璐ㄦ鍗� IQC/IPQC/OQC/RQC(generate-from-qc 缁� MesQcReportApi 鍙栨暟)"], "downstream": ["鍓嶇瀹炰緥椤� /qc/report-instance(鍒楄〃路iframe棰勮路蹇収椤电路瀵煎嚭PDF)", "PDF褰掓。(system_storage_attachment recordType=qc_report_instance)"], "keywords": "鎶ュ憡瀹炰緥 鍑轰欢 QR缂栧彿 蹇収 澶嶇幇 regenerate PDF褰掓。 鎶ュ憡瀹炰緥椤� 瀵煎嚭PDF generate-from-qc 璐ㄦ鍗曞嚭鎶ュ憡 鍑烘姤鍛婂脊绐� qcResult undecidableCount warnings 寰呭垽瀹� 鍙嶆煡 涓氬姟鍗曟嵁绛涢��"},
-    {"name": "鎶ラ攢鍗�", "module": "璐㈠姟鎶ラ攢", "table": "finance_reimbursement", "doc": "鍗曞彿鍙嚜瀹氫箟(涓棿涓嶅厑璁哥┖鏍硷紝涓庡凡鏈夊崟鍙烽噸澶嶅垯鎶ラ敊)锛涙柊澧炴椂鐣欑┖鎴栫函绌烘牸鐢辩郴缁熺敓鎴� BX+yyyyMMdd+6浣嶆祦姘�(Redis 姣忔棩閲嶇疆)锛屼慨鏀规椂鐣欑┖琛ㄧず淇濇寔涓嶅彉銆俿tatus: 0鑽夌/15瀹℃壒涓�/20宸查�氳繃/35宸查┏鍥�/40宸插綊妗o紱浠呰崏绋垮彲鍒犮�佽崏绋夸笌宸查┏鍥炲彲鏀广�佷粎宸查�氳繃鍙綊妗o紱鎻愪氦鍚庣敱 BPM 鐩戝惉鍣ㄦ寜缁撴灉鍥炲啓鐘舵��(鍙栨秷閫�鍥炶崏绋�)锛屽鎵逛腑 processInstanceId 琚洖鍐欍�傛潵婧愪袱鏉★細鈶� 璐㈠姟妯″潡椤甸潰浜哄伐濉姤 鈶¤棰樼鐞嗐�岀粡璐规嫧浠樸�嶇粡 FinanceReimbursementApi(yudao-module-finance-api)鑷姩寤哄崟骞剁珛鍗虫彁浜�(1:1銆侀噾棰濅竴鑷淬�佺郴缁熷浐瀹� 1 琛屾槑缁喡疯垂鐢ㄧ被鍨�=鍏朵粬)鈥斺�斿悗鑰呯殑瀹℃壒缁撴灉鐢辫棰樹晶 ResearchFundStatusListener 璁㈤槄鍚屼竴娴佺▼鍥炲啓鎷ㄦ鍙拌处锛屾姤閿�鍗曟湰韬笉鍥炲啓浠讳綍澶栭儴鍗曟嵁", "upstream": ["璇鹃绠$悊(缁忚垂鎷ㄤ粯路缁� FinanceReimbursementApi 鑷姩寤哄崟)", "浜哄伐濉姤"], "downstream": ["鎶ラ攢鏄庣粏", "鍙戠エ闄勪欢(storage_attachment路recordType=finance_reimbursement)", "璇鹃鎷ㄦ鍙拌处(浠呯粡 BPM 浜嬩欢鍥炲啓鐘舵��)"], "keywords": "鎶ラ攢鍗� 鎶ラ攢 鍙戠エ reimbursement BX 褰掓。 璐㈠姟 璐圭敤 鑷畾涔夊崟鍙� 璇鹃缁忚垂鎷ㄤ粯 鑷姩寤哄崟 FinanceReimbursementApi"},
+    {"name": "鎶ラ攢鍗�", "module": "璐㈠姟鎶ラ攢", "table": "finance_reimbursement", "doc": "鍗曞彿鍙嚜瀹氫箟(涓棿涓嶅厑璁哥┖鏍硷紝涓庡凡鏈夊崟鍙烽噸澶嶅垯鎶ラ敊)锛涙柊澧炴椂鐣欑┖鎴栫函绌烘牸鐢辩郴缁熺敓鎴� BX+yyyyMMdd+6浣嶆祦姘�(Redis 姣忔棩閲嶇疆)锛屼慨鏀规椂鐣欑┖琛ㄧず淇濇寔涓嶅彉銆俿tatus: 0鑽夌/15瀹℃壒涓�/20宸查�氳繃/35宸查┏鍥�/40宸插綊妗o紱浠呰崏绋垮彲鍒犮�佽崏绋夸笌宸查┏鍥炲彲鏀广�佷粎宸查�氳繃鍙綊妗o紱鎻愪氦鍚庣敱 BPM 鐩戝惉鍣ㄦ寜缁撴灉鍥炲啓鐘舵��(鍙栨秷閫�鍥炶崏绋�)锛屽鎵逛腑 processInstanceId 琚洖鍐欍�傛潵婧愪袱鏉★細鈶� 璐㈠姟妯″潡椤甸潰浜哄伐濉姤 鈶¤棰樼鐞嗐�岀粡璐规嫧浠樸�嶇粡 FinanceReimbursementApi(yudao-module-finance-api)鑷姩寤哄崟骞剁珛鍗虫彁浜�(1:1銆侀噾棰濅竴鑷淬�佺郴缁熷浐瀹� 1 琛屾槑缁喡疯垂鐢ㄧ被鍨�=鍏朵粬)鈥斺�斿悗鑰呯殑瀹℃壒缁撴灉鐢辫棰樹晶 ResearchFundStatusListener 璁㈤槄鍚屼竴娴佺▼鍥炲啓鎷ㄦ鍙拌处锛屾姤閿�鍗曟湰韬笉鍥炲啓浠讳綍澶栭儴鍗曟嵁锛沘rchive_document_id 闈炵┖琛ㄧず宸插綊妗�", "upstream": ["璇鹃绠$悊(缁忚垂鎷ㄤ粯路缁� FinanceReimbursementApi 鑷姩寤哄崟)", "浜哄伐濉姤"], "downstream": ["鎶ラ攢鏄庣粏", "鍙戠エ闄勪欢(storage_attachment路recordType=finance_reimbursement)", "璇鹃鎷ㄦ鍙拌处(浠呯粡 BPM 浜嬩欢鍥炲啓鐘舵��)", "妗f绠$悊(鏃㈡湁褰掓。鍔ㄤ綔鍚屼簨鍔″彔鍔犅风敓鎴愩�屼繚瀵� 3銆嶇骇璐㈠姟妗f骞跺洖鍐� archive_document_id)"], "keywords": "鎶ラ攢鍗� 鎶ラ攢 鍙戠エ reimbursement BX 褰掓。 璐㈠姟 璐圭敤 鑷畾涔夊崟鍙� 璇鹃缁忚垂鎷ㄤ粯 鑷姩寤哄崟 FinanceReimbursementApi 璐㈠姟妗f 淇濆瘑 archive_document_id"},
     {"name": "鎶ラ攢鏄庣粏", "module": "璐㈠姟鎶ラ攢", "table": "finance_reimbursement_item", "doc": "鎶ラ攢鍗曠殑璐圭敤琛岋細璐圭敤绫诲瀷(1宸梾/2鍔炲叕/3鎷涘緟/4浜ら��/5鍏朵粬)銆佸彂绁ㄥ彿鐮併�佸彂绁ㄩ噾棰濄�佸彂绁ㄦ棩鏈熴�佸紑绁ㄦ柟銆佽垂鐢ㄨ鏄庯紱闅忎富琛ㄤ竴娆℃�ф彁浜�(鍏堝垹鍚庡鍏ㄩ噺瑕嗙洊)锛屾彁浜ゆ椂蹇呴』鍓ユ帀琛� id 涓� reimbursementId 鈥斺�� 鏄庣粏鍒犻櫎鏄蒋鍒狅紝鍥炰紶鍘� id 浼氫笌宸茶蒋鍒犺涓婚敭鍐茬獊", "upstream": ["鎶ラ攢鍗�"], "downstream": [], "keywords": "鎶ラ攢鏄庣粏 璐圭敤鏄庣粏 璐圭敤绫诲瀷 鍙戠エ閲戦 item 鏄庣粏琛� 宸梾"},
     {"name": "鍏ヤ細鐢宠鍗�", "module": "浼氬憳绠$悊", "table": "ums_application", "doc": "鍗曞彿 SQ+yyyyMMdd+6浣嶆祦姘�(Redis 姣忔棩閲嶇疆)锛屽悗绔敓鎴愪笉鍙嚜瀹氫箟锛沵emberType 1涓汉/2鍗曚綅鍐冲畾瀛楁鍒嗗弶(涓汉鐢� workUnit/title锛屽崟浣嶇敤 legalPerson/organizationCode)锛沵emberGrade 鎸夌被鍨嬪彇涓嶅悓瀛楀吀锛泂tatus: 0鑽夌/15瀹℃壒涓�/20宸查�氳繃/35宸查┏鍥炪�備粎鑽夌鍙垹(杩炲甫娓呴檮浠�)銆佽崏绋夸笌宸查┏鍥炲彲鏀瑰彲閲嶆彁锛涙彁浜ゅ悗鐢� BPM 鐩戝惉鍣ㄦ寜缁撴灉鍥炲啓(鍙栨秷閫�鍥炶崏绋�)锛屽鎵逛腑鍥炲啓 processInstanceId锛涘鎵归�氳繃瑙﹀彂鑷姩寤轰細鍛樹笌绯荤粺璐﹀彿銆傜嫭绔嬫ā鍧楋紝涓嶄笌鍏跺畠涓氬姟妯″潡浜х敓鍗曟嵁鍏宠仈", "upstream": ["浜哄伐濉姤(鐢宠浜�)", "璇佹槑鏉愭枡闄勪欢(storage_attachment路recordType=ums_application)"], "downstream": ["浼氬憳(瀹℃壒閫氳繃鑷姩鍒涘缓)", "BPM 娴佺▼瀹炰緥(ums_membership_approve 鍒嗙被)"], "keywords": "鍏ヤ細鐢宠 鍏ヤ細 浼氬憳鐢宠 application SQ 绉樹功澶� 鐞嗕簨浼� 瀹℃壒 浼氬憳绫诲瀷 涓汉 鍗曚綅 娉曞畾浠h〃浜� 鐮旂┒鏂瑰悜 鐢宠绛夌骇"},
-    {"name": "浼氬憳", "module": "浼氬憳绠$悊", "table": "ums_member", "doc": "鍗曞彿 HY+yyyyMMdd+6浣嶆祦姘�(Redis 姣忔棩閲嶇疆)锛涗袱涓潵婧愶細鈶犲叆浼氱敵璇峰鎵归�氳繃鑷姩鍒涘缓(鍥炲~ applicationId 涓� userName/绯荤粺璐﹀彿) 鈶′細鍛樺垪琛ㄦ墜宸ユ柊澧炪�俿tatus: 1姝e父/0鏆傚仠锛沵emberGrade 鎸� memberType 鍙栧搴斿瓧鍏革紝鏍¢獙瑙勫垯鏄崟浣嶄細鍛�(type=2)涓嶅彲閫夈�庣悊浜嬮暱銆�(grade=5)銆傝嚜鍔ㄥ缓妗f椂鍏ヤ細鏃ユ湡=褰撳ぉ銆佷笉鎼繍 contactUser/unitIntro/expireDate(鐢宠鍗曟棤瀵瑰簲瀛楁)锛涜嚜鍔ㄥ缓鐨勭郴缁熻处鍙风敤鎴峰悕涓鸿仈绯荤數璇濅笖鍒濆瀵嗙爜鍚屼负鑱旂郴鐢佃瘽锛岄儴闂ㄥ浐瀹氫负銆屽浼氫細鍛樸�嶏紱鎵嬫満鍙烽噸澶嶄細鏄庣‘鎶ラ敊涓旀暣鍗曚簨鍔″洖婊�", "upstream": ["鍏ヤ細鐢宠鍗�(瀹℃壒閫氳繃)", "浜哄伐鏂板", "闄勪欢(storage_attachment路recordType=ums_member)"], "downstream": ["浼氬憳閫氳褰�(鎸� regionCode/industry 妫�绱�)", "system_users(鐧诲綍璐﹀彿)"], "keywords": "浼氬憳 member HY 浼氬憳缂栧彿 浼氬憳绛夌骇 浼氬憳绫诲瀷 閫氳褰� 鍦板尯 琛屼笟 鍏ヤ細鏃ユ湡 鏈夋晥鏈�"},
+    {"name": "浼氬憳", "module": "浼氬憳绠$悊", "table": "ums_member", "doc": "鍗曞彿 HY+yyyyMMdd+6浣嶆祦姘�(Redis 姣忔棩閲嶇疆)锛涗袱涓潵婧愶細鈶犲叆浼氱敵璇峰鎵归�氳繃鑷姩鍒涘缓(鍥炲~ applicationId 涓� userName/绯荤粺璐﹀彿) 鈶′細鍛樺垪琛ㄦ墜宸ユ柊澧炪�俿tatus: 1姝e父/0鏆傚仠锛沵emberGrade 鎸� memberType 鍙栧搴斿瓧鍏革紝鏍¢獙瑙勫垯鏄崟浣嶄細鍛�(type=2)涓嶅彲閫夈�庣悊浜嬮暱銆�(grade=5)銆傝嚜鍔ㄥ缓妗f椂鍏ヤ細鏃ユ湡=褰撳ぉ銆佷笉鎼繍 contactUser/unitIntro/expireDate(鐢宠鍗曟棤瀵瑰簲瀛楁)锛涜嚜鍔ㄥ缓鐨勭郴缁熻处鍙风敤鎴峰悕涓鸿仈绯荤數璇濅笖鍒濆瀵嗙爜鍚屼负鑱旂郴鐢佃瘽锛岄儴闂ㄥ浐瀹氫负銆屽浼氫細鍛樸�嶏紱鎵嬫満鍙烽噸澶嶄細鏄庣‘鎶ラ敊涓旀暣鍗曚簨鍔″洖婊氾紱archive_document_id 闈炵┖琛ㄧず宸插綊妗o紙褰掓。鍚庡垪琛ㄩ〉闅愯棌銆屽綊妗c�嶆寜閽級", "upstream": ["鍏ヤ細鐢宠鍗�(瀹℃壒閫氳繃)", "浜哄伐鏂板", "闄勪欢(storage_attachment路recordType=ums_member)"], "downstream": ["浼氬憳閫氳褰�(鎸� regionCode/industry 妫�绱�)", "妗f绠$悊(鎵嬪姩銆屽綊妗c�嵚蜂粎姝e父鐘舵�佸彲褰掓。路缁� yudao-module-archive-api 鐢熸垚妗f骞跺洖鍐� archive_document_id)", "system_users(鐧诲綍璐﹀彿)"], "keywords": "浼氬憳 member HY 浼氬憳缂栧彿 浼氬憳绛夌骇 浼氬憳绫诲瀷 閫氳褰� 鍦板尯 琛屼笟 鍏ヤ細鏃ユ湡 鏈夋晥鏈� 褰掓。 archive_document_id"},
     {"name": "璇鹃鎸囧崡", "module": "璇鹃绠$悊", "table": "research_guideline", "doc": "鎸囧崡缂栧彿 GL+yyyyMMdd+6浣嶆祦姘�(Redis 姣忔棩閲嶇疆)锛沜ategory 1閲嶇偣璇鹃/2涓�鑸棰橈紱publishStatus 0鑽夌/20宸插彂甯�/30宸叉埅姝紝浠呰崏绋垮彲鏀瑰彲鍒狅紝publish 鍙戝竷鍥炲啓 publishTime锛宑lose 鎴缃� 30锛涘凡浜х敓鐢虫姤鍗�(applicationMapper.selectCountByGuidelineId 澶т簬 0)鐨勬寚鍗楃姝㈠垹闄ゅ苟鍦ㄦ彁绀轰腑鎶ュ嚭璇ユ寚鍗椾笅宸叉湁澶氬皯寮犵敵鎶ュ崟锛涙鏂� content 涓洪暱鏂囨湰锛涢檮浠� recordType=research_guideline", "upstream": ["浜哄伐缁存姢(瀛︿細绉樹功澶�)", "鎸囧崡闄勪欢(storage_attachment路recordType=research_guideline)"], "downstream": ["璇鹃鐢虫姤涔�(鐢虫姤鏃跺紩鐢ㄤ笖蹇呴』宸插彂甯冨苟鍦ㄧ敵鎶ユ湡鍐�)"], "keywords": "璇鹃鎸囧崡 鎸囧崡 鍙戝竷 鎴 閲嶇偣璇鹃 涓�鑸棰� GL 鎸囧崡缂栧彿 鐢虫姤鏈� 鐢虫姤璧锋"},
-    {"name": "璇鹃鐢虫姤涔�", "module": "璇鹃绠$悊", "table": "research_application", "doc": "鐢虫姤缂栧彿 SB+yyyyMMdd+6浣嶆祦姘�(Redis 姣忔棩閲嶇疆)锛沢uidelineId 鍏宠仈鎸囧崡銆乵emberId 鍏宠仈 ums_member(杞叧鑱旀棤澶栭敭锛屼細鍛樺垹闄ゅ悗浼氱暀涓嬫偓绌� memberId 闇�瀹归敊鏄剧ず)锛沘pplicantName/workUnit/jobTitle/contactPhone/contactEmail 鐢遍�変細鍛樿嚜鍔ㄥ甫鍑哄彲鎵嬫敼锛沜ategory 鍐椾綑鑷寚鍗椾笖涓嶄俊浠诲墠绔紶鍊硷紱budgetAmount 鐢宠缁忚垂涓烘嫧浠樹笂闄愶紱status: 0鑽夌/15瀹℃壒涓�/20宸茬珛椤�/35宸查┏鍥炪�備粎鑽夌鍙垹(杩炲甫娓呴檮浠�)銆佽崏绋夸笌宸查┏鍥炲彲鏀瑰彲閲嶆彁锛泂ubmit 鍓嶉�愭潯鏍¢獙銆屾寚鍗楀凡鍙戝竷銆嶄笌銆岀幇鍦ㄥ湪鐢虫姤鏈熷唴銆嶏紝浠讳竴涓嶆弧瓒冲嵆鎷掔粷骞舵寜缁村害缁欏嚭鎸囧崡鍚嶄笌瀹為檯鍊硷紱瀹℃壒閫氳繃鐢辩洃鍚櫒鐢熸垚绔嬮」缂栧彿 researchNo(LX+鍚屾棩娴佹按)涓� approveTime(宸叉湁缂栧彿骞傜瓑璺宠繃)锛況eviewAvgScore/reviewPass 涓鸿瘎瀹℃眹鎬诲洖鍐欏�硷紝鏄庣粏鍒犵┖鏃舵竻鎴愭湭姹囨�伙紱noticeId 璁板綍宸插彂甯冪殑绔嬮」閫氱煡鍏憡锛岄噸澶嶅彂甯冭鎷︽埅", "upstream": ["璇鹃鎸囧崡(蹇呴』宸插彂甯冧笖鍦ㄧ敵鎶ユ湡鍐�)", "浼氬憳(ums_member路甯﹀嚭鐢虫姤浜轰俊鎭�)", "鐢虫姤闄勪欢(storage_attachment路recordType=research_application)"], "downstream": ["涓撳璇勫鏄庣粏", "缁忚垂鎷ㄤ粯璁板綍", "绔嬮」閫氱煡(system_notice 鍏憡)", "BPM 娴佺▼瀹炰緥(research_topic_approve 鍒嗙被)", "闄勪欢涓績"], "keywords": "璇鹃鐢虫姤 鐢虫姤涔� 鐢虫姤鍗� SB 鐢虫姤缂栧彿 绔嬮」 绔嬮」缂栧彿 LX 鐢宠缁忚垂 鐢虫姤涔︽鏂� 璇鹃缁勬垚鍛� 涓撳璇勫 璇勫姹囨�� 绔嬮」閫氱煡 鍙戝竷閫氱煡 鎻愪氦瀹℃壒 椹冲洖 閲嶆彁"},
+    {"name": "璇鹃鐢虫姤涔�", "module": "璇鹃绠$悊", "table": "research_application", "doc": "鐢虫姤缂栧彿 SB+yyyyMMdd+6浣嶆祦姘�(Redis 姣忔棩閲嶇疆)锛沢uidelineId 鍏宠仈鎸囧崡銆乵emberId 鍏宠仈 ums_member(杞叧鑱旀棤澶栭敭锛屼細鍛樺垹闄ゅ悗浼氱暀涓嬫偓绌� memberId 闇�瀹归敊鏄剧ず)锛沘pplicantName/workUnit/jobTitle/contactPhone/contactEmail 鐢遍�変細鍛樿嚜鍔ㄥ甫鍑哄彲鎵嬫敼锛沜ategory 鍐椾綑鑷寚鍗椾笖涓嶄俊浠诲墠绔紶鍊硷紱budgetAmount 鐢宠缁忚垂涓烘嫧浠樹笂闄愶紱status: 0鑽夌/15瀹℃壒涓�/20宸茬珛椤�/35宸查┏鍥炪�備粎鑽夌鍙垹(杩炲甫娓呴檮浠�)銆佽崏绋夸笌宸查┏鍥炲彲鏀瑰彲閲嶆彁锛泂ubmit 鍓嶉�愭潯鏍¢獙銆屾寚鍗楀凡鍙戝竷銆嶄笌銆岀幇鍦ㄥ湪鐢虫姤鏈熷唴銆嶏紝浠讳竴涓嶆弧瓒冲嵆鎷掔粷骞舵寜缁村害缁欏嚭鎸囧崡鍚嶄笌瀹為檯鍊硷紱瀹℃壒閫氳繃鐢辩洃鍚櫒鐢熸垚绔嬮」缂栧彿 researchNo(LX+鍚屾棩娴佹按)涓� approveTime(宸叉湁缂栧彿骞傜瓑璺宠繃)锛況eviewAvgScore/reviewPass 涓鸿瘎瀹℃眹鎬诲洖鍐欏�硷紝鏄庣粏鍒犵┖鏃舵竻鎴愭湭姹囨�伙紱noticeId 璁板綍宸插彂甯冪殑绔嬮」閫氱煡鍏憡锛岄噸澶嶅彂甯冭鎷︽埅锛沘rchive_document_id 闈炵┖琛ㄧず宸插綊妗o紙褰掓。鍚庡垪琛ㄩ〉闅愯棌銆屽綊妗c�嶆寜閽級", "upstream": ["璇鹃鎸囧崡(蹇呴』宸插彂甯冧笖鍦ㄧ敵鎶ユ湡鍐�)", "浼氬憳(ums_member路甯﹀嚭鐢虫姤浜轰俊鎭�)", "鐢虫姤闄勪欢(storage_attachment路recordType=research_application)"], "downstream": ["涓撳璇勫鏄庣粏", "缁忚垂鎷ㄤ粯璁板綍", "绔嬮」閫氱煡(system_notice 鍏憡)", "BPM 娴佺▼瀹炰緥(research_topic_approve 鍒嗙被)", "妗f绠$悊(鎵嬪姩銆屽綊妗c�嵚蜂粎宸茬珛椤瑰彲褰掓。路缁� yudao-module-archive-api 鐢熸垚妗f骞跺洖鍐� archive_document_id)", "闄勪欢涓績"], "keywords": "璇鹃鐢虫姤 鐢虫姤涔� 鐢虫姤鍗� SB 鐢虫姤缂栧彿 绔嬮」 绔嬮」缂栧彿 LX 鐢宠缁忚垂 鐢虫姤涔︽鏂� 璇鹃缁勬垚鍛� 涓撳璇勫 璇勫姹囨�� 绔嬮」閫氱煡 鍙戝竷閫氱煡 鎻愪氦瀹℃壒 椹冲洖 閲嶆彁 褰掓。 archive_document_id"},
     {"name": "涓撳璇勫鏄庣粏", "module": "璇鹃绠$悊", "table": "research_topic_review", "doc": "涓�浣嶄笓瀹朵竴琛岀殑涓�涓诲琛屽瓙琛細evaluatorName/evaluatorUnit/evaluatorTitle + topicScore 閫夐浠峰�间笌鎰忎箟(鏉冮噸0.3) + planScore 鐮旂┒鏂规鍙鎬�(0.3) + teamScore 鍥㈤槦涓庣爺绌跺熀纭�(0.2) + resultScore 棰勬湡鎴愭灉涓庢晥鐩�(0.2) + conclusion 1鎺ㄨ崘绔嬮」/2涓嶆帹鑽愮珛椤� + opinion 璇勫鎰忚 + reviewTime銆俢ompositeScore 鐢卞悗绔� weightedScore 璁$畻銆乺anking 鐢卞悗绔寜鍔犳潈鍒嗛檷搴忛噸鎺掞紝鍧囦笉鎺ュ彈鍓嶇浼犲�硷紱姣忔澧炲垹鏀瑰悗璋� recalculate 鍥炲啓涓诲崟 reviewAvgScore(鍏ㄩ儴涓撳鍔犳潈鍒嗗潎鍊悸蜂繚鐣�2浣�)涓� reviewPass(鍧囧垎杈炬爣 涓� 澶氭暟缁撹涓烘帹鑽愮珛椤规椂涓� 1)锛涘洓椤瑰垎鍊艰秴鍑� 0~100 鏃舵彁绀烘寚鍑哄叿浣撶淮搴︿笌瀹為檯鍊硷紱浠呭湪鐢虫姤鍗� status=15 瀹℃壒涓彲澧炲垹鏀�", "upstream": ["璇鹃鐢虫姤涔�(浠呭鎵逛腑鍙啓)"], "downstream": ["璇鹃鐢虫姤涔�(鍥炲啓 reviewAvgScore/reviewPass)"], "keywords": "涓撳璇勫 璇勫鏄庣粏 璇勫垎 鍔犳潈 鏉冮噸 鎺掑悕 ranking compositeScore 鎺ㄨ崘绔嬮」 璇勫鎰忚 鍧囧垎"},
+    {"name": "妗f鍒嗙被", "module": "妗f绠$悊", "table": "archive_category", "doc": "鏍戝舰涔︽灦鍒嗙被(parentId路0=椤剁骇)锛屾壙杞姐�屽垎灞傚垎鍒椼�嶈鏁达細6 鏉″垵濮嬪垎绫� 浼氬憳妗f member / 璇鹃妗f research / 浼氳妗f meeting / 璐㈠姟妗f finance / 鏂囦功妗f document / 鍏氬缓妗f party锛沜ode 鍏ㄥ眬鍞竴 uk_code锛沝efaultSecretLevel 涓鸿鍒嗙被涓嬫。妗堢殑榛樿瀵嗙骇(1鍏紑/2鍐呴儴/3淇濆瘑锛岃储鍔″垎绫�=3)锛泂tatus 0鍚敤/1鍋滅敤銆備粎鍙敼鍙垹锛屾湁瀛愬垎绫荤鍒犮�佽鍒嗙被涓嬫湁妗f绂佸垹銆佺埗鍒嗙被涓嶈兘璁句负鑷韩鎴栧叾瀛愬垎绫汇�備細璁�/鍏氬缓妗f绯荤粺鍐呮棤鏉ユ簮妯″潡锛屼粎鏀寔鎵嬪伐褰曞叆妗f", "upstream": ["浜哄伐缁存姢(妗f绠$悊鍛�)"], "downstream": ["妗f(鏂板鏃跺甫鍑洪粯璁ゅ瘑绾�)"], "keywords": "妗f鍒嗙被 涔︽灦 鍒嗗眰鍒嗗垪 浼氬憳妗f 璇鹃妗f 浼氳妗f 璐㈠姟妗f 鏂囦功妗f 鍏氬缓妗f category 榛樿瀵嗙骇"},
+    {"name": "妗f", "module": "妗f绠$悊", "table": "archive_document", "doc": "妗f涓昏〃锛岀紪鍙� DA+yyyyMMdd+6浣嶆祦姘�(Redis 姣忔棩閲嶇疆)銆傜數瀛愪笌瀹炰綋鍏煎叿锛氱數瀛愯蛋 system 闄勪欢涓績 recordType=archive_document(琛ㄥ唴涓嶅瓨鏂囦欢鍦板潃)銆佸疄浣撹 shelfNo 涔︽灦鍙�/layerNo 灞傚彿/columnNo 鍒楀彿/boxNo 鍐屽彿妗f鐩� + storePlace 瀛樻斁浣嶇疆鎻忚堪銆俢arrierType 1鐢靛瓙/2瀹炰綋/3鐢靛瓙+瀹炰綋锛泂ecretLevel 1鍏紑/2鍐呴儴/3淇濆瘑(涓� 3 涓斿綋鍓嶇敤鎴锋棤 archive:document:sensitive 鏃惰鎯呮姤閿欍�佸垪琛ㄤ笌瀵煎嚭寮哄埗杩囨护)锛泂ourceType 1鎵嬪伐/2璇鹃/3浼氬憳/4璐㈠姟 + sourceNo/sourceId/sourceTitle 璁板綍鏉ユ簮蹇収浠ヤ究妫�绱紱status 10鍦ㄥ簱/20鍊熷嚭涓�(鍊熷嚭涓鏀广�佸瓨鍦ㄦ湭褰掕繕鍊熼槄鍗曟椂绂佸垹)銆傛潵婧愪负 2/3/4 鐨勬。妗堢敱涓夋柟鍒楄〃椤点�屽綊妗c�嶆寜閽粡 ArchiveDocumentApi.archiveBySource 鐢熸垚(骞傜瓑)锛屽苟鍥炲啓鏉ユ簮琛� archive_document_id", "upstream": ["妗f鍒嗙被", "妗f鐧昏(浜哄伐)", "璇鹃褰掓。(宸茬珛椤圭敵鎶ヤ功)", "浼氬憳褰掓。(姝e父浼氬憳)", "璐㈠姟褰掓。(宸查�氳繃鎶ラ攢鍗�)"], "downstream": ["鍊熼槄鍗�", "闄勪欢涓績(recordType=archive_document)", "鏉ユ簮琛� archive_document_id 鍥炲啓"], "keywords": "妗f 鏂囨。 document DA 妗f缂栧彿 瀵嗙骇 淇濆瘑 鍏紑 鍐呴儴 鏁忔劅妗f 杞戒綋 鐢靛瓙 瀹炰綋 涔︽灦鍙� 灞傚彿 鍒楀彿 鍐屽彿 妗f鐩� 褰掓。鏃ユ湡 鍦ㄥ簱 鍊熷嚭涓� 妫�绱� 鍏抽敭璇� tags 鏉ユ簮鍗曞彿 褰掓。鑱斿姩"},
+    {"name": "鍊熼槄鍗�", "module": "妗f绠$悊", "table": "archive_borrow", "doc": "鍊熼槄涓庡綊杩樺悎涓�锛岀紪鍙� JY+yyyyMMdd+6浣嶆祦姘�(Redis 姣忔棩閲嶇疆)銆傝褰曞�熼槄浜�/閮ㄩ棬/鐢佃瘽銆佸�熼槄鏃ユ湡銆佸�熼槄鐩殑銆佸綊杩樻湡闄�(returnDeadline路閫炬湡瀹炴椂璁$畻鍩哄噯)锛沝ocumentNo/documentTitle 涓烘。妗堝揩鐓с�俿tatus 0鑽夌/15瀹℃壒涓�/20鍊熷嚭涓�/30宸插綊杩�/35宸查┏鍥烇細浠� 0 涓� 35 鍙敼鍙噸鎻愩�佷粎 0 鍙垹銆佷粎 20 鍙櫥璁板綊杩樸�俿ubmit 鍓嶆牎楠屽悓涓�妗f涓嶅緱宸叉湁 15/20 鐨勫�熼槄鍗�(鍛戒腑鎶ュ凡鍊熺敤骞跺甫妗f鍚嶄笌宸插瓨鍦ㄥ�熼槄鍗曞彿)锛涙祦绋� key archive_borrow_approve 涓ょ骇(妗f绠$悊鍛樺鏍糕啋鍒嗙棰嗗瀹℃壒)锛屽墠绔笉鍐欐 key銆傚鎵归�氳繃鐢� ArchiveBorrowStatusListener 鍥炲啓 20+approveTime 骞舵潯浠舵洿鏂版。妗� SET status=20 WHERE status=10(褰卞搷 0 琛屾姤妗f宸茶鍗犵敤骞跺洖婊�)锛涘綊杩樼櫥璁版潯浠舵洿鏂� 20鈫�30 骞跺洖鍐� returnTime/褰掕繕纭浜恒�傞�炬湡涓嶈惤搴擄紝鏌ヨ鏃跺疄鏃剁畻 overdueDays 骞跺湪鍒楄〃娓叉煋绾㈣壊銆岄�炬湡 N 澶┿�嶏紝鍙︽湁 /overdue-page 鐙珛鍏ュ彛", "upstream": ["妗f(浠� 鍦ㄥ簱 10 鍙��)", "BPM(娴佺▼ archive_borrow_approve)", "浜哄伐鐧昏"], "downstream": ["妗f(鐘舵�� 20 鍊熷嚭涓� / 褰掕繕鍥� 10 鍦ㄥ簱)"], "keywords": "鍊熼槄 鍊熼槄鍗� 鍊熼槄鐧昏 褰掕繕 褰掕繕鐧昏 閫炬湡 閫炬湡鏈繕 鍊熼槄浜� 鍊熼槄鐩殑 褰掕繕鏈熼檺 JY 鍊熼槄鍗曞彿 妗f绠$悊鍛樺鏍� 鍒嗙棰嗗瀹℃壒 娴佽浆闂幆"},
     {"name": "缁忚垂鎷ㄤ粯璁板綍", "module": "璇鹃绠$悊", "table": "research_fund_record", "doc": "涓�涓诲琛岀殑鎷ㄦ鍙拌处锛歜atchName 鎵规鍚嶇О/amount 鎷ㄤ粯閲戦/payDate 鎷ㄤ粯鏃ユ湡/payee 鏀舵鍗曚綅/remark锛屽嚟璇侀檮浠惰蛋 system 闄勪欢涓績 recordType=research_fund_record(琛ㄥ唴涓嶅瓨鏂囦欢鍦板潃)銆俿tatus: 0寰呮嫧浠�/15鎶ラ攢瀹℃壒涓�/20宸叉嫧浠�/30宸查┏鍥烇紝鐢辩郴缁熶笌 BPM 椹卞姩锛屾柊澧�/淇敼鎺ュ彛宸茬Щ闄� status 鍏ュ弬(闃蹭吉閫犮�屽凡鎷ㄤ粯銆�)銆傜櫥璁板嵆涓�鏉¢緳锛氳惤鍙拌处 鈫� 鍚屼竴鎵� blob 鍙岀粦 鈫� 缁� FinanceReimbursementApi 鑷姩鐢熸垚 1:1 鐨� finance_reimbursement 骞剁珛鍗虫彁浜� BPM 鈫� 鍥炲啓 reimbursement_id/reimbursement_no 骞剁疆 15锛涘鎵圭粨鏋滅敱鐩戝惉鍣ㄥ洖鍐欙細閫氳繃鈫�20銆侀┏鍥炩啋30(+reject_reason/reject_time)銆佸彇娑堟祦绋嬧啋閫�鍥� 0锛堝彂璧蜂汉鎾ゅ洖鍙��鍥炲彂璧疯妭鐐广�佹祦绋嬫湭缁撴潫锛岀姸鎬佷笉鍙橈級銆備粎鐢虫姤鍗� status=20 宸茬珛椤瑰彲鐧昏锛涘嚟璇佸繀濉紱閲戦鏍¢獙锛氬凡鐧昏閲戦(璇ュ崟鍏ㄩ儴璁板綍姹傚拰) + 鏈閲戦 涓嶅緱瓒呭嚭鐢虫姤鍗� budgetAmount锛岃秴鍑烘椂鎻愮ず鎶ュ嚭鏈銆佸凡鐧昏銆佸悎璁°�侀绠楀洓椤规暟鍊硷紱浠呫�屽緟鎷ㄤ粯銆嶅彲鍒�(鑱斿姩鍒犻櫎璐㈠姟渚ц崏绋挎姤閿�鍗曪紝闈炶崏绋垮垯鎷掔粷)锛屻�屽緟鎷ㄤ粯銆嶃�屽凡椹冲洖銆嶅彲鏀瑰苟閲嶆柊鍙戣捣鎶ラ攢(宸查┏鍥炴敼鍚庢竻绌� reject_reason/reject_time)锛岀紪杈戞椂鎶婃湰琛岄噾棰濆姞鍥炲彲鐢ㄤ綑棰濆睍绀洪伩鍏嶈瑙c�備笌鎶ラ攢鍗曚负杞叧鑱�(鏃犲閿�)锛岃储鍔′晶鐩存帴鍒犲崟浼氱暀涓嬫偓绌� reimbursement_id锛屾鏃朵慨鏀规姤銆屾姤閿�鍗曞凡涓嶅瓨鍦紝璇峰垹闄ゆ湰鏉¤褰曞悗閲嶆柊鐧昏銆�", "upstream": ["璇鹃鐢虫姤涔�(蹇呴』宸茬珛椤�)", "璐㈠姟鎶ラ攢鍗�(1:1 鑷姩鐢熸垚路杞叧鑱� reimbursement_id)"], "downstream": ["鎷ㄤ粯鍑瘉(storage_attachment路recordType=research_fund_record)", "璐㈠姟鎶ラ攢鍗�(鐢熸垚骞舵彁浜ゅ嚭璐β峰鎵圭粨鏋滃洖鍐欐湰鍙拌处)"], "keywords": "缁忚垂鎷ㄤ粯 鎷ㄦ 鎷ㄤ粯璁板綍 鎵规 鎷ㄤ粯閲戦 鍑瘉 寰呮嫧浠� 鎶ラ攢瀹℃壒涓� 宸叉嫧浠� 宸查┏鍥� 椹冲洖鍘熷洜 璐㈠姟鎶ラ攢鍗曞彿 reimbursement_id 鏀舵鍗曚綅 璧勫姪閲戦 棰勭畻 瓒呴 閲嶆柊鍙戣捣鎶ラ攢"}
   ]
 }</script>
@@ -631,7 +654,19 @@
        {"stage": "涓撳璇勫", "action": "鐢虫姤鍗曞浜庡鎵逛腑(15)鏃跺綍鍏ヤ笓瀹惰瘎鍒嗘槑缁嗭紙涓�浣嶄笓瀹朵竴琛岋細濮撳悕/鍗曚綅/鑱岀О + 閫夐浠峰��0.3/鐮旂┒鏂规0.3/鍥㈤槦鍩虹0.2/棰勬湡鎴愭灉0.2 鍥涢」鍒嗗�� + 缁撹 + 鎰忚锛夛紱鍚庣姣忔澧炲垹鏀瑰悗閲嶇畻 compositeScore 鍔犳潈鍚堣銆佹寜鍔犳潈鍒嗛檷搴忛噸鎺� ranking锛屽苟鍥炲啓涓诲崟 reviewAvgScore锛堝叏閮ㄤ笓瀹跺潎鍒嗭級涓� reviewPass锛堝潎鍒嗚揪鏍囦笖澶氭暟缁撹涓烘帹鑽愮珛椤癸級锛涙槑缁嗗叏閮ㄥ垹闄ゆ椂姹囨�诲�兼竻绌轰负鏈眹鎬伙紱鍥涢」鍒嗗�煎潎鍦� 0~100 涔嬪鏃舵彁绀烘寚鍑哄叿浣撶淮搴︿笌瀹為檯鍊�", "roles": ["璇勫涓撳", "瀛︿細绉樹功澶�", "璇鹃绠$悊鍛�"]},
        {"stage": "绔嬮」瀹℃壒", "action": "BPM 娴佺▼ research_topic_approve 椤哄簭璧颁笁鑺傜偣锛氱涔﹀褰㈠紡瀹℃煡 鈫� 涓撳璇勫 鈫� 瀛︿細绔嬮」瀹℃壒銆傚鎵规柟娉曚笌瀹℃壒浜哄湪娴佺▼瀹氫箟鍐呴厤缃紝閮ㄧ讲鍚庣敱绠$悊鍛樺湪 BPM 娴佺▼璁捐鍣ㄦ寜瀛︿細瀹為檯缁勭粐璋冩暣锛涘鎵逛腑蹇冨唴鐨勮嚜瀹氫箟琛ㄥ崟鍙鍥炴樉鐢虫姤鍗� + 璇勫鏄庣粏 + 鎷ㄤ粯璁板綍銆傞�氳繃鈫�20 宸茬珛椤广�侀┏鍥炩啋35 宸查┏鍥炪�佸彇娑堚啋閫�鍥� 0 鑽夌", "roles": ["瀛︿細绉樹功澶勶紙褰㈠紡瀹℃煡锛�", "璇勫涓撳锛堣瘎瀹¤妭鐐癸級", "瀛︿細鐞嗕簨浼氾紙绔嬮」瀹℃壒锛�"]},
        {"stage": "绔嬮」涓庨�氱煡", "action": "鐩戝惉鍣� ResearchApplicationStatusListener 鍏堝洖鍐欏鎵圭姸鎬侊紝瀹℃壒閫氳繃鍚庡啀璋� approveApplication锛氱敓鎴愮珛椤圭紪鍙� LX+yyyyMMdd+6浣嶆祦姘� 涓� approveTime锛堝凡鏈夌紪鍙峰垯骞傜瓑璺宠繃锛夈�傜偣銆屽彂甯冪珛椤归�氱煡銆嶇敓鎴� system_notice 鍏憡锛堟爣棰樸�庡叧浜庡叕甯冪珛椤硅棰樼殑閫氱煡銆忥紝姝f枃鍚棰樺悕/绔嬮」缂栧彿/绫诲埆/鐢虫姤浜�/鍗曚綅/璧勫姪閲戦锛夛紝鍐欏洖 noticeId 闃查噸澶嶁�斺�旈噸澶嶇偣鍑绘寜宸插彂甯冩嫤鎴苟鍛婄煡涓婃鍙戝竷鏃堕棿", "roles": ["璇鹃绠$悊鍛�", "瀛︿細绉樹功澶�"]},
-       {"stage": "缁忚垂鎷ㄤ粯", "action": "浠呫�屽凡绔嬮」(20)銆嶇殑鐢虫姤鍗曞彲鐧昏鎷ㄦ璁板綍锛堟壒娆″悕绉�/鎷ㄤ粯閲戦/鎷ㄤ粯鏃ユ湡/鏀舵鍗曚綅/澶囨敞/鍑瘉闄勪欢锛夛紝鍑瘉蹇呭~銆傜櫥璁版椂涓�鏉¢緳瀹屾垚锛氣憼 璇鹃渚ц惤 research_fund_record 鍙拌处锛堝厛缃緟鎷ㄤ粯锛夆憽 鍚屼竴鎵� blob 鍙岀粦鍒拌棰樺彴璐︿笌璐㈠姟鎶ラ攢鍗� 鈶� 缁� yudao-module-finance-api 鑷姩鐢熸垚 1:1 鐨� finance_reimbursement 鎶ラ攢鍗曪紙1 琛屾槑缁嗭細璐圭敤绫诲瀷=鍏朵粬銆佸彂绁ㄩ噾棰�=鎷ㄤ粯閲戦銆佸彂绁ㄦ棩鏈�=鎷ㄤ粯鏃ユ湡銆佽垂鐢ㄨ鏄�=銆岃棰樸�旇棰樺悕銆曠N鏈�/绗琋娆$粡璐规嫧娆俱�嶏級鈶� 绔嬪嵆鎻愪氦 BPM 鎶ラ攢瀹℃壒 鈶� 鍙拌处鍥炲啓鎶ラ攢鍗曞彿骞剁疆銆屾姤閿�瀹℃壒涓�(15)銆嶃�傞噾棰濇牎楠岋細宸茬櫥璁伴噾棰� + 鏈閲戦 涓嶅緱瓒呭嚭璇ュ崟鐢宠缁忚垂锛岃秴鍑烘椂鎻愮ず鎶ュ嚭鏈銆佸凡鐧昏銆佸悎璁°�侀绠楀洓椤规暟鍊笺�傜姸鎬佺敱绯荤粺椹卞姩锛�0寰呮嫧浠�/15鎶ラ攢瀹℃壒涓�/20宸叉嫧浠�/30宸查┏鍥烇紱鍙湁銆屽緟鎷ㄤ粯銆嶅彲鍒狅紙鍒犻櫎鑱斿姩娓呯悊璐㈠姟渚ц崏绋挎姤閿�鍗曪級锛屻�屽緟鎷ㄤ粯銆嶃�屽凡椹冲洖銆嶅彲鏀瑰苟閲嶆柊鍙戣捣鎶ラ攢锛堝凡椹冲洖鏀瑰悗娓呯┖椹冲洖鍘熷洜涓庢椂闂达級锛涘彇娑堟祦绋嬪垯閫�鍥炪�屽緟鎷ㄤ粯(0)銆嶏紙鍙戣捣浜烘挙鍥炲彧鎶婂疄渚嬮��鍥炲彂璧疯妭鐐广�佹祦绋嬫湭缁撴潫锛屽彴璐︿繚鎸併�屾姤閿�瀹℃壒涓�(15)銆嶏紝闇�閲嶆柊鎻愪氦鍚庢墠缁х画璧板鎵癸級銆傝储鍔″鎵瑰垎绫讳笅娌℃湁宸插彂甯冩祦绋嬫椂鐩存帴鎶ラ敊涓斾笉寤哄崟锛屼笉鐣欏鍎胯崏绋挎姤閿�鍗�", "roles": ["瀛︿細璐㈠姟", "璇鹃绠$悊鍛�", "璐㈠姟瀹℃牳浜�", "璐㈠姟涓荤"]}]},
+     {"stage": "缁忚垂鎷ㄤ粯", "action": "浠呫�屽凡绔嬮」(20)銆嶇殑鐢虫姤鍗曞彲鐧昏鎷ㄦ璁板綍锛堟壒娆″悕绉�/鎷ㄤ粯閲戦/鎷ㄤ粯鏃ユ湡/鏀舵鍗曚綅/澶囨敞/鍑瘉闄勪欢锛夛紝鍑瘉蹇呭~銆傜櫥璁版椂涓�鏉¢緳瀹屾垚锛氣憼 璇鹃渚ц惤 research_fund_record 鍙拌处锛堝厛缃緟鎷ㄤ粯锛夆憽 鍚屼竴鎵� blob 鍙岀粦鍒拌棰樺彴璐︿笌璐㈠姟鎶ラ攢鍗� 鈶� 缁� yudao-module-finance-api 鑷姩鐢熸垚 1:1 鐨� finance_reimbursement 鎶ラ攢鍗曪紙1 琛屾槑缁嗭細璐圭敤绫诲瀷=鍏朵粬銆佸彂绁ㄩ噾棰�=鎷ㄤ粯閲戦銆佸彂绁ㄦ棩鏈�=鎷ㄤ粯鏃ユ湡銆佽垂鐢ㄨ鏄�=銆岃棰樸�旇棰樺悕銆曠N鏈�/绗琋娆$粡璐规嫧娆俱�嶏級鈶� 绔嬪嵆鎻愪氦 BPM 鎶ラ攢瀹℃壒 鈶� 鍙拌处鍥炲啓鎶ラ攢鍗曞彿骞剁疆銆屾姤閿�瀹℃壒涓�(15)銆嶃�傞噾棰濇牎楠岋細宸茬櫥璁伴噾棰� + 鏈閲戦 涓嶅緱瓒呭嚭璇ュ崟鐢宠缁忚垂锛岃秴鍑烘椂鎻愮ず鎶ュ嚭鏈銆佸凡鐧昏銆佸悎璁°�侀绠楀洓椤规暟鍊笺�傜姸鎬佺敱绯荤粺椹卞姩锛�0寰呮嫧浠�/15鎶ラ攢瀹℃壒涓�/20宸叉嫧浠�/30宸查┏鍥烇紱鍙湁銆屽緟鎷ㄤ粯銆嶅彲鍒狅紙鍒犻櫎鑱斿姩娓呯悊璐㈠姟渚ц崏绋挎姤閿�鍗曪級锛屻�屽緟鎷ㄤ粯銆嶃�屽凡椹冲洖銆嶅彲鏀瑰苟閲嶆柊鍙戣捣鎶ラ攢锛堝凡椹冲洖鏀瑰悗娓呯┖椹冲洖鍘熷洜涓庢椂闂达級锛涘彇娑堟祦绋嬪垯閫�鍥炪�屽緟鎷ㄤ粯(0)銆嶏紙鍙戣捣浜烘挙鍥炲彧鎶婂疄渚嬮��鍥炲彂璧疯妭鐐广�佹祦绋嬫湭缁撴潫锛屽彴璐︿繚鎸併�屾姤閿�瀹℃壒涓�(15)銆嶏紝闇�閲嶆柊鎻愪氦鍚庢墠缁х画璧板鎵癸級銆傝储鍔″鎵瑰垎绫讳笅娌℃湁宸插彂甯冩祦绋嬫椂鐩存帴鎶ラ敊涓斾笉寤哄崟锛屼笉鐣欏鍎胯崏绋挎姤閿�鍗�", "roles": ["瀛︿細璐㈠姟", "璇鹃绠$悊鍛�", "璐㈠姟瀹℃牳浜�", "璐㈠姟涓荤"]}]},
+    {"id": "archive", "name": "妗f绠$悊娴佺▼", "mermaid": "mermaid/15-archive-flow.mmd", "color": "#7fb3d5",
+     "summary": "鐙珛妗f妯″潡锛坹udao-module-archive锛夛細涔︽灦鍒嗙被锛堝垎灞傚垎鍒楋級瑙勬暣 鈫� 妗f鐧昏锛堢數瀛愰檮浠� + 瀹炰綋浣嶇疆鍥涘瓧娈碉紝瀵嗙骇涓夋。锛夆啋 鍊熼槄鐧昏璧� BPM 涓ょ骇瀹℃壒锛堟。妗堢鐞嗗憳瀹℃牳 鈫� 鍒嗙棰嗗瀹℃壒锛夆啋 瀹℃壒閫氳繃妗f杞�屽�熷嚭涓�嶁啋 褰掕繕鐧昏鍥炪�屽湪搴撱�嶅舰鎴愭祦杞棴鐜� 鈫� 閫炬湡鏈繕鏌ヨ鏃跺疄鏃惰绠楀苟鍦ㄥ垪琛ㄦ爣绾� 鈫� 瀛橀噺涓庢祦杞粺璁★紙鎬绘暟/鍦ㄥ簱/鍊熷嚭涓�/閫炬湡 + 鍒嗙被路瀵嗙骇路杞戒綋涓夌粍鍒嗗竷锛夈�傚悓鏃舵帴鏀惰棰橈紙宸茬珛椤癸級銆佷細鍛橈紙姝e父锛夈�佽储鍔★紙宸查�氳繃锛変笁鏂圭殑銆屽綊妗c�嶈仈鍔紝缁忔柊寤虹殑 yudao-module-archive-api 鐢熸垚妗f骞跺洖鍐欐潵婧愯〃 archive_document_id銆備細璁�/鍏氬缓妗f绯荤粺鍐呮棤鏉ユ簮妯″潡锛屼粎鎵嬪伐褰曞叆銆�",
+     "steps": [
+       {"stage": "寤哄垎绫�", "action": "鏂板缓鍒嗙被鍙寕鐖跺垎绫诲舰鎴愬垎绫绘爲锛堢紪鐮� code 鍏ㄥ眬鍞竴锛夛紝璁炬帓搴忋�佽鏄庛�侀粯璁ゅ瘑绾т笌鍚敤鐘舵�侊紱6 鏉″垵濮嬪垎绫伙細浼氬憳妗f/璇鹃妗f/浼氳妗f/璐㈠姟妗f锛堥粯璁ゅ瘑绾�=淇濆瘑 3锛�/鏂囦功妗f/鍏氬缓妗f銆傛湁瀛愬垎绫绘垨璇ュ垎绫讳笅宸叉湁妗f鏃剁姝㈠垹闄わ紱鐖跺垎绫讳笉鑳借涓鸿嚜韬垨鍏跺瓙鍒嗙被", "roles": ["妗f绠$悊鍛�"]},
+       {"stage": "鐧昏妗f", "action": "濉爣棰樸�佸垎绫汇�佸瘑绾э紙1鍏紑/2鍐呴儴/3淇濆瘑锛夈�佽浇浣擄紙1鐢靛瓙/2瀹炰綋/3鐢靛瓙+瀹炰綋锛夈�佸綊妗f棩鏈熴�佹憳瑕併�佸叧閿瘝锛涢�夌數瀛愬垯涓婁紶闄勪欢锛堣蛋 system 闄勪欢涓績锛宺ecordType=archive_document锛屽厛 /system/storage-blob/upload 鍙� blobId 鍐嶉殢淇濆瓨璇锋眰鐨� blobIds 鎻愪氦锛屽叏閲忔浛鎹㈣涔夛級锛岄�夊疄浣撳垯濉功鏋跺彿/灞傚彿/鍒楀彿/鍐屽彿妗f鐩掍笌瀛樻斁浣嶇疆鎻忚堪锛涘悗绔敓鎴愭。妗堢紪鍙� DA+yyyyMMdd+6浣嶆祦姘达紙Redis 姣忔棩閲嶇疆锛夛紝鐘舵�併�屽湪搴�(10)銆�", "roles": ["妗f绠$悊鍛�"]},
+       {"stage": "妫�绱�", "action": "鎸夋。妗堢紪鍙�/鏍囬/鍏抽敭璇� tags/鏉ユ簮鍗曞彿/鍒嗙被/瀵嗙骇/杞戒綋/鐘舵��/褰掓。鏃ユ湡鍖洪棿澶氭潯浠舵绱紝鏀寔 Excel 瀵煎嚭銆傚瘑绾�=淇濆瘑(3) 鐨勬。妗堬細褰撳墠鐢ㄦ埛鏃� archive:document:sensitive 鏃跺垪琛ㄤ笌瀵煎嚭寮哄埗杩囨护鎺夈�佺洿杩炶鎯呮帴鍙f姤鏃犳潈闄愰敊璇�", "roles": ["妗f绠$悊鍛�", "鍏ㄥ憳鍙煡鍏紑妗�"]},
+       {"stage": "涓夋柟褰掓。", "action": "璇鹃鐢虫姤涔︼紙浠呭凡绔嬮」 20锛夈�佷細鍛橈紙浠呮甯� 1锛夈�佽储鍔℃姤閿�鍗曪紙浠呭凡閫氳繃 20锛夌殑鍒楄〃椤靛悇鏈変竴涓�屽綊妗c�嶆寜閽紝缁� yudao-module-archive-api 鐨� archiveBySource 鎸夈�屾潵婧愮被鍨� + 鏉ユ簮鍗曟嵁 ID銆嶅箓绛夌敓鎴愭。妗堬紙鏉ユ簮鍗曞彿/鏍囬浣滀负蹇収瀛樺叆妗f锛屾簮鍗曢檮浠朵竴骞跺甫鍏ユ。妗堬紱璐㈠姟妗f瀵嗙骇鍥哄畾涓恒�屼繚瀵嗐�嶏級锛屽苟鍥炲啓鏉ユ簮琛� archive_document_id 浣滀负宸插綊妗g‖鏍囪锛涢噸澶嶇偣鍑荤敱鏉ユ簮渚ф嫤鎴苟鎻愮ず宸茬敓鎴愮殑妗f缂栧彿銆傝储鍔′晶銆屽綊妗c�嶄笌鍏舵棦鏈� 20鈫�40 鐘舵�佹帹杩涘湪鍚屼竴浜嬪姟鍐呭彔鍔犳墽琛�", "roles": ["璇鹃绠$悊鍛�", "浼氬憳绠$悊鍛�", "璐㈠姟"]},
+       {"stage": "鍊熼槄鐧昏", "action": "閫夋。妗堬紙浠呫�屽湪搴�(10)銆嶅彲閫夛級銆佸~鍊熼槄浜�/閮ㄩ棬/鑱旂郴鐢佃瘽銆佸�熼槄鏃ユ湡銆佸�熼槄鐩殑銆佸綊杩樻湡闄愶紱鐢熸垚鍊熼槄鍗曞彿 JY+yyyyMMdd+6浣嶆祦姘达紝鐘舵�併�岃崏绋�(0)銆嶃�傛彁浜ゅ墠鏍¢獙鍚屼竴妗f涓嶅緱瀛樺湪銆屽鎵逛腑(15)銆嶆垨銆屽�熷嚭涓�(20)銆嶇殑鍊熼槄鍗曪紝鍛戒腑鏃舵寜宸插瓨鍦ㄧ殑鍊熼槄鍗曞彿绮剧‘鎶ラ敊锛泂ubmit 鍏堣В鏋愭祦绋嬪垪琛紙鏃犲凡鍙戝竷娴佺▼鐩存帴鎶ラ敊銆佷笉鐣欏鍎胯崏绋匡級鍐嶅缓鍗曪紝鍥炲啓 processInstanceId 骞剁疆銆屽鎵逛腑(15)銆�", "roles": ["鍊熼槄浜�", "妗f绠$悊鍛�"]},
+       {"stage": "鍊熼槄瀹℃壒", "action": "BPM 娴佺▼ archive_borrow_approve 涓ょ骇椤哄簭瀹℃壒锛氭。妗堢鐞嗗憳瀹℃牳 鈫� 鍒嗙棰嗗瀹℃壒锛堝鎵规柟娉曚笌瀹℃壒浜哄湪娴佺▼瀹氫箟鍐呴厤缃紝鍓嶇鍙�夋祦绋嬩笉鍐欐 key锛涘鎵逛腑蹇冪粡鑷畾涔夎〃鍗曟煡鐪嬭矾寰� /archive/borrow/detail/approve/index.vue 鍙鍥炴樉鍊熼槄鍗曚笌妗f淇℃伅锛夈�傚鎵归�氳繃鐢� ArchiveBorrowStatusListener 缃�屽�熷嚭涓�(20)銆嶅苟鍥炲啓 approveTime锛屽悓鏃舵潯浠舵洿鏂版。妗堢姸鎬佷负銆屽�熷嚭涓�嶏紙褰卞搷 0 琛岃鏄庢。妗堝凡琚叾瀹冩祦绋嬪崰鐢� 鈫� 鎶ラ敊骞跺洖婊氾紝淇濊瘉鍚屼竴妗f涓嶄細琚袱鏉℃祦绋嬪悓鏃跺�熷嚭锛夛紱椹冲洖缃�屽凡椹冲洖(35)銆嶅苟鍥炲啓椹冲洖鍘熷洜涓庢椂闂达紝淇敼鍚庡彲閲嶆柊鎻愪氦锛涘彇娑堟祦绋嬮��鍥炪�岃崏绋�(0)銆�", "roles": ["妗f绠$悊鍛橈紙瀹℃牳锛�", "鍒嗙棰嗗锛堝鎵癸級"]},
+       {"stage": "褰掕繕鐧昏", "action": "浠呫�屽�熷嚭涓�(20)銆嶅彲鐧昏褰掕繕锛氬~褰掕繕澶囨敞 鈫� 鏉′欢鏇存柊鍊熼槄鍗曠姸鎬佸埌銆屽凡褰掕繕(30)銆嶅苟鍥炲啓 returnTime 涓庡綊杩樼‘璁や汉锛屽悓鏃舵潯浠舵洿鏂版。妗堝洖銆屽湪搴�(10)銆嶏紝褰㈡垚瀹屾暣娴佽浆闂幆锛涙洿鏂� 0 琛岃鏄庣姸鎬佸凡鍙樺寲锛屾姤鏄庣‘閿欒", "roles": ["妗f绠$悊鍛�"]},
+       {"stage": "閫炬湡鎻愰啋", "action": "涓嶅缓瀹氭椂浠诲姟銆佷笉鍙戠珯鍐呬俊锛氶�炬湡浠呭湪鏌ヨ鏃跺疄鏃惰绠楋紙鐘舵��=鍊熷嚭涓� 涓� 褰掕繕鏈熼檺鏃╀簬浠婂ぉ锛岄�炬湡澶╂暟=浠婂ぉ鈭掑綊杩樻湡闄愶級锛屽�熼槄鍒楄〃鐨勩�岄�炬湡銆嶅垪娓叉煋绾㈣壊銆岄�炬湡 N 澶┿�嶆爣绛撅紱鍙︽彁渚� /archive/borrow/overdue-page 鐙珛鍏ュ彛锛屽垪琛ㄩ〉鏈夈�屽彧鐪嬮�炬湡銆嶅垏鎹㈠湪 /page 涓� /overdue-page 涔嬮棿鍒囨崲鏁版嵁婧�", "roles": ["妗f绠$悊鍛�"]},
+       {"stage": "妗f缁熻", "action": "缁熻椤靛睍绀烘。妗堟�绘暟銆佸湪搴撴暟銆佸�熷嚭涓暟銆侀�炬湡鏈繕鏁板洓寮犲崱鐗囷紝浠ュ強鎸夊垎绫诲垎甯冿紙楗煎浘锛夈�佹寜瀵嗙骇鍒嗗竷锛堟煴鍥撅級銆佹寜杞戒綋鍒嗗竷锛堥ゼ鍥撅級涓夌粍鍒嗗竷锛屾暟鎹潵鑷� /archive/stat/overview 鐨勫崟娆¤仛鍚堟煡璇�", "roles": ["妗f绠$悊鍛�", "绠$悊灞�"]}]},
     {"id": "ai", "name": "AI 涓氬姟娴佺▼", "mermaid": "mermaid/11-ai-business-flow.mmd", "color": "#56c8d8",
      "summary": "缁熶竴妯″紡锛氫笟鍔′晶鏀堕泦涓婁笅鏂�(蹇呰鏃惰皟 MDM/SRM/CRM API 鍙栧悕绉�)鈫掔粍瑁� Prompt鈫抍hat/chatWithImage鈫掕В鏋� JSON鈫掑墠绔濉垨寤鸿锛涙棤 Function Calling锛汻AG 鐭ヨ瘑搴撳凡寤烘垚浣嗘殏鏃犱笟鍔℃秷璐广��",
      "steps": [
@@ -667,6 +702,10 @@
     {"role": "鍏ヤ細鐢宠浜�/浼氬憳绠$悊鍛�", "modules": ["UMS"], "operations": ["濉姤涓庝慨鏀瑰叆浼氱敵璇�(涓汉/鍗曚綅)", "涓婁紶璇佹槑鏉愭枡闄勪欢", "鎻愪氦 BPM 瀹℃壒", "浼氬憳鍒楄〃缁存姢涓庝細鍛橀�氳褰曟绱�"], "data": ["ums_application", "ums_member"], "scope": "鏉冮檺鐮� ums:application:create/update/delete/submit 路 ums:member:create/update/delete/query 路 ums:member:directory锛涙棤鏁版嵁鏉冮檺闅旂(鍏ㄥ憳鍙煡閫氳褰曪紝缁存姢绫绘寜閽彟鍑潈闄愮爜)"},
     {"role": "绉樹功澶�/鐞嗕簨浼�(瀹℃壒浜�)", "modules": ["UMS", "BPM"], "operations": ["鍏ヤ細鐢宠涓ょ骇瀹℃壒锛氱涔﹀鍒濆 鈫� 鐞嗕簨浼氬璁�"], "data": ["ums_application(鐘舵�佸洖鍐�)", "bpm_task"], "scope": "瀹℃壒浜虹敱 BPM 娴佺▼瀹氫箟閰嶇疆锛屽悗绔笉鍐欐锛涢�氳繃鍚庣郴缁熻嚜鍔ㄥ缓浼氬憳涓庣櫥褰曡处鍙�"},
     {"role": "璇鹃鐢虫姤浜�/璇鹃绠$悊鍛�", "modules": ["RES"], "operations": ["璇鹃鎸囧崡鍙戝竷涓庢埅姝�(璇鹃绠$悊鍛�)", "鏂板缓涓庝慨鏀硅棰樼敵鎶ヤ功(閫変細鍛樺甫鍑虹敵鎶ヤ汉淇℃伅銆佷笂浼犵敵鎶ラ檮浠�)", "鎻愪氦 BPM 瀹℃壒銆侀┏鍥炲悗淇敼閲嶆彁", "姣忔湀/姣忔壒娆$櫥璁扮粡璐规嫧浠樿褰曚笌鍑瘉", "鍙戝竷绔嬮」閫氱煡"], "data": ["research_guideline", "research_application", "research_topic_review", "research_fund_record"], "scope": "鏉冮檺鐮� research:guideline:create/update/delete/publish 路 research:application:create/update/delete/submit/notice 路 research:review:create/update/delete 路 research:fund:create/update/delete锛涙棤鏁版嵁鏉冮檺闅旂(鍒楄〃涓嶆寜鐢宠浜鸿繃婊�)锛屾寜閽嚟鏉冮檺鐮佹帶鍒�"},
+    {"role": "妗f绠$悊鍛�", "modules": ["ARC"], "operations": ["妗f鍒嗙被(涔︽灦)缁存姢锛氬垎灞傚缓绫汇�佽榛樿瀵嗙骇銆佸惎鐢ㄥ仠鐢�", "妗f鐧昏涓庡鏉′欢妫�绱�/瀵煎嚭锛堢數瀛愰檮浠� + 瀹炰綋浣嶇疆鍥涘瓧娈点�佸瘑绾т笁妗o級", "鍊熼槄鐧昏銆佹彁浜ゅ鎵�", "褰掕繕鐧昏涓庡綊杩樺娉�", "鏌ョ湅妗f缁熻锛堝瓨閲忎笌娴佽浆锛�"], "data": ["archive_category", "archive_document", "archive_borrow"], "scope": "鏉冮檺鐮� archive:category:create/update/delete/query 路 archive:document:create/update/delete/query/export 路 archive:borrow:create/update/delete/query/submit/return 路 archive:stat:query锛涘瘑绾�=淇濆瘑(3) 鐨勬。妗堝彟闇� archive:document:sensitive 鎵嶈兘鏌ョ湅锛屾棤璇ユ潈闄愭椂鍒楄〃涓庡鍑哄己鍒惰繃婊わ紱鏃犳暟鎹潈闄愰殧绂�(鍒楄〃涓嶆寜浜鸿繃婊�)锛屾寜閽嚟鏉冮檺鐮佹帶鍒�"},
+    {"role": "鍊熼槄浜�", "modules": ["ARC"], "operations": ["鐧昏鍊熼槄鍗曪紙閫夊湪搴撴。妗堛�佸~鍊熼槄浜轰俊鎭�/鍊熼槄鏃ユ湡/鍊熼槄鐩殑/褰掕繕鏈熼檺锛�", "鎻愪氦 BPM 鍊熼槄瀹℃壒", "鏌ョ湅鍊熼槄杩涘害锛堣烦 BPM 娴佺▼瀹炰緥璇︽儏锛�"], "data": ["archive_borrow", "archive_document(浠� 鍦ㄥ簱 10 鍙��)"], "scope": "鏉冮檺鐮� archive:borrow:create/query/submit锛涗粎鑽夌(0)涓庡凡椹冲洖(35)鍙敼鍙噸鎻愩�佷粎鑽夌鍙垹锛涘悓涓�妗f涓嶅緱鍚屾椂瀛樺湪瀹℃壒涓�(15)鎴栧�熷嚭涓�(20)鐨勫�熼槄鍗�"},
+    {"role": "妗f绠$悊鍛�/鍒嗙棰嗗(鍊熼槄瀹℃壒浜�)", "modules": ["ARC", "BPM"], "operations": ["鍊熼槄瀹℃壒涓ょ骇锛氭。妗堢鐞嗗憳瀹℃牳 鈫� 鍒嗙棰嗗瀹℃壒", "鍦ㄥ鎵逛腑蹇冮�氳繃鑷畾涔夎〃鍗曞彧璇绘煡鐪嬪�熼槄鍗曚笌妗f淇℃伅"], "data": ["archive_borrow(鐘舵�佸洖鍐�)", "archive_document(鐘舵�侀殢瀹℃壒缁撴灉鏉′欢鏇存柊)", "bpm_task"], "scope": "瀹℃壒浜轰笌瀹℃壒鏂规硶鍦� BPM 娴佺▼瀹氫箟 archive_borrow_approve 鍐呴厤缃�(榛樿渚濇瀹℃壒路瑙掕壊鍏滃簳)锛屽悗绔笉鍐欐瀹℃壒浜猴紝閮ㄧ讲鍚庣敱绠$悊鍛樺湪娴佺▼璁捐鍣ㄦ寜瀹為檯缁勭粐璋冩暣"},
+    {"role": "褰掓。缁忓姙浜�(璇鹃/浼氬憳/璐㈠姟)", "modules": ["ARC", "RES", "UMS", "FIN"], "operations": ["鍦ㄨ棰樼敵鎶ヤ功鍒楄〃瀵广�屽凡绔嬮」銆嶅崟鎹偣銆屽綊妗c��", "鍦ㄤ細鍛樺垪琛ㄥ銆屾甯搞�嶄細鍛樼偣銆屽綊妗c��", "鍦ㄦ姤閿�鍗曞垪琛ㄥ銆屽凡閫氳繃銆嶅崟鎹偣銆屽綊妗c��(涓庡叾鏃㈡湁 20鈫�40 褰掓。鍚屼簨鍔″彔鍔�)"], "data": ["archive_document(鐢熸垚)", "research_application / ums_member / finance_reimbursement(鍥炲啓 archive_document_id)"], "scope": "鏉冮檺鐮� research:application:archive 路 ums:member:archive 路 finance:reimbursement:archive锛涜皟鐢� yudao-module-archive-api 鐨� archiveBySource 骞傜瓑鐢熸垚妗f锛岄噸澶嶇偣鍑荤敱鏉ユ簮渚ф寜閿欒鐮佹嫤鎴苟缁欏嚭宸茬敓鎴愭。妗堢紪鍙�"},
     {"role": "璇勫涓撳/瀛︿細绉樹功澶劼风悊浜嬩細(璇鹃瀹℃壒浜�)", "modules": ["RES", "BPM"], "operations": ["鍦ㄥ鎵逛腑(15)褰曞叆鏈汉鐨勪笓瀹惰瘎鍒嗘槑缁�(鍥涢」鍒嗗�� + 缁撹 + 鎰忚)", "绉樹功澶勫舰寮忓鏌� 鈫� 涓撳璇勫 鈫� 瀛︿細绔嬮」瀹℃壒 涓夎妭鐐归『搴忓鎵�", "鍦ㄥ鎵逛腑蹇冮�氳繃鑷畾涔夎〃鍗曞彧璇绘煡鐪嬬敵鎶ヤ功姝f枃銆佽瘎瀹℃槑缁嗕笌鎷ㄤ粯璁板綍"], "data": ["research_topic_review", "research_application(鐘舵�佸洖鍐�)", "bpm_task"], "scope": "璇勫垎褰曞叆瑕佹眰鐢虫姤鍗曞浜庡鎵逛腑(15)路鐢辫棰樼鐞嗗憳鎴栦笓瀹朵緷鎹� research:review:* 鏉冮檺鐮佹墽琛岋紱瀹℃壒浜轰笌瀹℃壒鏂规硶鍦� BPM 娴佺▼瀹氫箟 research_topic_approve 鍐呴厤缃�(榛樿渚濇瀹℃壒路瑙掕壊鍏滃簳)锛屽悗绔笉鍐欐瀹℃壒浜猴紝閮ㄧ讲鍚庣敱绠$悊鍛樺湪娴佺▼璁捐鍣ㄦ寜瀛︿細瀹為檯缁勭粐璋冩暣"}
   ]
 }</script>
@@ -725,6 +764,16 @@
       绉樹功澶勭悊浜嬩細涓夌骇瀹℃壒
       绔嬮」缂栧彿涓庣珛椤归�氱煡鍏憡
       缁忚垂鎷ㄤ粯璁板綍涓庡嚟璇�
+    妗f绠$悊 ARCHIVE 鐙珛
+      妗f鍒嗙被涔︽灦鍒嗗眰鍒嗗垪
+      妗f鏂囨。闆嗕腑瀛樺偍涓庢绱�
+      鐢靛瓙闄勪欢涓庡疄浣撲綅缃吋鍏�
+      瀵嗙骇绠℃帶涓庢晱鎰熸潈闄�
+      鍊熼槄鐧昏涓庝袱绾у鎵�
+      褰掕繕鐧昏涓庢祦杞棴鐜�
+      閫炬湡鏈繕瀹炴椂鎻愰啋
+      妗f瀛橀噺涓庢祦杞粺璁�
+      璇鹃浼氬憳璐㈠姟涓夋柟褰掓。鑱斿姩
     鐢熶骇绠$悊 MES
       涓荤敓浜ц鍒� MPS
       鐢熶骇宸ュ崟
@@ -1041,6 +1090,12 @@
   RES -->|绔嬮」閫氱煡鍐� system_notice 鍏憡| SYS
   RES -->|缁忚垂鎷ㄤ粯 1:1 鑷姩鐢熸垚 finance_reimbursement 鎶ラ攢鍗曞苟鎻愪氦瀹℃壒路璧版柊寤虹殑 yudao-module-finance-api| FIN
   FIN -.->|鎶ラ攢瀹℃壒缁撴灉缁� BPM 浜嬩欢鍥炶皟 ResearchFundStatusListener 鍥炲啓璇鹃鎷ㄦ鍙拌处| RES
+  ARC[妗f绠$悊 鐙珛妯″潡 yudao-module-archive 鍒嗙被 妗f 鍊熼槄 褰掕繕 缁熻] -.->|澶嶇敤 BPM 涓ょ骇瀹℃壒涓庣姸鎬佸洖璋兟锋祦绋� key=archive_borrow_approve| BPM
+  ARC -.->|妗f鐢靛瓙闄勪欢璧伴檮浠朵腑蹇� recordType=archive_document / archive_borrow| STG
+  RES -->|宸茬珛椤圭敵鎶ュ崟褰掓。路缁� yudao-module-archive-api 鐢熸垚妗f骞跺洖鍐� archive_document_id| ARC
+  UMS -->|姝e父鐘舵�佷細鍛樺綊妗B风粡 yudao-module-archive-api 鐢熸垚妗f骞跺洖鍐� archive_document_id| ARC
+  FIN -->|宸查�氳繃鎶ラ攢鍗曞綊妗B峰悓浜嬪姟鍙犲姞鐢熸垚銆屼繚瀵嗐�嶆。妗堝苟鍥炲啓 archive_document_id| ARC
+  ARC -.->|涓嶅弽鍚戜緷璧� ums / finance / research路浠呮彁渚� -api 瀛愭ā鍧楃敱涓夋柟鎵嬪姩璋冨綊妗 RES
 </pre>
 <pre style="display:none" class="mmd-src" data-mmd="09-data-flow">
 flowchart LR
@@ -1149,6 +1204,27 @@
   RBM -->|"鎶ラ攢鍗曡繘鍏ュ悓涓�鏉� BPM 娴佺▼ finance_reimbursement_approve(璐㈠姟瀹℃牳 鈫� 璐㈠姟涓荤瀹℃壒)路businessKey=鎶ラ攢鍗� ID"| RBS
   RBS -.->|"BPM 鐩戝惉鍣� ResearchFundStatusListener 鍥炲啓璇鹃鍙拌处 閫氳繃20 椹冲洖30(+椹冲洖鍘熷洜/鏃堕棿) 鎾ゅ洖0"| RFR
   RESNOTE[涓�鏈熷凡瀵规帴璐㈠姟路璇鹃鍙拌处涓烘嫧娆惧彴璐β锋姤閿�鍗曚负璐㈠姟鍑鸿处鍑瘉路涓よ竟浠� reimbursement_id 杞叧鑱旀棤澶栭敭路璐㈠姟渚х洿鎺ュ垹鍗曚細鐣欎笅鎮┖ ID 鐢变笟鍔℃姤閿欏厹搴昡 -.-> RFR
+  subgraph S7 [鐙珛妗f绠$悊 archive]
+    ACD[妗f鍒嗙被 archive_category 鏍戝舰] --> ADO[妗f archive_document]
+    ADO --> ABR[鍊熼槄鍗� archive_borrow]
+    ADO --> AST[妗f鐘舵�� 10鍦ㄥ簱 20鍊熷嚭涓璢
+    ABR --> ABS[鍊熼槄鐘舵�� 0鑽夌 15瀹℃壒涓� 20鍊熷嚭涓� 30宸插綊杩� 35宸查┏鍥瀅
+  end
+  ACD -->|"鏂板缓妗f鎸夊垎绫诲甫鍑� default_secret_level 榛樿瀵嗙骇路璐㈠姟鍒嗙被=3 淇濆瘑"| ADO
+  ADO -.->|"鐢靛瓙闄勪欢 recordType=archive_document路琛ㄥ唴涓嶅瓨鏂囦欢鍦板潃"| PDFARCH
+  ADO -->|"妗f缂栧彿 DA + yyyyMMdd + 6浣嶆祦姘�(Redis路姣忔棩閲嶇疆)路鍊熼槄鍗曞彿 JY + 鍚屾棩娴佹按"| ADO
+  RAP -->|"鎵嬪姩銆屽綊妗c�嶇粡 yudao-module-archive-api.archiveBySource(sourceType=2路瀵嗙骇 2鍐呴儴路sourceNo=绔嬮」缂栧彿路blobIds=鐢虫姤涔﹂檮浠�)路骞傜瓑"| ADO
+  UMSM -->|"鎵嬪姩銆屽綊妗c��(sourceType=3路瀵嗙骇 2鍐呴儴路sourceNo=浼氬憳缂栧彿路blobIds=浼氬憳鏉愭枡)"| ADO
+  RBM -->|"鏃㈡湁 archive 褰掓。鍚屼簨鍔″彔鍔� archiveBySource(sourceType=4路瀵嗙骇 3淇濆瘑路sourceNo=鎶ラ攢鍗曞彿路blobIds=鍙戠エ闄勪欢)路鎶ラ攢鍗� 20鈫�40 涓庣敓鎴愭。妗堜袱琛ㄥ苟鍐�"| ADO
+  ADO -->|"鍥炲啓鏉ユ簮琛� archive_document_id 浣滀负宸插綊妗g‖鏍囪路鏉ユ簮渚ч噸澶嶇偣褰掓。鎸夊叾閿欒鐮佹嫤鎴苟缁欏嚭宸茬敓鎴愭。妗堢紪鍙�"| RAP
+  ADO -->|"鍥炲啓 archive_document_id"| RBM
+  ABR -->|"submit 鍓嶆牎楠�: 鍚屼竴妗f涓嶅緱宸叉湁 瀹℃壒涓� 15 鎴� 鍊熷嚭涓� 20 鐨勫�熼槄鍗暵峰懡涓姤宸插�熺敤(甯︽。妗堝悕涓庡凡瀛樺湪鍊熼槄鍗曞彿)"| ABS
+  ABS -.->|"BPM 鐩戝惉鍣� ArchiveBorrowStatusListener 鍥炲啓 閫氳繃20 椹冲洖35 鍙栨秷閫�鍥�0"| ABR
+  ABS -->|"涓氬姟鍔ㄤ綔: 褰掕繕鐧昏 浠呮斁琛� 20 鍊熷嚭涓� 鈫� 30 宸插綊杩樎峰洖鍐� returnTime 涓庡綊杩樼‘璁や汉"| ABR
+  ABR -->|"瀹℃壒閫氳繃鏉′欢鏇存柊 archive_document SET status=20 WHERE status=10路褰掕繕鏉′欢鏇存柊鍥� 10路褰卞搷 0 琛屽嵆鎶ュ啿绐佸苟鍥炴粴"| AST
+  ABR -.->|"閫炬湡涓嶈惤搴撀锋煡璇㈡椂瀹炴椂璁$畻 status=20 涓� return_deadline 鏃╀簬浠婂ぉ路overdue-page 涓虹嫭绔嬪叆鍙i潪鏌ヨ鍙傛暟"| ABS
+  ADO -.->|"瀵嗙骇=3 淇濆瘑 涓旀棤 archive:document:sensitive 鏃堵疯鎯呮姤閿櫬峰垪琛ㄤ笌瀵煎嚭寮哄埗杩囨护 secret_level 涓嶇瓑浜� 3"| SEC3[鏉冮檺鐐� archive:document:sensitive]
+  ARCNOTE[鐙珛妯″潡路涓夋柟褰掓。涓哄垪琛ㄩ〉鎵嬪姩鎸夐挳鑰岄潪浜嬩欢椹卞姩路褰掓。鍙敓鎴愭。妗堜笉鍥炲啓鏉ユ簮鍗曟嵁涓氬姟鐘舵��(璐㈠姟渚� 20鈫�40 鏄棦鏈夐�昏緫路鏈ā鍧椾粎鍙犲姞)] -.-> ADO
 </pre>
 <pre style="display:none" class="mmd-src" data-mmd="10-business-object">
 erDiagram
@@ -1196,6 +1272,11 @@
   research_application ||--o{ research_fund_record : "缁忚垂鎷ㄤ粯璁板綍"
   research_fund_record ||--|| finance_reimbursement : "1:1 鐢熸垚鍑鸿处鎶ラ攢鍗�(杞叧鑱� reimbursement_id)"
   ums_member ||--o{ research_application : "鐢虫姤浜�(杞叧鑱旀棤澶栭敭)"
+  archive_category ||--o{ archive_document : "鍒嗙被褰掓。(鏍戝舰涔︽灦)"
+  archive_document ||--o{ archive_borrow : "鍊熼槄鐧昏"
+  research_application ||--o| archive_document : "宸茬珛椤瑰綊妗�(archive_document_id)"
+  ums_member ||--o| archive_document : "姝e父浼氬憳褰掓。(archive_document_id)"
+  finance_reimbursement ||--o| archive_document : "宸查�氳繃鎶ラ攢褰掓。(archive_document_id)"
 </pre>
 <pre style="display:none" class="mmd-src" data-mmd="11-ai-business-flow">
 flowchart TD
@@ -1351,6 +1432,58 @@
   BOUND["鐙珛妯″潡 yudao-module-research路瀵� ums_member 涓鸿蒋鍏宠仈(鏃犲閿�)路瀵硅储鍔℃ā鍧楄蛋 -api 瀛愭ā鍧楁湰鍦拌皟鐢蜂粎澶嶇敤 BPM 瀹℃壒銆乻ystem 鍏憡涓庨檮浠朵腑蹇�"] --- K1
 </pre>
 
+<pre style="display:none" class="mmd-src" data-mmd="15-archive-flow">
+flowchart TD
+  subgraph P1 [妗f鍒嗙被路涔︽灦绠$悊 archive_category]
+    C1[鏂板缓鍒嗙被路鍙�夌埗鍒嗙被褰㈡垚鍒嗙被鏍慮 --> C2["濉� 鍒嗙被鍚嶇О 路 缂栫爜 code 路 鎺掑簭 路 鍒嗙被璇存槑 路 榛樿瀵嗙骇 路 鐘舵��"]
+    C2 --> C3["缂栫爜鍏ㄥ眬鍞竴 uk_code 路 鐘舵�� 0鍚敤 1鍋滅敤 路 榛樿瀵嗙骇 1鍏紑 2鍐呴儴 3淇濆瘑"]
+    C3 --> C4["鍒濆 6 鏉″垎绫�: 浼氬憳妗f member 路 璇鹃妗f research 路 浼氳妗f meeting 路 璐㈠姟妗f finance(榛樿瀵嗙骇=淇濆瘑 3) 路 鏂囦功妗f document 路 鍏氬缓妗f party"]
+    C4 --> C5["鍙敼鍙垹 路 鏈夊瓙鍒嗙被绂佸垹 路 璇ュ垎绫讳笅鏈夋。妗堢鍒� 路 鐖跺垎绫讳笉鑳芥槸鑷韩鎴栧叾瀛愬垎绫� 路 鍋滅敤鍒嗙被涓嶈兘鏂板妗f"]
+  end
+  subgraph P2 [妗f绠$悊 archive_document]
+    D1["鏂板缓妗f: 鏍囬 路 鍒嗙被 路 瀵嗙骇 路 杞戒綋(1鐢靛瓙 2瀹炰綋 3鐢靛瓙+瀹炰綋) 路 褰掓。鏃ユ湡 路 鎽樿 路 鍏抽敭璇� tags"] --> D2["瀹炰綋浣嶇疆鍥涘瓧娈�: 涔︽灦鍙� shelfNo 路 灞傚彿 layerNo 路 鍒楀彿 columnNo 路 鍐屽彿妗f鐩� boxNo 路 瀛樻斁浣嶇疆鎻忚堪 storePlace"]
+    D2 --> D3["鐢靛瓙闄勪欢璧� system 闄勪欢涓績 路 recordType=archive_document 路 琛ㄥ唴涓嶅瓨鏂囦欢鍦板潃 路 blobIds 涓哄叏閲忔浛鎹㈣涔�"]
+    D3 --> D4["妗f缂栧彿 DA + yyyyMMdd + 6浣嶆祦姘� (Redis路姣忔棩閲嶇疆)"]
+    D4 --> D5["鐘舵�� 10 鍦ㄥ簱 路 鍙敼鍙垹"]
+    D5 -->|"鍊熼槄瀹℃壒閫氳繃"| D6["鐘舵�� 20 鍊熷嚭涓� 路 绂佹敼 路 瀛樺湪鏈綊杩樺�熼槄鍗曟椂绂佸垹"]
+    D6 -->|"褰掕繕鐧昏"| D5
+  end
+  subgraph P3 [涓夋柟褰掓。鑱斿姩路鍒楄〃椤垫墜鍔ㄣ�屽綊妗c�嶆寜閽啋yudao-module-archive-api]
+    AD["ArchiveDocumentApi.archiveBySource 骞傜瓑: 鍏堟寜 source_type + source_id 鏌� 路 鍛戒腑鐩存帴杩斿洖鏃㈡湁妗f ID"]
+    AD2["鎸� categoryCode 鍙栧垎绫�(member / research / finance) 路 鍒嗙被涓嶅瓨鍦ㄦ姤 DOCUMENT_SOURCE_CATEGORY_NOT_EXISTS"]
+    AD3["鐢熸垚 DA 缂栧彿 + 钀藉簱 + bindAttachments(recordType=archive_document)"]
+    AD4["鍥炲啓鏉ユ簮琛� archive_document_id 浣滀负宸插綊妗g‖鏍囪 路 鏉ユ簮渚ч噸澶嶅綊妗f寜鍏惰嚜韬敊璇爜鎷︽埅骞剁粰鍑哄凡鐢熸垚妗f缂栧彿(archive 渚� DOCUMENT_DUPLICATE_SOURCE 涓哄厹搴�)"]
+    R1["璇鹃鐢虫姤涔� research_application 路 浠� status=20 宸茬珛椤� 路 鏉冮檺 research:application:archive"] -->|"sourceType=2 路 瀵嗙骇 2鍐呴儴 路 sourceNo=绔嬮」缂栧彿 路 blobIds=鐢虫姤涔﹂檮浠�"| AD
+    M1["浼氬憳 ums_member 路 浠� status=1 姝e父 路 鏉冮檺 ums:member:archive"] -->|"sourceType=3 路 瀵嗙骇 2鍐呴儴 路 sourceNo=浼氬憳缂栧彿"| AD
+    F1["璐㈠姟鎶ラ攢鍗� finance_reimbursement 路 浠� status=20 宸查�氳繃 路 鏉冮檺 finance:reimbursement:archive"] -->|"sourceType=4 路 瀵嗙骇 3淇濆瘑 路 sourceNo=鎶ラ攢鍗曞彿 路 blobIds=鍙戠エ闄勪欢 路 涓庢棦鏈� 20鈫�40 褰掓。鍚屼簨鍔″彔鍔�"| AD
+    AD --> AD2
+    AD2 --> AD3
+    AD3 --> AD4
+  end
+  AD3 -->|"褰掓。缁撴灉: 鏂版。妗堢洿鎺ヨ惤涓� 鍦ㄥ簱 10"| D5
+  subgraph P4 [鍊熼槄鐧昏涓庡鎵� archive_borrow]
+    B1["鐧昏鍊熼槄: 閫夋。妗�(浠� 鍦ㄥ簱 10 鍙��) 路 鍊熼槄浜� 路 閮ㄩ棬 路 鑱旂郴鐢佃瘽 路 鍊熼槄鏃ユ湡 路 鍊熼槄鐩殑 路 褰掕繕鏈熼檺"] --> B2["鍊熼槄鍗曞彿 JY + yyyyMMdd + 6浣嶆祦姘� (Redis路姣忔棩閲嶇疆) 路 鐘舵�� 0 鑽夌"]
+    B2 --> B3["submit 鍓嶆牎楠�: 鍚屼竴妗f涓嶅緱瀛樺湪 瀹℃壒涓� 15 鎴� 鍊熷嚭涓� 20 鐨勫�熼槄鍗� 路 鍛戒腑鎶� 宸插�熺敤(甯︽。妗堝悕涓庡凡瀛樺湪鍊熼槄鍗曞彿)"]
+    B3 --> B4["submit 浼� id 涓� processDefinitionKey (query 鍙傛暟) 路 鍏堣В鏋愭祦绋嬪垪琛ㄥ啀寤哄崟(鏃犲凡鍙戝竷娴佺▼鍒欑洿鎺ユ姤閿櫬蜂笉鐣欏鍎胯崏绋�) 路 鐘舵�� 15 瀹℃壒涓� 路 鍥炲啓 processInstanceId"]
+    B4 --> B5["BPM 娴佺▼ archive_borrow_approve 涓ょ骇: 妗f绠$悊鍛樺鏍� 鈫� 鍒嗙棰嗗瀹℃壒"]
+  end
+  B5 -->|"瀹℃壒閫氳繃"| B6["鐘舵�� 20 鍊熷嚭涓� 路 鍥炲啓 approveTime 路 鏉′欢鏇存柊妗f SET status=20 WHERE status=10(褰卞搷 0 琛屽垯鎶� 妗f宸茶鍗犵敤 骞跺洖婊�)"]
+  B5 -->|"瀹℃壒椹冲洖"| B7["鐘舵�� 35 宸查┏鍥� 路 鍥炲啓椹冲洖鍘熷洜涓庢椂闂� 路 淇敼鍚庡彲閲嶆柊 submit"]
+  B5 -->|"鍙栨秷娴佺▼"| B2
+  B6 -->|"褰掕繕鐧昏 return 路 鏉′欢鏇存柊 status=20 鈫� 30"| B8["鐘舵�� 30 宸插綊杩� 路 鍥炲啓 returnTime 涓庡綊杩樼‘璁や汉 路 褰掕繕澶囨敞"]
+  B8 -->|"鏉′欢鏇存柊妗f SET status=10 WHERE status=20"| D5
+  B6 -->|"浠� 0 鑽夌 涓� 35 宸查┏鍥� 鍙敼鍙噸鎻� 路 浠� 0 鑽夌 鍙垹"| B2
+  B6 -->|"浠� 20 鍊熷嚭涓� 鍙櫥璁板綊杩�"| B8
+  OV["閫炬湡涓嶈惤搴撀锋煡璇㈡椂瀹炴椂璁$畻: status=20 涓� return_deadline 鏃╀簬浠婂ぉ 路 overdueDays = 浠婂ぉ 鍑� 褰掕繕鏈熼檺"] -.-> B6
+  OVP["GET /archive/borrow/overdue-page 鐙珛鍏ュ彛(闈炴煡璇㈠弬鏁�) 路 鍒楄〃銆岄�炬湡銆嶅垪娓叉煋绾㈣壊銆岄�炬湡 N 澶┿�� 路 涓嶅缓 infra_job 涓嶅彂绔欏唴淇� 路 鍒楄〃椤靛彟鏈夈�屽彧鐪嬮�炬湡銆嶅垏鎹�"] -.-> OV
+  ST["妗f缁熻 GET /archive/stat/overview: 妗f鎬绘暟 路 鍦ㄥ簱鏁� 路 鍊熷嚭涓暟 路 閫炬湡鏈繕鏁� + 鎸夊垎绫�/鎸夊瘑绾�/鎸夎浇浣� 涓夌粍鍒嗗竷"] -.-> D5
+  SEC["鏁忔劅妗f绠℃帶: 瀵嗙骇=3 淇濆瘑 涓斿綋鍓嶇敤鎴锋棤 archive:document:sensitive 鏃� 路 璇︽儏鎺ュ彛鐩存帴鎶ラ敊 路 鍒楄〃涓庡鍑哄己鍒惰繃婊� secret_level 涓嶇瓑浜� 3"] -.-> D1
+  ATT["闄勪欢 recordType = archive_document / archive_borrow"] -.-> D3
+  ROL["瀹℃壒涓績鐪嬪崟: 娴佺▼瀹氫箟琛ㄥ崟绫诲瀷=鑷畾涔夎〃鍗� 路 鍒涘缓璺緞 /archive/borrow/index 路 鏌ョ湅璺緞 /archive/borrow/detail/approve/index.vue 路 鎸� businessKey 鍥炴樉鍊熼槄鍗�"] -.-> B5
+  LIS["鐩戝惉鍣� ArchiveBorrowStatusListener(娴佺▼ key=archive_borrow_approve 路 businessKey=鍊熼槄鍗� ID): 閫氳繃鈫�20 鍊熷嚭涓� + approveTime 骞舵潯浠舵洿鏂版。妗� 鈫� 20 路 椹冲洖鈫�35 + 鍘熷洜涓庢椂闂� 路 鍙栨秷鈫掗��鍥� 0 路 涓� finance/research 鐩戝惉鍣ㄨ闃呬笉鍚� key 浜掍笉骞叉壈"] -.-> B5
+  BOUND["鐙珛妯″潡 yudao-module-archive(鍚� -api 瀛愭ā鍧�)路渚濊禆 system/bpm路涓嶅弽鍚戜緷璧� ums/finance/research(閬垮厤寰幆渚濊禆)路涓夋柟浠呬緷璧� archive-api 鎵嬪姩璋冨綊妗�"] --- D1
+</pre>
+
 <script type="module">
 const DATA = {};
 async function loadJson(key){
@@ -1369,7 +1502,7 @@
 const mmdSrc = {};
 document.querySelectorAll('pre.mmd-src').forEach(p=>{ mmdSrc[p.dataset.mmd]=p.textContent.trim(); });
 
-const flowColor = {sales:'var(--c-sale)',purchase:'var(--c-erp)',production:'var(--c-prod)',quality:'var(--c-qc)',warehouse:'var(--c-wm)',aftersales:'var(--c-as)',finance:'var(--c-fin)',ums:'var(--c-ums)',research:'var(--c-res)',ai:'var(--c-ai)'};
+const flowColor = {sales:'var(--c-sale)',purchase:'var(--c-erp)',production:'var(--c-prod)',quality:'var(--c-qc)',warehouse:'var(--c-wm)',aftersales:'var(--c-as)',finance:'var(--c-fin)',ums:'var(--c-ums)',research:'var(--c-res)',archive:'var(--c-arch)',ai:'var(--c-ai)'};
 
 async function boot(){
   DATA.business = await loadJson('business');
@@ -1406,8 +1539,8 @@
   </div>
   <h3 class="sec">涓氬姟妯″潡</h3>
   <div class="grid cards">`;
-  const targets = {crm:'flow-sales',erp:'flow-purchase',pro:'flow-production',wm:'flow-warehouse',qc:'flow-quality',aftersales:'flow-aftersales',fin:'flow-finance',ums:'flow-ums',res:'flow-research',ai:'ai',srm:'flow-purchase',mdm:'objects',dv:'objects',hrm:'objects',bpm:'relation'};
-  const accs = {mdm:'var(--c-base)',crm:'var(--c-sale)',srm:'var(--c-sup)',erp:'var(--c-erp)',fin:'var(--c-fin)',ums:'var(--c-ums)',res:'var(--c-res)',pro:'var(--c-prod)',wm:'var(--c-wm)',qc:'var(--c-qc)',dv:'var(--c-dv)',aftersales:'var(--c-as)',hrm:'var(--c-hrm)',bpm:'var(--c-bpm)',ai:'var(--c-ai)'};
+  const targets = {crm:'flow-sales',erp:'flow-purchase',pro:'flow-production',wm:'flow-warehouse',qc:'flow-quality',aftersales:'flow-aftersales',fin:'flow-finance',ums:'flow-ums',res:'flow-research',arc:'flow-archive',ai:'ai',srm:'flow-purchase',mdm:'objects',dv:'objects',hrm:'objects',bpm:'relation'};
+  const accs = {mdm:'var(--c-base)',crm:'var(--c-sale)',srm:'var(--c-sup)',erp:'var(--c-erp)',fin:'var(--c-fin)',ums:'var(--c-ums)',res:'var(--c-res)',arc:'var(--c-arch)',pro:'var(--c-prod)',wm:'var(--c-wm)',qc:'var(--c-qc)',dv:'var(--c-dv)',aftersales:'var(--c-as)',hrm:'var(--c-hrm)',bpm:'var(--c-bpm)',ai:'var(--c-ai)'};
   DATA.modules.modules.forEach(m=>{
     html += `<div class="card" style="--acc:${accs[m.key]||'#2c5cff'}" data-goto="${targets[m.key]||'panorama'}">
       <h3>${esc(m.name)}<span class="tag">${esc(m.tag)}</span></h3>

--
Gitblit v1.9.3