MODIFICATION_PLAN_0222.md 38 KB

Lead Discovery 系统修改方案

日期:2026-02-22
目标:围绕"两轮背调"核心模块,解决批量处理、主体唯一性、价值确认、产品匹配四大问题


一、需求分析与目标

核心诉求

# 问题域 痛点 目标
1 慢/批量 当前只能逐条处理线索,无法截图/名片批量导入筛查 支持批量输入(截图OCR、名片、CSV、多行粘贴),一次提交多条线索
2 主体唯一性 同一公司不同邮箱/域名会产生多条独立线索,无法归并 建立"主体识别"机制,通过域名+公司名归纳到同一主体
3 价值确认 缺少分轮次的用户确认环节,AI判断后直接进入下一步 每轮分析完给出列表,让用户逐条确认后再进入下一步
4 产品匹配 推荐规则固定,销售无法修改标注;不同画像缺少差异化价值点 产品匹配可人工修改和标注,不同画像给出差异化建议

核心架构:两轮背调

将背调功能封装为独立核心模块,分两轮执行:

┌─────────────────────────────────────────────────────────────────┐
│                    两轮背调核心模块                                │
│                                                                 │
│  ┌─────────────────────┐      ┌───────────────────────────┐    │
│  │  第一轮:初步筛查      │      │  第二轮:深度背调            │    │
│  │  (Quick Screen)      │      │  (Deep Investigation)     │    │
│  │                      │      │                           │    │
│  │  · 批量输入解析        │      │  · 公司实力调研              │    │
│  │  · 主体识别 & 去重     │ ──→  │  · 决策人调查               │    │
│  │  · 画像初判           │ 用户  │  · 采购项目分析              │    │
│  │  · 价值评估           │ 确认  │  · 产品匹配推荐              │    │
│  │  · 输出待确认列表      │ 后    │  · 跟进策略 & 触达邮件       │    │
│  └─────────────────────┘      └───────────────────────────┘    │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

二、模块拆解与修改内容

模块 1:批量输入处理器(BatchInputProcessor)

新增文件services/batch-input.service.ts

1.1 支持的输入方式

输入方式 说明 解析结果
截图 OCR 上传截图(聊天记录、网页截图等),OCR 提取文字后解析 提取公司名、联系人、邮箱、电话
名片拍照 上传名片照片,OCR + 结构化解析 提取姓名、职位、公司、邮箱、电话、地址
多行粘贴 文本框粘贴多行"公司名 + 邮箱"或纯邮箱列表 按行拆分,每行解析为一条线索
CSV 批量 上传 CSV/Excel 文件 按列映射字段
多邮箱输入 逗号/换行分隔的多个邮箱地址 批量域名解析

1.2 接口设计

// services/batch-input.service.ts

export interface BatchInputItem {
  rawText: string;              // 原始输入文本
  parsedCompanyName?: string;   // 解析出的公司名
  parsedEmail?: string;         // 解析出的邮箱
  parsedDomain?: string;        // 解析出的域名
  parsedContactName?: string;   // 解析出的联系人
  parsedPhone?: string;         // 解析出的电话
  parsedCountry?: string;       // 解析出的国家
  parseConfidence: number;      // 解析置信度 0-100
  parseSource: 'ocr' | 'text' | 'csv' | 'email'; // 解析来源
}

export interface BatchProcessResult {
  totalInput: number;           // 总输入条数
  successParsed: number;        // 成功解析条数
  failedParsed: number;         // 解析失败条数
  duplicatesFound: number;      // 发现重复条数
  items: BatchInputItem[];      // 解析结果列表
  entities: EntityGroup[];      // 归并后的主体列表
}

1.3 对现有代码的修改

文件pages/dashboard/dashboard.component.ts

修改内容:
1. 新增"批量导入"Tab(与现有"导入线索"Tab 并列)
2. 批量导入区域包含:
   - 截图/名片上传区(支持拖拽、多文件)
   - 多行文本粘贴区
   - CSV 文件上传
3. 解析后展示"待确认列表"(表格形式)
4. 支持逐条编辑、删除、合并
5. 确认后批量执行第一轮筛查

文件pages/dashboard/dashboard.component.html

修改内容:
1. 新增 <mat-tab label="批量导入"> 区块
2. 上传区域 UI(拖拽区 + 按钮组)
3. 解析结果预览表格
4. 批量操作工具栏(全选、删除、合并、执行筛查)

模块 2:主体识别与去重引擎(EntityResolver)

新增文件services/entity-resolver.service.ts

2.1 核心逻辑

输入线索信息
    ↓
┌──────────────────────────────────────────┐
│           主体识别流程                      │
│                                          │
│  Step 1: 域名标准化                       │
│    alex@wildgear.de → wildgear.de        │
│    info@wild-gear.com → wildgear.com     │
│    免费邮箱(gmail等) → 降级为联系人维度    │
│                                          │
│  Step 2: 公司名标准化                     │
│    "WildGear GmbH" → "wildgear"          │
│    去除后缀: Ltd/Inc/GmbH/Co./LLC        │
│    去除空格/标点/大小写差异               │
│                                          │
│  Step 3: 主体匹配                        │
│    域名完全匹配 → 同一主体 (置信度 95%)   │
│    域名相似度 > 0.8 → 疑似同一主体 (70%) │
│    公司名相似度 > 0.85 → 疑似 (75%)      │
│    域名+公司名都匹配 → 确定 (99%)        │
│                                          │
│  Step 4: 输出                            │
│    → EntityGroup(归并主体)              │
│    → 每个主体下挂载多个线索/联系人         │
└──────────────────────────────────────────┘

2.2 接口设计

// services/entity-resolver.service.ts

export interface EntityGroup {
  entityId: string;                     // 主体 ID
  primaryDomain: string;               // 主域名
  primaryCompanyName: string;          // 主公司名
  normalizedDomain: string;            // 标准化域名
  normalizedCompanyName: string;       // 标准化公司名
  confidence: number;                  // 归并置信度
  leads: Lead[];                       // 该主体下所有线索
  contacts: ContactInfo[];             // 该主体下所有联系人
  duplicateWarnings: string[];         // 重复提醒
  existingLeadIds: string[];           // 已有线索ID(用于去重提示)
  isNew: boolean;                      // 是否新主体
  mergeHistory: MergeRecord[];         // 合并历史
}

export interface ContactInfo {
  name: string;
  email: string;
  phone?: string;
  title?: string;
  source: string;
  firstSeenAt: Date;
}

export interface MergeRecord {
  mergedAt: Date;
  fromLeadId: string;
  reason: string;
}

2.3 对现有代码的修改

文件models/lead.model.ts

修改内容:
1. Lead 接口新增字段:
   - entityId: string               // 所属主体ID
   - domainKey: string              // 域名去重键
   - emailKey: string               // 邮箱去重键
   - relatedLeadIds: string[]       // 关联线索ID列表
   - mergedFrom?: string            // 如果是合并来的,来源线索ID
   - isEntityPrimary: boolean       // 是否为该主体的主线索

2. 新增 EntityProfile 接口:
   - 主体画像(汇总该主体下所有线索信息)
   - 联系人列表
   - 互动历史时间线

文件services/quick-screen.service.ts

修改内容:
1. createLeadFromScreen() 方法增加查重逻辑:
   - 调用 EntityResolver 检查是否已有同主体线索
   - 已有 → 返回 { isDuplicate: true, existingEntity: EntityGroup }
   - 新主体 → 正常创建并注册到 EntityResolver
2. 新增 screenBatch() 方法:
   - 接收 BatchInputItem[] 批量输入
   - 并行执行筛查
   - 自动归并到主体
   - 返回按主体分组的结果列表

文件services/mock-data.service.ts

修改内容:
1. 现有 mockLeads 增加 entityId / domainKey / emailKey 字段
2. 增加主体索引 Map(域名 → entityId)
3. 模拟一些"同公司多联系人"的数据,验证去重效果

模块 3:两轮背调核心模块(TwoRoundBgCheck)

新增文件services/two-round-bgcheck.service.ts

3.1 第一轮:初步筛查(QuickScreen)

这一轮是现有 QuickScreenService 的增强版,改造点:

现有流程:
  输入 → AI筛查 → 直接创建线索

改造后:
  批量输入 → 解析 → 主体去重 → AI筛查 → 输出"待确认列表" → 用户确认

用户确认列表设计:

// 第一轮输出:待确认列表
export interface Round1Result {
  entities: Round1EntityResult[];  // 按主体分组的结果
  summary: {
    totalEntities: number;
    newEntities: number;
    existingEntities: number;
    recommendExplore: number;     // 建议深入挖掘数量
    recommendArchive: number;     // 建议归档数量
  };
}

export interface Round1EntityResult {
  entity: EntityGroup;
  screenResult: QuickScreenResult;
  
  // 价值判断(差异化)
  valueAssessment: {
    decision: 'strongly_recommend' | 'optional' | 'archive';
    decisionLabel: string;        // "强烈建议深入挖掘" / "可选择性挖掘" / "建议归档"
    decisionColor: string;        // green / yellow / red
    reasons: string[];            // 判断依据
    valueHighlights: ValueHighlight[];  // 差异化价值亮点
  };
  
  // 用户操作
  userAction?: 'confirmed' | 'modified' | 'rejected' | 'pending';
  userNotes?: string;
}

// 差异化价值亮点(根据不同画像类型)
export interface ValueHighlight {
  type: 'product_info' | 'market_potential' | 'certification' | 'scale' | 'urgency' | 'custom';
  icon: string;
  label: string;
  detail: string;
  importance: 'high' | 'medium' | 'low';
}

差异化价值点示例

画像类型 有商品信息的价值点 无商品信息但有潜在价值的
P1 医药分销商 "明确列出3款产品需求,年采购额估$50K+" "大型分销渠道,覆盖200+药房,潜在年采购额高"
P2 工业安全 "指定OSHA合规产品,急需30天内交付" "建筑行业安全合规需求增长,潜在长期客户"
P3 政府采购 "招标文件明确,预算已批复" "政府机构年度采购计划中,需要提前布局"
P4 品牌OEM "提供了Pantone色号和品牌VI,定制需求明确" "新兴户外品牌,增长迅速,OEM需求即将释放"
P5 电商零售 "Amazon店铺月销500+,明确要FBA发货" "Shopify新店,品类匹配度高,教育引导后可转化"
P6 低质量

3.2 第二轮:深度背调(DeepInvestigation)

第二轮在用户确认第一轮结果后启动,批量执行:

用户在第一轮确认列表中勾选要深入的主体
    ↓
批量启动深度背调(可并行处理多个主体)
    ↓
┌──────────────────────────────────────┐
│  深度背调 5 阶段(每个主体独立进度)    │
│                                      │
│  ① 初始化 & 数据验证                  │
│  ② 公司实力调研                       │
│     - 官网爬取 + 企业数据库            │
│     - 财务/规模信息                    │
│  ③ 社媒 & 网络验证                    │
│     - LinkedIn/Twitter/Instagram      │
│     - 行业论坛/展会记录               │
│  ④ 决策人调查                         │
│     - 关键联系人识别                   │
│     - 角色/职级/决策权限               │
│  ⑤ 综合评级 & 策略生成                │
│     - 三维评分                        │
│     - 产品匹配推荐(可编辑)           │
│     - 跟进策略 + 触达邮件              │
└──────────────────────────────────────┘
    ↓
输出"第二轮确认列表"
    ↓
用户确认/修改产品推荐和跟进策略

批量进度设计

export interface BatchBgCheckProgress {
  totalEntities: number;
  completedEntities: number;
  currentEntity?: string;       // 当前正在处理的主体名称
  entityProgresses: Map<string, EntityBgCheckProgress>;
  overallProgress: number;      // 总体进度 0-100
  startedAt: Date;
  estimatedCompletion?: Date;
}

export interface EntityBgCheckProgress {
  entityId: string;
  companyName: string;
  stages: BgCheckStage[];       // 复用现有5阶段
  currentStage: number;
  progress: number;             // 该主体的进度 0-100
  status: 'queued' | 'processing' | 'completed' | 'error';
  error?: string;
}

3.3 对现有代码的修改

文件pages/lead-detail/lead-detail.component.ts

修改内容:
1. startDeepAnalysis() 方法重构:
   - 改为调用 TwoRoundBgCheckService
   - 支持从第一轮确认结果直接进入第二轮
2. 新增批量背调入口(从 Dashboard 也可触发)
3. 背调进度展示改为支持批量进度视图

文件components/bgcheck-progress/bgcheck-progress.component.ts

修改内容:
1. 新增批量模式:显示多个主体的并行进度
2. 每个主体可展开/折叠查看5阶段详情
3. 整体进度条 + 单体进度条

模块 4:产品匹配推荐引擎(ProductMatcher)

新增文件services/product-matcher.service.ts

4.1 推荐规则体系

export interface ProductMatchRule {
  ruleId: string;
  ruleName: string;
  persona: CustomerPersona;               // 适用画像
  conditions: MatchCondition[];            // 匹配条件
  recommendProducts: string[];             // 推荐产品SKU列表
  priority: number;                        // 优先级
  reason: string;                          // 推荐理由模板
  isSystemRule: boolean;                   // 系统规则 vs 用户自定义
  createdBy?: string;                      // 创建人
  lastModifiedAt?: Date;
}

export interface MatchCondition {
  field: 'keywords' | 'industry' | 'scale' | 'country' | 'certifications' | 'custom';
  operator: 'contains' | 'equals' | 'greater_than' | 'in';
  value: any;
}

// 产品推荐结果(可编辑)
export interface EditableProductRecommendation {
  product: Product;
  matchedRule: ProductMatchRule;
  autoScore: number;                       // AI 匹配分
  manualOverride: boolean;                 // 是否被人工修改
  manualScore?: number;                    // 人工评分
  salesNotes?: string;                     // 销售标注
  isRemoved: boolean;                      // 是否被移除
  addedManually: boolean;                  // 是否手动添加
  sortOrder: number;                       // 排序(支持拖拽调整)
}

4.2 差异化推荐逻辑

┌───────────────────────────────────────────────────┐
│  产品匹配推荐流程                                    │
│                                                   │
│  输入:客户画像 + 需求信息 + 公司背景                  │
│                                                   │
│  ① 画像规则匹配                                    │
│     P1 医药分销 → 完整产品目录 + 认证文件             │
│     P2 工业安全 → OSHA 合规产品线                    │
│     P3 政府采购 → 投标级产品组合                      │
│     P4 OEM品牌 → 可定制产品 + 打样方案                │
│     P5 电商零售 → 高利润爆款 + FBA适配                │
│                                                   │
│  ② 需求关键词匹配                                   │
│     邮件/名片中提到的具体产品 → 精确匹配              │
│                                                   │
│  ③ 历史成交数据参考                                  │
│     同类画像历史成交产品排名                          │
│                                                   │
│  ④ 输出推荐列表(带理由)                             │
│     销售可修改排序、添加/删除、标注理由                │
└───────────────────────────────────────────────────┘

4.3 对现有代码的修改

文件pages/lead-detail/lead-detail.component.ts.html

修改内容:
1. 推荐产品区域改为可编辑模式:
   - 每个推荐产品卡片增加"编辑"、"移除"按钮
   - 支持拖拽调整排序
   - 支持手动添加产品(从产品目录中搜索)
   - 每个产品可添加销售标注
2. 产品匹配规则可查看/编辑入口
3. 新增"跟进建议"卡片:
   - 基于画像 + 产品匹配结果,给出第一步跟进建议
   - 建议内容可编辑
   - 包含:推荐话术、发送文件清单、跟进时间节点

文件components/deep-research-package/deep-research-package.component.ts.html

修改内容:
1. 产品匹配表格增加"编辑"列
2. 跟进策略区域增加"自定义修改"功能
3. 话术建议改为可编辑富文本

模块 5:用户确认流程(ConfirmationFlow)

新增文件components/confirmation-list/confirmation-list.component.ts

5.1 第一轮确认列表

┌────────────────────────────────────────────────────────────┐
│  第一轮筛查结果 — 待确认列表                                  │
│                                                            │
│  ┌─ 汇总栏 ─────────────────────────────────────────────┐  │
│  │  共 12 个主体 │ 建议挖掘 8 │ 可选 3 │ 建议归档 1       │  │
│  │  [全部确认] [批量操作▼]                                │  │
│  └──────────────────────────────────────────────────────┘  │
│                                                            │
│  ┌─ 主体卡片 ──────────────────────────────────────────┐   │
│  │ ☑ WildGear GmbH                    🟢 强烈建议挖掘   │   │
│  │   画像: P4-品牌OEM客户  等级: A  域名: wildgear.de    │   │
│  │   ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄                   │   │
│  │   💡 价值亮点:                                        │   │
│  │   · 新兴户外品牌,年增长率40%                          │   │
│  │   · 明确提到OEM定制需求                               │   │
│  │   · 预估年采购额 $30K+                                │   │
│  │   ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄                   │   │
│  │   📧 联系人: alex@wildgear.de (Alex Mueller, CEO)    │   │
│  │   ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄                   │   │
│  │   [✓确认] [✏修改画像] [✗归档] [查看详情]              │   │
│  └──────────────────────────────────────────────────────┘  │
│                                                            │
│  ┌─ 主体卡片 ──────────────────────────────────────────┐   │
│  │ ☑ EduFirst Solutions                🟡 可选择性挖掘   │   │
│  │   画像: P3-政府/机构  等级: B  域名: edufirst.org     │   │
│  │   ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄                   │   │
│  │   💡 价值亮点:                                        │   │
│  │   · 教育类公司,无直接商品需求                         │   │
│  │   · 但管理200+学校急救物资采购                        │   │
│  │   · 潜在年采购额可观(集中采购模式)                   │   │
│  │   ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄                   │   │
│  │   ⚠ 无商品信息,需深入询问确认采购意向                 │   │
│  │   [✓确认] [✏修改画像] [✗归档] [查看详情]              │   │
│  └──────────────────────────────────────────────────────┘  │
│                                                            │
│  ┌────────────────────────────────────────────────────┐    │
│  │  [▶ 对选中的 8 个主体启动深度背调]                    │    │
│  └────────────────────────────────────────────────────┘    │
└────────────────────────────────────────────────────────────┘

5.2 第二轮确认列表

┌────────────────────────────────────────────────────────────┐
│  第二轮深度背调结果 — 待确认列表                               │
│                                                            │
│  ┌─ 主体报告卡片 ──────────────────────────────────────┐   │
│  │ WildGear GmbH          综合评分: 78/100  ⭐ A级      │   │
│  │                                                      │   │
│  │ 📊 三维评分:                                          │   │
│  │   公司实力 ████████░░ 80%                             │   │
│  │   决策人   ███████░░░ 70%                             │   │
│  │   采购项目 ████████░░ 85%                             │   │
│  │                                                      │   │
│  │ 📦 推荐产品 (可编辑):                                 │   │
│  │   1. FK-001 急救箱   $12.50  [✏][✗]  批发价合适       │   │
│  │   2. FK-003 户外包   $8.90   [✏][✗]  匹配OEM需求     │   │
│  │   3. + [添加产品]                                     │   │
│  │                                                      │   │
│  │ 🎯 跟进建议:                                          │   │
│  │   · 首先发送OEM案例集 + 定制能力介绍 [✏]              │   │
│  │   · 3天内安排视频会议讨论打样 [✏]                      │   │
│  │   · 准备Pantone色卡和包装方案 [✏]                     │   │
│  │                                                      │   │
│  │ 📧 触达邮件 (可编辑):                                 │   │
│  │   [预览邮件] [编辑邮件] [复制]                         │   │
│  │                                                      │   │
│  │ ⚠ 风险提示: 低风险 — 新品牌首单可能较小               │   │
│  │                                                      │   │
│  │ [✓ 确认并进入跟进] [✏ 修改] [↗ 查看完整报告]          │   │
│  └──────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────┘

5.3 对现有代码的修改

文件pages/dashboard/dashboard.component.ts.html

修改内容:
1. "待验证线索" Tab 重构为两轮确认流程:
   - 第一轮:批量筛查确认列表
   - 第二轮:深度背调确认列表
2. 支持在两轮间切换查看
3. 汇总统计更新为双轮数据

模块 6:分析结果与提示优化

6.1 深度询问模板

新增文件services/inquiry-template.service.ts

不同画像类型需要不同的深度询问方向,系统提供结构化的询问模板:

export interface InquiryTemplate {
  persona: CustomerPersona;
  phase: 'initial' | 'deep';
  questions: InquiryQuestion[];
}

export interface InquiryQuestion {
  id: string;
  category: string;             // "采购需求" / "公司背景" / "预算" / "时间"
  question: string;             // 问题内容
  questionEn: string;           // 英文版本
  importance: 'critical' | 'important' | 'nice_to_have';
  aiCanAutoAnswer: boolean;     // AI 是否可以自动从公开信息回答
  salesNeedToAsk: boolean;      // 是否需要销售手动询问
  expectedAnswer?: string;      // 期望的回答类型
}

各画像询问重点

画像 关键询问方向 价值判断重点
P1 医药分销 渠道覆盖、年采购量、现有供应商、认证要求 复购能力、渠道价值
P2 工业安全 终端客户行业、合规标准、定制需求 长期复购、标准化程度
P3 政府采购 预算周期、招标流程、历史采购量 单次订单规模
P4 OEM品牌 品牌定位、设计要求、起订量、交付周期 品牌溢价空间、定制利润
P5 电商零售 店铺规模、月销量、FBA需求、利润率要求 订单频次、增长潜力
P6 低质量 直接归档

6.2 分析结果呈现优化

文件components/screen-result-card/screen-result-card.component.ts.html

修改内容:
1. 卡片顶部增加醒目的"决策标签":
   - 🟢 强烈建议深入挖掘(S/A 级 + 高匹配度)
   - 🟡 可选择性挖掘(B 级 或 中匹配度)
   - 🔴 建议归档(C 级 或 低匹配度)
2. 价值亮点区域:
   - 有商品信息的:突出具体产品需求和金额
   - 无商品信息的:突出潜在价值和挖掘方向
3. 风险提示:
   - 免费邮箱警告
   - 无官网警告
   - 信息不完整提示

文件pages/bgcheck/bgcheck.component.ts.html

修改内容:
1. 综合评级区域增加更直观的评分解读
2. 销售策略区域增加"第一步行动清单"
3. 产品推荐区域支持编辑
4. 增加"一键生成跟进邮件"按钮

三、新增/修改文件清单

新增文件

文件路径 说明
services/batch-input.service.ts 批量输入处理服务
services/entity-resolver.service.ts 主体识别与去重服务
services/two-round-bgcheck.service.ts 两轮背调核心服务(封装模块)
services/product-matcher.service.ts 产品匹配推荐服务
services/inquiry-template.service.ts 深度询问模板服务
components/confirmation-list/confirmation-list.component.ts 确认列表组件
components/confirmation-list/confirmation-list.component.html 确认列表模板
components/confirmation-list/confirmation-list.component.scss 确认列表样式
components/batch-progress/batch-progress.component.ts 批量进度展示组件
components/batch-progress/batch-progress.component.html 批量进度模板
components/batch-progress/batch-progress.component.scss 批量进度样式
components/editable-product-list/editable-product-list.component.ts 可编辑产品列表组件
components/editable-product-list/editable-product-list.component.html 可编辑产品列表模板
components/editable-product-list/editable-product-list.component.scss 可编辑产品列表样式

修改文件

文件路径 修改内容概要
models/lead.model.ts 新增 entityId/domainKey/emailKey 等字段,新增 EntityGroup/EntityProfile 等接口
services/quick-screen.service.ts 增加 screenBatch() 方法,createLeadFromScreen() 增加查重逻辑
services/mock-data.service.ts mockLeads 增加主体字段,新增批量/去重相关模拟数据
pages/dashboard/dashboard.component.ts 新增批量导入Tab,重构待验证列表为两轮确认流程
pages/dashboard/dashboard.component.html 批量导入UI、确认列表UI
pages/dashboard/dashboard.component.scss 新增样式
pages/lead-detail/lead-detail.component.ts startDeepAnalysis 重构,产品推荐可编辑
pages/lead-detail/lead-detail.component.html 产品可编辑UI,跟进建议可编辑UI
pages/lead-detail/lead-detail.component.scss 新增样式
pages/bgcheck/bgcheck.component.ts 评分解读优化,产品推荐可编辑
pages/bgcheck/bgcheck.component.html UI优化、一键生成邮件按钮
components/bgcheck-progress/bgcheck-progress.component.ts 支持批量模式
components/screen-result-card/screen-result-card.component.ts 增加决策标签、价值亮点
components/screen-result-card/screen-result-card.component.html UI重构
components/deep-research-package/deep-research-package.component.ts 产品匹配可编辑、话术可编辑
components/deep-research-package/deep-research-package.component.html UI更新
app.routes.ts 如需新增路由(批量背调结果页等)

四、两轮背调模块封装设计

4.1 模块对外接口

// services/two-round-bgcheck.service.ts

@Injectable({ providedIn: 'root' })
export class TwoRoundBgCheckService {
  
  // ===== 第一轮:批量初步筛查 =====
  
  /**
   * 执行第一轮批量筛查
   * @param inputs 批量输入项(已解析)
   * @returns 按主体分组的筛查结果,等待用户确认
   */
  async executeRound1(inputs: BatchInputItem[]): Promise<Round1Result>;
  
  /**
   * 用户确认第一轮结果
   * @param confirmations 用户对每个主体的操作
   * @returns 确认后的主体列表(只包含确认/修改的)
   */
  async confirmRound1(confirmations: Round1Confirmation[]): Promise<Round1ConfirmedResult>;
  
  // ===== 第二轮:批量深度背调 =====
  
  /**
   * 对确认的主体批量启动深度背调
   * @param entityIds 要进行深度背调的主体ID列表
   * @returns 进度 Observable(实时推送进度)
   */
  startRound2(entityIds: string[]): Observable<BatchBgCheckProgress>;
  
  /**
   * 获取第二轮结果
   * @returns 深度背调结果列表,等待用户确认产品和策略
   */
  async getRound2Results(): Promise<Round2Result>;
  
  /**
   * 用户确认第二轮结果(确认产品推荐和跟进策略)
   * @param confirmations 用户修改后的产品推荐和策略
   */
  async confirmRound2(confirmations: Round2Confirmation[]): Promise<void>;
  
  // ===== 辅助方法 =====
  
  /** 获取当前进度 */
  getCurrentProgress(): BatchBgCheckProgress | null;
  
  /** 取消正在进行的背调 */
  cancelBgCheck(entityId: string): void;
  
  /** 重试失败的背调 */
  retryBgCheck(entityId: string): Observable<EntityBgCheckProgress>;
}

4.2 数据流

BatchInputService          TwoRoundBgCheckService          UI Components
     │                            │                            │
     │  1. 解析原始输入             │                            │
     │ ─────────────────────────→ │                            │
     │                            │  2. 主体识别 & 去重          │
     │                            │  3. 执行第一轮筛查           │
     │                            │ ──────────────────────────→ │
     │                            │     显示第一轮确认列表       │
     │                            │ ←────────────────────────── │
     │                            │     用户确认操作             │
     │                            │  4. 保存确认结果             │
     │                            │  5. 启动第二轮深度背调       │
     │                            │ ──────────────────────────→ │
     │                            │     显示批量进度             │
     │                            │     ...                     │
     │                            │ ──────────────────────────→ │
     │                            │     显示第二轮确认列表       │
     │                            │ ←────────────────────────── │
     │                            │     用户修改产品/策略        │
     │                            │  6. 保存最终结果             │
     │                            │ ──────────────────────────→ │
     │                            │     进入跟进阶段             │

五、实现优先级

Phase 1 — 核心框架(建议先做)

优先级 任务 涉及文件 工作量
P0 TwoRoundBgCheckService 核心服务 services/two-round-bgcheck.service.ts
P0 EntityResolver 主体识别服务 services/entity-resolver.service.ts
P0 Lead 模型扩展 models/lead.model.ts
P0 QuickScreenService 增加查重 services/quick-screen.service.ts
P0 MockData 适配 services/mock-data.service.ts

Phase 2 — 确认流程 UI

优先级 任务 涉及文件 工作量
P0 第一轮确认列表组件 components/confirmation-list/
P0 第二轮确认列表组件 components/confirmation-list/
P1 Dashboard 集成两轮流程 pages/dashboard/
P1 批量进度组件 components/batch-progress/

Phase 3 — 批量输入与产品匹配

优先级 任务 涉及文件 工作量
P1 BatchInputService 批量输入 services/batch-input.service.ts
P1 可编辑产品列表组件 components/editable-product-list/
P1 ProductMatcher 推荐引擎 services/product-matcher.service.ts
P2 深度询问模板服务 services/inquiry-template.service.ts

Phase 4 — 分析结果优化

优先级 任务 涉及文件 工作量
P1 ScreenResultCard 决策标签 components/screen-result-card/
P1 BgCheck 报告页优化 pages/bgcheck/
P2 LeadDetail 产品可编辑 pages/lead-detail/
P2 触达邮件生成优化 components/deep-research-package/

六、预期效果

优化前(当前状态)

逐条手动输入 → 单条筛查 → 无去重 → 直接分析 → 固定推荐 → 销售手动决策

优化后

批量导入(截图/名片/粘贴)
    ↓
自动解析 + 主体识别 + 去重
    ↓
第一轮:AI 初步筛查 → 差异化价值点 → 待确认列表 → 用户确认
    ↓
第二轮:批量深度背调 → 产品匹配推荐(可编辑)→ 跟进策略 → 用户确认/标注
    ↓
输出:精准的跟进建议 + 可编辑的产品方案 + 个性化触达邮件

关键改进

维度 改进前 改进后
效率 逐条处理,每条3-5分钟 批量处理10-50条,整体5-10分钟
准确性 同公司多条线索无法关联 主体唯一性保证,自动去重归并
价值判断 AI 直出结果,销售被动接受 每轮给列表、用户确认,人机协作
产品匹配 固定规则,不可修改 可编辑、可标注、可自定义规则
差异化 所有画像同一模板 不同画像不同价值点和询问方向
跟进支持 笼统建议 具体的第一步行动清单 + 可编辑触达邮件

文档生成时间:2026-02-22
文档版本:v1.0