全部作品
作品集快照2026公开源码

LeadOps Portal

覆盖资格判断、审批、自动化、事故与报告的多租户运营界面。

我独立定义产品,设计架构与数据边界,规划并复核实现,设计验收策略,并负责最终交付。

角色
独立产品负责人兼工程师
证明能力
这个案例证明了从多租户、人工审批到工作流运营、事故处理、报告和安全公开演示目标的端到端产品责任。
技术
TypeScript · Next.js · Node.js · PostgreSQL

背景

自动化代理机构可能从多个来源接收线索,借助提供商完成资格判断,请求人类决定,继续工作流,同时还要向每个客户解释事故和结果。这些不是互不相关的页面,而是一个租户、权限、重试和报告必须保持一致的运营闭环。

LeadOps 是这个闭环的作品集产品快照。我独立定义产品,设计架构和数据边界,规划并复核实现,设计验收策略,并负责最终交付。

问题

脆弱的实现会把租户选择当成界面过滤,让自动化提供商成为最终决策者,并且只报告正常路径。这样一来,跨租户错误、过期审批、回调风暴和缺失结果都难以发现和恢复。

这个产品让租户上下文贯穿请求和持久化边界,把审批记录为耐久的人类决定,并把耗尽重试的后台任务转化为可见事故。独立公开演示目标已经准备好使用纯合成数据展示 Dashboard、Leads、Automations、Approvals、Incidents、Reports、Clients 和 Settings。在该目标中,/approve/demo-token 只改变浏览器状态,所有 /api/* 返回 404,登录页回到演示工作区,而且不部署 Worker 或生产提供商。

这个案例证明什么

  • 产品责任可以把业务流程与数据、界面、可靠性和发布边界连接起来。
  • 多租户与审批是系统属性,而不是实现完成后附加的标签。
  • 有价值的演示可以在没有生产数据和外部副作用的前提下设计。
LeadOps 合成概览面板,展示资格判断、审批、事故和自动化摘要
合成产品截图。姓名、指标和工作流状态都是演示夹具,不是客户数据。

关键约束

决定实现形态的约束

  1. 租户隔离必须贯穿请求、持久化、后台任务和报告,而不只是界面上的工作区选择器。
  2. 资格判断和自动化可以提供建议或继续工作,但不能覆盖重要的人工决定。
  3. 公开产品演示必须有价值,同时不能暴露客户数据、提供商凭据或真实 API。

核心决策

选择、替代方案与代价

01

让租户上下文贯穿整个系统

背景
只有界面过滤仍可能让 API、持久化、Worker 或报告发生跨租户访问。
选择
把租户身份纳入请求处理和租户范围数据访问,并采用面向 RLS 的持久化边界。
放弃方案
只在界面过滤; 在产品模型稳定前就为每个演示租户建立独立数据库
代价
每条数据路径都需要明确范围,但隔离因此成为架构不变量,而不是展示约定。
查看对应证据
02

把审批建模为耐久记录

背景
工作流内存里的布尔值无法解释谁做了决定、令牌是否过期或回调能否继续。
选择
使用明确审批记录、一次性令牌、不可变决策历史和回调门。
放弃方案
只在 n8n 内暂停; 只凭邮件点击继续,不记录决策边界
代价
流程状态更多,但人的决定变得可检查、可测试。
查看对应证据

架构与失败行为

责任、输入、输出与失败行为

  1. 01

    线索接入

    在租户上下文中接收签名且幂等的线索事件。

    输入
    线索来源事件
    输出
    租户范围的线索与接入记录
    失败
    签名无效、重放或冲突时在资格判断前失败。
  2. 02

    资格判断

    规范评分结果,同时保持提供商可替换且只提供建议。

    输入
    线索事实与提供商配置
    输出
    规范化建议
    失败
    提供商失败保持可见,绝不会成为已确认决定。
  3. 03

    人工审批

    在工作流继续前持久化重要决定。

    输入
    建议与一次性审批令牌
    输出
    不可变决定记录
    失败
    过期或重复令牌不能静默继续自动化。
  4. 04

    工作流运营

    以重试与事故创建运行回调和耐久任务。

    输入
    已批准工作与 outbox 任务
    输出
    交付、回调与事故状态
    失败
    耗尽重试后进入事故,不会消失。
  5. 05

    报告

    在同一租户边界内展示结果和健康状态。

    输入
    产品与运营记录
    输出
    可审计报告与关注队列
    失败
    缺失结果保持为未完成,不推断成功。

失败模式

失败如何被发现、限制和升级

触发发现与响应副作用与人工边界状态
签名接入事件被重复提交。签名、重放与幂等检查识别重复。

返回已有结果,或拒绝冲突载荷。

不会重复资格判断和工作流任务。

冲突进入运营复核。

已验证
审批令牌过期、重复使用或与已有决定相反。令牌和不可变决策状态检查拒绝转换。

保留已记录决定并停止回调。

自动化无法覆盖人的决定。

授权操作人员必须建立新的复核路径。

已验证
提供商或回调在有界重试后仍不可用。耐久任务达到配置的尝试上限。

创建带结构化失败上下文的事故。

outbox 身份与尝试记录限制重复交付。

运营人员可以在事故流程中检查、暂停或重试。

已验证
公开演示访问者尝试调用 API。演示 middleware 匹配所有 /api/* 路由。

在边界返回 404。

不部署 Worker、数据库、邮箱、AI、n8n 或遥测服务。

无需介入;访问者继续使用合成产品界面。

已设计

项目证据

证据及其验证范围

架构

贯穿请求与持久化层的租户上下文已验证范围

LeadOps 在请求处理和持久化中传递租户上下文,而不是只把租户作为界面筛选器。

使用合成数据的作品集实现。LeadOps README——系统亮点
作为明确工作流边界的人工审批已验证范围

审批记录与令牌约束自动化回调,工作流无法静默绕过人的决定。

作品集实现与验收策略。LeadOps README——系统亮点

验证

分层本地验证已验证范围

仓库记录产品、持久化、工作流与运营边界的本地验证方法。

本地验证;不代表真实生产流量。LeadOps README——本地验证

安全

明确的源码条款与开源清单已验证范围

仓库把作品集源码条款与第三方依赖许可证分开说明。

仓库级许可证披露。LeadOps README——源码条款

真实状态

已经实现、没有声称和仍需完成

运行状态
作品集快照
数据
所有截图和准备中的演示目标都使用确定性合成数据。
外部集成
仓库定义了提供商与工作流边界;公开演示禁用 API,也不部署 Worker。
收入声明
不声称真实生产客户流量或客户收入。
源码
公开源码
生产前工作
仍需验证公开地址、独立安全/合规审查、提供商配置和运营责任。

作品集快照: 其中数据均为合成数据。该仓库不声称存在生产部署、真实客户流量或客户收入。

复盘与下一优先级

有效的选择

把审批和事故处理设计为产品界面,使可靠性同时对运营人员和评审者可见。

会改变什么

如果重做,我会更早定义公开演示隔离目标,让每项功能从一开始就有安全证据模式。

下一优先级

  1. 部署纯 Web 目标并完成匿名 API 关闭 smoke test。
  2. 增加独立复核的租户隔离威胁模型。
  3. 在扩大自动化前,先在预发布环境验证一个真实提供商集成。

现在不做:在一个代理机构工作流证明运营与支持模型前,不值得先构建大型集成市场。

求职

基于这个案例讨论岗位

讨论合适岗位

项目

讨论边界明确的适配或合作