记录一个 Java 技术团队在微服务架构中的网关选型过程,对比 Kong、APISIX、Spring Cloud Gateway、Higress 等主流方案。在 AI 辅助编程的加持下,最终选择基于 Nginx 的 APISIX,兼顾性能与扩展性。
多标识符统一登录与社交绑定:构建安全可扩展的认证体系
传统的大宽表用户设计难以应对多样化登录方式。了解如何通过分离 AuthIdentity 与 User 实体,构建支持邮箱、手机号、社交登录和 SSO 的灵活可扩展认证体系,无需修改表结构。
Multi-Identifier Unified Login & Social Binding: Building a Scalable Authentication System
Traditional 'wide table' user designs struggle with diverse login methods. Learn how separating AuthIdentity from User entities enables flexible, scalable authentication supporting email, mobile, social logins, and SSO without schema migrations.
Synchronizing Recurring Outlook Meetings with EspoCRM
Recurring meetings break standard delta sync logic. Learn how to synchronize Outlook recurring events with EspoCRM using windowed expansion and series rebuild strategies—a production-grade solution for Microsoft Graph API integration.
EspoCRM 与 Outlook 循环会议同步实践:窗口化展开 + 系列重建方案
Outlook 与 Gmail/Google Calendar 的循环会议是集成中的“深水区”。本文介绍 EspoCRM 如何通过“窗口化展开”和“系列重建”策略,解决 Microsoft Graph API 增量同步失效、iCalUId 重复等核心难题,提供生产级工程实践方案。
EspoCRM定制篇自定义Job开发——到期提醒通用模板(批量 + 去重 + 发信)
很多 CRM 需求需要“定时触发”:到期提醒、日报生成、数据同步、数据质量巡检。自定义 Job 是正确姿势。本文以通用“到期提醒”为例实现 JobDataLess 定时任务:依赖注入、批量查询、去重日志、邮件发送。给出调度配置、监控排障与发信要点,适用于同步/巡检/通知类任务。
EspoCRM定制篇Dynamic Logic + BeforeSave Hook ——前后端双保险
只做前端 required 的团队,迟早会被“脏数据”反噬。本文给出前后端双保险方案:Dynamic Logic 负责交互体验(实时提示),BeforeSave Hook 守住所有入口底线(API/导入/脚本无法绕过)。覆盖错误消息策略、测试矩阵与“坏人假设”,避免脏数据进入系统。
EspoCRM定制篇纯配置多对多——不写 SQL,让 rebuild 自动建表
你以为多对多必须建中间表?在 EspoCRM 里,手写 SQL 往往是你自己给自己埋雷。本文演示用纯元数据定义多对多关系:entityDefs 的 links + relationName 驱动 rebuild 自动建表。同时补齐 scopes/clientDefs/layouts,让关系在 UI 可见可配可用
EspoCRM定制篇外部集成——Outlook双向同步实战
外部集成的难点不是“调通 API”,而是“长期稳定运行”。本文以 Outlook/Graph 为例,讲清 OAuth 授权流程、ExternalAccount 存储、增量同步(deltaLink/skipToken)与失败恢复策略。覆盖 token 轮换、错误分类重试、幂等设计与英文日志,让集成长期稳定运行。
EspoCRM定制篇总纲——扩展点选择、模块架构与工程化
EspoCRM 定制的第一课不是“怎么写代码”,而是“怎么写出可升级的代码”。本文给出扩展点金字塔(Formula → Dynamic Logic → Workflow → Hook → Service),帮助选择最小侵入方案。同时梳理模块架构、目录分区、rebuild 纪律、逐文件部署、回滚与配置备份,确保长期可维护。