# shared — TLYQ 共享标准库 tlyq.ai 各站点共享的标准库,消除代码重复,统一基础设施实现。 ## 目录结构 ``` shared/ ├── lib/ │ ├── auth/ # 认证标准库 │ │ ├── config.ts # config 工厂(createAuthConfig) │ │ ├── jwt.ts # JWT 签发/验证 │ │ ├── ldap.ts # LDAP 认证 │ │ ├── middleware.ts # middleware 工厂(createMiddleware) │ │ ├── oidc.ts # OIDC 客户端 │ │ ├── types.ts # 类型定义 │ │ └── user-sync.ts # OIDC 用户同步 │ ├── audit/ # 审计日志标准库 │ │ ├── audit-schema.ts # 表结构常量 │ │ └── write-audit-log.ts # writeAuditLog + diffObjects + getClientIP │ ├── wechat/ # 企业微信推送 │ │ ├── wechat-pusher.ts # WeChatPusher 类 │ │ └── message-formatter.ts # 消息格式化工具 │ ├── alert/ # 告警管理 │ │ ├── alert-manager.ts # AlertManager(去重/冷却/免打扰) │ │ ├── health-checker.ts # HealthChecker(HTTP/Docker) │ │ └── types.ts # 类型定义 │ └── db/ # 数据库 schema │ └── alert-schema.ts # CREATE TABLE 常量 └── ui/ # 共享 UI 组件 └── login-page.tsx # 统一登录页 ``` ## 使用方式 ### 1. 创建 symlink ```bash ln -sf ../shared {站点目录}/shared ``` ### 2. 配置 tsconfig ```json { "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["./src/*"], "@shared/*": ["./shared/*"] } } } ``` ### 3. 引用 ```typescript import { createAuthConfig } from '@shared/lib/auth/config' import { createMiddleware } from '@shared/lib/auth/middleware' import { writeAuditLog } from '@shared/lib/audit/write-audit-log' import { WeChatPusher } from '@shared/lib/wechat/wechat-pusher' ``` ## 设计原则 - 零业务依赖:纯基础设施,不含站点特有逻辑 - 配置驱动:所有环境变量通过参数传入,不硬编码 - 接口稳定:包装器保持各站点原有调用方式不变 - Edge Runtime 兼容:middleware 仅用 atob,不用 Node.js crypto