# MCP 字段覆盖清单 > 说明:本文档用于核对 MCP 接口对数据库字段的覆盖情况,帮助判断是否"已包含全部字段"、缺失了哪些表与字段。 > > **数据来源**: > - MCP SQL 查询定义:`backend/src/main/resources/mapper/llm/LlmMcpMapper.xml`(共 77 个查询) > - MCP 工具描述 / 字段中文映射:`backend/src/main/java/com/unis/crm/llm/tools/`(各 `*ToolProvider.java`) > - 字段注释映射:`backend/src/main/java/com/unis/crm/llm/tools/support/FieldCommentRegistry.java` > - 表字段依据:`sql/archive/alter_fill_column_comments_pg17.sql` + 运行时 `*SchemaInitializer` 增量列 --- ## 核心结论 **未完全包含全部字段。**但缺口主要集中在**子表实体**和**列表搜索层**,MCP 对**核心业务主表**覆盖较完整(所有 detail 查询使用 `表.*` 返回主表全字段兜底)。 ### 关键机制 所有 `xxxDetail` 查询(如 `selectOpportunityDetail`、`selectCustomerDetail`、`selectWorkReportDetail`、`selectCheckinDetail`、`selectSalesExpansionDetail`、`selectChannelExpansionDetail`、`selectCrmExpansionDetail`、`selectTodoDetail`)均使用 `表.*` **返回主表全部字段**。因此: - 主表字段层面,**详情接口基本全覆盖**; - 真正的字段缺口集中在 **search/list 列表查询** 以及 **子表实体(followup / contact / comment)**。 --- ## A. 各 MCP 实体 → 主表 → 已暴露字段清单 ### 1. 工作日报(表 `work_daily_report`) `searchWorkReports`(XML 50-100)暴露: > id、userId、userName、reportDate、submitTime、sourceType、status、workContent、tomorrowPlan、score、comment 表字段(alter_fill 194-204):`id, user_id, report_date, work_content, tomorrow_plan, source_type, submit_time, status, score, created_at, updated_at` Detail 用 `r.*` 全字段 + `userName / latestScore / latestComment / reviewedAt`。 ### 2. 商机(表 `crm_opportunity`) `searchOpportunities`(XML 132-218)暴露 27 个字段: > id、opportunityCode、opportunityName、customerId、customerName、ownerUserId、ownerName、preSalesName、operatorName、projectLocation、projectOwnershipLocation、projectOwnershipLocationName、productType、opportunityType、source、isPoc、competitorName、amount、expectedCloseDate、confidence、stage、status、archived、latestProgress、nextPlan、description、actualSignedAmount、archivedAt、updatedAt Detail 用 `o.*` 全字段 + `customerName / ownerName / followupCount / latestFollowup`。 ### 3. 客户(表 `crm_customer`) `searchCustomers`(XML 1415-1454)暴露: > id、customerCode、customerName、customerType、industry、province、city、address、source、status、ownerUserId、ownerName、remark、updatedAt Detail 用 `c.*` 全字段 + `ownerName`。 ### 4. 签到(表 `work_checkin`) `searchCheckins`(XML 1479-1514)暴露: > id、userId、userName、deptName、checkinDate、checkinTime、bizType、bizId、bizName、locationText、remark、status Detail 用 `c.*` 全字段 + `userNameResolved`。 ### 5. 销售拓客(表 `crm_sales_expansion`) `searchSalesExpansions`(XML 1619-1665)暴露: > id、expansionType、name、employeeNo、candidateName、officeName、mobile、email、targetDept、industry、title、employmentStatus、expectedJoinDate、hasDesktopExp、summary、stage、intentLevel、ownerUserId、ownerName、remark、sortTime、updatedAt Detail 用 `s.*` 全字段。 ### 6. 渠道拓客(表 `crm_channel_expansion`) `searchChannelExpansions`(XML 1689-1744)暴露: > id、expansionType、name、channelCode、channelName、province、city、officeAddress、channelIndustry、certificationLevel、annualRevenue、staffSize、contactEstablishedDate、contactName、contactTitle、contactMobile、channelAttribute、internalAttribute、hasDesktopExp、expectedSignDate、landedFlag、summary、stage、intentLevel、ownerUserId、ownerName、remark、sortTime、updatedAt Detail 用 `c.*` 全字段 + `contactCount / followupCount`。 **渠道联系人子表(`crm_channel_expansion_contact`)**:并非完全没有暴露,而是通过 `crm_entity_detail` 的 `channel_expansion` 详情**联查**返回(`CrmEntityDetailToolProvider.java:174` → `selectChannelExpansionContacts`,XML 2206)。返回字段有限:`id, contactName, contactMobile, contactTitle, sortOrder`(仅 5 个)。无独立搜索工具(不能批量查联系人)。字段缺漏见 C2。 ### 7. CRM 拓展(表 `crm_crm_expansion`) `searchCrmExpansions`(XML 1770-1817)暴露: > id、endUser、officeName、industryAttr、extensionType、purchaseDate、warrantyExpiry、expansionTime、expansionScale、softwarePoints、onlineStatus、contactName、contactPhone、contactTitle、supplierName、h3cContactName、hasExpansionOpportunity、hasMaintenanceOpportunity、ownerUserId、ownerName、remark、sortTime、updatedAt Detail 用 `ce.*` 全字段。 ### 8. 待办(表 `work_todo`)— **全字段覆盖** `searchTodos`(XML 1241-1279)暴露: > id、title、bizType、bizId、priority、status、userId、userName、dueDate、createdAt、updatedAt Detail 用 `t.*`。此表 **无字段缺失**。 ### 9. 跟进(两表合并:`crm_opportunity_followup` + `crm_expansion_followup`) - `searchFollowups`(XML 1841-1927)暴露公共列: > bizType、id、bizId、bizName、followupType、content、nextAction、userId、userName、followupTime - `selectOpportunityFollowups`:id、followupType、content、nextAction、followupUserId、followupUserName、followupTime - `selectSalesExpansionFollowups` / `selectChannelExpansionFollowups`:id、followupType、content、nextAction、evaluationContent、nextPlan、followupUserId、followupUserName、followupTime ### 10. 组织用户 / 组织 / 角色(表 `sys_user`、`sys_org`、`sys_role`) - `searchOrgUsers`(XML 1303-1353)暴露:userId、username、displayName、mobile、email、status、orgIds、orgNames、roleCodes、roleNames - `selectUserProfile`:userId、username、displayName、email、phone、status、platformAdmin、createdAt - `searchOrganizations`:orgId、orgName、parentId、orgCode、sortOrder、status(**parentId/orgCode/sortOrder 恒为 null**) - `searchRoles`:roleId、roleName、roleCode、status、userCount `sys_user` 表字段:`id, user_id, user_code, username, real_name, display_name, mobile, phone, email, org_id, job_title, status, hire_date, avatar_url, password_hash, created_at, updated_at, is_deleted, pwd_reset_required, is_platform_admin` ### 11. 其他(非独立业务主表工具) - **动态/活动日志** `sys_activity_log`:通过 `universalSearchActivities`(XML 798)通用搜索暴露 `id, title, summary, ownerUserId, ownerName, time` - **字典**:`selectDictTypes`(2257)、`selectDictOptions`(2279)、`selectColumnComments`(2304) - **渠道覆盖** `crm_channel_expansion_coverage`:聚合统计 `channelCoverageSummary`(2441)+ **渠道详情已联查 `coverages` 明细** - **销售所属区域** `crm_sales_expansion_coverage`:**已通过 `crm_entity_detail`(sales_expansion) 联查 `coverages` 明细** - **日报消息** `work_report_message`:**已通过 `crm_entity_detail`(daily_report) 联查 `messages` 明细**(sender/receiver/content/readAt 等) --- ## B. 缺失的表(数据库有数据,但 MCP 无实体/工具暴露) | 缺失表 | 说明 | 位置 | |---|---|---| | `business_calendar_day` | 工作日历,**完全未暴露** | `sql/init_full_pg17.sql:778` | | `report_reminder_*` | 日报提醒配置表,MCP 未引用 | `ReportReminderService` | | `speech_recognition_config` | 语音识别配置表,MCP 未引用 | `SpeechRecognitionSchemaInitializer` | | `dashboard_analytics_card_config` | 看板分析卡片配置表,MCP 未引用 | `DashboardAnalyticsSchemaInitializer` | | 数据权限表(`20260701_user_data_scope_user_pg17.sql`) | 权限类,MCP 未暴露(**合理**) | `UserDataScopeSchemaInitializer` | > 注:`sys_tenant_user`、`sys_user_role`、`cnarea`、`sys_dict_*` 为框架/字典/行政区划辅助表,仅被 join 使用,不算业务实体。核心业务实体(用户/客户/商机/拓客/打卡/日报/待办/跟进/组织/角色)均已覆盖。 --- ## C. 缺失的字段 ### C1. 主表(已补齐,search/list 层缺失字段) > 详情接口用 `表.*` 已全覆盖。以下字段在**本轮已补进 search/list 查询**,供 Agent 查阅。 | 实体/表 | search 现返回的补齐字段 | 备注 | |---|---|---| | `work_daily_report` | `created_at, updated_at` | 审计字段 | | `crm_opportunity` | `sales_expansion_id, channel_expansion_id, pre_sales_id, pushed_to_oms, oms_push_time, updated_by, created_at` | 外键 / OMS 集成 / 审计字段 | | `crm_customer` | `created_at` | 审计字段 | | `work_checkin` | `longitude, latitude, created_at, updated_at` | 经纬度已在列表返回 | | `crm_sales_expansion` | `in_progress, created_at` | `in_progress`(是否持续跟进)已返回 | | `crm_channel_expansion` | `industry`(兼容旧字段), `registered_capital`, `created_at` | `registered_capital` 注册资金 | | `crm_crm_expansion` | `supplier_id, h3c_contact_id, created_at` | 外键 / 审计字段(detail `ce.*` 覆盖) | | `sys_user`(profile / org-user) | `user_code`(工号), `real_name`, `job_title`, `hire_date`, `display_name` | **已补工号/职位/入职日期/姓名**;`password_hash`、`pwd_reset_required` **仍不应暴露**(安全) | > ⚠️ 待确认:`sys_org` 的 `parent_id / org_code / sort_order` 仍硬编码为 null,因 `sys_org` 属框架表、项目内**未找到建表脚本**,未擅自改动(`searchOrganizations`)。如需返回真实层级字段,需先人工核实 `sys_org` 列名。 ### C2. 子表实体(已补齐,缺漏字段现已暴露) | 子表 | 补齐后暴露的字段 | 说明 | |---|---|---| | `crm_expansion_followup` | `visit_start_time`(拜访开始时间), `source_type`, `source_id`, `created_at`, `updated_at` | searchFollowups、sales/channel followups 均已补 | | `crm_opportunity_followup` | `source_type`, `source_id`, `created_at`, `updated_at` | selectOpportunityFollowups 已补 | | `crm_channel_expansion_contact` | `channel_expansion_id, duty, birthday, wecom_added, special_note, sort_order, created_at, updated_at` | selectChannelExpansionContacts 已补全字段 | | `work_daily_report_comment` | `created_at` | selectWorkReportComments 已补 | | `crm_channel_expansion_coverage` | `province, city` | 渠道详情 `crm_entity_detail`(channel_expansion) 新增 `coverages` 明细(`selectChannelExpansionCoverages`) | | `crm_sales_expansion_coverage` | `province, city` | 销售详情 `crm_entity_detail`(sales_expansion) 新增 `coverages` 明细(销售所属区域,`selectSalesExpansionCoverages`),此前完全未暴露 | | `work_report_message` | `sender_user_id, receiver_user_id, report_date, line_index, biz_type, biz_id, biz_name, content, read_at, created_at` | 日报详情 `crm_entity_detail`(daily_report) 新增 `messages` 明细(`selectWorkReportMessages`),此前完全未暴露 | > ✅ **「是否加企业微信」维度现已支持统计**:`crm_report_query`(`channel_analytics`) 新增 `contactWecomDistribution` 聚合(按 `crm_channel_expansion_contact.wecom_added`:已加/未加/未填写,含联系人计数、渠道计数)。 --- ## D. 备注(低价值 / 安全 / 信息不全) - **审计字段**:`created_at` / `updated_at`;`crm_opportunity` 另含 `updated_by`。本轮已补进列表层。 - **外键字段**:`customer_id`、`owner_user_id`、`sales_expansion_id`、`channel_expansion_id`、`pre_sales_id`、`followup_user_id`、`operator_user_id`、`reviewer_user_id`、`report_id` 等。 - **安全敏感字段**:`sys_user.password_hash`、`pwd_reset_required` **不应暴露**(MCP 正确未暴露)。 - **OMS 集成字段**:`crm_opportunity.pushed_to_oms`、`oms_push_time`、`updated_by` 已补进列表层。 - **兼容性遗留字段**:`crm_channel_expansion.industry`(兼容旧结构)已补;`oms_project_code` 已在 `OpportunitySchemaInitializer:316` 被 DROP。 ### 信息不全待核对项 1. ~~`crm_crm_expansion` 表字段全集未找到建表脚本~~ → **已找到** `sql/20260827.sql`(45-68),字段全集已核验。 2. `sys_org` / `sys_role` / `sys_tenant_user` 的完整建表脚本**未找到**(仅片段注释);`searchOrganizations` 中 `parentId/orgCode/sortOrder` 被硬编码 null,**待人工核实列名后再补真实值**。 3. `business_calendar_day`、`report_reminder_*`、`speech_recognition_config`、`dashboard_analytics_card_config`、数据权限表仍无独立 MCP 工具(不在本轮范围)。 --- ## 结论摘要 - **是否已包含全部字段?** 核心业务主表 + 详情接口(`表.*`)已全覆盖;本轮已把所有明确标识的缺失字段补齐。剩余未处理项:`sys_org` 层级字段(待确认列名)、以及 `business_calendar_day` / 日报提醒 / 语音识别 / 看板卡片等配置类表在 MCP 中无独立工具(配置类,价值低)。 - **本轮已补齐的缺口**: 1. 子表(真正缺漏)已全补:`crm_expansion_followup.visit_start_time/source_type/source_id`、`crm_channel_expansion_contact` 全部字段(含 `wecom_added`)、`crm_opportunity_followup`、`work_daily_report_comment.created_at`。 2. 新增 `crm_report_query.channel_analytics` 的 `contactWecomDistribution`:**支持按「是否加企业微信」维度统计**。 3. 列表层:`work_checkin` 经纬度、`crm_sales_expansion.in_progress`、`registered_capital`、及 `created_at/updated_at` 补齐。 4. 用户画像:`sys_user.user_code(工号)/real_name/job_title(职位)/hire_date(入职日期)` 已补齐(`selectUserProfile` 与 `searchOrgUsers`)。 5. 新增 `crm_entity_detail`(crm_expansion) 联查 `contacts`(`crm_crm_expansion_contact` 子表)+ `followups`(biz_type='crm'),此前完全未暴露。 6. **新增覆盖地市明细**:销售所属区域 `crm_sales_expansion_coverage`、渠道覆盖 `crm_channel_expansion_coverage` 已在销售/渠道详情的 `coverages` 返回(此前销售所属区域完全未暴露)。 7. **新增日报消息** `work_report_message`:日报详情 `messages` 返回 sender/receiver/content/readAt 等(此前完全未暴露)。 - **待办(非必需)**:`sys_org.parent_id/org_code/sort_order` 待人工核实框架表列名后补真实值。