feat(iit-manager): Add WeChat Official Account integration for patient notifications

Features:
- PatientWechatCallbackController for URL verification and message handling
- PatientWechatService for template and customer messages
- Support for secure mode (message encryption/decryption)
- Simplified route /wechat/patient/callback for WeChat config
- Event handlers for subscribe/unsubscribe/text messages
- Template message for visit reminders

Technical details:
- Reuse @wecom/crypto for encryption (compatible with Official Account)
- Relaxed Fastify schema validation to prevent early request blocking
- Access token caching (7000s with 5min pre-refresh)
- Comprehensive logging for debugging

Testing: Local URL verification passed, ready for SAE deployment

Status: Code complete, waiting for WeChat platform configuration
This commit is contained in:
2026-01-04 22:53:42 +08:00
parent dfc472810b
commit b31255031e
167 changed files with 3055 additions and 2 deletions

View File

@@ -80,3 +80,4 @@ vite.config.*.timestamp-*

View File

@@ -47,3 +47,4 @@ exec nginx -g 'daemon off;'

View File

@@ -203,3 +203,4 @@ http {

View File

@@ -548,5 +548,6 @@ export default FulltextDetailDrawer;

View File

@@ -141,5 +141,6 @@ export const useAssets = (activeTab: AssetTabType) => {

View File

@@ -131,5 +131,6 @@ export const useRecentTasks = () => {

View File

@@ -330,5 +330,6 @@ export default DropnaDialog;

View File

@@ -416,4 +416,5 @@ export default MetricTimePanel;

View File

@@ -301,5 +301,6 @@ export default PivotPanel;

View File

@@ -103,3 +103,4 @@ export function useSessionStatus({

View File

@@ -93,5 +93,6 @@ export interface DataStats {

View File

@@ -89,5 +89,6 @@ export type AssetTabType = 'all' | 'processed' | 'raw';

View File

@@ -44,5 +44,6 @@ export { default as Placeholder } from './Placeholder';

View File

@@ -26,3 +26,4 @@ interface ImportMeta {