学习记忆版 P0 稳定交付包 FastAPI + Dify + n8n + Baserow

海妈家电商 AI 产品技术文档

围绕多平台客服售后、商品运营决策、招聘辅助三个场景,说明从前端体验、业务规则、智能工作流、数据留痕到部署验证的完整技术路线。

版本 V2.0更新日期 2026-07-14 运行形态 本地 Docker + Python 3.11数据属性 脱敏模拟数据
Positioning

文档定位与真实边界

对外讲解前先主动说明:这是“可运行产品 PoC”,不是伪装成客户生产系统。 当前已实现完整本地闭环和真实 HTTP 联调,但没有连接天猫、抖音等真实商家账号,没有使用客户生产数据,也不自动退款、调价、投放、录用或发送消息。

已经做到

三个可交互前端、FastAPI 业务后台、SQLite 数据、三个 Dify 应用、三个 n8n 工作流、Baserow 留痕、异常降级、request_id 追踪、FastAPI 幂等和自动验收。

当前技术定位

规则优先、可解释、可审计。Dify 当前以 Code Workflow 为主,保证没有外部模型 Key 时也能稳定演示。

生产化方向

接入平台 OpenAPI、统一指标服务、RAG、模型路由、权限审批、消息队列、监控告警和多环境发布。

核心设计思想

规则基线AI 增强人工复核过程留痕失败可回退

不是让大模型直接替代业务负责人,而是把 AI 放在“信息提取、风险识别、建议生成、证据整理”环节,把退款、降价、加量、录用等高风险动作保留给责任人。

Product Overview

产品总览

3核心业务 Demo
3Dify 已发布应用
3n8n 已激活工作流
13FastAPI 可调用接口

多平台客服与售后风险

从工单摘要、风险词、同 SKU 重复投诉、SLA 超时识别高风险,生成处理建议和可审核回复草稿。

质量风险SLA人工接管

AI 商品运营与爆款决策

联合 CTR、CVR、贡献毛利率、退货率和可售天数,输出商品分层、证据与小步运营动作。

流量转化毛利库存

智能招聘辅助

对脱敏文本做岗位能力匹配、缺失项识别和核实问题准备,不处理无关敏感属性,不自动做招聘决定。

证据匹配核实问题HR 复核

产品闭环

业务输入工单、商品指标、脱敏简历
结构化校验字段、类型、长度、岗位映射
业务规则FastAPI 确定性基线
智能工作流Dify 应用标准输出
流程编排n8n 合并、路由、回写
审计与返回Baserow 留痕 + 人工确认
Architecture

技术架构

体验层
项目总入口静态 HTML 导航与客户演示
客服 Demo工单列表、风险分析、回复草稿
商品 Demo指标看板、分层、动作建议
招聘 Demo岗位、候选人、复核建议
接入与编排层
n8n Webhook三个业务入口,统一 HTTP 编排
输入整理白名单字段与岗位编码兼容
结果合并FastAPI 基线 + Dify 输出 + 200/207/502
日志回写Baserow 业务可读运行记录
AI 工作流层
Dify 客服应用风险评分、信号、建议、草稿
Dify 商品应用综合评分、分层、证据、动作
Dify 招聘应用技能匹配、缺失项、核实问题
扩展位置RAG、LLM、模型路由、工具调用
业务服务层
FastAPI 0.116.1业务 API、Pydantic 校验、CORS、幂等
规则模块风险、商品、岗位匹配算法
数据访问层白名单查询、参数化 SQL
静态服务Node.js 原生 HTTP,端口 8787
数据与审计层
SQLite7 张表、WAL、业务数据与幂等记录
Baserow6 张正式表、低代码后台
n8n 执行库流程状态、节点输入输出、错误记录
Dify 运行库应用版本、API Key、workflow_runs

组件职责与版本

组件当前版本/形态职责为什么这样选
HTML/CSS/JavaScript无前端框架,静态页面快速构建三个可演示交互页面依赖少、启动快、客户演示稳定
Node.js HTTP原生模块,8787静态文件服务避免为了 Demo 引入大型前端构建链
FastAPI0.116.1,Python 3.11业务接口、数据校验、规则基线类型清晰、自动 OpenAPI、适合 AI 工具层
Uvicorn0.35.0,8788ASGI 服务本地启动简单,可平滑迁移容器部署
SQLiteWAL 模式本地业务数据与规则运行日志零运维、可复制,适合 PoC
Dify开源版 1.15.0,8083三个可发布的 AI Workflow 应用可视化编排、标准 API、便于后续加 RAG/LLM
n8n2.29.10,5678系统间编排、凭据、Webhook、日志回写连接能力强,适合跨平台自动化
Baserow开源本地容器,8081低代码业务表与运行日志运营可读、可手工筛选,不要求懂 SQL
为什么同时使用 Dify 和 n8n? Dify 管“单个智能应用内部的输入、知识、模型和结构化输出”;n8n 管“多个业务系统之间的触发、接口调用、凭据、分支、回写和通知”。二者职责不同,不是重复选型。

端到端时序

前端生成 request_id,调用 n8n Webhook
n8n整理输入,依次调用后端和 Dify
FastAPI验证幂等键,执行确定性规则
Dify运行已发布 Workflow,返回固定字段
Baserow以 request_id 作为运行编号留痕
前端返回200 完整成功 / 207 部分成功 / 502 失败
Business Logic

三大场景底层逻辑

当前实现采取“双引擎”策略。FastAPI 提供确定性业务基线,Dify 提供可发布智能工作流输出,n8n 同时调用并合并结果。优点是可演示、可比较、无模型 Key 也能运行;代价是两处规则需要保持一致,生产化时应抽成统一规则服务。
1

客服售后风险识别

输入

ticket_id、platform、issue、summary、same_sku_recent_count、overdue

核心信号

高风险词、一般售后词、同 SKU 重复次数、SLA 是否超时

输出

risk_level、risk_score、matched_signals、recommended_action、reply_draft、human_review_required

评分公式

score = min(98, 18 + 一般风险词数×13 + 高风险词数×22 + min(重复次数,4)×9 + SLA超时×12)

分层阈值:score ≥ 80 → 高45 ≤ score < 80 → 中;否则为低。高风险必须人工接管,未核实前不做退款或赔付承诺。

信号组关键词/字段业务含义
高风险词掉色、过敏、受伤、投诉、监管、曝光、赔偿、假货、批次质量、舆情、合规或批次风险
一般风险词退货、退款、物流、未收到、尺码、破损、漏发常规售后与履约问题
聚集风险same_sku_recent_count从单一工单上升到 SKU/批次问题
服务风险overdue超出 SLA 后投诉升级概率增加
2

商品运营与爆款决策

输入

sku、product_name、ctr、cvr、margin、return_rate、stock_days

核心原则

不以销量单指标判定爆款,同时约束毛利、退货和库存

输出

score、tier、evidence、recommended_action、human_review_required

综合评分公式

score = clamp(CTR×7 + CVR×7 + 毛利率×0.9 − 退货率×1.3 − max(可售天数−45,0)×0.35, 0, 100)
判断顺序条件分层动作
1退货率 ≥ 15% 或毛利率 < 20%风险款暂停加量,拆分尺码、批次和退货原因,联动质量/供应链/财务
2score ≥ 78 且可售天数 ≥ 14潜力款保持价格,流量小步增加 10%—15%,验证 3 天并确认补货周期
3CTR < 3% 且 CVR ≥ 3.5%待优化做主图、标题或搜索词单变量实验,不直接降价
4其他观察中积累 7 天样本,复盘点击、转化、退货、库存
3

智能招聘辅助

输入

job_name + resume_text;FastAPI 内部兼容 job_key=ai/ops/service

核心信号

岗位必须项命中、加分项命中、项目落地证据、待核实能力

输出

match_score、grade、matched_skills、missing_or_unverified、verification_questions

评分公式

score = clamp(38 + 必须项命中率×38 + 加分项命中率×16 + 项目证据×6, 35, 94)

等级:A ≥ 85B ≥ 70C ≥ 60、其他为 D。岗位名称与编码在 n8n 中做双向兼容,避免 Dify 与 FastAPI 字段口径不一致。

岗位必须项加分项
AI 应用工程师Python、API、RAG、工作流、需求梳理FastAPI、Dify、n8n、电商
AI 商品运营商品运营、数据分析、转化率、毛利、库存投放、爆款、退货、AI
客服运营专员客服、售后、工单、风险、沟通天猫、抖音、质量、AI
招聘场景的数据边界只处理脱敏、岗位相关文本;身份证、住址、联系方式等敏感信息不录入。简历正文不写入 Baserow 运行日志,系统不自动录用、淘汰或发送消息。
Dify Workflow

Dify 应用与工作流配置

三个应用均为 Dify Workflow 模式,DSL 版本 0.6.0,当前结构为 Start → Python Code → End。这样可以先保证规则稳定和输出结构固定,再渐进加入知识检索与 LLM。

客服应用

6 个输入7 个输出

输出风险等级、分数、命中信号、处理建议、回复草稿和人工审核标识。

商品应用

7 个输入7 个输出

输出商品分层、综合分数、证据、运营建议和人工审核标识。

招聘应用

2 个输入8 个输出

输出岗位匹配、缺失项、核实问题、决策边界和人工审核标识。

Dify 调用协议

POST http://host.docker.internal:8083/v1/workflows/run
Authorization: Bearer <app-api-key>
Content-Type: application/json

{
  "inputs": {
    "ticket_id": "CS-20260714-E2E",
    "platform": "天猫",
    "issue": "质量售后",
    "summary": "同款 SKU 第 3 起掉色投诉",
    "same_sku_recent_count": 3,
    "overdue": "是"
  },
  "response_mode": "blocking",
  "user": "haimajia-n8n"
}

n8n 使用每个应用独立的 Header Auth 凭据,避免三个应用共用同一密钥。返回值从 data.outputs 读取,并保留 workflow_run_id 与耗时。

当前实现与目标实现

维度当前 PoC生产演进
推理核心Python Code 节点确定性规则规则服务 + RAG + LLM,模型只处理非确定性任务
知识未开启知识库检索商品手册、平台规则、售后 SOP、岗位标准分库检索
模型不依赖外部模型 Key按场景配置模型路由、成本、超时和回退
输出固定字段,便于 API 联调Schema 校验、版本兼容、置信度和证据引用
不夸大的技术口径当前三个 Dify 应用都是 Start → Code → End,没有 LLM 节点、没有知识库检索、也没有引用校验。这一版的价值是先验证业务字段、输出协议和工作流闭环;RAG/LLM 是 P1/P2 增强项,不应宣称已完成。
n8n Orchestration

n8n 工作流编排

每条工作流共 13 个节点,包含一条本地手动测试支路和一条正式 Webhook 端到端支路。三条流程结构一致,只替换输入字段、FastAPI 地址、Dify 凭据和 Baserow 日志摘要。

正式 Webhook 支路

接收业务系统请求Webhook POST 入口
整理业务输入提取 body;招聘补齐 job_key/job_name
调用本地业务后台FastAPI 规则基线
准备 Dify 调用只保留应用允许的输入字段
调用 Dify 已发布应用blocking 模式,120 秒超时
合并业务与 Dify 结果校验必需字段,生成 errors[] 和阶段状态
准备 Baserow 日志生成业务可读摘要
写入 Baserow 运行日志表 861,仅新增/读取凭据
恢复业务返回结果归类完整成功、部分成功和失败
返回端到端结果动态返回 HTTP 200 / 207 / 502

手动支路

手动测试本地规则从 n8n 画布触发
准备演示输入内置脱敏样例
手动调用本地后台只验证 FastAPI 基线
已实现的异常处理三个外部 HTTP 节点均配置 onError=continueRegularOutput。FastAPI 失败后仍尝试 Dify;Dify 失败时保留 FastAPI 基线;Baserow 写入失败不会吞掉可用分析结果。
HTTPintegration_status判定条件前端行为
200succeededFastAPI、Dify、Baserow 全部成功显示全链路成功,仍保留人工复核
207partial_success至少一份分析可用,但某个依赖失败展示可用结果和异常节点,不伪装完整成功
502failedFastAPI 和 Dify 均没有可用结果提示人工处理,不启用浏览器本地规则兜底

异常字段包含 backend_statusdify_statuslogging_statuserrors[]failed_nodeerror_coderetryable 和上游 HTTP 状态。

三条工作流配置

场景工作流 IDWebhookFastAPIDify 凭据
客服yCIL2WHm4nXeCJnx/webhook/haimajia/customer-service-risk/api/customer-service/analyzeDify-海妈家客服助手
商品FC5PXEayMmniPSep/webhook/haimajia/product-opportunity/api/product-ops/analyzeDify-海妈家商品运营助手
招聘csvTieWRz7sMfUYg/webhook/haimajia/recruiting-assessment/api/recruiting/analyzeDify-海妈家招聘辅助助手

Baserow 通过 host.docker.internal:8081 访问,同时设置 Host: localhost:8081,适配本机 Baserow Caddy 的站点域名校验。

重试边界当前不对有副作用的 POST 节点自动重试,避免重复执行 Dify 或重复写 Baserow。FastAPI 已有幂等保护,但整条 n8n 链路还不是生产级 exactly-once。
API Contract

API 接口设计

FastAPI 接口总表

方法路径用途主要输入
GET/api/health服务与数据库健康检查
GET/api/readiness检查 FastAPI、n8n、Dify、Baserow 是否就绪
GET/api/customer-service/tickets客服工单列表
POST/api/customer-service/analyze售后风险分析request_id + 通用 JSON 工单字段
POST/api/customer-service/draft按已有工单生成规则草稿record_id
GET/api/product-ops/products商品指标列表
POST/api/product-ops/analyze商品分层与动作建议request_id、SKU 与 5 类指标
GET/api/recruiting/candidates候选人模拟列表
GET/api/recruiting/jobs岗位标准列表
POST/api/recruiting/analyze脱敏文本岗位匹配request_id、job_key、resume_text
GET/api/orders订单关联数据
GET/api/workflow-runs本地规则运行日志
POST/api/workflow-runs外部补充运行记录app_code、record_id、摘要、状态、耗时

Webhook 请求示例

客服

POST http://127.0.0.1:5678/webhook/haimajia/customer-service-risk
Content-Type: application/json

{
  "request_id": "customer-550e8400-e29b-41d4-a716-446655440000",
  "ticket_id": "CS-20260714-E2E",
  "platform": "天猫",
  "issue": "质量售后",
  "summary": "同款SKU第3起掉色投诉,当前工单已超时",
  "same_sku_recent_count": 3,
  "overdue": "是"
}

商品

POST http://127.0.0.1:5678/webhook/haimajia/product-opportunity
Content-Type: application/json

{
  "request_id": "product-550e8400-e29b-41d4-a716-446655440000",
  "sku": "HMJ-TZ-2607-BL-140",
  "product_name": "男童速干运动套装",
  "ctr": 5.8,
  "cvr": 4.6,
  "margin": 31.2,
  "return_rate": 8.4,
  "stock_days": 16
}

招聘辅助

POST http://127.0.0.1:5678/webhook/haimajia/recruiting-assessment
Content-Type: application/json

{
  "request_id": "recruit-550e8400-e29b-41d4-a716-446655440000",
  "job_key": "ai",
  "job_name": "AI应用工程师",
  "resume_text": "脱敏候选人具备 Python、FastAPI、API、RAG、Dify 与工作流交付经验。"
}

统一返回信封

{
  "request_id": "customer-550e8400-e29b-41d4-a716-446655440000",
  "idempotent_replay": false,
  "backend_result": { "score": 98, "risk_label": "高" },
  "dify_outputs": { "risk_level": "高", "risk_score": 98 },
  "backend_status": "succeeded",
  "dify_status": "succeeded",
  "logging_status": "succeeded",
  "integration_status": "succeeded",
  "http_status": 200,
  "errors": [],
  "dify_workflow_run_id": "...",
  "dify_elapsed_time_ms": 1200,
  "human_review_required": true,
  "decision_boundary": "关键动作必须由责任人确认。"
}

FastAPI 幂等处理

标准化 request_id校验字符集和最大长度
计算请求哈希移除 request_id 后稳定序列化 JSON,再做 SHA-256
BEGIN IMMEDIATE原子预占 request_id + app_code
状态判断new 执行;replay 重放;conflict/processing 返回 409
结果固化completed 保存结果,failed 允许重试

处理中状态有 5 分钟超时恢复,避免进程异常结束后请求永久卡死。招聘流程仅保存请求哈希和分析结果,不把简历正文写入运行摘要。

部分成功返回示例

HTTP/1.1 207 Multi-Status
{
  "request_id": "product-550e8400-e29b-41d4-a716-446655440000",
  "backend_status": "succeeded",
  "dify_status": "failed",
  "logging_status": "succeeded",
  "integration_status": "partial_success",
  "backend_result": { "score": 88, "tier": "潜力款" },
  "dify_outputs": null,
  "errors": [{
    "stage": "dify",
    "code": "DIFY_REQUEST_FAILED",
    "message": "Dify 请求失败",
    "http_status": 400,
    "retryable": false
  }],
  "human_review_required": true
}

Baserow 回写接口

POST http://host.docker.internal:8081/api/database/rows/table/861/?user_field_names=true
Authorization: Token <baserow-token>
Host: localhost:8081
Content-Type: application/json

{
  "运行编号": "customer-550e8400-e29b-41d4-a716-446655440000",
  "应用编码": "customer_service",
  "触发来源": "n8n_dify_webhook",
  "业务记录": "CS-20260714-E2E",
  "输入摘要": "天猫/质量售后:同款SKU第3起掉色投诉",
  "输出摘要": "succeeded;高风险 98 分;立即人工接管...",
  "风险等级": "高",
  "是否人工审核": "是",
  "运行状态": "success",
  "耗时毫秒": "1200",
  "创建时间": "2026-07-14T10:00:00+08:00"
}
Data Model

数据模型与存储逻辑

SQLite:本地业务数据底座

主键核心字段P0 验收快照
customer_service_ticketsticket_idplatform、order_no、sku、risk_level、risk_score、status、payload_json6
product_metricsskuplatform、product_name、tier、score、task_status、payload_json6
candidatescandidate_idcandidate_name、job_name、grade、score、stage、follow_up_overdue5
job_profilesjob_keyjob_name、payload_json3
ordersorder_noplatform、sku、金额、履约、物流、退款、linked_ticket_id6
workflow_runsrun_idapp_code、trigger_source、摘要、风险、状态、耗时64(测试后持续追加)
idempotency_recordsrequest_id + app_coderequest_hash、response_json、status、updated_at12(测试后持续追加)

数据库启用 WAL;初始化使用 CREATE TABLE IF NOT EXISTSINSERT OR IGNORE,保证重复启动不覆盖已有数据。关键查询使用参数占位符,表名与字段名使用代码白名单。

Baserow:业务人员可读的数据与审计层

正式表

客服售后工单、商品运营指标、候选人评估、岗位标准、订单关联数据、AI 工作流运行日志。

当前状态

6 张正式表;运行日志随正常、部分成功、失败和冒烟验收持续追加,不在文档中写死数量。

最小权限

n8n Token 只允许对运行日志表 861 执行 create/read,不允许 update/delete。

为什么同时保留 SQLite 和 Baserow?

SQLite 面向程序

稳定、轻量、适合 FastAPI 规则读取和结构化日志;代码可版本化,便于自动测试。

Baserow 面向业务

运营、客服、HR 可以直接筛选、查看和修正模拟数据;适合演示低代码后台和流程留痕。

生产化应避免双主数据源。正式系统中应明确 ERP/OMS/CRM/HR 系统是主数据源,Baserow 只做配置、试验台或运营补充;核心数据通过同步任务或数据仓库统一口径。
Security & Governance

安全、权限与人工边界

密钥管理

  • Dify 三个应用各自一把 API Key。
  • Baserow 使用独立最小权限 Token。
  • 真实 Token 只进入 n8n 加密 Credentials,不写入代码或 README。
  • 项目只保留被 .gitignore 忽略的非敏感凭据 ID 映射。
  • .env 仅保存本地地址和超时配置,不存放 Dify/Baserow 密钥。

数据最小化

  • 使用脱敏模拟数据,不连接真实客户账号。
  • 招聘不采集身份证、住址、联系方式。
  • 简历正文不写入 Baserow 运行日志。
  • 日志只保留业务记录号、摘要、风险、状态和耗时。

操作边界

  • 客服:不自动退款、赔付、承诺到货或发送消息。
  • 商品:不自动调价、改预算、补货或下架。
  • 招聘:不自动录用、淘汰或推进阶段。
  • 所有输出都带 human_review_required。

当前非生产项

  • 本地 HTTP,无 TLS 与统一身份认证。
  • 未做租户隔离、细粒度 RBAC、API 网关限流。
  • 未做敏感字段加密、数据生命周期和审计导出。
  • 未做高可用、备份恢复演练和灾备。

生产安全路线

API 网关HTTPS、鉴权、限流、WAF
身份权限SSO、RBAC、租户隔离
密钥系统Vault/KMS、轮换、吊销
数据治理脱敏、加密、留存期限
审批审计高风险动作双人确认
Deployment

部署拓扑与配置

服务访问地址运行方式持久化
Demo 前端http://127.0.0.1:8787node server.mjs项目静态文件
FastAPIhttp://127.0.0.1:8788/docs.venv/bin/uvicorndata/haimajia_demo.sqlite3
n8nhttp://127.0.0.1:5678Docker,haimajia-n8nhaimajia_n8n_data volume
Difyhttp://127.0.0.1:8083Docker ComposePostgreSQL/Redis/Storage
Baserowhttp://localhost:8081Docker,manufacturing-baserow/baserow/data

交付包命令

# 必须使用项目 .venv,democtl 会初始化数据、启动/复用服务并检查依赖
cd /Users/hejunkai/工作中枢/01_AI工具链/Codex/与chatGPT联动/haimajia-ai-demo-suite
scripts/democtl.sh start
scripts/democtl.sh status
scripts/democtl.sh smoke
scripts/democtl.sh logs
scripts/democtl.sh stop

Python 项目固定使用根目录 .venv,当前依赖为 FastAPI 0.116.1 与 Uvicorn 0.35.0;不使用系统全局 Python。

浏览器验收入口:http://127.0.0.1:8787/ops.html。页面通过 /api/readiness 检查核心依赖,并展示 SQLite 计数和最近 FastAPI 留痕。

运行时配置

变量默认值作用是否可放密钥
FRONTEND_PORT8787前端静态服务端口
API_PORT / API_BASE_URL8788 / http://127.0.0.1:8788FastAPI 监听与前端数据地址
N8N_BASE_URLhttp://127.0.0.1:5678三个 Webhook 的基础地址
DIFY_BASE_URLhttp://127.0.0.1:8083就绪检查;密钥仍由 n8n Credentials 保管
BASEROW_BASE_URLhttp://localhost:8081就绪检查;Token 仍由 n8n Credentials 保管
WORKFLOW_TIMEOUT_MS60000前端调用 n8n 的超时上限

n8n 容器关键配置

时区

GENERIC_TIMEZONE / TZ = Asia/Shanghai

主机访问

extra_hosts: host.docker.internal:host-gateway

数据卷

/home/node/.n8n → haimajia_n8n_data

Observability

日志、可观测性与验证

FastAPI

workflow_runs 记录规则调用、输入摘要、输出摘要、风险、状态与耗时。

Dify

workflow_runs 记录应用执行与发布版本,可通过 workflow_run_id 关联。

n8n

执行历史保留每个节点的状态、输入输出和错误,便于复盘。

Baserow

业务可读日志,便于非技术人员查看应用、业务记录、风险与状态。

统一关联标识已落地前端生成 request_id,n8n 透传到 FastAPI 并作为 Baserow 运行编号;Dify 另返回 dify_workflow_run_id。定位问题时先用 request_id 跨系统对齐,再进入 Dify 运行 ID 查看单应用执行。

已验证结果

场景HTTPDify业务结果Baserow
客服售后200succeededrequest_id 已透传,FastAPI/Dify 均有可用风险结果succeeded
商品运营200succeededrequest_id 已透传,返回商品分层和动作建议succeeded
招聘辅助200succeeded返回岗位匹配、缺失项和核实问题succeeded,未保存正文
异常矩阵207 / 502部分成功 / 失败已验证 Dify 失败、FastAPI 失败和两者同时失败可写时仍保留异常留痕
审计策略联调中的失败执行没有删除,保留为问题定位证据;冒烟测试会明确追加脱敏验收日志,不会静默清理历史。该做法体现“先定位、再修复、保留痕迹”,而不是只展示成功截图。

目前缺失的可观测能力

  • 已有 request_id,但缺少集中日志中对 correlation_id 的统一索引和搜索界面。
  • 缺少 Prometheus 指标、Grafana 看板、结构化集中日志和告警阈值。
  • 缺少业务 SLA:成功率、P95 延迟、Dify 成本、人工接管率、建议采纳率。
Technical Roadmap

产品技术演进路线

阶段 0|可交互原型三个前端 Demo、模拟数据、业务页面和客户讲解材料。
阶段 1|当前已完成:P0 稳定交付包前端全部转 n8n Webhook;FastAPI + SQLite + Dify + n8n + Baserow;200/207/502 异常协议;request_id;FastAPI 幂等;交付验收台;自动冒烟测试。
阶段 2|P1 客户试点数据先接商品平台导出报表或脱敏订单/库存只读数据,建立字段字典、口径校验、定时导入和 UAT。
阶段 3|真实系统对接连接平台 OpenAPI 以及 OMS、ERP/WMS、CRM、ATS,建立增量游标、限流、队列、死信和补偿机制。
阶段 4|RAG 与模型增强商品知识、平台规则、售后 SOP、岗位标准分库;检索证据引用;模型路由、评测集与成本控制。
阶段 5|生产治理PostgreSQL、API 网关、TLS、SSO/RBAC、多店铺隔离、审批、可观测性、多环境 CI/CD、备份恢复与 SLA。

优先级建议

P0:已完成

异常降级、request_id、FastAPI 幂等、运行时配置、一键启停、健康检查、冒烟验收和回滚备份。

P1:真实只读数据

导出报表或一个受控 OpenAPI、PostgreSQL、登录/RBAC、Dify 知识库、评测集和 UAT。

P2:生产与智能增强

全链路幂等、队列/补偿、RAG、LLM、图片理解、模型评测、监控告警和 CI/CD。

Recitation Guide

背诵与讲解提纲

3 分钟版本

“我做的不是三个孤立页面,而是一套电商 AI PoC。前端有客服、商品运营、招聘辅助三个业务入口;FastAPI 提供确定性规则和 SQLite 数据,Dify 把每个场景封装成可发布智能应用,n8n 负责跨系统编排、凭据和 Baserow 留痕。”

“设计上我没有让大模型直接做高风险决策,而是采用规则基线 + AI 增强 + 人工复核。当前 Dify 先用 Code 节点保证稳定,后续可以在不改 API Contract 的情况下插入 RAG 和 LLM。”

“我实际完成了三个 Dify 应用、三个 13 节点 n8n 工作流、独立 API Key、最小权限 Baserow Token,并把三个前端按钮都切到了 n8n Webhook。链路会统一返回 200、207 或 502,而不是失败时返回空响应。”

“在工程稳定性上,我加了 request_id、FastAPI 幂等表、5 分钟卡死恢复、自动健康检查和三场景冒烟测试。当前 P0 交付包已经能稳定演示,但真实平台接口、RAG/LLM、鉴权和生产可观测性仍然是后续工作。”

10 分钟讲解顺序

  1. 业务问题:多平台信息分散、人工判断口径不一、动作缺少留痕。
  2. 产品拆分:客服降风险、商品提经营质量、招聘提信息整理效率。
  3. 架构分层:体验层、n8n 编排层、Dify 智能层、FastAPI 业务层、数据审计层。
  4. 核心逻辑:讲一个公式,建议讲商品评分,因为能体现增长与利润/退货/库存约束。
  5. 工作流:讲清 Dify 管智能应用,n8n 管跨系统;演示 Webhook → FastAPI → Dify → Baserow。
  6. 工程细节:Pydantic、SQLite WAL、request_id + SHA-256 幂等、加密 Credentials、最小权限 Token、招聘正文不落日志。
  7. 诚实边界:当前是规则版 PoC、没有真实平台数据、没有自动高风险动作。
  8. 演进路线:先可靠性和真实数据,再上 RAG/LLM,而不是一开始堆模型。

最值得强调的技术取舍

稳定性优先于“看起来智能”

先用规则和固定输出跑通业务闭环,再增加 LLM。避免演示受模型 Key、网络和随机性影响。

编排和智能职责分离

Dify 负责应用内部推理,n8n 负责系统间流程,FastAPI 负责可测试业务能力,Baserow 负责业务可读留痕。

明确人工决策边界

AI 输出建议和证据,不直接执行退款、调价、投放或招聘决定,符合企业落地安全原则。

保留失败记录

联调错误没有清理掉,而是作为审计证据,说明如何定位 Host 校验、字段类型和版本发布问题。

Review Q&A

知识复习问答与参考答案

为什么不用 Dify 一个平台把所有事情做完?
Dify 擅长智能应用内部的模型、知识和输出,但不适合作为所有企业系统的总线。n8n 对 Webhook、跨系统接口、凭据、重试、分支和通知更成熟;FastAPI 则便于写可测试、可版本化的业务规则。因此采用分层职责,而不是把全部逻辑塞进一个平台。
当前没有 LLM,为什么还能叫 AI 产品?
当前是 AI 产品的规则基线版本:已经具备智能应用封装、结构化输入输出、证据整理、工作流编排和人工审核边界,但没有把生成式模型作为必需依赖。这样可以先验证业务闭环。生产演进时在 Dify Code 节点前加入 RAG/LLM,API Contract 不变。对外讲解时应明确这一点,不夸大模型能力。
为什么 FastAPI 和 Dify 都有一套规则?
这是 PoC 阶段为了稳定演示和交叉验证做的折中:FastAPI 是确定性业务基线,Dify 是可发布工作流。缺点是规则可能漂移,所以生产化 P0 是抽成统一规则服务,让 Dify 通过 Tool/API 调用,而不是复制公式。
如何保证接口幂等?
前端每次执行生成 request_id。FastAPI 对去掉 request_id 的输入做稳定 JSON 序列化和 SHA-256,然后用 SQLite BEGIN IMMEDIATE 原子预占 request_id + app_code。同 ID 同输入重放缓存结果,同 ID 不同输入返回 409,处理中超过 5 分钟允许恢复。需要诚实说明:这目前保护的是 FastAPI 副作用,整个 n8n/Dify/Baserow 链路还不是 exactly-once。
Dify 或 Baserow 挂了怎么办?
当前已给 FastAPI、Dify 和 Baserow 三个 HTTP 节点配置失败后继续主输出。Dify 失败时返回 FastAPI 基线并标记 partial_success;Baserow 失败不阻断可用分析;FastAPI 和 Dify 同时失败才返回 502。还未实现的是持久化补偿队列、告警和全链路自动重试。
真实电商平台如何接入?
在 n8n 或专用适配服务中对接平台 OpenAPI,将天猫、抖音等字段映射为统一工单、订单和商品模型;使用增量游标、签名校验、限流、重试和死信队列。平台原始数据进入 ODS,指标经过统一口径计算后再提供给 AI 应用。
如何评估 AI 是否真的有效?
离线建立带人工标签的评测集,评估风险召回率、误报率、商品分层一致性、招聘证据准确率;在线关注建议采纳率、人工接管率、处理时长、售后升级率和经营指标变化。模型输出必须能追溯到规则或知识证据。
为什么使用 SQLite,不直接上 PostgreSQL?
PoC 目标是低运维和可复制,SQLite 足够且支持 WAL。生产后如果出现多实例、高并发、复杂分析和权限需求,应迁移 PostgreSQL,并使用 Alembic 做数据库迁移、连接池和备份恢复。
Appendix

项目文件与实现映射

文件/目录作用
app/main.pyFastAPI 应用、Pydantic 请求模型、13 个接口、就绪检查与幂等执行入口
app/rules.py客服风险、商品评分、招聘证据匹配的确定性规则
app/db.pySQLite 7 表 Schema、安全初始化、幂等预占/重放/恢复、白名单数据访问和运行日志
data/demo_seed.json三场景及订单、岗位、运行日志的脱敏模拟种子数据
dify/*.yml三个 Dify Workflow DSL 0.6.0
n8n/workflows_v3/*.json三个当前已发布的 FastAPI → Dify → Baserow 工作流,包含异常协议和 request_id
scripts/generate_n8n_workflows_v3.py用非敏感凭据 ID 生成三条 n8n 异常处理工作流
n8n/docker-compose.ymln8n 2.29.10 容器、时区、端口、数据卷和 host gateway
demos/*.html + assets/*.js三个业务交互 Demo
assets/runtime-config.js + server.mjs前端运行时地址/超时配置和 Node.js 静态服务
ops.html + assets/ops.jsP0 交付验收台:依赖状态、SQLite 计数和最近留痕
scripts/democtl.sh一键启动、停止、状态检查、日志与冒烟测试
scripts/health_check.py + scripts/smoke_test.py五项依赖健康检查、三场景端到端验收和 FastAPI 幂等验收
docs/P0稳定交付与验收手册.md启动、验收、排障、停止、回滚边界和当前限制
一句话总结这是一个以业务规则为可靠基线、以 Dify 承载智能应用、以 n8n 编排企业流程、以 FastAPI/SQLite 提供可测试服务、以 Baserow 提供业务留痕的电商 AI 可运行 PoC。