feat(admin): Add user management and upgrade to module permission system
Features - User Management (Phase 4.1): - Database: Add user_modules table for fine-grained module permissions - Database: Add 4 user permissions (view/create/edit/delete) to role_permissions - Backend: UserService (780 lines) - CRUD with tenant isolation - Backend: UserController + UserRoutes (648 lines) - 13 API endpoints - Backend: Batch import users from Excel - Frontend: UserListPage (412 lines) - list/filter/search/pagination - Frontend: UserFormPage (341 lines) - create/edit with module config - Frontend: UserDetailPage (393 lines) - details/tenant/module management - Frontend: 3 modal components (592 lines) - import/assign/configure - API: GET/POST/PUT/DELETE /api/admin/users/* endpoints Architecture Upgrade - Module Permission System: - Backend: Add getUserModules() method in auth.service - Backend: Login API returns modules array in user object - Frontend: AuthContext adds hasModule() method - Frontend: Navigation filters modules based on user.modules - Frontend: RouteGuard checks requiredModule instead of requiredVersion - Frontend: Remove deprecated version-based permission system - UX: Only show accessible modules in navigation (clean UI) - UX: Smart redirect after login (avoid 403 for regular users) Fixes: - Fix UTF-8 encoding corruption in ~100 docs files - Fix pageSize type conversion in userService (String to Number) - Fix authUser undefined error in TopNavigation - Fix login redirect logic with role-based access check - Update Git commit guidelines v1.2 with UTF-8 safety rules Database Changes: - CREATE TABLE user_modules (user_id, tenant_id, module_code, is_enabled) - ADD UNIQUE CONSTRAINT (user_id, tenant_id, module_code) - INSERT 4 permissions + role assignments - UPDATE PUBLIC tenant with 8 module subscriptions Technical: - Backend: 5 new files (~2400 lines) - Frontend: 10 new files (~2500 lines) - Docs: 1 development record + 2 status updates + 1 guideline update - Total: ~4900 lines of code Status: User management 100% complete, module permission system operational
This commit is contained in:
@@ -1,57 +1,64 @@
|
||||
# **IIT Manager Agent 憭𡁶垢閫坿𠧧銝𤾸凝靽∠垢撘<EFBFBD><EFBFBD>烐<EFBFBD><EFBFBD>?*
|
||||
# **IIT Manager Agent 多端角色与微信端开发指南**
|
||||
|
||||
## **1\. 敺桐縑蝡舫<EFBFBD>匧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗帋蛹隞<EFBFBD>銋<EFBFBD><EFBFBD>憿餅糓隡<EFBFBD><EFBFBD>敺桐縑嚗?*
|
||||
## **1\. 微信端选型分析:为什么必须是企业微信?**
|
||||
|
||||
<EFBFBD>其葩摨羓<EFBFBD>蝛嗥<EFBFBD><EFBFBD>踹𪂹<EFBFBD>煺葉嚗峕<EFBFBD><EFBFBD>航圻颲曄<EFBFBD><EFBFBD>舫<EFBFBD><EFBFBD>扳糓蝚砌<EFBFBD>雿滨<EFBFBD><EFBFBD>?
|
||||
| <20>寞<EFBFBD>?| 敺桐縑霈a<E99C88><EFBD81>?| 敺桐縑<E6A190>滚𦛚<E6BB9A>?| 隡<><E99AA1>敺桐縑 (WeCom) |
|
||||
在临床研究的长周期中,消息触达的可靠性是第一位的。
|
||||
|
||||
| 特性 | 微信订阅号 | 微信服务号 | 企业微信 (WeCom) |
|
||||
| :---- | :---- | :---- | :---- |
|
||||
| **瘨<EFBFBD><EFBFBD>銝餃𢆡<EFBFBD>?* | <20><>摹嚗<E691B9><E59A97><EFBFBD>惩銁<E683A9><E98A81>辣憭對<E686AD> | 銝哨<E98A9D>璅⊥踎瘨<E8B88E><E798A8><EFBFBD>㗇活<E39787>圈<EFBFBD><E59C88>塚<EFBFBD> | **撘?*嚗<>虾<EFBFBD>湔𦻖<E6B994>𤑳<EFBFBD>憭㚚<E686AD><E39A9A>𠉛頂鈭?蝢歹<E89DA2> |
|
||||
| **48撠𤩺𧒄<EFBFBD>𣂼<EFBFBD>** | <EFBFBD>?| <20>㚁<EFBFBD><E39A81>冽<EFBFBD>銝滢<E98A9D><E6BBA2>典<EFBFBD><E585B8>䭾<EFBFBD><E4ADBE>睲縑嚗?| **<EFBFBD>?*嚗<>蘨閬<E898A8>糓憭㚚<E686AD><E39A9A>𠉛頂鈭綽<E988AD><E7B6BD>𤩺𧒄閫西噢嚗?|
|
||||
| **頨思遢撅墧<EFBFBD>?* | 慦雴<E685A6>/靽⊥<E99DBD>瘚?| <20>箸<EFBFBD>/<2F><><EFBFBD>撅閧內 | **銝㮖<EFBFBD>/<2F>䔶<EFBFBD>撅墧<E69285>?*嚗<><E59A97><EFBFBD>滩恕霂<E68195>龫<EFBFBD><E9BEAB><EFBFBD> |
|
||||
| **PI <EFBFBD><EFBFBD>鍂<EFBFBD>?* | 銝齿綫<E9BDBF>?| 銝<><E98A9D>穿<EFBFBD>隞<EFBFBD>鍂鈭𡒊<E988AD><F0A1928A>閙𠯫<E99699>伐<EFBFBD> | **<EFBFBD>刻<EFBFBD>**嚗<>鍂鈭𤾸<E988AD>蝑𣇉&霈支<E99C88>蝝扳<E89D9D>仿<EFBFBD>𡁶䰻嚗?|
|
||||
| **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鍂<EFBFBD>?* | 銝齿綫<E9BDBF>?| 銝齿綫<E9BDBF>琜<EFBFBD><E7909C>䭾<EFBFBD><E4ADBE>踵<EFBFBD><E8B8B5>讛挪嚗?| **<EFBFBD>刻<EFBFBD>**嚗㇃RC<52>朞<EFBFBD>隡<EFBFBD>凝<EFBFBD>䭾<EFBFBD><E4ADBE><EFBFBD>凝靽∴<E99DBD> |
|
||||
| **消息主动性** | 极弱(折叠在文件夹) | 中(模板消息有次数限制) | **强**(可直接发给外部联系人/群) |
|
||||
| **48小时限制** | 有 | 有(用户不互动则无法发信) | **无**(只要是外部联系人,随时触达) |
|
||||
| **身份属性** | 媒体/信息流 | 机构/品牌展示 | **专业/职业属性**(实名认证医生) |
|
||||
| **PI 适用性** | 不推荐 | 一般(仅用于简单日报) | **推荐**(用于决策确认与紧急通知) |
|
||||
| **患者适用性** | 不推荐 | 不推荐(无法长效随访) | **推荐**(CRC通过企微加患者微信) |
|
||||
|
||||
## **2\. 閫<EFBFBD>芋<EFBFBD>㚚<EFBFBD>蝵脖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䔶<EFBFBD>敶鍦<EFBFBD><EFBFBD><EFBFBD>䲮獢?*
|
||||
## **2\. 规模化部署下的品牌与归属感方案**
|
||||
|
||||
针对“100 个项目、47 家医院”的规模化场景,传统的“一院一授权”不可行。建议采用 **“中央应用 \+ 动态品牌”** 的架构。
|
||||
|
||||
<EFBFBD><EFBFBD>笆<EFBFBD>?00 銝芷★<E88AB7>柴<EFBFBD>?7 摰嗅龫<E59785>T<EFBFBD>萘<EFBFBD>閫<EFBFBD>芋<EFBFBD>硋㦤<E7A18B>荔<EFBFBD>隡删<E99AA1><E588A0><EFBFBD><EFBFBD>靝<EFBFBD><E99D9D>V<EFBFBD><EFBCB6><EFBFBD><EFBFBD><EFBFBD>苷<EFBFBD><E88BB7>航<EFBFBD><E888AA><EFBFBD>遣霈桅<E99C88><E6A185>?**<2A>靝葉憭桀<E686AD><E6A180>?\+ <20>冽<EFBFBD><E586BD><EFBFBD><EFBFBD>𢞖<EFBFBD>?* <20><>沲<EFBFBD><E6B2B2><EFBFBD>?
|
||||
### **2.1 品牌展示策略 (Branding Strategy)**
|
||||
|
||||
1. **隡<EFBFBD><EFBFBD>蝞<EFBFBD>蝘唬<EFBFBD><EFBFBD>?*嚗𡁶𤚗霂瑚<E99C82>銝𡁜凝靽∟恕霂<E68195>𧒄嚗<F0A79284><E59A97>蝞<EFBFBD>蝘啗挽蝵桐蛹<E6A190>𨅯ㄨ霂<E384A8>儐銝游<E98A9D><E6B8B8>𠉛弦<F0A0899B>脲<EFBFBD><E884B2>靝葩摨羓<E691A8>蝛嗆<E89D9B><E59786>∩葉敹<E89189><E695B9>嘅<EFBFBD><E59885><EFBFBD><EFBFBD>滚<EFBFBD><E6BB9A>詨<EFBFBD><E8A9A8><EFBFBD><EFBFBD><EFBFBD>𤥁蔓隞嗉<E99A9E>雿𨀣<E99BBF>霂<EFBFBD><E99C82>嚗剹<E59A97>?
|
||||
2. **憭𡁜<EFBFBD><EFBFBD>券<EFBFBD>蝳?*嚗𡁻<E59A97>撖嫣<E69296><E5ABA3>屸★<E5B1B8>桀<EFBFBD>撱箔<E692B1><E7AE94>𣬚<EFBFBD><F0A3AC9A>𡏭䌊撱箏<E692B1><E7AE8F>兩<EFBFBD>腈<EFBFBD>?
|
||||
* 摨𠉛鍂 A嚗𡁜<E59A97>銝算<E98A9D>𨅯<EFBFBD><F0A885AF>颱<EFBFBD><E9A2B1>a爸韐函<E99F90><E587BD>暸★<E69AB8>栽<EFBFBD>?
|
||||
* 摨𠉛鍂 B嚗𡁜<E59A97>銝算<E98A9D>𨅯<EFBFBD>憭扯<E686AD><E689AF>方<EFBFBD><E696B9>𣬚<EFBFBD>蝛嗥<E89D9B><E597A5>?
|
||||
3. **瘨<EFBFBD><EFBFBD><EFBFBD>煾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>䌊摰帋<EFBFBD>**嚗𡁻<E59A97>朞<EFBFBD>隡<EFBFBD><E99AA1>敺桐縑 API嚗<49>銁蝏?PI <20>券<EFBFBD><E588B8><EFBFBD><EFBFBD>舀𧒄嚗<F0A79284>虾隞亙<E99A9E><E4BA99>∠<EFBFBD><E288A0><EFBFBD><EFBFBD>閬<EFBFBD><E996AC>Title嚗匧𢆡<E58CA7><F0A286A1>耨<EFBFBD>嫣蛹<E5ABA3>瑚<EFBFBD>憿寧𤌍蝏<F0A48C8D><E89D8F>蝘啜<E89D98>?
|
||||
### **2.2 撠讐<E692A0>摨?vs 隡<><E99AA1>敺桐縑嚗𡁏楛摨血笆瘥?*
|
||||
1. **企业简称优化**:申请企业微信认证时,将简称设置为“壹证循临床研究”或“临床研究服务中心”(需配合相关商标或软件著作权证明)。
|
||||
2. **多应用隔离**:针对不同项目创建不同的“自建应用”。
|
||||
* 应用 A:名为“北医三院骨质疏松项目”
|
||||
* 应用 B:名为“北大肿瘤肺癌研究组”
|
||||
3. **消息发送者自定义**:通过企业微信 API,在给 PI 推送消息时,可以将卡片的摘要(Title)动态修改为具体项目组名称。
|
||||
|
||||
| 蝏游漲 | 敺桐縑撠讐<E692A0>摨?| 隡<><E99AA1>敺桐縑摨𠉛鍂 |
|
||||
### **2.2 小程序 vs 企业微信:深度对比**
|
||||
|
||||
| 维度 | 微信小程序 | 企业微信应用 |
|
||||
| :---- | :---- | :---- |
|
||||
| **<EFBFBD><EFBFBD><EFBFBD>蝒<EFBFBD>枂摨?* | **<EFBFBD><EFBFBD><EFBFBD>**嚗<><E59A97><EFBFBD>函𡠺蝡见𦶢<E8A781>溻<EFBFBD><E6BABB>ogo嚗?| **銝?*嚗<><E59A97><EFBFBD>𣂷<EFBFBD>隡<EFBFBD><E99AA1>銝颱<E98A9D><E9A2B1><EFBFBD><EFBFBD>蝻<EFBFBD>嚗?|
|
||||
| **<EFBFBD>𡁶䰻<EFBFBD>嗆<EFBFBD><EFBFBD>?* | **雿?*嚗<><E59A97><EFBFBD>冽<EFBFBD>銝餃𢆡霈a<E99C88>嚗峕<E59A97>甈⊥㺭<E28AA5>𣂼<EFBFBD>嚗?| **<EFBFBD><EFBFBD><EFBFBD>**嚗<><E59A97><EFBFBD>舐凒颲曇<E9A2B2>憭拙<E686AD>銵剁<E98AB5> |
|
||||
| **鈭支<EFBFBD>瘛勗漲** | **撘?*嚗<><E59A97><EFBFBD><EFBFBD><EFBFBD>銵典<E98AB5><E585B8><EFBFBD>虾閫<E899BE><E996AB><EFBFBD>曇”嚗?| **銝?*嚗<><E59A97>銝箇<E98A9D><E7AE87>閧<EFBFBD><E996A7>∠<EFBFBD><E288A0>?H5 <20>暹𦻖嚗?|
|
||||
| **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞擧<EFBFBD>?* | 靘肽<E99D98><E882BD>冽<EFBFBD>銝餃𢆡<E9A483>枏<EFBFBD>銋䭾<E98A8B> | 靘肽<E99D98> CRC <20><><EFBFBD><EFBFBD>煺<EFBFBD><E785BA>剁<EFBFBD><E58981>游撩嚗?|
|
||||
| **品牌突出度** | **极高**(完全独立命名、Logo) | **中**(受限于企业主体的后缀) |
|
||||
| **通知时效性** | **低**(需用户主动订阅,有次数限制) | **极高**(消息直达聊天列表) |
|
||||
| **交互深度** | **强**(复杂的表单、可视化图表) | **中**(多为简单的卡片和 H5 链接) |
|
||||
| **患者依从性** | 依赖用户主动打开习惯 | 依赖 CRC 的私域互动(更强) |
|
||||
|
||||
## **3\. <EFBFBD>刻<EFBFBD><EFBFBD>嗆<EFBFBD>嚗尠<EFBFBD>𣈯<EFBFBD>𡁶䰻-<2D>賢𧑐<E8B3A2>嘥<EFBFBD>頧冽芋撘?*
|
||||
## **3\. 推荐架构:“通知-落地”双轨模式**
|
||||
|
||||
銝箔<EFBFBD>撟唾﹛<EFBFBD>𣈯<EFBFBD>𡁶䰻<EFBFBD>𦠜𧒄<EFBFBD>把<EFBFBD>苷<EFBFBD><EFBFBD>𨅯龫<EFBFBD>W<EFBFBD><EFBFBD>峕<EFBFBD><EFBFBD>嘅<EFBFBD><EFBFBD>刻<EFBFBD>隞乩<EFBFBD>瘛瑕<EFBFBD><EFBFBD>寞<EFBFBD>嚗?
|
||||
1. **蝏煺<E89D8F><E785BA>𡁶䰻銝剜攟 (WeCom)**嚗?
|
||||
* 雿輻鍂憯寡<E686AF>敺芰<E695BA>銝<EFBFBD><E98A9D><EFBFBD><EFBFBD>銝𡁜凝靽∩蜓雿瓐<E99BBF>?
|
||||
* 韐蠘提<EFBFBD><EFBFBD><EFBFBD>厰★<EFBFBD>桃<EFBFBD>嚗朞挪閫<EFBFBD><EFBFBD><EFBFBD>鉝<EFBFBD><EFBFBD>捶<EFBFBD>扯郎<EFBFBD>乓<EFBFBD><EFBFBD>𠯫<EFBFBD>交綫<EFBFBD><EFBFBD><EFBFBD>?
|
||||
* <EFBFBD>冽<EFBFBD><EFBFBD>笔<EFBFBD>嚗𡁏𤣰<EFBFBD>唬<EFBFBD><EFBFBD>⊥䔉<EFBFBD>芬<EFBFBD>靝葩摨羓<EFBFBD>蝛嗅𨭌<EFBFBD><EFBFBD><EFBFBD>萘<EFBFBD>瘨<EFBFBD><EFBFBD><EFBFBD>?
|
||||
2. **憭𡁶<E686AD><F0A181B6>瑕<EFBFBD><E79195>諹氜<E8ABB9>?(Mini-Program / H5)**嚗?
|
||||
* PI <20>?CRC <20>孵稬隡<E7A8AC>凝瘨<E5879D><E798A8>嚗諹歲頧砍<E9A0A7>撖孵<E69296>憿寧𤌍<E5AFA7>?*敺桐縑撠讐<E692A0>摨?*<2A>?
|
||||
* 撠讐<EFBFBD>摨讐<EFBFBD><EFBFBD>a▲<EFBFBD>冽遬<EFBFBD>堒<EFBFBD>蝷綽<EFBFBD>\[<5B>𦯀漪憭批郎<E689B9>輻𠈔<E8BCBB>駁堺\] <20>𠰴<EFBFBD> Logo<67>?
|
||||
* 銝𡁜𦛚<EFBFBD>餉<EFBFBD>嚗𡁜<EFBFBD>蝔见<EFBFBD><EFBFBD>朞<EFBFBD> project\_id <20>芸𢆡皜脫<E79A9C>撖孵<E69296><E5ADB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝝𨬭<E89D9D>?
|
||||
## **4\. 敺桐縑蝡臬<E89DA1><E887AC>穃<EFBFBD>憭<EFBFBD><E686AD><EFBFBD>?(<28><>笆 100+ 憿寧𤌍閫<F0A48C8D>芋)**
|
||||
为了平衡“通知及时性”与“医院品牌感”,推荐以下混合方案:
|
||||
|
||||
1. **统一通知中枢 (WeCom)**:
|
||||
* 使用壹证循统一的企业微信主体。
|
||||
* 负责所有项目的:访视提醒、质控警报、日报推送。
|
||||
* 用户感官:收到一条来自“临床研究助理”的消息。
|
||||
2. **多租户品牌落地 (Mini-Program / H5)**:
|
||||
* PI 或 CRC 点击企微消息,跳转到对应项目的**微信小程序**。
|
||||
* 小程序界面顶部显著展示:\[北京大学肿瘤医院\] 及其 Logo。
|
||||
* 业务逻辑:小程序通过 project\_id 自动渲染对应的品牌元素。
|
||||
|
||||
## **4\. 微信端开发准备清单 (针对 100+ 项目规模)**
|
||||
|
||||
1. **资质准备**:
|
||||
* \[ \] **企业微信代开发模式**:如果希望未来更灵活,可以申请成为“企业微信服务商”。
|
||||
* \[ \] **多域名备案**:准备 1-2 个通用的学术性域名(如 research-support.com)。
|
||||
2. **数据隔离技术**:
|
||||
* \[ \] **WeCom-ID 映射表**:在 iit\_schema 中记录 user\_id 在不同项目应用中的 OpenID。
|
||||
* \[ \] **消息模板引擎**:支持根据不同项目动态生成卡片文案。
|
||||
|
||||
1. **韏<>捶<EFBFBD><E68DB6><EFBFBD>**嚗?
|
||||
* \[ \] **隡<><E99AA1>敺桐縑隞<E7B891><E99A9E><EFBFBD>烐芋撘?*嚗𡁜<E59A97><F0A1819C>𨅯<EFBFBD><F0A885AF>𥟇𧊋<F0A59F87>交凒<E4BAA4>菜暑嚗<E69A91>虾隞亦𤚗霂瑟<E99C82>銝算<E98A9D>靝<EFBFBD>銝𡁜凝靽⊥<E99DBD><E28AA5>∪<EFBFBD><E288AA>腈<EFBFBD>?
|
||||
* \[ \] **憭𡁜<E686AD><F0A1819C>滚<EFBFBD>獢?*嚗𡁜<E59A97>憭?1-2 銝芷<E98A9D>𡁶鍂<F0A181B6><E98D82>郎<EFBFBD>舀<EFBFBD>批<EFBFBD><E689B9>㵪<EFBFBD>憒?research-support.com嚗剹<E59A97>?
|
||||
2. **<EFBFBD>唳旿<EFBFBD>𠉛氖<EFBFBD><EFBFBD><EFBFBD>?*嚗?
|
||||
* \[ \] **WeCom-ID <20>惩<EFBFBD>銵?*嚗𡁜銁 iit\_schema 銝剛扇敶?user\_id <20>其<EFBFBD><E585B6>屸★<E5B1B8>桀<EFBFBD><E6A180>其葉<E585B6>?OpenID<49>?
|
||||
* \[ \] **瘨<><E798A8>璅⊥踎撘閙<E69298>**嚗𡁏𣈲<F0A1818F><F0A388B2>覔<EFBFBD>桐<EFBFBD><E6A190>屸★<E5B1B8>桀𢆡<E6A180><F0A286A1><EFBFBD><EFBFBD>𣂼㨃<F0A382BC><E3A883><EFBFBD>獢<EFBFBD><E78DA2>?
|
||||
## **5\. 结论**
|
||||
|
||||
* **<EFBFBD>喃<EFBFBD><EFBFBD>游<EFBFBD>**嚗朞<E59A97>霈臭<E99C88><E887AD><EFBFBD>捂<EFBFBD>㰘<EFBFBD>韐函<E99F90>瘜𥟇<E7989C>霂齿凒<E9BDBF>溻<EFBFBD><E6BABB>遣霈桐誑<E6A190>𨅯<EFBFBD><F0A885AF>詨<EFBFBD>+<2B>滚𦛚銝剖<E98A9D><E58996>苷<EFBFBD>銝箔蜓雿橒<E99BBF>隞乒<E99A9E>𣈯★<F0A388AF>桃<EFBFBD><E6A183>苷<EFBFBD>銝箏<E98A9D><E7AE8F>典<EFBFBD><E585B8>?
|
||||
* **<EFBFBD>喃<EFBFBD>撠讐<EFBFBD>摨?*嚗𡁜<E59A97>蝔见<E89D94>銝漤<E98A9D><E6BCA4><EFBFBD>雿靝蛹<E99D9D>𦦵洵銝<E6B4B5><E98A9D>鞾<EFBFBD><E99EBE>亙藁<E4BA99>嘅<EFBFBD>雿<EFBFBD><E99BBF>撣賊<E692A3><E8B38A><EFBFBD>雿靝蛹<E99D9D>𦦵洵銝<E6B4B5>撅閧內蝒堒藁<E5A092>腈<EFBFBD>?
|
||||
* **<EFBFBD><EFBFBD>蝏<EFBFBD>遣霈?*嚗?*<2A>其<EFBFBD>銝𡁜凝靽⊥綫瘨<E7B6AB><E798A8>嚗𣬚鍂撠讐<E692A0>摨讐<E691A8><E8AE90>亥”<E4BAA5><E2809D>‵銵具<E98AB5>?* 餈蹱甅<E8B9B1>Z圾<EFBCBA>喃<EFBFBD> 47 摰嗅龫<E59785>Y<EFBFBD>撖寞𦻖<E5AF9E>曄<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>朞<EFBFBD>撠讐<E692A0>摨讐<E691A8>頞喃<E9A09E> PI <20>W<EFBFBD><EFBCB7>?
|
||||
**<2A><>𧋦**嚗间3.1 (閫<>芋<EFBFBD>碶耨甇<E880A8><E79487>) | **<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>?*嚗?025-12-30
|
||||
* **关于更名**:腾讯不允许无资质的泛指词更名。建议以“公司名+服务中心”作为主体,以“项目组”作为应用名。
|
||||
* **关于小程序**:小程序不适合作为“第一提醒入口”,但非常适合作为“第一展示窗口”。
|
||||
* **最终建议**:**用企业微信推消息,用小程序看报表和填表。** 这样既解决了 47 家医院的对接难点,又通过小程序给足了 PI 面子。
|
||||
|
||||
**版本**:V3.1 (规模化修正版) | **最后更新**:2025-12-30
|
||||
Reference in New Issue
Block a user