# 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 接口设计 ```typescript // 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. 新增 区块 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 接口设计 ```typescript // 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筛查 → 输出"待确认列表" → 用户确认 ``` **用户确认列表**设计: ```typescript // 第一轮输出:待确认列表 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 │ │ - 行业论坛/展会记录 │ │ ④ 决策人调查 │ │ - 关键联系人识别 │ │ - 角色/职级/决策权限 │ │ ⑤ 综合评级 & 策略生成 │ │ - 三维评分 │ │ - 产品匹配推荐(可编辑) │ │ - 跟进策略 + 触达邮件 │ └──────────────────────────────────────┘ ↓ 输出"第二轮确认列表" ↓ 用户确认/修改产品推荐和跟进策略 ``` **批量进度设计**: ```typescript export interface BatchBgCheckProgress { totalEntities: number; completedEntities: number; currentEntity?: string; // 当前正在处理的主体名称 entityProgresses: Map; 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 推荐规则体系 ```typescript 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` 不同画像类型需要不同的深度询问方向,系统提供结构化的询问模板: ```typescript 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 模块对外接口 ```typescript // services/two-round-bgcheck.service.ts @Injectable({ providedIn: 'root' }) export class TwoRoundBgCheckService { // ===== 第一轮:批量初步筛查 ===== /** * 执行第一轮批量筛查 * @param inputs 批量输入项(已解析) * @returns 按主体分组的筛查结果,等待用户确认 */ async executeRound1(inputs: BatchInputItem[]): Promise; /** * 用户确认第一轮结果 * @param confirmations 用户对每个主体的操作 * @returns 确认后的主体列表(只包含确认/修改的) */ async confirmRound1(confirmations: Round1Confirmation[]): Promise; // ===== 第二轮:批量深度背调 ===== /** * 对确认的主体批量启动深度背调 * @param entityIds 要进行深度背调的主体ID列表 * @returns 进度 Observable(实时推送进度) */ startRound2(entityIds: string[]): Observable; /** * 获取第二轮结果 * @returns 深度背调结果列表,等待用户确认产品和策略 */ async getRound2Results(): Promise; /** * 用户确认第二轮结果(确认产品推荐和跟进策略) * @param confirmations 用户修改后的产品推荐和策略 */ async confirmRound2(confirmations: Round2Confirmation[]): Promise; // ===== 辅助方法 ===== /** 获取当前进度 */ getCurrentProgress(): BatchBgCheckProgress | null; /** 取消正在进行的背调 */ cancelBgCheck(entityId: string): void; /** 重试失败的背调 */ retryBgCheck(entityId: string): Observable; } ``` ### 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*