B2B 客户门户
进行中给客户用的 B2B 门户,后面接 NetSuite。2026 年 9 月部署到公司服务器,目前内部在用,还没开放给客户。
技术栈
.NET 10ASP.NET CoreEF CoreSQL ServerReact 19NetSuiteGitHub Actions
部署
- 推
v*tag 才发版,而且 tag 必须和版本号一致、指向 main 上的提交;构建前先跑离线测试。 - 迁移在服务启动前执行,用单独的迁移账号。迁移只加不删,因为回滚只回滚代码,不回滚表结构。
- 应用外面有一个每 5 分钟跑一次的健康监控;发版时开维护窗口,免得误报。
网络
- 应用只监听回环地址,挂在反向代理后面。管理和调试路径在代理上直接返回 404,应用自己也校验权限,两层都挡。
- 必须走 HTTPS:会话 cookie 带 Secure,配置成非 Secure 时启动就失败。
- 讨论过把数据库端口开到公网,否决了。
验证
- 每个自定义的 CI 检查都用故意植入的违规样本验证过,结果找出三个永远不会失败的检查。
- CI 会确认测试真的跑了:不许悄悄跳过,也不接受「0 个测试、退出码 0」。
- CI 从不连真实的 ERP,全部用固定数据。
写入
- 写 ERP 分两步:第一次请求强制试运行,先把要发的内容原样展示出来;幂等键用门户自己的订单号。
- 切正式写入是单独的人工操作,发版不会顺带打开。
- 先写 ERP,成功后才更新本地副本;本地镜像表只读,由不同的数据库账号保证。
怎么记录
- 决策记录只追加:推翻了的决定留着,加一条说明。按文档自己的说法,最重要的是那张「被否决的方案」表。
- 每个风险都配一个守着它的检查。有几段文档错了好几周,发现后没有悄悄改掉,而是留着,并写明错在哪里。
其他项目
DataHub 数据中台进行中
公司内部的数据中台,用 C#/.NET 重写:原来分成三个服务的旧系统合成一个 ASP.NET Core 应用。2026 年 6 月上线,之后一直按 tag 发版。
.NET 10ASP.NET CoreDapper
企业制造数据分析平台进行中
基于 dbt + Databricks 的数据管道,采用 Medallion(Bronze→Silver→Gold→Mart)分层架构,将原始 ERP 数据转化为可直接用于分析的模型,支撑制造运营、库存、销售与人力效率报表。
dbtDatabricksUnity Catalog
jackdeng.cc — 个人主页站点进行中
你正在看的这个网站:前端和 Payload CMS 3 做在同一个 Next.js 16 应用里,数据放在 Supabase 的 Postgres,部署在 Vercel,中英双语。
Next.js 16Payload CMS 3PostgreSQL