From ed48f8be31d3e679e51036bd5b9f1209a37ffe9b Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 28 Aug 2026 18:24:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/api/first_visit.ts | 28 +- .../first_visit/wecom_promotion/index.vue | 288 +++- app/artifacts/debug-mode-off-login.png | Bin 0 -> 168190 bytes app/artifacts/forced-update-exit.png | Bin 0 -> 17699 bytes app/research/client_update_diagnosis.md | 158 ++ app/research/debug_mode_config_analysis.md | 171 +++ app/research/debug_mode_login_analysis.md | 143 ++ app/research/debug_mode_package_result.md | 79 + app/research/debug_mode_test_result.md | 57 + app/research/forced_update_exit_analysis.md | 166 ++ .../forced_update_exit_package_result.md | 87 ++ app/research/forced_update_exit_tests.md | 182 +++ app/research/package_1_2_0_result.md | 52 + app/research/server_release_diagnosis.md | 233 +++ app/research/update_commit_repro.py | 447 ++++++ app/research/update_commit_reproduction.md | 200 +++ .../update_install_handoff_diagnosis.md | 115 ++ app/src/doctor_workstation/__init__.py | 9 +- app/src/doctor_workstation/app.py | 41 +- app/src/doctor_workstation/config.py | 33 +- .../doctor_workstation/services/app_update.py | 1360 +++++++++-------- .../services/mock_repository.py | 18 + .../doctor_workstation/services/repository.py | 42 + .../ui/chat_notifications.py | 433 ++++++ .../doctor_workstation/ui/diagnosis_drawer.py | 37 +- .../doctor_workstation/ui/diagnosis_media.py | 459 +++++- .../doctor_workstation/ui/diagnosis_terms.py | 491 ++++++ .../ui/dialogs/ai_consult.py | 738 +++++++-- .../ui/dialogs/app_update.py | 1132 ++++++++------ .../ui/dialogs/prescription.py | 7 +- app/src/doctor_workstation/ui/login.py | 90 +- app/src/doctor_workstation/ui/shell.py | 44 +- app/tests/test_ai_consult_ui.py | 137 +- app/tests/test_ai_consult_workspace_ui.py | 239 ++- app/tests/test_app_update.py | 893 ++++++----- app/tests/test_app_update_ui.py | 320 +++- app/tests/test_chat_notifications.py | 207 +++ app/tests/test_config.py | 84 +- .../test_diagnosis_media_thumbnail_visual.py | 108 +- app/tests/test_diagnosis_terms.py | 144 ++ app/tests/test_prescription_ui.py | 29 + app/tests/test_shell_contract.py | 52 + app/tests/test_ui_contract.py | 73 + .../firstvisit/WecomPromotionController.php | 13 + .../WecomAcquisitionCustomerLogic.php | 72 +- .../logic/firstvisit/WecomPromotionLogic.php | 462 +++++- .../{403-f4jLojlx.js => 403-C8lEWSLB.js} | 2 +- .../{404-DFh8jMeb.js => 404-B3ZRrQhd.js} | 2 +- ....js => AppointmentRecordPanel-CLuAJpL9.js} | 2 +- ...BQrh9goI.js => AssignLogPanel-BVBq64f2.js} | 2 +- ...s => AssistantWatchCallDialog-BYDb76Ai.js} | 2 +- ...ZkDxnBq.js => BloodRecordList-Bz4_nxrr.js} | 2 +- ...C7kL0ao.js => CallRecordPanel-W1LQS5Lj.js} | 2 +- ...DVkgVqIc.js => CaseRecordList-DPNu4iKj.js} | 2 +- ...ix-ZEWps6O_.js => DailyMatrix-7f_kB7Qt.js} | 2 +- ...0eyoK.js => DiagnosisTodoList-Ddl83uZl.js} | 2 +- ...BmL90chy.js => DietRecordList-C86vNF9e.js} | 2 +- ...eMgx.js => ExerciseRecordList-qRBhDP1Q.js} | 2 +- ...ancaoSubmissionReconcileButton-4TibVNa5.js | 1 + ...ancaoSubmissionReconcileButton-D_X2vgyc.js | 1 - ...e_type_script_setup_true_lang-DH8EYYzR.js} | 2 +- ...cf4Au.js => ImChatRecordPanel-gwCAMpNz.js} | 2 +- ...-DyIYkVIC.js => MessageBubble-UKzeJsc8.js} | 2 +- ...e-DnxvhcAH.js => NoteTimeline-BXo4a6K1.js} | 2 +- ...9msIIgW.js => OrderActionHost-Kd6a8WTF.js} | 2 +- ...nel-KvABVVwI.js => OrderPanel-B4NBLs1P.js} | 2 +- ...el-Bs-yPcnJ.js => PaibanPanel-52NmYdlx.js} | 2 +- ...uyd_867.js => PatientCaseCard-Di0Sx5mK.js} | 2 +- ...L3Qv_AW.js => PatientInfoCard-c8N1vHan.js} | 2 +- ...5y-bDo.js => PatientOrderList-CyW921Ju.js} | 2 +- ...criptionAiBatchGenerateDialog-WzKyH4aX.js} | 2 +- ...=> PrescriptionAiReportDialog-OA5l3kJM.js} | 2 +- ...PrescriptionOrderDetailDrawer-XLzdVliK.js} | 2 +- ...-CSzZOs7K.js => ProgressPanel-DHDXHySy.js} | 2 +- ....js => RecordingPlaybackBlock-B2R-2s7-.js} | 2 +- ...v9.js => RecordingVideoPlayer-Xhx3gz5-.js} | 2 +- ...anel-BDgbbrEQ.js => SendPanel-Dao5W1n7.js} | 2 +- ...DcSc13oV.js => TrackingMatrix-B92IIbfO.js} | 2 +- ...wE.js => TrackingNoteTimeline-Be4e5GpT.js} | 2 +- ...=> WecomFloatingWidgetBuilder-D0m6Z9zh.js} | 2 +- .../admin/assets/account-adjust-BR0VyVlW.js | 1 - .../admin/assets/account-adjust-Co3HtH1A.js | 1 + ...e_type_script_setup_true_lang-Bqj5kT9K.js} | 2 +- ...t-XySFfLaL.js => account_cost-DpW4IxSq.js} | 2 +- .../{add-Zes10hUt.js => add-TGVmNNdK.js} | 2 +- .../public/admin/assets/add-nav-D45yTVNI.js | 1 - .../public/admin/assets/add-nav-e1-wZDCV.js | 1 + ...e_type_script_setup_true_lang-BHQKdn5u.js} | 2 +- .../{admin-BT68VLEw.js => admin-DUSrrqT4.js} | 2 +- ...nt-BC0fWiYc.js => appointment-DKCESjei.js} | 2 +- ...rticle-Cg76y5pa.js => article-Dsf3Q7Pd.js} | 2 +- .../{asset-DNZT0rrD.js => asset-z-_BsZSa.js} | 2 +- server/public/admin/assets/attr-BYj7xHoC.js | 1 - server/public/admin/assets/attr-BbEJ8TXr.js | 1 + server/public/admin/assets/attr-BcOj2vL9.js | 1 - server/public/admin/assets/attr-CfgtKm4z.js | 1 + server/public/admin/assets/attr-Co02Gg4b.js | 1 - server/public/admin/assets/attr-CoQg_s4D.js | 1 + server/public/admin/assets/attr-Cy-83t1J.js | 1 - .../{attr-Dvyfv9dY.js => attr-D23inU0H.js} | 2 +- server/public/admin/assets/attr-DNBI--8I.js | 1 - server/public/admin/assets/attr-DXOoD1cn.js | 1 + .../{attr-CbkM9kCH.js => attr-DbYvr5FK.js} | 2 +- server/public/admin/assets/attr-Dlget2qH.js | 1 + server/public/admin/assets/attr-GIVaX3f0.js | 1 - server/public/admin/assets/attr-VYmMxH_S.js | 1 + server/public/admin/assets/attr-YeGdL1Qg.js | 1 + server/public/admin/assets/attr-bDF_Cct3.js | 1 - .../admin/assets/attr-setting-DCTBXd-z.js | 1 + .../admin/assets/attr-setting-T4u3pw_0.js | 1 - ...e_type_script_setup_true_lang-CQfoBfDB.js} | 2 +- ...e_type_script_setup_true_lang-1GfqKaWR.js} | 2 +- ...e_type_script_setup_true_lang-BIW0PBf5.js} | 2 +- ...e_type_script_setup_true_lang-C69OXNgC.js} | 2 +- ...e_type_script_setup_true_lang-Cml7PP_W.js} | 2 +- ...e_type_script_setup_true_lang-D3NJwrTZ.js} | 2 +- ...e_type_script_setup_true_lang-DNjGYBTD.js} | 2 +- ...e_type_script_setup_true_lang-Nqd2pOnE.js} | 2 +- server/public/admin/assets/auth-CA7OBc_w.js | 1 + server/public/admin/assets/auth-Cg9k86y1.js | 1 - ...e_type_script_setup_true_lang-QP2AsqB7.js} | 2 +- ...IYuLI_o.js => balance_details-kERYaktZ.js} | 2 +- ...aCNGgA.js => bind-work-wechat-JOaOTXpx.js} | 2 +- .../{cache-BcbKyn6K.js => cache-Xfq4Nf8F.js} | 2 +- ...wEte8s1.js => change-password-DFqjJIc4.js} | 2 +- .../{code-B8YdEhuN.js => code-CvQajwUj.js} | 2 +- .../admin/assets/code-preview-CabQEyCt.js | 1 - .../admin/assets/code-preview-HDxcbQlu.js | 1 + ...e_type_script_setup_true_lang-B0eymNEd.js} | 2 +- ...s.js => commission-settlement-CBBw8xmu.js} | 2 +- ...{config-NaIppmMu.js => config-D9GLkF44.js} | 2 +- ...sumer-DtSzYArx.js => consumer-B0X_xd7a.js} | 2 +- .../public/admin/assets/content-43ecocLO.js | 1 - .../public/admin/assets/content-B3dYDSpA.js | 1 + ...ontent-CqqgaESf.js => content-B48usMjw.js} | 2 +- ...ontent-DQ0iz8i7.js => content-BCd-s9DE.js} | 2 +- .../public/admin/assets/content-BJelGmyK.js | 1 + .../public/admin/assets/content-Bc2co7U_.js | 1 + .../public/admin/assets/content-BkfDelq5.js | 1 + ...ontent-C1DSVUoW.js => content-BwrtrucD.js} | 2 +- .../public/admin/assets/content-C4Lm1hWe.js | 1 + .../public/admin/assets/content-CjzZr6Hy.js | 1 - ...ontent-CEh186sK.js => content-CkaTpHbB.js} | 2 +- .../public/admin/assets/content-CuYTDFBV.js | 1 - ...ontent-CvPlVd_t.js => content-D4fhwymx.js} | 2 +- ...ontent-CKBOYLUz.js => content-DWdZLXDI.js} | 2 +- .../public/admin/assets/content-DYz7P5bY.js | 1 - ...ontent-DMHMygLe.js => content-KOpIk4Jt.js} | 2 +- .../public/admin/assets/content-O0yU7Q0v.js | 1 - ...ontent-DoepMX1r.js => content-gLX1n3T8.js} | 2 +- ...e_type_script_setup_true_lang-B9d1ard7.js} | 2 +- ...e_type_script_setup_true_lang-BTu_Wnxq.js} | 2 +- ...e_type_script_setup_true_lang-CJYh_L0u.js} | 2 +- ...e_type_script_setup_true_lang-DPbaLFgv.js} | 2 +- ...e_type_script_setup_true_lang-gQu8pk_V.js} | 2 +- .../public/admin/assets/cost-edit-CZGDZPFX.js | 1 - .../public/admin/assets/cost-edit-CymyMSUk.js | 1 + ...e_type_script_setup_true_lang-DRg-B2Eh.js} | 2 +- .../admin/assets/data-table-CLbeeUey.js | 1 + .../admin/assets/data-table-DnR6GwHY.js | 1 - ...e_type_script_setup_true_lang-DjVBoMxj.js} | 2 +- ...ion-CUkBWWKw.js => decoration-CUkQOQLk.js} | 2 +- ...CreeGOM7.js => decoration-img-Aio_OKJA.js} | 2 +- ...-CLBd1OMG.js => default_reply-B2rADVla.js} | 2 +- ...ent-CEJZi73J.js => department-MTfWSQxp.js} | 2 +- ...ji-B8jj72Zm.js => dept-tongji-B8hF-i1M.js} | 2 +- ...{detail-C9ruNQLi.js => detail-6JMrZE4O.js} | 2 +- ...{detail-CyQvNZUJ.js => detail-BKhCLDx3.js} | 2 +- .../{dict-DY4fHqf_.js => dict-CQ_C2o0J.js} | 2 +- ...{doctor-CD6XYjKU.js => doctor-DQJF3mgr.js} | 2 +- server/public/admin/assets/edit-10JdlICm.js | 1 + server/public/admin/assets/edit-7ccPGLmC.js | 1 + server/public/admin/assets/edit-AlvSrjUx.js | 1 + server/public/admin/assets/edit-B0elk-oH.js | 1 + server/public/admin/assets/edit-B8Po24HC.js | 1 - server/public/admin/assets/edit-B8qTgKb5.js | 1 - server/public/admin/assets/edit-B9K2sQ8R.js | 1 - .../{edit-hTErutpF.js => edit-B_cUNqr2.js} | 2 +- server/public/admin/assets/edit-BjfLxrt2.js | 1 - server/public/admin/assets/edit-BpeLwnzC.js | 1 - server/public/admin/assets/edit-Bul8pDiL.js | 1 - .../{edit-CBedGjBI.js => edit-CKQojFsZ.js} | 2 +- .../{edit-BAo2geyi.js => edit-CLOdM6BH.js} | 2 +- server/public/admin/assets/edit-CMfY_XKE.js | 1 + .../{edit-WqdhgEMS.js => edit-CRHtJvLC.js} | 2 +- server/public/admin/assets/edit-CV6K_wNc.js | 1 + server/public/admin/assets/edit-CWGgHF_4.js | 1 - server/public/admin/assets/edit-CoJXh142.js | 1 + .../{edit-DnkDUGqf.js => edit-Comk-Pnh.js} | 2 +- .../{edit-CGhf4bwf.js => edit-CsedpvE-.js} | 2 +- server/public/admin/assets/edit-DHbymkBI.js | 1 - server/public/admin/assets/edit-DHcASNKy.js | 1 - .../{edit-BFrTw2Ht.js => edit-DL9KefVP.js} | 2 +- server/public/admin/assets/edit-DW8yTf7A.js | 1 - .../{edit-BRILIZIk.js => edit-Dekh9ZqA.js} | 2 +- .../{edit-CFLUQnJk.js => edit-HtfhyZMW.js} | 2 +- server/public/admin/assets/edit-Ii4YpLBA.js | 1 + server/public/admin/assets/edit-L-DOi0qo.js | 1 + server/public/admin/assets/edit-Ucf6ftg8.js | 1 + server/public/admin/assets/edit-XzWv24eR.js | 1 - server/public/admin/assets/edit-cDoLjav3.js | 1 + ...e_type_script_setup_true_lang-B1no4mCH.js} | 2 +- ...e_type_script_setup_true_lang-BZzHjun0.js} | 2 +- ...e_type_script_setup_true_lang-BeimND-k.js} | 2 +- ...e_type_script_setup_true_lang-BiKzVuYG.js} | 2 +- ...e_type_script_setup_true_lang-C1SOMzbY.js} | 2 +- ...e_type_script_setup_true_lang-CakiUTWY.js} | 2 +- ...e_type_script_setup_true_lang-Cv8AoU01.js} | 2 +- ...e_type_script_setup_true_lang-DGmA-4eu.js} | 2 +- ...e_type_script_setup_true_lang-Fs0sc62L.js} | 2 +- ...e_type_script_setup_true_lang-tZxQS8dk.js} | 2 +- ...e_name_articleColumnEdit_lang-BsgZdXbb.js} | 2 +- ...nt-BhO92HQ_.js => environment-Bi7eexR6.js} | 2 +- .../{error-BRBhqisw.js => error-D-uPyFBJ.js} | 2 +- .../{fans-CXPyrkML.js => fans-Bb64fXyq.js} | 2 +- .../{file-ClZdaIfx.js => file-D75Ivf9i.js} | 2 +- .../{file-CAEOOa9_.js => file-DWoFbTjb.js} | 2 +- ...{filing-C_PjKsls.js => filing-Blolcld9.js} | 2 +- ...inance-CZySKYK6.js => finance-CQGdd_Go.js} | 2 +- ...it-BE8Lm4EN.js => first_visit-DAxtuCK2.js} | 2 +- ...y-ttdPSAn2.js => follow_reply-BrXQTvVq.js} | 2 +- ...e_type_script_setup_true_lang-CkxOqaNG.js} | 2 +- ...{guahao-xFPC2g61.js => guahao-fsKR9vJW.js} | 2 +- .../assets/{h5-Cum8KNsC.js => h5-BjijOinF.js} | 2 +- .../assets/{h5-BKLQn2A9.js => h5-CxPR9gaD.js} | 2 +- .../{icon-CH7LHUUw.js => icon-1uy4iE8p.js} | 2 +- .../{index-CXbnw6p8.js => index--JXB9DHQ.js} | 2 +- .../{index-91kZmjpJ.js => index-77Euo7Ci.js} | 2 +- .../{index-CQXUUbPi.js => index-B3NeDCR-.js} | 2 +- .../{index-CCG7H6Ul.js => index-B7n-FpxB.js} | 2 +- .../{index-BWeecgSM.js => index-B8LZ-HCp.js} | 2 +- .../{index-zY8JSP71.js => index-B8evJDsl.js} | 2 +- .../{index-CBMqSINZ.js => index-BFiquBi7.js} | 2 +- .../{index-CzXa4E4l.js => index-BMtA1ooo.js} | 2 +- .../{index-DwFojkMo.js => index-BN2M6lGD.js} | 2 +- .../{index-CfTj2vuk.js => index-BS82gb6r.js} | 2 +- .../{index-Dbnze_MY.js => index-BSnMSmpl.js} | 4 +- .../{index-DUJcOhOZ.js => index-BSwVDYZd.js} | 2 +- .../{index-kXZWmNqy.js => index-BbIv2PHW.js} | 2 +- .../{index-CJ6fzEjF.js => index-BcTeGwNc.js} | 2 +- .../{index-D5xTdZGc.js => index-Be51Lchh.js} | 2 +- .../{index-C0qNRFdR.js => index-Bj958_hn.js} | 4 +- .../{index-CxpUzZ-A.js => index-BkwDFgzY.js} | 2 +- .../{index-BXC1Fz4l.js => index-Bmx1NuY2.js} | 2 +- .../{index-mfyDT_vi.js => index-BnfeBpgt.js} | 2 +- .../{index-BUdVL_Kf.js => index-BrixtWVC.js} | 2 +- .../{index-A7-2KDdO.js => index-BtfryG-T.js} | 2 +- .../{index-Bx3UgHue.js => index-BuHCHmWh.js} | 2 +- .../{index-CRvL88Da.js => index-BvP6jKID.js} | 2 +- .../{index-Bptrs_vp.js => index-C2RO7ZXL.js} | 2 +- .../{index-DXLC091s.js => index-C7291G3H.js} | 2 +- .../{index-nHWCpphL.js => index-CCW2jHkL.js} | 2 +- .../{index-De13kk0O.js => index-CJn0zdCA.js} | 2 +- .../{index-D3GHV4sG.js => index-CKIW3ABd.js} | 2 +- server/public/admin/assets/index-CKylQnvr.js | 1 + server/public/admin/assets/index-COO5LK7z.css | 1 - .../{index-DKk_EILZ.js => index-CWtmv6c_.js} | 2 +- .../{index-DQVmHMZL.js => index-CZRr_648.js} | 2 +- .../{index-CeXjZRfK.js => index-C_hJGcdG.js} | 2 +- .../{index-Bcon2pyu.js => index-CgG9jXrQ.js} | 4 +- .../{index-C0XMMaqw.js => index-CmOl8Ts_.js} | 4 +- .../{index-DPHh7502.js => index-CsxFhp2j.js} | 2 +- .../{index-_aAQ6Nxu.js => index-CtSbqfbA.js} | 2 +- .../{index-I2i4paHz.js => index-CtgrQFM4.js} | 2 +- .../{index-BiSCEEEM.js => index-D0Qlwy5A.js} | 2 +- .../{index-Dy4v9VTP.js => index-D1mL0Y2z.js} | 2 +- server/public/admin/assets/index-D79_HaxK.js | 1 - server/public/admin/assets/index-D8Ue9ypt.css | 1 + .../{index-BKuzf7wy.js => index-DCHFJLxs.js} | 2 +- .../{index-vQOVRdnM.js => index-DFtvrIDK.js} | 2 +- .../{index-BhX1mXHA.js => index-DFvgqKH8.js} | 2 +- .../{index-DA1DsIKO.js => index-DH7raP3N.js} | 4 +- .../{index-DMCS5zPU.js => index-DctcvcVd.js} | 2 +- .../{index-BoG5BBbM.js => index-Df0rI9Fp.js} | 2 +- .../{index-DabcQSr_.js => index-DgdkrwCe.js} | 2 +- .../{index-Dk7zbiJv.js => index-Drab_Br1.js} | 2 +- .../{index-D8-fvW10.js => index-DrnibAL4.js} | 2 +- .../{index-DYwjS2d5.js => index-a5BG1BWa.js} | 2 +- .../{index-CLwe6ftX.js => index-a_ZxLOOo.js} | 4 +- .../{index-B-4lJ-Jn.js => index-ayQNEW9Q.js} | 2 +- .../{index-CE8YdHLp.js => index-dbNEla3L.js} | 2 +- .../{index-oPzat6U0.js => index-jRkFOHfc.js} | 2 +- .../{index-NT8tFkVq.js => index-jinPz6CE.js} | 2 +- .../{index-CLqjyTTo.js => index-l5Cq2faW.js} | 2 +- .../{index-C8c7I544.js => index-pm0C3F0W.js} | 4 +- .../{index-X3vXS7JY.js => index-vXlyiLlo.js} | 2 +- .../{index-DMJINi7J.js => index-xpuJLSls.js} | 2 +- ...e_type_script_setup_true_lang-HGooEmU6.js} | 2 +- ...e_vue_type_style_index_0_lang-CdHPtIC-.js} | 2 +- ...ex_h5-BZS7cRVV.js => index_h5-DK-hO-pX.js} | 4 +- ...on-CHSg4q1p.js => information-BtY6-e1D.js} | 2 +- ...ournal-CgvKa_5W.js => journal-DPOjySw-.js} | 2 +- ...-CuLgB1Uc.js => keyword_reply-BzMCBMvw.js} | 2 +- .../{link-DtWn0yuf.js => link-Db0SWZfr.js} | 2 +- .../{list-DYw2R17V.js => list-BPqBZ8SM.js} | 4 +- .../{list-9YRENGkm.js => list-EyT7ualt.js} | 2 +- ...ist_h5-tKkyp8Pc.js => list_h5-yqC6XpaH.js} | 4 +- .../{login-BDQONcJ0.js => login-Bvk_3iIJ.js} | 2 +- ...C8uZcmK_.js => login_register-CyHVWiqe.js} | 2 +- ...icine-BJYbhCDS.js => medicine-DIEwHOeB.js} | 2 +- ...icine-K52GUWS-.js => medicine-nsHwJViA.js} | 2 +- .../{menu-B2_98h0b.js => menu-BMLd7Gi6.js} | 2 +- .../{menu-DjA5h5dD.js => menu-C7DGNCxH.js} | 2 +- .../{menu-B3ojZv5U.js => menu-DlNXlk8k.js} | 2 +- .../public/admin/assets/menu-set-DfgnYxDd.js | 1 - .../public/admin/assets/menu-set-DmdKRr0A.js | 1 + ...e_type_script_setup_true_lang-Go2YUSJ3.js} | 2 +- ...essage-Dgww-u18.js => message-CAHFWDnF.js} | 2 +- ...e-BY14yU-g.js => mobile-style-C8MZrD7i.js} | 2 +- ...e_type_script_setup_true_lang-DiZ4FSjA.js} | 2 +- ...{mubiao-UqZ3dQ5x.js => mubiao-Do05CGtS.js} | 2 +- ...gx9zEl.js => mubiao-dept-card-Cvu1Or-m.js} | 2 +- ...cqTuI2.js => mubiao-dept-node-U3l4QS_J.js} | 2 +- ...a-attr-CqKsM0wT.js => oa-attr-CEGE3U3o.js} | 2 +- .../admin/assets/oa-menu-form-BidLomm_.js | 1 - .../admin/assets/oa-menu-form-eDjdjDB5.js | 1 + .../assets/oa-menu-form-edit-Dcl28Lp1.js | 1 - .../assets/oa-menu-form-edit-W2DClkmp.js | 1 + ...e_type_script_setup_true_lang-C2eiXbVk.js} | 2 +- ...e_type_script_setup_true_lang-BVVPYTh8.js} | 2 +- ...phone-CZiMmRkt.js => oa-phone-CRp_i1VK.js} | 2 +- ...g-e3tOyyYX.js => open_setting-DLxiGNiR.js} | 2 +- .../{order-BJTbBv_o.js => order-Dz1NL82W.js} | 2 +- ...ist-CkQrBAtD.js => order_list-lLpjaY3B.js} | 4 +- ...-9RgRVRUK.js => order_list_h5-Daz8CjH0.js} | 4 +- ...rflow-XfjJbNSx.js => overflow-ErQsBwLa.js} | 2 +- ...{paiban-QFeGlmMv.js => paiban-woJxc_2K.js} | 2 +- ...atient-4QJ3YgMJ.js => patient-DiY8uj2P.js} | 2 +- ...l-BWJMRxeo.js => patient-call-DTS3e3dS.js} | 2 +- .../{pay-C4F9M4pZ.js => pay-CVRnPrCn.js} | 2 +- .../assets/{pc-0wuPNGsH.js => pc-kV-GzTmX.js} | 2 +- ...ils-DihGx8-f.js => pc_details-B4ZGhYHm.js} | 2 +- .../{perm-CHalL7pT.js => perm-tSma3sWL.js} | 2 +- ...{picker-DYZuEtRo.js => picker-RZLRR_G5.js} | 2 +- ...{picker-Dr1-lH_q.js => picker-tazliPuC.js} | 2 +- ...e_type_script_setup_true_lang-B7Bv38ga.js} | 2 +- .../{post-C0jU6asb.js => post-JpabMAL_.js} | 2 +- ...qpP.js => prescription-drawer-BD0Nl5dL.js} | 2 +- ...review-B6PMuZpn.js => preview-BHKlkFM2.js} | 2 +- ...-pc-MwtTuuHl.js => preview-pc-lI4_qErz.js} | 2 +- ...gress-4pAQO6k-.js => progress-PPaX2s9P.js} | 2 +- ...tocol-l81pHdKq.js => protocol-Dj8DsORc.js} | 2 +- .../{qywx-BwPn4ZAe.js => qywx-DNLk8l-B.js} | 2 +- ...donly-C3q-wXRM.js => readonly-Bzhw48AS.js} | 2 +- ...r0ku18r.js => recharge_record-CWqElylR.js} | 2 +- .../admin/assets/refund-log-CeH5-MWY.js | 1 - .../admin/assets/refund-log-DsMdsR52.js | 1 + ...e_type_script_setup_true_lang-Dp9fL011.js} | 2 +- ...-CUi7xalW.js => refund_record-BYJT3v77.js} | 2 +- .../admin/assets/relations-add-DKKjp4aQ.js | 1 - .../admin/assets/relations-add-m0SAciy8.js | 1 + ...e_type_script_setup_true_lang-B0R4rWqT.js} | 2 +- ...text-ID8oNktV.js => rich_text-eShKmFm2.js} | 2 +- .../{role-CSB0a6yH.js => role-BK9-X1JV.js} | 2 +- ...{roster-B-qj9lKS.js => roster-BfTD7pra.js} | 2 +- ...kK_Hvu.js => self_input_stats-DpkdEV8c.js} | 2 +- ...etting-DGf1X2Wz.js => setting-d4IYSzeT.js} | 2 +- .../{setup-Cevnh-mk.js => setup-BmxJqJoJ.js} | 2 +- ...ics-B9HWOepd.js => statistics-LrAz8bLV.js} | 2 +- .../{stats-hlJTlR5p.js => stats-Di_MlUCe.js} | 2 +- .../{style-Dk6Flpbq.js => style-C3CXqKKB.js} | 2 +- ...{tabbar-DC5Sy7Yp.js => tabbar-DMb_epzy.js} | 2 +- .../{tcm-BzzBMfBw.js => tcm--WHZCSMq.js} | 2 +- ...r-BFfyq7iS.js => theme-picker-BsOiHacI.js} | 2 +- ...{tongji-BuPNV3Pn.js => tongji-BFhvh-uV.js} | 2 +- ...{upload-CXPVyzeR.js => upload-3IoSn2Ek.js} | 2 +- ...pgjHnp9X.js => useDictOptions-pz0NtZPZ.js} | 2 +- ...7WHv0.js => useListTimeFilter-40qnhP5x.js} | 2 +- ...B.js => useMediaSourceOptions-CyWemm8p.js} | 2 +- ...nuOa-DJFg7fVn.js => useMenuOa-CjKLE6t4.js} | 2 +- .../{user-Bfnw4WA-.js => user-DRhBHUvG.js} | 2 +- .../{weapp-CEKVrAhZ.js => weapp-B8wW_O4N.js} | 2 +- .../{weapp-DkdlJ1-8.js => weapp-awldkq-G.js} | 2 +- ...ebsite-Drqef9n3.js => website-CHqXkHCa.js} | 2 +- .../{wx_oa-rBjokIeQ.js => wx_oa-D94L7ur0.js} | 2 +- .../{yeji-Dz_F8yMY.js => yeji-BXeKeLKG.js} | 2 +- .../public/admin/assets/yeji-edit-BVSNnhpQ.js | 1 + .../public/admin/assets/yeji-edit-DQlb9d87.js | 1 - ...e_type_script_setup_true_lang-DBwQyZjc.js} | 2 +- server/public/admin/index.html | 2 +- .../add_wecom_promotion_pool_operators.sql | 20 + .../tests/WecomPromotionOverviewSmokeTest.php | 27 +- ...WecomPromotionPoolOperatorContractTest.php | 61 + 383 files changed, 8673 insertions(+), 2222 deletions(-) create mode 100644 app/artifacts/debug-mode-off-login.png create mode 100644 app/artifacts/forced-update-exit.png create mode 100644 app/research/client_update_diagnosis.md create mode 100644 app/research/debug_mode_config_analysis.md create mode 100644 app/research/debug_mode_login_analysis.md create mode 100644 app/research/debug_mode_package_result.md create mode 100644 app/research/debug_mode_test_result.md create mode 100644 app/research/forced_update_exit_analysis.md create mode 100644 app/research/forced_update_exit_package_result.md create mode 100644 app/research/forced_update_exit_tests.md create mode 100644 app/research/package_1_2_0_result.md create mode 100644 app/research/server_release_diagnosis.md create mode 100644 app/research/update_commit_repro.py create mode 100644 app/research/update_commit_reproduction.md create mode 100644 app/research/update_install_handoff_diagnosis.md create mode 100644 app/src/doctor_workstation/ui/chat_notifications.py create mode 100644 app/src/doctor_workstation/ui/diagnosis_terms.py create mode 100644 app/tests/test_chat_notifications.py create mode 100644 app/tests/test_diagnosis_terms.py rename server/public/admin/assets/{403-f4jLojlx.js => 403-C8lEWSLB.js} (75%) rename server/public/admin/assets/{404-DFh8jMeb.js => 404-B3ZRrQhd.js} (58%) rename server/public/admin/assets/{AppointmentRecordPanel-ujmTdXIZ.js => AppointmentRecordPanel-CLuAJpL9.js} (96%) rename server/public/admin/assets/{AssignLogPanel-BQrh9goI.js => AssignLogPanel-BVBq64f2.js} (97%) rename server/public/admin/assets/{AssistantWatchCallDialog-Cv9Qaqdr.js => AssistantWatchCallDialog-BYDb76Ai.js} (96%) rename server/public/admin/assets/{BloodRecordList-BZkDxnBq.js => BloodRecordList-Bz4_nxrr.js} (98%) rename server/public/admin/assets/{CallRecordPanel-DC7kL0ao.js => CallRecordPanel-W1LQS5Lj.js} (93%) rename server/public/admin/assets/{CaseRecordList-DVkgVqIc.js => CaseRecordList-DPNu4iKj.js} (95%) rename server/public/admin/assets/{DailyMatrix-ZEWps6O_.js => DailyMatrix-7f_kB7Qt.js} (98%) rename server/public/admin/assets/{DiagnosisTodoList-CKk0eyoK.js => DiagnosisTodoList-Ddl83uZl.js} (97%) rename server/public/admin/assets/{DietRecordList-BmL90chy.js => DietRecordList-C86vNF9e.js} (93%) rename server/public/admin/assets/{ExerciseRecordList-DLR8eMgx.js => ExerciseRecordList-qRBhDP1Q.js} (94%) create mode 100644 server/public/admin/assets/GancaoSubmissionReconcileButton-4TibVNa5.js delete mode 100644 server/public/admin/assets/GancaoSubmissionReconcileButton-D_X2vgyc.js rename server/public/admin/assets/{GancaoSubmissionReconcileButton.vue_vue_type_script_setup_true_lang-hLNJ9AIP.js => GancaoSubmissionReconcileButton.vue_vue_type_script_setup_true_lang-DH8EYYzR.js} (96%) rename server/public/admin/assets/{ImChatRecordPanel-t8Pcf4Au.js => ImChatRecordPanel-gwCAMpNz.js} (97%) rename server/public/admin/assets/{MessageBubble-DyIYkVIC.js => MessageBubble-UKzeJsc8.js} (98%) rename server/public/admin/assets/{NoteTimeline-DnxvhcAH.js => NoteTimeline-BXo4a6K1.js} (94%) rename server/public/admin/assets/{OrderActionHost-C9msIIgW.js => OrderActionHost-Kd6a8WTF.js} (98%) rename server/public/admin/assets/{OrderPanel-KvABVVwI.js => OrderPanel-B4NBLs1P.js} (96%) rename server/public/admin/assets/{PaibanPanel-Bs-yPcnJ.js => PaibanPanel-52NmYdlx.js} (97%) rename server/public/admin/assets/{PatientCaseCard-xuyd_867.js => PatientCaseCard-Di0Sx5mK.js} (98%) rename server/public/admin/assets/{PatientInfoCard-CL3Qv_AW.js => PatientInfoCard-c8N1vHan.js} (96%) rename server/public/admin/assets/{PatientOrderList-DG5y-bDo.js => PatientOrderList-CyW921Ju.js} (96%) rename server/public/admin/assets/{PrescriptionAiBatchGenerateDialog-CzgaslXb.js => PrescriptionAiBatchGenerateDialog-WzKyH4aX.js} (99%) rename server/public/admin/assets/{PrescriptionAiReportDialog-CLrnR3-M.js => PrescriptionAiReportDialog-OA5l3kJM.js} (99%) rename server/public/admin/assets/{PrescriptionOrderDetailDrawer-Dsyy_M8b.js => PrescriptionOrderDetailDrawer-XLzdVliK.js} (99%) rename server/public/admin/assets/{ProgressPanel-CSzZOs7K.js => ProgressPanel-DHDXHySy.js} (98%) rename server/public/admin/assets/{RecordingPlaybackBlock-CMHUdU8f.js => RecordingPlaybackBlock-B2R-2s7-.js} (94%) rename server/public/admin/assets/{RecordingVideoPlayer-CDqcv1v9.js => RecordingVideoPlayer-Xhx3gz5-.js} (98%) rename server/public/admin/assets/{SendPanel-BDgbbrEQ.js => SendPanel-Dao5W1n7.js} (99%) rename server/public/admin/assets/{TrackingMatrix-DcSc13oV.js => TrackingMatrix-B92IIbfO.js} (99%) rename server/public/admin/assets/{TrackingNoteTimeline-CkVFTVwE.js => TrackingNoteTimeline-Be4e5GpT.js} (93%) rename server/public/admin/assets/{WecomFloatingWidgetBuilder-C28RN64v.js => WecomFloatingWidgetBuilder-D0m6Z9zh.js} (99%) delete mode 100644 server/public/admin/assets/account-adjust-BR0VyVlW.js create mode 100644 server/public/admin/assets/account-adjust-Co3HtH1A.js rename server/public/admin/assets/{account-adjust.vue_vue_type_script_setup_true_lang-D8V2sQ39.js => account-adjust.vue_vue_type_script_setup_true_lang-Bqj5kT9K.js} (94%) rename server/public/admin/assets/{account_cost-XySFfLaL.js => account_cost-DpW4IxSq.js} (94%) rename server/public/admin/assets/{add-Zes10hUt.js => add-TGVmNNdK.js} (99%) delete mode 100644 server/public/admin/assets/add-nav-D45yTVNI.js create mode 100644 server/public/admin/assets/add-nav-e1-wZDCV.js rename server/public/admin/assets/{add-nav.vue_vue_type_script_setup_true_lang-Cd2ygMrI.js => add-nav.vue_vue_type_script_setup_true_lang-BHQKdn5u.js} (92%) rename server/public/admin/assets/{admin-BT68VLEw.js => admin-DUSrrqT4.js} (84%) rename server/public/admin/assets/{appointment-BC0fWiYc.js => appointment-DKCESjei.js} (92%) rename server/public/admin/assets/{article-Cg76y5pa.js => article-Dsf3Q7Pd.js} (93%) rename server/public/admin/assets/{asset-DNZT0rrD.js => asset-z-_BsZSa.js} (90%) delete mode 100644 server/public/admin/assets/attr-BYj7xHoC.js create mode 100644 server/public/admin/assets/attr-BbEJ8TXr.js delete mode 100644 server/public/admin/assets/attr-BcOj2vL9.js create mode 100644 server/public/admin/assets/attr-CfgtKm4z.js delete mode 100644 server/public/admin/assets/attr-Co02Gg4b.js create mode 100644 server/public/admin/assets/attr-CoQg_s4D.js delete mode 100644 server/public/admin/assets/attr-Cy-83t1J.js rename server/public/admin/assets/{attr-Dvyfv9dY.js => attr-D23inU0H.js} (74%) delete mode 100644 server/public/admin/assets/attr-DNBI--8I.js create mode 100644 server/public/admin/assets/attr-DXOoD1cn.js rename server/public/admin/assets/{attr-CbkM9kCH.js => attr-DbYvr5FK.js} (92%) create mode 100644 server/public/admin/assets/attr-Dlget2qH.js delete mode 100644 server/public/admin/assets/attr-GIVaX3f0.js create mode 100644 server/public/admin/assets/attr-VYmMxH_S.js create mode 100644 server/public/admin/assets/attr-YeGdL1Qg.js delete mode 100644 server/public/admin/assets/attr-bDF_Cct3.js create mode 100644 server/public/admin/assets/attr-setting-DCTBXd-z.js delete mode 100644 server/public/admin/assets/attr-setting-T4u3pw_0.js rename server/public/admin/assets/{attr-setting.vue_vue_type_script_setup_true_lang-LzhUJdSI.js => attr-setting.vue_vue_type_script_setup_true_lang-CQfoBfDB.js} (94%) rename server/public/admin/assets/{attr.vue_vue_type_script_setup_true_lang-C2wYb6Py.js => attr.vue_vue_type_script_setup_true_lang-1GfqKaWR.js} (96%) rename server/public/admin/assets/{attr.vue_vue_type_script_setup_true_lang-SwwwDk4U.js => attr.vue_vue_type_script_setup_true_lang-BIW0PBf5.js} (96%) rename server/public/admin/assets/{attr.vue_vue_type_script_setup_true_lang-C54j8yNY.js => attr.vue_vue_type_script_setup_true_lang-C69OXNgC.js} (96%) rename server/public/admin/assets/{attr.vue_vue_type_script_setup_true_lang-D91XaciT.js => attr.vue_vue_type_script_setup_true_lang-Cml7PP_W.js} (93%) rename server/public/admin/assets/{attr.vue_vue_type_script_setup_true_lang-P81rWJz8.js => attr.vue_vue_type_script_setup_true_lang-D3NJwrTZ.js} (91%) rename server/public/admin/assets/{attr.vue_vue_type_script_setup_true_lang-CVCkEkKY.js => attr.vue_vue_type_script_setup_true_lang-DNjGYBTD.js} (95%) rename server/public/admin/assets/{attr.vue_vue_type_script_setup_true_lang-DiYI-N-j.js => attr.vue_vue_type_script_setup_true_lang-Nqd2pOnE.js} (96%) create mode 100644 server/public/admin/assets/auth-CA7OBc_w.js delete mode 100644 server/public/admin/assets/auth-Cg9k86y1.js rename server/public/admin/assets/{auth.vue_vue_type_script_setup_true_lang-DKmWACZL.js => auth.vue_vue_type_script_setup_true_lang-QP2AsqB7.js} (92%) rename server/public/admin/assets/{balance_details-BIYuLI_o.js => balance_details-kERYaktZ.js} (94%) rename server/public/admin/assets/{bind-work-wechat-CjaCNGgA.js => bind-work-wechat-JOaOTXpx.js} (97%) rename server/public/admin/assets/{cache-BcbKyn6K.js => cache-Xfq4Nf8F.js} (94%) rename server/public/admin/assets/{change-password-DwEte8s1.js => change-password-DFqjJIc4.js} (95%) rename server/public/admin/assets/{code-B8YdEhuN.js => code-CvQajwUj.js} (92%) delete mode 100644 server/public/admin/assets/code-preview-CabQEyCt.js create mode 100644 server/public/admin/assets/code-preview-HDxcbQlu.js rename server/public/admin/assets/{code-preview.vue_vue_type_script_setup_true_lang-BHcA-YMX.js => code-preview.vue_vue_type_script_setup_true_lang-B0eymNEd.js} (95%) rename server/public/admin/assets/{commission-settlement-Bz8n7uns.js => commission-settlement-CBBw8xmu.js} (99%) rename server/public/admin/assets/{config-NaIppmMu.js => config-D9GLkF44.js} (94%) rename server/public/admin/assets/{consumer-DtSzYArx.js => consumer-B0X_xd7a.js} (81%) delete mode 100644 server/public/admin/assets/content-43ecocLO.js create mode 100644 server/public/admin/assets/content-B3dYDSpA.js rename server/public/admin/assets/{content-CqqgaESf.js => content-B48usMjw.js} (90%) rename server/public/admin/assets/{content-DQ0iz8i7.js => content-BCd-s9DE.js} (86%) create mode 100644 server/public/admin/assets/content-BJelGmyK.js create mode 100644 server/public/admin/assets/content-Bc2co7U_.js create mode 100644 server/public/admin/assets/content-BkfDelq5.js rename server/public/admin/assets/{content-C1DSVUoW.js => content-BwrtrucD.js} (85%) create mode 100644 server/public/admin/assets/content-C4Lm1hWe.js delete mode 100644 server/public/admin/assets/content-CjzZr6Hy.js rename server/public/admin/assets/{content-CEh186sK.js => content-CkaTpHbB.js} (90%) delete mode 100644 server/public/admin/assets/content-CuYTDFBV.js rename server/public/admin/assets/{content-CvPlVd_t.js => content-D4fhwymx.js} (90%) rename server/public/admin/assets/{content-CKBOYLUz.js => content-DWdZLXDI.js} (90%) delete mode 100644 server/public/admin/assets/content-DYz7P5bY.js rename server/public/admin/assets/{content-DMHMygLe.js => content-KOpIk4Jt.js} (69%) delete mode 100644 server/public/admin/assets/content-O0yU7Q0v.js rename server/public/admin/assets/{content-DoepMX1r.js => content-gLX1n3T8.js} (84%) rename server/public/admin/assets/{content.vue_vue_type_script_setup_true_lang-BH3MxCg3.js => content.vue_vue_type_script_setup_true_lang-B9d1ard7.js} (90%) rename server/public/admin/assets/{content.vue_vue_type_script_setup_true_lang-ANIdMeLo.js => content.vue_vue_type_script_setup_true_lang-BTu_Wnxq.js} (89%) rename server/public/admin/assets/{content.vue_vue_type_script_setup_true_lang-HA8Rdikn.js => content.vue_vue_type_script_setup_true_lang-CJYh_L0u.js} (92%) rename server/public/admin/assets/{content.vue_vue_type_script_setup_true_lang-DOCZLuaJ.js => content.vue_vue_type_script_setup_true_lang-DPbaLFgv.js} (88%) rename server/public/admin/assets/{content.vue_vue_type_script_setup_true_lang-DsMojqSz.js => content.vue_vue_type_script_setup_true_lang-gQu8pk_V.js} (90%) delete mode 100644 server/public/admin/assets/cost-edit-CZGDZPFX.js create mode 100644 server/public/admin/assets/cost-edit-CymyMSUk.js rename server/public/admin/assets/{cost-edit.vue_vue_type_script_setup_true_lang-Bqw_dZpM.js => cost-edit.vue_vue_type_script_setup_true_lang-DRg-B2Eh.js} (95%) create mode 100644 server/public/admin/assets/data-table-CLbeeUey.js delete mode 100644 server/public/admin/assets/data-table-DnR6GwHY.js rename server/public/admin/assets/{data-table.vue_vue_type_script_setup_true_lang-Bj_eV3RA.js => data-table.vue_vue_type_script_setup_true_lang-DjVBoMxj.js} (92%) rename server/public/admin/assets/{decoration-CUkBWWKw.js => decoration-CUkQOQLk.js} (87%) rename server/public/admin/assets/{decoration-img-CreeGOM7.js => decoration-img-Aio_OKJA.js} (92%) rename server/public/admin/assets/{default_reply-CLBd1OMG.js => default_reply-B2rADVla.js} (91%) rename server/public/admin/assets/{department-CEJZi73J.js => department-MTfWSQxp.js} (86%) rename server/public/admin/assets/{dept-tongji-B8jj72Zm.js => dept-tongji-B8hF-i1M.js} (97%) rename server/public/admin/assets/{detail-C9ruNQLi.js => detail-6JMrZE4O.js} (95%) rename server/public/admin/assets/{detail-CyQvNZUJ.js => detail-BKhCLDx3.js} (93%) rename server/public/admin/assets/{dict-DY4fHqf_.js => dict-CQ_C2o0J.js} (92%) rename server/public/admin/assets/{doctor-CD6XYjKU.js => doctor-DQJF3mgr.js} (95%) create mode 100644 server/public/admin/assets/edit-10JdlICm.js create mode 100644 server/public/admin/assets/edit-7ccPGLmC.js create mode 100644 server/public/admin/assets/edit-AlvSrjUx.js create mode 100644 server/public/admin/assets/edit-B0elk-oH.js delete mode 100644 server/public/admin/assets/edit-B8Po24HC.js delete mode 100644 server/public/admin/assets/edit-B8qTgKb5.js delete mode 100644 server/public/admin/assets/edit-B9K2sQ8R.js rename server/public/admin/assets/{edit-hTErutpF.js => edit-B_cUNqr2.js} (89%) delete mode 100644 server/public/admin/assets/edit-BjfLxrt2.js delete mode 100644 server/public/admin/assets/edit-BpeLwnzC.js delete mode 100644 server/public/admin/assets/edit-Bul8pDiL.js rename server/public/admin/assets/{edit-CBedGjBI.js => edit-CKQojFsZ.js} (95%) rename server/public/admin/assets/{edit-BAo2geyi.js => edit-CLOdM6BH.js} (97%) create mode 100644 server/public/admin/assets/edit-CMfY_XKE.js rename server/public/admin/assets/{edit-WqdhgEMS.js => edit-CRHtJvLC.js} (94%) create mode 100644 server/public/admin/assets/edit-CV6K_wNc.js delete mode 100644 server/public/admin/assets/edit-CWGgHF_4.js create mode 100644 server/public/admin/assets/edit-CoJXh142.js rename server/public/admin/assets/{edit-DnkDUGqf.js => edit-Comk-Pnh.js} (96%) rename server/public/admin/assets/{edit-CGhf4bwf.js => edit-CsedpvE-.js} (95%) delete mode 100644 server/public/admin/assets/edit-DHbymkBI.js delete mode 100644 server/public/admin/assets/edit-DHcASNKy.js rename server/public/admin/assets/{edit-BFrTw2Ht.js => edit-DL9KefVP.js} (96%) delete mode 100644 server/public/admin/assets/edit-DW8yTf7A.js rename server/public/admin/assets/{edit-BRILIZIk.js => edit-Dekh9ZqA.js} (96%) rename server/public/admin/assets/{edit-CFLUQnJk.js => edit-HtfhyZMW.js} (94%) create mode 100644 server/public/admin/assets/edit-Ii4YpLBA.js create mode 100644 server/public/admin/assets/edit-L-DOi0qo.js create mode 100644 server/public/admin/assets/edit-Ucf6ftg8.js delete mode 100644 server/public/admin/assets/edit-XzWv24eR.js create mode 100644 server/public/admin/assets/edit-cDoLjav3.js rename server/public/admin/assets/{edit.vue_vue_type_script_setup_true_lang-Djl-S0Gf.js => edit.vue_vue_type_script_setup_true_lang-B1no4mCH.js} (97%) rename server/public/admin/assets/{edit.vue_vue_type_script_setup_true_lang-zY3fIz2-.js => edit.vue_vue_type_script_setup_true_lang-BZzHjun0.js} (94%) rename server/public/admin/assets/{edit.vue_vue_type_script_setup_true_lang-DJc-MVUJ.js => edit.vue_vue_type_script_setup_true_lang-BeimND-k.js} (94%) rename server/public/admin/assets/{edit.vue_vue_type_script_setup_true_lang-BKYuJOwr.js => edit.vue_vue_type_script_setup_true_lang-BiKzVuYG.js} (97%) rename server/public/admin/assets/{edit.vue_vue_type_script_setup_true_lang-i2G2_LPu.js => edit.vue_vue_type_script_setup_true_lang-C1SOMzbY.js} (94%) rename server/public/admin/assets/{edit.vue_vue_type_script_setup_true_lang-CkqcvKHD.js => edit.vue_vue_type_script_setup_true_lang-CakiUTWY.js} (97%) rename server/public/admin/assets/{edit.vue_vue_type_script_setup_true_lang-DpjH530i.js => edit.vue_vue_type_script_setup_true_lang-Cv8AoU01.js} (93%) rename server/public/admin/assets/{edit.vue_vue_type_script_setup_true_lang-CkCTFp8a.js => edit.vue_vue_type_script_setup_true_lang-DGmA-4eu.js} (98%) rename server/public/admin/assets/{edit.vue_vue_type_script_setup_true_lang-CMbirhxq.js => edit.vue_vue_type_script_setup_true_lang-Fs0sc62L.js} (97%) rename server/public/admin/assets/{edit.vue_vue_type_script_setup_true_lang-CP2jfE5D.js => edit.vue_vue_type_script_setup_true_lang-tZxQS8dk.js} (93%) rename server/public/admin/assets/{edit.vue_vue_type_script_setup_true_name_articleColumnEdit_lang-D92TrSZt.js => edit.vue_vue_type_script_setup_true_name_articleColumnEdit_lang-BsgZdXbb.js} (96%) rename server/public/admin/assets/{environment-BhO92HQ_.js => environment-Bi7eexR6.js} (96%) rename server/public/admin/assets/{error-BRBhqisw.js => error-D-uPyFBJ.js} (92%) rename server/public/admin/assets/{fans-CXPyrkML.js => fans-Bb64fXyq.js} (89%) rename server/public/admin/assets/{file-ClZdaIfx.js => file-D75Ivf9i.js} (90%) rename server/public/admin/assets/{file-CAEOOa9_.js => file-DWoFbTjb.js} (95%) rename server/public/admin/assets/{filing-C_PjKsls.js => filing-Blolcld9.js} (88%) rename server/public/admin/assets/{finance-CZySKYK6.js => finance-CQGdd_Go.js} (95%) rename server/public/admin/assets/{first_visit-BE8Lm4EN.js => first_visit-DAxtuCK2.js} (52%) rename server/public/admin/assets/{follow_reply-ttdPSAn2.js => follow_reply-BrXQTvVq.js} (91%) rename server/public/admin/assets/{footer.vue_vue_type_script_setup_true_lang-7b7oH0Kv.js => footer.vue_vue_type_script_setup_true_lang-CkxOqaNG.js} (87%) rename server/public/admin/assets/{guahao-xFPC2g61.js => guahao-fsKR9vJW.js} (98%) rename server/public/admin/assets/{h5-Cum8KNsC.js => h5-BjijOinF.js} (99%) rename server/public/admin/assets/{h5-BKLQn2A9.js => h5-CxPR9gaD.js} (94%) rename server/public/admin/assets/{icon-CH7LHUUw.js => icon-1uy4iE8p.js} (94%) rename server/public/admin/assets/{index-CXbnw6p8.js => index--JXB9DHQ.js} (78%) rename server/public/admin/assets/{index-91kZmjpJ.js => index-77Euo7Ci.js} (97%) rename server/public/admin/assets/{index-CQXUUbPi.js => index-B3NeDCR-.js} (96%) rename server/public/admin/assets/{index-CCG7H6Ul.js => index-B7n-FpxB.js} (99%) rename server/public/admin/assets/{index-BWeecgSM.js => index-B8LZ-HCp.js} (97%) rename server/public/admin/assets/{index-zY8JSP71.js => index-B8evJDsl.js} (99%) rename server/public/admin/assets/{index-CBMqSINZ.js => index-BFiquBi7.js} (74%) rename server/public/admin/assets/{index-CzXa4E4l.js => index-BMtA1ooo.js} (99%) rename server/public/admin/assets/{index-DwFojkMo.js => index-BN2M6lGD.js} (90%) rename server/public/admin/assets/{index-CfTj2vuk.js => index-BS82gb6r.js} (99%) rename server/public/admin/assets/{index-Dbnze_MY.js => index-BSnMSmpl.js} (87%) rename server/public/admin/assets/{index-DUJcOhOZ.js => index-BSwVDYZd.js} (89%) rename server/public/admin/assets/{index-kXZWmNqy.js => index-BbIv2PHW.js} (99%) rename server/public/admin/assets/{index-CJ6fzEjF.js => index-BcTeGwNc.js} (95%) rename server/public/admin/assets/{index-D5xTdZGc.js => index-Be51Lchh.js} (92%) rename server/public/admin/assets/{index-C0qNRFdR.js => index-Bj958_hn.js} (95%) rename server/public/admin/assets/{index-CxpUzZ-A.js => index-BkwDFgzY.js} (97%) rename server/public/admin/assets/{index-BXC1Fz4l.js => index-Bmx1NuY2.js} (93%) rename server/public/admin/assets/{index-mfyDT_vi.js => index-BnfeBpgt.js} (98%) rename server/public/admin/assets/{index-BUdVL_Kf.js => index-BrixtWVC.js} (90%) rename server/public/admin/assets/{index-A7-2KDdO.js => index-BtfryG-T.js} (87%) rename server/public/admin/assets/{index-Bx3UgHue.js => index-BuHCHmWh.js} (84%) rename server/public/admin/assets/{index-CRvL88Da.js => index-BvP6jKID.js} (98%) rename server/public/admin/assets/{index-Bptrs_vp.js => index-C2RO7ZXL.js} (93%) rename server/public/admin/assets/{index-DXLC091s.js => index-C7291G3H.js} (94%) rename server/public/admin/assets/{index-nHWCpphL.js => index-CCW2jHkL.js} (99%) rename server/public/admin/assets/{index-De13kk0O.js => index-CJn0zdCA.js} (93%) rename server/public/admin/assets/{index-D3GHV4sG.js => index-CKIW3ABd.js} (96%) create mode 100644 server/public/admin/assets/index-CKylQnvr.js delete mode 100644 server/public/admin/assets/index-COO5LK7z.css rename server/public/admin/assets/{index-DKk_EILZ.js => index-CWtmv6c_.js} (98%) rename server/public/admin/assets/{index-DQVmHMZL.js => index-CZRr_648.js} (99%) rename server/public/admin/assets/{index-CeXjZRfK.js => index-C_hJGcdG.js} (94%) rename server/public/admin/assets/{index-Bcon2pyu.js => index-CgG9jXrQ.js} (97%) rename server/public/admin/assets/{index-C0XMMaqw.js => index-CmOl8Ts_.js} (93%) rename server/public/admin/assets/{index-DPHh7502.js => index-CsxFhp2j.js} (99%) rename server/public/admin/assets/{index-_aAQ6Nxu.js => index-CtSbqfbA.js} (95%) rename server/public/admin/assets/{index-I2i4paHz.js => index-CtgrQFM4.js} (95%) rename server/public/admin/assets/{index-BiSCEEEM.js => index-D0Qlwy5A.js} (86%) rename server/public/admin/assets/{index-Dy4v9VTP.js => index-D1mL0Y2z.js} (96%) delete mode 100644 server/public/admin/assets/index-D79_HaxK.js create mode 100644 server/public/admin/assets/index-D8Ue9ypt.css rename server/public/admin/assets/{index-BKuzf7wy.js => index-DCHFJLxs.js} (93%) rename server/public/admin/assets/{index-vQOVRdnM.js => index-DFtvrIDK.js} (90%) rename server/public/admin/assets/{index-BhX1mXHA.js => index-DFvgqKH8.js} (98%) rename server/public/admin/assets/{index-DA1DsIKO.js => index-DH7raP3N.js} (84%) rename server/public/admin/assets/{index-DMCS5zPU.js => index-DctcvcVd.js} (81%) rename server/public/admin/assets/{index-BoG5BBbM.js => index-Df0rI9Fp.js} (99%) rename server/public/admin/assets/{index-DabcQSr_.js => index-DgdkrwCe.js} (88%) rename server/public/admin/assets/{index-Dk7zbiJv.js => index-Drab_Br1.js} (99%) rename server/public/admin/assets/{index-D8-fvW10.js => index-DrnibAL4.js} (56%) rename server/public/admin/assets/{index-DYwjS2d5.js => index-a5BG1BWa.js} (92%) rename server/public/admin/assets/{index-CLwe6ftX.js => index-a_ZxLOOo.js} (89%) rename server/public/admin/assets/{index-B-4lJ-Jn.js => index-ayQNEW9Q.js} (95%) rename server/public/admin/assets/{index-CE8YdHLp.js => index-dbNEla3L.js} (91%) rename server/public/admin/assets/{index-oPzat6U0.js => index-jRkFOHfc.js} (99%) rename server/public/admin/assets/{index-NT8tFkVq.js => index-jinPz6CE.js} (98%) rename server/public/admin/assets/{index-CLqjyTTo.js => index-l5Cq2faW.js} (98%) rename server/public/admin/assets/{index-C8c7I544.js => index-pm0C3F0W.js} (89%) rename server/public/admin/assets/{index-X3vXS7JY.js => index-vXlyiLlo.js} (92%) rename server/public/admin/assets/{index-DMJINi7J.js => index-xpuJLSls.js} (99%) rename server/public/admin/assets/{index.vue_vue_type_script_setup_true_lang-BPr5gsMB.js => index.vue_vue_type_script_setup_true_lang-HGooEmU6.js} (98%) rename server/public/admin/assets/{index.vue_vue_type_style_index_0_lang-C84bNd1F.js => index.vue_vue_type_style_index_0_lang-CdHPtIC-.js} (91%) rename server/public/admin/assets/{index_h5-BZS7cRVV.js => index_h5-DK-hO-pX.js} (93%) rename server/public/admin/assets/{information-CHSg4q1p.js => information-BtY6-e1D.js} (92%) rename server/public/admin/assets/{journal-CgvKa_5W.js => journal-DPOjySw-.js} (94%) rename server/public/admin/assets/{keyword_reply-CuLgB1Uc.js => keyword_reply-BzMCBMvw.js} (91%) rename server/public/admin/assets/{link-DtWn0yuf.js => link-Db0SWZfr.js} (70%) rename server/public/admin/assets/{list-DYw2R17V.js => list-BPqBZ8SM.js} (93%) rename server/public/admin/assets/{list-9YRENGkm.js => list-EyT7ualt.js} (96%) rename server/public/admin/assets/{list_h5-tKkyp8Pc.js => list_h5-yqC6XpaH.js} (92%) rename server/public/admin/assets/{login-BDQONcJ0.js => login-Bvk_3iIJ.js} (97%) rename server/public/admin/assets/{login_register-C8uZcmK_.js => login_register-CyHVWiqe.js} (97%) rename server/public/admin/assets/{medicine-BJYbhCDS.js => medicine-DIEwHOeB.js} (98%) rename server/public/admin/assets/{medicine-K52GUWS-.js => medicine-nsHwJViA.js} (81%) rename server/public/admin/assets/{menu-B2_98h0b.js => menu-BMLd7Gi6.js} (71%) rename server/public/admin/assets/{menu-DjA5h5dD.js => menu-C7DGNCxH.js} (91%) rename server/public/admin/assets/{menu-B3ojZv5U.js => menu-DlNXlk8k.js} (86%) delete mode 100644 server/public/admin/assets/menu-set-DfgnYxDd.js create mode 100644 server/public/admin/assets/menu-set-DmdKRr0A.js rename server/public/admin/assets/{menu-set.vue_vue_type_script_setup_true_lang-CbLdZhC4.js => menu-set.vue_vue_type_script_setup_true_lang-Go2YUSJ3.js} (94%) rename server/public/admin/assets/{message-Dgww-u18.js => message-CAHFWDnF.js} (87%) rename server/public/admin/assets/{mobile-style-BY14yU-g.js => mobile-style-C8MZrD7i.js} (50%) rename server/public/admin/assets/{mobile-style.vue_vue_type_script_setup_true_lang-DlShpKNW.js => mobile-style.vue_vue_type_script_setup_true_lang-DiZ4FSjA.js} (98%) rename server/public/admin/assets/{mubiao-UqZ3dQ5x.js => mubiao-Do05CGtS.js} (97%) rename server/public/admin/assets/{mubiao-dept-card-CZgx9zEl.js => mubiao-dept-card-Cvu1Or-m.js} (98%) rename server/public/admin/assets/{mubiao-dept-node-CmcqTuI2.js => mubiao-dept-node-U3l4QS_J.js} (97%) rename server/public/admin/assets/{oa-attr-CqKsM0wT.js => oa-attr-CEGE3U3o.js} (84%) delete mode 100644 server/public/admin/assets/oa-menu-form-BidLomm_.js create mode 100644 server/public/admin/assets/oa-menu-form-eDjdjDB5.js delete mode 100644 server/public/admin/assets/oa-menu-form-edit-Dcl28Lp1.js create mode 100644 server/public/admin/assets/oa-menu-form-edit-W2DClkmp.js rename server/public/admin/assets/{oa-menu-form-edit.vue_vue_type_script_setup_true_lang-9JTL2gDz.js => oa-menu-form-edit.vue_vue_type_script_setup_true_lang-C2eiXbVk.js} (90%) rename server/public/admin/assets/{oa-menu-form.vue_vue_type_script_setup_true_lang-DpF7A4eB.js => oa-menu-form.vue_vue_type_script_setup_true_lang-BVVPYTh8.js} (97%) rename server/public/admin/assets/{oa-phone-CZiMmRkt.js => oa-phone-CRp_i1VK.js} (91%) rename server/public/admin/assets/{open_setting-e3tOyyYX.js => open_setting-DLxiGNiR.js} (93%) rename server/public/admin/assets/{order-BJTbBv_o.js => order-Dz1NL82W.js} (96%) rename server/public/admin/assets/{order_list-CkQrBAtD.js => order_list-lLpjaY3B.js} (98%) rename server/public/admin/assets/{order_list_h5-9RgRVRUK.js => order_list_h5-Daz8CjH0.js} (98%) rename server/public/admin/assets/{overflow-XfjJbNSx.js => overflow-ErQsBwLa.js} (87%) rename server/public/admin/assets/{paiban-QFeGlmMv.js => paiban-woJxc_2K.js} (95%) rename server/public/admin/assets/{patient-4QJ3YgMJ.js => patient-DiY8uj2P.js} (88%) rename server/public/admin/assets/{patient-call-BWJMRxeo.js => patient-call-DTS3e3dS.js} (98%) rename server/public/admin/assets/{pay-C4F9M4pZ.js => pay-CVRnPrCn.js} (85%) rename server/public/admin/assets/{pc-0wuPNGsH.js => pc-kV-GzTmX.js} (95%) rename server/public/admin/assets/{pc_details-DihGx8-f.js => pc_details-B4ZGhYHm.js} (50%) rename server/public/admin/assets/{perm-CHalL7pT.js => perm-tSma3sWL.js} (67%) rename server/public/admin/assets/{picker-DYZuEtRo.js => picker-RZLRR_G5.js} (98%) rename server/public/admin/assets/{picker-Dr1-lH_q.js => picker-tazliPuC.js} (95%) rename server/public/admin/assets/{picker.vue_vue_type_script_setup_true_lang-CXMINOIi.js => picker.vue_vue_type_script_setup_true_lang-B7Bv38ga.js} (97%) rename server/public/admin/assets/{post-C0jU6asb.js => post-JpabMAL_.js} (86%) rename server/public/admin/assets/{prescription-drawer-CroXsqpP.js => prescription-drawer-BD0Nl5dL.js} (98%) rename server/public/admin/assets/{preview-B6PMuZpn.js => preview-BHKlkFM2.js} (61%) rename server/public/admin/assets/{preview-pc-MwtTuuHl.js => preview-pc-lI4_qErz.js} (59%) rename server/public/admin/assets/{progress-4pAQO6k-.js => progress-PPaX2s9P.js} (98%) rename server/public/admin/assets/{protocol-l81pHdKq.js => protocol-Dj8DsORc.js} (89%) rename server/public/admin/assets/{qywx-BwPn4ZAe.js => qywx-DNLk8l-B.js} (99%) rename server/public/admin/assets/{readonly-C3q-wXRM.js => readonly-Bzhw48AS.js} (82%) rename server/public/admin/assets/{recharge_record-Ar0ku18r.js => recharge_record-CWqElylR.js} (92%) delete mode 100644 server/public/admin/assets/refund-log-CeH5-MWY.js create mode 100644 server/public/admin/assets/refund-log-DsMdsR52.js rename server/public/admin/assets/{refund-log.vue_vue_type_script_setup_true_lang-BQJWkU_R.js => refund-log.vue_vue_type_script_setup_true_lang-Dp9fL011.js} (96%) rename server/public/admin/assets/{refund_record-CUi7xalW.js => refund_record-BYJT3v77.js} (96%) delete mode 100644 server/public/admin/assets/relations-add-DKKjp4aQ.js create mode 100644 server/public/admin/assets/relations-add-m0SAciy8.js rename server/public/admin/assets/{relations-add.vue_vue_type_script_setup_true_lang-B3nOOfAj.js => relations-add.vue_vue_type_script_setup_true_lang-B0R4rWqT.js} (95%) rename server/public/admin/assets/{rich_text-ID8oNktV.js => rich_text-eShKmFm2.js} (70%) rename server/public/admin/assets/{role-CSB0a6yH.js => role-BK9-X1JV.js} (83%) rename server/public/admin/assets/{roster-B-qj9lKS.js => roster-BfTD7pra.js} (99%) rename server/public/admin/assets/{self_input_stats-DMkK_Hvu.js => self_input_stats-DpkdEV8c.js} (91%) rename server/public/admin/assets/{setting-DGf1X2Wz.js => setting-d4IYSzeT.js} (93%) rename server/public/admin/assets/{setup-Cevnh-mk.js => setup-BmxJqJoJ.js} (78%) rename server/public/admin/assets/{statistics-B9HWOepd.js => statistics-LrAz8bLV.js} (88%) rename server/public/admin/assets/{stats-hlJTlR5p.js => stats-Di_MlUCe.js} (97%) rename server/public/admin/assets/{style-Dk6Flpbq.js => style-C3CXqKKB.js} (84%) rename server/public/admin/assets/{tabbar-DC5Sy7Yp.js => tabbar-DMb_epzy.js} (73%) rename server/public/admin/assets/{tcm-BzzBMfBw.js => tcm--WHZCSMq.js} (99%) rename server/public/admin/assets/{theme-picker-BFfyq7iS.js => theme-picker-BsOiHacI.js} (93%) rename server/public/admin/assets/{tongji-BuPNV3Pn.js => tongji-BFhvh-uV.js} (97%) rename server/public/admin/assets/{upload-CXPVyzeR.js => upload-3IoSn2Ek.js} (90%) rename server/public/admin/assets/{useDictOptions-pgjHnp9X.js => useDictOptions-pz0NtZPZ.js} (84%) rename server/public/admin/assets/{useListTimeFilter-CsS7WHv0.js => useListTimeFilter-40qnhP5x.js} (98%) rename server/public/admin/assets/{useMediaSourceOptions-Dht_-nDB.js => useMediaSourceOptions-CyWemm8p.js} (90%) rename server/public/admin/assets/{useMenuOa-DJFg7fVn.js => useMenuOa-CjKLE6t4.js} (92%) rename server/public/admin/assets/{user-Bfnw4WA-.js => user-DRhBHUvG.js} (82%) rename server/public/admin/assets/{weapp-CEKVrAhZ.js => weapp-B8wW_O4N.js} (68%) rename server/public/admin/assets/{weapp-DkdlJ1-8.js => weapp-awldkq-G.js} (93%) rename server/public/admin/assets/{website-Drqef9n3.js => website-CHqXkHCa.js} (91%) rename server/public/admin/assets/{wx_oa-rBjokIeQ.js => wx_oa-D94L7ur0.js} (93%) rename server/public/admin/assets/{yeji-Dz_F8yMY.js => yeji-BXeKeLKG.js} (99%) create mode 100644 server/public/admin/assets/yeji-edit-BVSNnhpQ.js delete mode 100644 server/public/admin/assets/yeji-edit-DQlb9d87.js rename server/public/admin/assets/{yeji-edit.vue_vue_type_script_setup_true_lang-DFoPwzBT.js => yeji-edit.vue_vue_type_script_setup_true_lang-DBwQyZjc.js} (98%) create mode 100644 server/sql/1.9.20260828/add_wecom_promotion_pool_operators.sql create mode 100644 server/tests/WecomPromotionPoolOperatorContractTest.php diff --git a/admin/src/api/first_visit.ts b/admin/src/api/first_visit.ts index 1ead7ef01..adb5f43f6 100644 --- a/admin/src/api/first_visit.ts +++ b/admin/src/api/first_visit.ts @@ -238,10 +238,30 @@ export function wecomPromotionSavePool(params: Record) { return request.post({ url: '/firstvisit.wecomPromotion/savePool', params, timeout: 120000 }) } -export function wecomPromotionSaveWidget(params: Record) { - return request.post({ url: '/firstvisit.wecomPromotion/saveWidget', params }) -} - +export function wecomPromotionSaveWidget(params: Record) { + return request.post({ url: '/firstvisit.wecomPromotion/saveWidget', params }) +} + +export interface WecomPromotionBatchSetOperatorsParams { + pool_ids: number[] + operator_admin_ids: number[] + action: 'grant' | 'revoke' +} + +export interface WecomPromotionBatchSetOperatorsResult { + action: 'grant' | 'revoke' + pool_ids: number[] + operator_admin_ids: number[] + affected: number +} + +export function wecomPromotionBatchSetOperators(params: WecomPromotionBatchSetOperatorsParams) { + return request.post({ + url: '/firstvisit.wecomPromotion/batchSetOperators', + params + }) +} + export function wecomPromotionDeletePool(params: { id: number }) { return request.post({ url: '/firstvisit.wecomPromotion/deletePool', params, timeout: 120000 }) } diff --git a/admin/src/views/first_visit/wecom_promotion/index.vue b/admin/src/views/first_visit/wecom_promotion/index.vue index 62f7227f3..11287557f 100644 --- a/admin/src/views/first_visit/wecom_promotion/index.vue +++ b/admin/src/views/first_visit/wecom_promotion/index.vue @@ -51,28 +51,51 @@