← 返回锻造场
已交付 Next.js多租户人工智能财务
Grupo Andreazzi — 带 WhatsApp 机器人的多公司中后台.
单库多租户门户:集团旗下每家公司拥有自有品牌的独立工作区——财务、商务、规划、文件与加密密码保险箱——并配有一个代表门户应答与记录的对话式 WhatsApp 机器人。
- 客户
- Grupo Andreazzi
- 周期
- 2026
- 角色
- 架构师兼主力开发
Domain models
~60
Application code
~37k LOC
Roles in the matrix
7
Scheduled jobs
5
www.andreazzigrupo.com.br
www.andreazzigrupo.com.br
www.andreazzigrupo.com.br
www.andreazzigrupo.com.br
www.andreazzigrupo.com.br
www.andreazzigrupo.com.br
www.andreazzigrupo.com.br
www.andreazzigrupo.com.br
问题
企业集团是若干家共享人员却不共享账目的公司。一家一套系统,意味着每个月底都要对表;共用一套系统,则意味着 A 公司的财务负责人可能无意中读到 B 公司。两者都不可接受。
而产生大部分数据的人——批付款的、结checklist 的、确认会议的——并不会为此打开笔记本电脑。
解决方案
一个门户、一个数据库、硬性的租户隔离。每家公司获得一个按 slug 划分的工作区,覆盖应付与应收、科目、银行账户、销售渠道与指标、任务、会议、检查表、季度目标、日历、文件存储与密码保险箱。
- 按公司主题化。每家公司携带自己的品牌色,在布局边界注入为 CSS 变量——同一个界面在不同工作区读起来像是不同的产品。
- WhatsApp 机器人。离开工位才会发生的那部分工作,改在对话中完成:机器人经由 Claude 理解意图,遵守与网页门户完全相同的权限矩阵,并写入同一批数据表。
- 通知引擎。基于规则的告警、订阅机制与模板化日报,由五条 cron 路由驱动。
系统架构
Next.js 单体,接缝刻意收得很窄:一切租户范围的操作都经过唯一的公司上下文解析器与一次"角色 × 模块 × 动作"的权限断言。七种角色、一张显式矩阵,以及一个自身也可审计的超级管理员旁路。
- 金额绝不用浮点。全程 decimal 列与 decimal.js,属项目约定——一份自己和自己差一分钱的利润表,比没有利润表更糟。
- 银行对账。带独立测试套件的 OFX 对账单解析,与账面流水匹配。
- 保险箱。共享凭据以 AES-256-GCM 加密,主密钥保存在数据库之外。
- 机器人可观测性。会话、日志与原始消息全部落库,并有管理界面实时查看进行中的对话——看不见的对话式界面,就是修不好的对话式界面。
成果
集团把财务、商务与规划跑在同一处,同时任何一家公司都看不到另一家。月度结账不再是表格合并,过去迟到甚至不到的数据,现在在发生的瞬间就以 WhatsApp 消息抵达。
完整技术栈
Next.js 15 (App Router)React 19TypeScript (strict)Prisma 5PostgreSQL 16Auth.js v5TailwindRadixdecimal.jsAnthropic SDKWhatsApp Cloud APIVercel BlobVitest