从 0 到 1 打造端到端 AI 销售智能体:Spring Boot 4 + Spring AI 2.0 全栈实战复盘(含登录统计曲线图、HTTPS 上线)

发布时间:2026/9/26 6:21:08

从 0 到 1 打造端到端 AI 销售智能体:Spring Boot 4 + Spring AI 2.0 全栈实战复盘(含登录统计曲线图、HTTPS 上线) 一个AI 智能获客助手的真实落地过程潜客挖掘 → 个性化触达 → 转化 → 数据复盘的全链路自动化以及踩过的坑、做过的取舍。一、为什么要做这件事做 B2B 销售的朋友都有体会获客难、触达累、转化靠玄学。潜客数据要手动去查、去整理渠道杂、质量参差不齐一封邮件要针对不同客户反复改写人工成本极高客户画像靠销售脑袋里的经验人走了经验就没了邮件发多了还容易踩反垃圾机制甚至违规被投诉系统上线后到底有多少人用、哪个阶段转化最好两眼一抹黑。所以我决定做一个端到端的 AI 销售智能体让 AI 去挖掘潜客、生成个性化沟通内容、自动发送并追踪把发现-触达-转化-复盘的完整业务闭环自动化同时把关键决策留给人来确认。项目的定位是本地部署 云端 AI混合模式——核心业务数据留在客户自己服务器上满足数据隐私诉求AI 推理走云端大模型 API降低使用门槛。二、整体架构┌─────────────┐ HTTPS(443/80) ┌──────────────────┐ /api/ 反向代理 ┌────────────────┐ │ 浏览器用户 │ ─────────────► │ Nginx (前端静态) │ ────────────────► │ Spring Boot │ └─────────────┘ └──────────────────┘ │ (后端 8080) │ └───────┬────────┘ │ JDBC ┌───────▼────────┐ │ PostgreSQL 16 │ └────────────────┘后端Spring Boot 4.1.0Java 21 Spring AI 2.0.0 PostgreSQL 16 Flyway前端React 18 Vite TypeScriptNginx 托管部署Docker Compose 一键起三个容器PostgreSQL 后端 前端数据库 19 个 Flyway 迁移脚本自动建表AI 模型兼容 OpenAI 协议的大模型DeepSeek 等模型、Key、Base URL 全部可在系统设置页动态配置生产腾讯云 SSL 证书 宿主机 Nginx TLS 终结HTTP 301 自动跳 HTTPS前端子路径/app/部署三、核心功能模块与实现细节1. License 授权体系本地软件的防盗版三板斧本地部署软件最大的痛点是盗版。我做了三层防护激活码离线签名签发厂商用独立的license-tool单文件 Java 程序生成 Ed25519 密钥对用私钥离线签发激活码客户系统内置公钥验签全程不需要连客户数据库也无法伪造激活码。硬件指纹绑定激活码与宿主机machine-id加盐哈希绑定防止一码多机。Docker 部署时把宿主机的/etc/machine-id只读挂载进容器。云端 API 强制校验 Token 配额核心 AI 功能强制走云端大模型 API即使软件被破解没有有效激活码拿不到 Token 配额也无法使用核心功能。激活码带token 上限 金额保险闸门防止异常消耗烧钱用量按激活码独立统计换新激活码从 0 起算。另外做了一个很实用的细节激活成功时自动重置管理员密码——用SecureRandom生成 12 位随机密码去易混淆字符 0/O/1/I/lBCrypt 哈希入库明文只在激活成功响应里显示一次支持前端隐藏/明文切换和一键拷贝。2. AI 能力中台Spring AI 2.0 的正确打开方式项目里所有 AI 能力邮件生成、回复分析、潜客挖掘统一走一个 AI 服务层实现动态构建 ChatModel模型 API Key、Base URL、模型名都存数据库敏感项 AES-256 加密落库运行时用OpenAiChatOptions.builder().apiKey(k).baseUrl(u).model(m).build()动态构建模型系统设置页改完立即生效无需重启。AI 用量统计每次调用按真实 token 数记账结合可调的单价自动算成本前端实时展示。接口限流 Prompt 模板管理防 API 超限Prompt 可维护。3. 潜客挖掘 RAG 客户画像让 AI 像销冠一样思考潜客挖掘配置数据源后通过Function Calling让大模型按结构调用外部数据 API 挖掘潜客人工确认后才入库按公司名去重。RAG 客户画像把历史成交客户通过 CSV 导入 → 自动向量化入库 → 新潜客入库时自动与画像库做语义检索算出profile_score0-100 相似度分并给出相似画像某公司行业相似度 N%的解读。潜客列表按画像分排序优先跟进最像老客户的新客户。这里有个关键选型DeepSeek没有 embedding API所以向量化做了双方案——方案实现特点本地 TF-IDF默认特征哈希映射到 768 维向量L2 归一化余弦相似度零外部依赖、离线可用远程 embeddingOpenAI 兼容端点OpenAiEmbeddingModel配置ai.embedding_model即启用一个EmbeddingRouter统一路由配置了远程模型就走远程否则本地兜底。向量统一存 JSON 文本{dim:768,data:[...]}维度不一致的余弦相似度按 0 处理。4. 邮件触达闭环从生成到发送到合规AI 个性化生成基于客户的沟通记录时间线跟进记录 已发邮件 客户回复续写邮件每次生成必须与历史邮件明显不同换措辞/句子结构/事实组合主题 ≤20 字且不与历史重复。HTML 邮件AI 生成简洁美观的 HTML仅内联样式禁外部 CSS/JS/图片发送时启发式检测 HTML 标签自动切换text/html或纯文本。占位符替换邮件模板支持{companyName}{contactName}{date}{year}等 13 个变量保存草稿时即按客户字段替换草稿箱里看到的就是真实投递内容空字段替换为空串未识别占位符原样保留。合规三件套响应 CAN-SPAM / 《个人信息保护法》邮件正文自动追加退订链接支持{email}占位符域名前缀自动补全路径公开的免登录退订接口点击即生效落库黑名单发送前黑名单拦截——已退订邮箱一律不再发送幂等、按邮箱维度隔离不影响其他客户。每日限频mail.daily_limit控制日发送上限避免触发平台反垃圾机制。5. 收件箱 微信工作台多触达渠道收件箱通过MCP Client 自连本服务/mcp端点按 cron默认每 5 分钟用 IMAP 拉取客户回复邮件支持已读标记、一键转跟进记录、AI 分析回复内容。微信工作台客户挂微信号/昵称消息 in/out 双向记录AI 生成回复建议、人工确认后才落库自动打上AI 辅助徽标——关键触达永远是人来把关。6. 工作台数据复盘登录统计 趋势曲线图产品上线后需要回答系统到底有没有人在用。我基于登录日志做了两层展示统计接口免登录GET /api/auth/login-stats返回{ totalLogins, todayLogins, todayUsers }登录页即可匿名看到「 系统累计登录 N 次 · 今日 N 次 · N 人登录」。趋势曲线图工作台GET /api/auth/login-trend?rangedaily|weekly|monthly|yearly按时间桶聚合login_logs表无数据桶自动补 0 保证曲线连续。前端零依赖 SVG 折线图网格线 折线 面积填充 数据点数值日/周/月/年一键切换range桶数粒度标签示例daily14每天07-28weekly12每周一为一周05-25monthly12每月2026-08yearly5每年20267. MCPModel Context Protocol实践后端通过 Spring AI 的 MCP Server 能力暴露Streamable HTTP/mcp端点McpTool注解的工具如邮件发送自动注册同时自己作为 MCP Client 自连端点调用自己的工具。这套服务即工具的模式让未来的 Agent 编排扩展非常方便。四、踩过的坑都是真金白银换来的Spring Boot 4.x 的版本号是纯数字4.1.0没有.RELEASE后缀。如果从 start.spring.io 生成的 pom 里带着4.1.0.RELEASEMaven Central 和阿里云都会 404——改成4.1.0即可。Spring Boot 4 中 web starter 改名了spring-boot-starter-web→spring-boot-starter-webmvc。Spring AI 2.0 没有OpenAiApi类了动态构建模型要用OpenAiChatOptions.builder()...build()→OpenAiChatModel.builder().options(opts).build()→ChatClient.builder(model).build()这条链路SDK 内部升级为com.openai.client.OpenAIClient。业务校验失败千万别返回 401前端会把任何 401 当成登录过期→ 清 token 跳登录页。改密失败、退订恢复失败这类业务校验一律用 400BadRequest401 只留给真正的未认证场景。DeepSeek 没有 embedding API做 RAG 前先确认模型商的能力边界本地 TF-IDF 兜底是最稳的退路。nginx 1.24 不支持http2 on;独立指令需 1.25.1必须用listen 443 ssl http2;旧语法备份文件不能留在sites-enabled/会被 include 加载导致 duplicate server 报错。前端部署在子路径/app/时静态资源必须用import.meta.env.BASE_URL前缀写死绝对路径会被外层 nginx try_files 回退成落地页 HTML造成HTTP 200 但图片裂图的诡异问题。E2E 测试要用 DOM 几何测量而非截图我用 PlaywrightgetBoundingClientRect()检查关键元素是否超出视口、按钮是否互相重叠、modal 内容是否溢出把界面变形这种回归彻底挡在发布前。五、部署一条命令上线cp .env.example .env # 填数据库密码、JWT 密钥、AES 加密密钥、AI Key docker compose up -d --build后端启动自动执行 Flyway 迁移19 个版本脚本健康检查通过即就绪。前端、后端、数据库三个容器互不干扰数据卷持久化。生产环境再加一层腾讯云 SSL 证书 → 宿主机 Nginx TLS 终结 →listen 443 ssl http2;→ HTTP 301 跳 HTTPS公网https://sales-agent.top无证书告警直接可用。证书到期续期只需替换/etc/nginx/certs/两个文件后nginx -s reload无需重启服务。六、关于产品本身说点实在的这套东西我已经做成了产品——AI 智能获客助手定位就是给中小 B2B 企业、跨境电商、SaaS 服务商这类持续需要获客的团队用✅本地部署客户数据留在自己服务器不碰隐私红线✅AI 个性化触达邮件/微信内容由 AI 按客户画像与沟通历史生成不千篇一律✅合规内置退订链接、频控、黑名单拦截从机制上规避反垃圾与法律风险✅关键动作人确认AI 是助手不是自动群发机器人首次触达人工把关✅数据复盘登录趋势、邮件打开率、AI 用量成本一目了然✅买断 订阅双模式基础版买断、专业版订阅Token 充值、企业版私有化定制如果你也在做 B2B 获客或者对本地部署 云端 AI这类产品形态感兴趣欢迎一起交流。联系方式/链接
延伸阅读

更多相关文章

2026/9/26 6:21:01

现代网络安全防护体系:从三位一体到实战策略

1. 网络安全新形势:从防病毒到三位一体防护十年前提起网络安全,大多数人第一反应就是"装个杀毒软件"。但如今网络安全早已不是简单的病毒查杀,而是演变为覆盖保密性、完整性和可用性的三位一体防护体系。我从事企业安全建设八年&am…

2026/9/24 22:18:27

嵌入式 Linux 巡检开发短记:启动链路怎么核对

嵌入式 Linux 巡检开发短记:启动链路怎么核对 嵌入式 Linux 的巡检不应照搬服务器清单。重点是启动链路、存储寿命、时间同步和业务进程是否仍处在预期状态。 每次启动都能自证 采集内核版本、设备树标识、根文件系统挂载方式、启动槽位和应用版本,并把它…

2026/9/26 3:22:17

XZ6105A特别适合大功率、多个高亮度LED灯串的恒流驱动

概述 这是一款高效率、高精度的升压型大功率LED灯恒流驱动芯片。 内置高精度误差放大器,恒流驱动电路等,特别适合大功率、多个高亮度LED 灯串的恒流驱动。 其工作频率最高可达350KHz,可使外部电感和滤波电容体积减小,效率提高&…

2026/9/26 6:19:47

业余开发者如何用好AI编程:从提示词到实战的完整攻略

我自己就是一个典型的业余开发者:白天做跟编程八竿子打不着的工作,晚上和周末才打开编辑器折腾点自己的项目。这两年AI编程工具给我的变化,说实话比过去五六年自学的总和还大。这篇文章就围绕“AI编程”和“业余开发”这两个关键词&#xff0…

2026/9/26 6:19:47

强化学习PC配置指南:从训练瓶颈反推CPU内存GPU选型

1. 这不是普通装机指南:专为强化学习与深度学习实战者设计的PC配置逻辑如果你正打算用个人电脑跑通一个完整的强化学习训练流程——比如在Gymnasium里复现PPO算法控制CartPole,或者用PyTorch搭建一个带物理先验约束的计算成像重建网络;又或者…

2026/9/26 6:19:47

人形机器人真正的瓶颈不是硬件,而是数据

人形机器人是不是又要泡沫了,这两年被问得最多的就是这个问题。每次发布会开完,总有人拿着电机峰值扭矩、关节自由度、灵巧手抓握力这些参数反复对比,朋友圈里各种拆机报告、供应链图谱满天飞。但你要是真跑到产线上、实验室里蹲一段时间就会…

2026/9/26 6:14:47

猎头行业AI搜索实战:GEO让机构在AI回答中被提名引用

最近半年,我身边不少猎头同行都被“AI搜索”和“GEO”这两个词搞得心神不宁。群里天天有人转发所谓GEO服务商案例,可你问他GEO到底是什么、猎头应该怎么落地,十个有九个答不上来。我给人力和猎头机构做了多年招聘营销陪跑,今天就把…

2026/9/25 21:00:17

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/25 20:59:52

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/26 0:04:28

画质修复APP怎么选?Wink影像修复能力与产品实力解析

现如今手机拍摄场景愈发丰富,演唱会直拍、漫展记录、老视频翻新、日常vlog录制,都会遇到画面模糊、噪点多、曝光失衡等问题,不少用户在挑选工具时比较在意一款画质修复APP能够兼顾修复效果与自然质感。Wink作为美图公司推出的全球化AI影像增强…

2026/9/26 0:04:28

超低能耗建筑K值要求能否满足?浙东铝业建筑型材解析

核心摘要浙东铝业的超低能耗系统门窗产品,资料显示保温性能可达 K≤1.4W/(㎡K),能够对应上海地区超低能耗住宅对门窗保温性能的应用需求。判断建筑是否满足超低能耗要求,不能只看铝型材本身,还需要结合玻璃、隔热条、密封系统、开…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/25 18:41:36

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑