{"contacts":[{"id":"ct_4d5a5c4afa51963b","devSeed":true,"source":"local_demo_seed","wxName":"测试客户","displayName":"测试客户","templateId":"wecom_service_provider","profile":{"customer_name":{"label_zh":"称呼/姓氏","value":"","confidence":0,"evidence":""},"phone_or_wechat":{"label_zh":"手机号/微信","value":"","confidence":0,"evidence":""},"company_name":{"label_zh":"企业名称","value":"","confidence":0,"evidence":""},"industry":{"label_zh":"所属行业","value":"","confidence":0,"evidence":""},"company_size":{"label_zh":"企业规模","value":"","confidence":0,"evidence":""},"city":{"label_zh":"所在城市","value":"","confidence":0,"evidence":""},"customer_role":{"label_zh":"客户角色","value":"","confidence":0,"evidence":""},"decision_maker":{"label_zh":"决策人","value":"","confidence":0,"evidence":""},"current_wecom_usage":{"label_zh":"企微使用现状","value":"","confidence":0,"evidence":""},"customer_operation_status":{"label_zh":"客户运营现状","value":"","confidence":0,"evidence":""},"main_pain_point":{"label_zh":"主要痛点","value":"","confidence":0,"evidence":""},"primary_need":{"label_zh":"核心需求","value":"","confidence":0,"evidence":""},"interested_wecom_features":{"label_zh":"关注的企微能力","value":"","confidence":0,"evidence":""},"archive_need":{"label_zh":"会话存档需求","value":"","confidence":0,"evidence":""},"office_need":{"label_zh":"协同办公需求","value":"","confidence":0,"evidence":""},"ai_copilot_interest":{"label_zh":"AI副驾兴趣","value":"","confidence":0,"evidence":""},"pricing_focus":{"label_zh":"价格关注点","value":"","confidence":0,"evidence":""},"budget_sensitivity":{"label_zh":"价格敏感度","value":"","confidence":0,"evidence":""},"service_mode_interest":{"label_zh":"合作方式关注","value":"","confidence":0,"evidence":""},"timeline":{"label_zh":"上线/采购时间","value":"","confidence":0,"evidence":""},"intent_level":{"label_zh":"意向等级","value":"未判断","confidence":0,"evidence":""},"contact_collected":{"label_zh":"是否已留联系方式","value":"","confidence":0,"evidence":""},"next_step_preference":{"label_zh":"下一步偏好","value":"","confidence":0,"evidence":""},"risk_flags":{"label_zh":"风险标记","value":"","confidence":0,"evidence":""}},"state":{"stage":{"label_zh":"会话阶段","value":"首次接触"},"mainline_phase":{"label_zh":"主线位置","value":"需求识别"},"current_thread":{"label_zh":"当前主线","value":"企微服务咨询"},"last_answer_focus":{"label_zh":"上一轮回答焦点","value":""},"thread_summary":{"label_zh":"线程摘要","value":""},"covered_points":{"label_zh":"已讲内容","value":[]},"identified_needs":{"label_zh":"已识别需求","value":[]},"matched_solution":{"label_zh":"已匹配方案","value":""},"pricing_status":{"label_zh":"价格沟通状态","value":"未沟通"},"ai_copilot_timing":{"label_zh":"AI副驾切入时机","value":"未切入"},"objections_seen":{"label_zh":"已出现顾虑","value":[]},"followup_status":{"label_zh":"跟进状态","value":"继续沟通"},"next_action":{"label_zh":"下一步建议","value":""},"pending_question":{"label_zh":"待回应问题","value":""},"need_handoff":{"label_zh":"是否需要本人确认","value":false}},"deliverySettings":{"sendMode":"manual","autoSendSeconds":10},"styleMemory":[],"createdAt":"2026-08-17T06:43:54.453Z","updatedAt":"2026-08-17T06:43:54.453Z","wecom":{},"floorPlans":[],"floorPlanDraft":null}],"messages":[{"id":"msg_f178a5469a8cf3f8","contactId":"ct_4d5a5c4afa51963b","role":"system_note","content":"这是一个本地 Demo。先粘贴客户消息，再生成草稿，最后确认已发送。","createdAt":"2026-08-17T06:43:54.454Z"}],"memoryEvents":[],"testTurns":[],"templateRuleCandidates":[],"salesAssets":[],"salesAssetReviews":[],"salesPlaybooks":[],"salesAnalyses":[],"reports":[],"wecomInbox":[],"wecomTasks":[],"wecomRooms":[],"wecomArchiveMessages":[],"wecomArchive":{"last_seq":0,"last_pull_at":"","last_success_at":"","last_error":"","last_error_at":"","pulled_count":0,"decrypted_count":0,"ingested_count":0,"skipped_count":0,"updatedAt":""},"webhookEvents":[],"wecomProviderAuth":{"suite_ticket":"","suite_ticket_updated_at":"","suite_access_token":"","suite_token_expire_at":"","pre_auth_code":"","pre_auth_code_expire_at":"","last_error":"","last_sync_at":"","auth_corps":[],"install_sessions":[]},"saasDataModel":{"schema_version":"2026-06-13.5","updated_at":"2026-08-17T09:06:02.510Z","tenant_id":"tenant_default","corp_id":"","install_mode":"self_built_app","tenant_config":{"source":"runtime_env","billing_plan":"pilot","billing_owner":"service_provider","usage_budget_monthly_usd":0,"visible_scope_count":0,"authorized_permission_count":1,"updated_at":""},"readiness":"needs_config","contracts":{"schema_version":"2026-06-13.5","normalized_message_context":{"required":["tenant_id","corp_id","staff_userid","conversation_type","message"],"private_chat":["external_userid"],"group_chat":["roomid"],"note":"业务逻辑只依赖标准上下文，不直接依赖 self_built_app 或 third_party_standard_app。"},"tables":[{"name":"tenants","primary_key":"tenant_id","tenant_scoped":false,"secret_fields":[],"indexes":["corp_id","status, updated_at"],"retention":""},{"name":"app_users","primary_key":"user_id","tenant_scoped":false,"secret_fields":["password_hash","mfa_secret"],"indexes":["identity_provider, external_identity_id","mobile","email","status, updated_at"],"retention":"Store password and MFA material only through SecretStore references."},{"name":"tenant_auths","primary_key":"tenant_id","tenant_scoped":true,"secret_fields":["permanent_code","access_token_cache"],"indexes":["tenant_id","tenant_id, updated_at","corp_id","suite_id","auth_status"],"retention":""},{"name":"service_provider_auths","primary_key":"suite_id","tenant_scoped":false,"secret_fields":["suite_secret","suite_ticket","suite_access_token"],"indexes":["status, updated_at"],"retention":""},{"name":"archive_configs","primary_key":"tenant_id","tenant_scoped":true,"secret_fields":["msgaudit_secret","private_key"],"indexes":["tenant_id","tenant_id, updated_at","corp_id","archive_enabled, updated_at"],"retention":""},{"name":"archive_consent_records","primary_key":"consent_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, conversation_type, external_userid","tenant_id, conversation_type, roomid","tenant_id, consent_status"],"retention":""},{"name":"domain_configs","primary_key":"host_domain","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","domain_mode, verification_status"],"retention":""},{"name":"staff_users","primary_key":"staff_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, staff_userid","tenant_id, role","tenant_id, status"],"retention":""},{"name":"tenant_role_bindings","primary_key":"binding_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, user_id, status","tenant_id, staff_userid, status","tenant_id, role_code, status"],"retention":""},{"name":"customer_profiles","primary_key":"customer_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, external_userid","tenant_id, owner_staff_userid","tenant_id, intent_score","tenant_id, last_message_at"],"retention":""},{"name":"conversation_threads","primary_key":"thread_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, conversation_type, external_userid","tenant_id, conversation_type, roomid","tenant_id, last_message_at"],"retention":""},{"name":"message_records","primary_key":"message_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, created_at","tenant_id, source_key","tenant_id, customer_id, message_time","tenant_id, thread_id, message_time","tenant_id, conversation_type, message_time","tenant_id, role, message_time"],"retention":"Keep raw_json only while needed for audit and debugging."},{"name":"message_inbox","primary_key":"inbox_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, status, updated_at","tenant_id, customer_id, status"],"retention":""},{"name":"model_routes","primary_key":"route_id","tenant_scoped":true,"secret_fields":["provider_api_key"],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, module, status","tenant_id, provider, model"],"retention":""},{"name":"ai_suggestions","primary_key":"suggestion_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, customer_id, created_at","tenant_id, status, created_at"],"retention":""},{"name":"ai_memory_events","primary_key":"memory_event_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, created_at","tenant_id, customer_id, created_at","tenant_id, staff_userid, scope"],"retention":""},{"name":"company_rules","primary_key":"rule_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, template_id, status","tenant_id, scope, status"],"retention":""},{"name":"personal_style_memories","primary_key":"style_memory_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, staff_userid, status"],"retention":""},{"name":"knowledge_libraries","primary_key":"library_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, template_id, scope","tenant_id, status"],"retention":""},{"name":"knowledge_documents","primary_key":"document_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, library_id, status","tenant_id, content_hash"],"retention":""},{"name":"knowledge_chunks","primary_key":"chunk_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, created_at","tenant_id, document_id, chunk_index"],"retention":""},{"name":"task_records","primary_key":"task_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, staff_userid, status, due_at","tenant_id, customer_id, status"],"retention":""},{"name":"usage_records","primary_key":"usage_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, created_at","tenant_id, module, created_at","tenant_id, model, created_at"],"retention":"Aggregate monthly before pruning raw request details."},{"name":"audit_logs","primary_key":"audit_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, created_at","tenant_id, action, created_at","tenant_id, entity_type, entity_id"],"retention":"Keep operational audit at least 180 days."},{"name":"webhook_events","primary_key":"event_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, created_at","tenant_id, source, event_type","tenant_id, dedupe_key","tenant_id, status, created_at"],"retention":"Keep payload hashes and processing results for callback idempotency."},{"name":"sync_jobs","primary_key":"job_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, job_type, status","tenant_id, status, next_run_at","tenant_id, locked_until"],"retention":""},{"name":"billing_accounts","primary_key":"billing_account_id","tenant_scoped":true,"secret_fields":[],"indexes":["tenant_id","tenant_id, updated_at","tenant_id, billing_status"],"retention":""}],"permission_boundaries":{"sales":["own_customer_context","reply_suggestion","own_tasks"],"owner":["tenant_customers","team_tasks","knowledge_and_rules","usage_reports"],"provider":["tenant_installation","health_diagnostics","billing_and_support"]},"rule_layers":{"provider_template":"服务商维护行业模板和默认规则，不直接写入客户私有数据。","company_policy":"老板或管理员确认后的公司级话术规则，对本租户所有销售生效。","personal_style":"销售个人确认后的表达偏好，只影响本人回复风格。","observed_candidate":"AI 从人工修改中提取的候选规则，默认待审核。"}},"schema":{"database_target":"postgresql","table_count":27,"tenant_scoped_table_count":24,"secret_table_count":5},"integrity":{"status":"warn","summary":{"errors":0,"warnings":4,"contacts":1,"messages":1,"inbox":0,"archive_messages":0,"tasks":0,"current_tenant":"tenant_default"}},"migration_plan":{"phase_count":6,"current_phases":["phase_0_contract_freeze","phase_1_file_store_hardening"],"next_planned_phase":"phase_2_database_shadow_write"},"secret_store":{"storage_strategy":"encrypted_secret_store_with_env_fallback","write_api_enabled":true,"key_management":{"master_key_source":"local_key_file","store_file":"data/secret_store.json","key_file":"data/.secret_store_key","backup_required":true,"backup_note":"data/.secret_store_key 是解密 data/secret_store.json 的钥匙；启用加密库后必须纳入服务器备份，不能删除。","production_note":"正式多租户部署建议使用独立密钥管理或把本文件纳入受控备份。"},"security_checklist":["首次保存真实 Secret 后，备份 data/.secret_store_key。","不要把 data/secret_store.json 或 data/.secret_store_key 打进更新包。","迁移服务器时，密文文件和解密钥匙要一起迁移，否则历史密钥无法解密。"],"missing_required_now":["wecom_agent_secret","wecom_contact_secret","wecom_msgaudit_secret","wecom_archive_private_key"],"slots":[{"slot":"wecom_agent_secret","owner":"tenant","configured":false,"storage_mode":"missing"},{"slot":"wecom_contact_secret","owner":"tenant","configured":false,"storage_mode":"missing"},{"slot":"wecom_msgaudit_secret","owner":"tenant","configured":false,"storage_mode":"missing"},{"slot":"wecom_archive_private_key","owner":"tenant","configured":false,"storage_mode":"missing"},{"slot":"wecom_archive_private_key_file","owner":"tenant","configured":false,"storage_mode":"missing"},{"slot":"wecom_archive_pull_admin_token","owner":"tenant","configured":false,"storage_mode":"missing"},{"slot":"wecom_suite_secret","owner":"provider","configured":true,"storage_mode":"env_or_file"},{"slot":"wecom_provider_callback_token","owner":"provider","configured":false,"storage_mode":"missing"},{"slot":"wecom_provider_callback_aes_key","owner":"provider","configured":false,"storage_mode":"missing"},{"slot":"wecom_suite_ticket","owner":"provider","configured":false,"storage_mode":"missing"},{"slot":"deepseek_api_key","owner":"provider","configured":true,"storage_mode":"env_or_file"},{"slot":"openai_api_key","owner":"provider","configured":false,"storage_mode":"missing"},{"slot":"wecom_permanent_code","owner":"tenant","configured":false,"storage_mode":"missing"}]},"tenant_guard":{"enforcement":"read_filter_enabled_write_stamp_required","issue_count":2,"collections":[{"collection":"contacts","total":1,"current_tenant_count":1,"missing_tenant_count":1,"outside_tenant_count":0,"status":"legacy_compatible"},{"collection":"messages","total":1,"current_tenant_count":1,"missing_tenant_count":1,"outside_tenant_count":0,"status":"legacy_compatible"},{"collection":"wecomInbox","total":0,"current_tenant_count":0,"missing_tenant_count":0,"outside_tenant_count":0,"status":"tenant_scoped"},{"collection":"wecomArchiveMessages","total":0,"current_tenant_count":0,"missing_tenant_count":0,"outside_tenant_count":0,"status":"tenant_scoped"},{"collection":"wecomTasks","total":0,"current_tenant_count":0,"missing_tenant_count":0,"outside_tenant_count":0,"status":"tenant_scoped"},{"collection":"wecomRooms","total":0,"current_tenant_count":0,"missing_tenant_count":0,"outside_tenant_count":0,"status":"tenant_scoped"},{"collection":"memoryEvents","total":0,"current_tenant_count":0,"missing_tenant_count":0,"outside_tenant_count":0,"status":"tenant_scoped"},{"collection":"templateRuleCandidates","total":0,"current_tenant_count":0,"missing_tenant_count":0,"outside_tenant_count":0,"status":"tenant_scoped"},{"collection":"reports","total":0,"current_tenant_count":0,"missing_tenant_count":0,"outside_tenant_count":0,"status":"tenant_scoped"},{"collection":"salesAssets","total":0,"current_tenant_count":0,"missing_tenant_count":0,"outside_tenant_count":0,"status":"tenant_scoped"},{"collection":"salesPlaybooks","total":0,"current_tenant_count":0,"missing_tenant_count":0,"outside_tenant_count":0,"status":"tenant_scoped"},{"collection":"salesAnalyses","total":0,"current_tenant_count":0,"missing_tenant_count":0,"outside_tenant_count":0,"status":"tenant_scoped"},{"collection":"usageLogs","total":0,"current_tenant_count":0,"missing_tenant_count":0,"outside_tenant_count":0,"status":"tenant_scoped"},{"collection":"auditLogs","total":0,"current_tenant_count":0,"missing_tenant_count":0,"outside_tenant_count":0,"status":"tenant_scoped"},{"collection":"webhookEvents","total":0,"current_tenant_count":0,"missing_tenant_count":0,"outside_tenant_count":0,"status":"tenant_scoped"}]},"migration_preview":{"mode":"preview","changed_count":0,"collections_need_stamp":[{"collection":"contacts","will_stamp":1,"outside_tenant":0},{"collection":"messages","will_stamp":1,"outside_tenant":0}]},"normalized_context":{"required":["tenant_id","corp_id","staff_userid","conversation_type","message"],"private_chat":["external_userid"],"group_chat":["roomid"],"note":"业务逻辑只依赖标准上下文，不直接依赖 self_built_app 或 third_party_standard_app。"},"tables":{"tenants":[{"tenant_id":"tenant_default","corp_id":"","install_mode":"self_built_app","auth_status":"incomplete","visible_scope_count":0,"authorized_permissions":["sidebar_js_sdk"]}],"tenant_auths":[{"tenant_id":"tenant_default","corp_id":"","install_mode":"self_built_app","agent_id":"","suite_id":"","permanent_code_configured":false,"access_token_cached":false,"token_expire_at":null,"auth_status":"incomplete","visible_scope":[],"authorized_permissions":["sidebar_js_sdk"]}],"service_provider_auths":[{"suite_id":"","suite_secret_configured":true,"suite_ticket_configured":false,"suite_access_token_cached":false,"token_expire_at":null,"instruction_callback_url":"","data_callback_url":"","install_callback_url":"","auth_corp_count":0,"install_session_count":0,"pending_install_session_count":0,"auth_status_summary":{}}],"third_party_tenant_auths":[],"archive_configs":[{"tenant_id":"tenant_default","corp_id":"","archive_enabled":false,"msgaudit_secret_configured":false,"private_key_configured":false,"public_key_version":"","trusted_ip_mode":"provider_server","archive_storage_mode":"local","last_seq":0}],"domain_configs":[{"host_domain":"tp1.copilot.timeflowai.com","tenant_id":"tenant_default","domain_mode":"provider_domain","ssl_status":"configured","verification_status":"pending"}],"staff_users_preview":[],"customer_profiles_preview":[{"customer_id":"ct_4d5a5c4afa51963b","tenant_id":"tenant_default","corp_id":"","external_userid":"","owner_staff_userid":"","display_name":"测试客户","template_id":"wecom_service_provider","stage":"首次接触","intent_level":"未判断","add_time":"","source":"local_demo","updated_at":"2026-08-17T06:43:54.453Z"}],"message_records":{"primary_table":"messages","archive_table":"wecomArchiveMessages","inbox_table":"wecomInbox","message_count":1,"archive_message_count":0,"inbox_count":0,"private_message_count":1,"group_message_count":0,"tenant_scoped":true,"preview":[{"message_id":"msg_f178a5469a8cf3f8","tenant_id":"tenant_default","corp_id":"","contact_id":"ct_4d5a5c4afa51963b","role":"system_note","conversation_type":"","source_provider":"","message_preview":"这是一个本地 Demo。先粘贴客户消息，再生成草稿，最后确认已发送。","created_at":"2026-08-17T06:43:54.454Z"}]},"ai_analysis_results":{"suggestion_count":0,"memory_event_count":0,"rule_candidate_count":0,"latest_suggestions":[]},"knowledge_libraries":{"template_id":"wecom_service_provider","template_knowledge_dir":"prompts/templates/wecom_service_provider/knowledge","tenant_scoped_customer_knowledge":true},"task_records":{"table":"wecomTasks","open_task_count":0,"total_task_count":0,"preview":[]},"audit_logs":{"table":"auditLogs","total_count":0,"preview":[]},"usage_records":{"table":"usageLogs","total_count":0,"estimated_cost":0,"preview":[]},"model_routes":{"table":"tenant_configs.model_routes","total_count":4,"preview":[{"route_id":"sales_reply","tenant_id":"tenant_default","scene":"sales_reply","label":"实时回复","provider":"deepseek","model":"deepseek-chat","max_tokens":1200,"customer_facing":true},{"route_id":"learning","tenant_id":"tenant_default","scene":"learning","label":"学习沉淀","provider":"deepseek","model":"deepseek-chat","max_tokens":600,"customer_facing":false},{"route_id":"analysis","tenant_id":"tenant_default","scene":"analysis","label":"分析复盘","provider":"deepseek","model":"deepseek-chat","max_tokens":1200,"customer_facing":false},{"route_id":"utility","tenant_id":"tenant_default","scene":"utility","label":"轻量工具","provider":"deepseek","model":"deepseek-chat","max_tokens":400,"customer_facing":false}]},"webhook_events":{"table":"webhookEvents","total_count":0,"preview":[]}},"counts":{"tenants":1,"tenant_auths":1,"service_provider_auths":1,"archive_configs":1,"domain_configs":1,"staff_users":0,"customer_profiles":1,"message_records":1,"inbox_items":0,"ai_suggestions":0,"memory_events":0,"rule_candidates":0,"knowledge_libraries":1,"task_records":0,"audit_logs":0,"usage_records":0,"model_routes":4,"webhook_events":0,"private_messages":1,"group_messages":0},"legacy_mapping":{"contacts":"customer_profiles","messages":"message_records","wecomInbox":"message_inbox","wecomArchiveMessages":"archive_message_records","wecomTasks":"task_records","memoryEvents":"ai_memory_events","templateRuleCandidates":"company_rule_candidates","auditLogs":"audit_logs","usageLogs":"usage_records","tenantConfigModelRoutes":"model_routes","webhookEvents":"webhook_events"},"next_steps":["把文件存储替换或同步到数据库表。","补第三方应用 install/auth/callback/permanent_code 流程。","把知识库和规则库按 tenant_id、company_scope、personal_scope 分层。","给服务商后台增加租户列表、授权状态、用量和故障诊断。"]},"saasLaunchReadiness":{"schema_version":"2026-06-13.5","generated_at":"2026-08-17T09:06:02.526Z","stage":"blocked_before_production","stage_label":"上线前有阻塞项","readiness_score":63,"status":"blocked","status_label":"有阻塞","tenant":{"tenant_id":"tenant_default","corp_id":"","install_mode":"self_built_app","auth_status":"incomplete","visible_scope_count":0,"authorized_permissions":["sidebar_js_sdk"]},"metrics":{"contacts":1,"staff_users":0,"messages":1,"private_messages":1,"group_messages":0,"inbox_items":0,"tasks":0,"usage_records":0,"rule_candidates":0,"audit_logs":0},"phase_summary":[{"id":"tenant_foundation","label":"多租户底座","status":"missing","status_label":"阻塞","score":80,"ready":4,"pending":0,"missing":1,"total":5},{"id":"data_security","label":"数据隔离与安全","status":"pending","status_label":"待完善","score":50,"ready":0,"pending":4,"missing":0,"total":4},{"id":"wecom_live_chain","label":"自建应用实测链路","status":"pending","status_label":"待完善","score":33,"ready":1,"pending":2,"missing":3,"total":6},{"id":"ai_billing","label":"模型路由与计费","status":"pending","status_label":"待完善","score":88,"ready":3,"pending":1,"missing":0,"total":4},{"id":"third_party_app","label":"第三方标准应用预留","status":"pending","status_label":"待完善","score":60,"ready":1,"pending":4,"missing":0,"total":5},{"id":"provider_operations","label":"服务商运营与上架材料","status":"pending","status_label":"待完善","score":75,"ready":2,"pending":2,"missing":0,"total":4}],"phases":[{"id":"tenant_foundation","label":"多租户底座","description":"统一把不同安装模式转成 tenant_id + corp_id + staff_userid + external_userid/roomid + message。","status":"missing","score":80,"summary":{"ready":4,"pending":0,"missing":1,"total":5},"items":[{"id":"tenant_id","label":"租户标识","status":"ready","detail":"tenant_default","action":"为每个客户企业生成稳定 tenant_id。","owner":"service_provider","stage":"third_party_ready","required_for":["self_built_app","third_party_standard_app"],"blocker":true,"evidence":{}},{"id":"corp_id","label":"企业标识","status":"missing","detail":"缺少 corp_id，无法绑定企微企业。","action":"补 WECOM_CORP_ID 或第三方授权后的企业 corp_id。","owner":"service_provider","stage":"third_party_ready","required_for":["self_built_app","third_party_standard_app"],"blocker":true,"evidence":{}},{"id":"install_mode","label":"安装模式抽象","status":"ready","detail":"当前：self_built_app","action":"保持业务逻辑不直接依赖安装模式。","owner":"service_provider","stage":"third_party_ready","required_for":["third_party_ready"],"blocker":false,"evidence":{}},{"id":"normalized_context","label":"统一业务上下文","status":"ready","detail":"tenant_id + corp_id + staff_userid + external_userid + message","action":"","owner":"service_provider","stage":"third_party_ready","required_for":["third_party_ready"],"blocker":false,"evidence":{}},{"id":"data_contract","label":"数据契约","status":"ready","detail":"27 张目标表，24 张租户隔离表。","action":"后续迁移到数据库时按这份结构建表。","owner":"service_provider","stage":"third_party_ready","required_for":["database_migration"],"blocker":false,"evidence":{}}]},{"id":"data_security","label":"数据隔离与安全","description":"保证服务商能管多个企业，但客户数据不会串租户，敏感配置不从前端泄露。","status":"pending","score":50,"summary":{"ready":0,"pending":4,"missing":0,"total":4},"items":[{"id":"tenant_guard","label":"租户隔离体检","status":"pending","detail":"旧数据还有 2 条可补 tenant_id/corp_id，兼容可运行。","action":"执行或保留租户补标迁移。","owner":"service_provider","stage":"third_party_ready","required_for":["third_party_standard_app"],"blocker":false,"evidence":{}},{"id":"secret_boundary","label":"敏感配置边界","status":"pending","detail":"当前缺：wecom_agent_secret、wecom_contact_secret、wecom_msgaudit_secret、wecom_archive_private_key","action":"正式 SaaS 前迁到加密配置库。","owner":"service_provider","stage":"third_party_ready","required_for":["third_party_standard_app","private_deployment"],"blocker":false,"evidence":{}},{"id":"audit_logs","label":"审计日志","status":"pending","detail":"0 条关键操作记录。","action":"把授权、规则审核、模型配置、计费导出等动作都写入审计。","owner":"service_provider","stage":"third_party_ready","required_for":["operations"],"blocker":false,"evidence":{}},{"id":"integrity","label":"数据完整性","status":"pending","detail":"0 个错误，4 个提醒。","action":"把错误项清掉，提醒项可放入上线前待办。","owner":"service_provider","stage":"third_party_ready","required_for":["production"],"blocker":false,"evidence":{}}]},{"id":"wecom_live_chain","label":"自建应用实测链路","description":"第一阶段继续用自有企微跑真实侧边栏、客户识别和会话存档。","status":"pending","score":33,"summary":{"ready":1,"pending":2,"missing":3,"total":6},"items":[{"id":"tenant_auth","label":"自建应用基础配置","status":"missing","detail":"缺少 corp_id、agent_id。","action":"补齐 WECOM_CORP_ID / WECOM_AGENT_ID 等配置。","owner":"service_provider","stage":"third_party_ready","required_for":["self_built_app"],"blocker":false,"evidence":{}},{"id":"js_sdk","label":"当前客户识别","status":"missing","detail":"缺少 WECOM_CORP_ID、WECOM_AGENT_ID、WECOM_AGENT_SECRET。","action":"先完成可信域名、AgentId、Secret 配置。","owner":"service_provider","stage":"third_party_ready","required_for":["self_built_app"],"blocker":false,"evidence":{}},{"id":"contact_profile","label":"客户详情接口","status":"missing","detail":"缺少 WECOM_CONTACT_SECRET，只能识别 external_userid，无法读取客户名字。","action":"在企业微信客户联系 API 中获取 Secret，并写入服务器 /opt/wecom-sidebar/.env.local。","owner":"service_provider","stage":"third_party_ready","required_for":["self_built_app","third_party_standard_app"],"blocker":false,"evidence":{}},{"id":"archive","label":"会话存档","status":"pending","detail":"当前未开通，先用手动粘贴或测试消息入口。","action":"客户开通会话内容存档后，补 secret、私钥和公钥版本。","owner":"service_provider","stage":"third_party_ready","required_for":["message_archive"],"blocker":false,"evidence":{}},{"id":"archive_gateway","label":"SDK 解密网关","status":"pending","detail":"会话存档开启后需要 SDK 网关或解密服务。","action":"保持 Go 网关常驻，并把地址写入 WECOM_ARCHIVE_GATEWAY_URL。","owner":"service_provider","stage":"third_party_ready","required_for":["message_archive"],"blocker":false,"evidence":{}},{"id":"private_group_split","label":"私聊/群聊分流","status":"ready","detail":"私聊 1 条，群聊 0 条；群聊不混入私聊回复上下文。","action":"","owner":"service_provider","stage":"third_party_ready","required_for":["ai_context"],"blocker":false,"evidence":{}}]},{"id":"ai_billing","label":"模型路由与计费","description":"不同功能走不同模型，按租户记录用量，服务商可以给客户配套餐。","status":"pending","score":88,"summary":{"ready":3,"pending":1,"missing":0,"total":4},"items":[{"id":"model_provider","label":"模型供应商","status":"ready","detail":"deepseek / deepseek-chat","action":"补 DeepSeek 或 OpenAI Key，并为客户选择模型套餐。","owner":"service_provider","stage":"third_party_ready","required_for":["ai_generation"],"blocker":false,"evidence":{}},{"id":"model_routes","label":"功能模型路由","status":"ready","detail":"4/4 个场景可用。","action":"把实时回复、学习沉淀、复盘分析、轻量工具分别配置模型。","owner":"service_provider","stage":"third_party_ready","required_for":["billing"],"blocker":false,"evidence":{}},{"id":"usage_logs","label":"用量记录","status":"pending","detail":"还没有今日模型调用记录。","action":"真实演示时继续沉淀调用记录，形成服务商计费清单。","owner":"service_provider","stage":"third_party_ready","required_for":["billing"],"blocker":false,"evidence":{}},{"id":"rule_governance","label":"规则治理","status":"ready","detail":"0 条待审核，0 条已采纳；个人风格/公司规则/风险禁忌已分层。","action":"","owner":"service_provider","stage":"third_party_ready","required_for":["ai_learning"],"blocker":false,"evidence":{}}]},{"id":"third_party_app","label":"第三方标准应用预留","description":"服务商模式上线后，用授权安装和回调把客户企业接进来。","status":"pending","score":60,"summary":{"ready":1,"pending":4,"missing":0,"total":5},"items":[{"id":"suite_base","label":"Suite 基础信息","status":"pending","detail":"暂未配置 suite_id/suite_secret。","action":"创建第三方应用后补 suite_id、suite_secret。","owner":"service_provider","stage":"third_party_ready","required_for":["third_party_standard_app"],"blocker":false,"evidence":{}},{"id":"suite_ticket","label":"Suite Ticket 回调","status":"pending","detail":"未接入 suite_ticket 回调。","action":"接入企微服务商指令回调并解密 ticket。","owner":"service_provider","stage":"third_party_ready","required_for":["third_party_standard_app"],"blocker":false,"evidence":{}},{"id":"install_url","label":"授权安装入口","status":"pending","detail":"暂未配置 WECOM_PROVIDER_INSTALL_URL。","action":"服务商后台生成客户授权安装链接。","owner":"service_provider","stage":"third_party_ready","required_for":["third_party_standard_app"],"blocker":false,"evidence":{}},{"id":"callbacks","label":"授权/数据/安装回调","status":"ready","detail":"已生成 3/3 个回调地址；正式联调还需验签解密。","action":"补企业微信回调验签、解密、auth_code 换 permanent_code。","owner":"service_provider","stage":"third_party_ready","required_for":["third_party_standard_app"],"blocker":false,"evidence":{}},{"id":"permanent_code_flow","label":"Permanent Code 流程","status":"pending","detail":"当前自建应用测试阶段不需要，第三方安装后必须自动换取。","action":"授权回调中保存 permanent_code，并按租户刷新 access_token。","owner":"service_provider","stage":"third_party_ready","required_for":["third_party_standard_app"],"blocker":false,"evidence":{}}]},{"id":"provider_operations","label":"服务商运营与上架材料","description":"让服务商能交付、排障、计费、给客户解释数据安全。","status":"pending","score":75,"summary":{"ready":2,"pending":2,"missing":0,"total":4},"items":[{"id":"admin_roles","label":"销售/老板/服务商权限视角","status":"ready","detail":"后台已有销售、老板、服务商三种视角。","action":"正式上线前接入真实账号和权限。","owner":"service_provider","stage":"third_party_ready","required_for":["operations"],"blocker":false,"evidence":{}},{"id":"support_diagnostics","label":"交付诊断接口","status":"ready","detail":"已提供 runtime-health、data-model、integrity、tenant-guard、launch-readiness。","action":"","owner":"service_provider","stage":"third_party_ready","required_for":["operations"],"blocker":false,"evidence":{}},{"id":"privacy_materials","label":"隐私与数据安全说明","status":"pending","detail":"需要形成对客户可见的会话存档、数据隔离、模型计费、人工确认发送说明。","action":"整理成上架材料和服务商交付手册。","owner":"service_provider","stage":"third_party_ready","required_for":["third_party_listing"],"blocker":false,"evidence":{}},{"id":"pricing_materials","label":"套餐与计费清单","status":"pending","detail":"后台已有计费结构，仍需做客户可读的价格页。","action":"服务商后台增加客户账单导出和套餐说明。","owner":"service_provider","stage":"third_party_ready","required_for":["billing"],"blocker":false,"evidence":{}}]}],"blockers":[{"phase_id":"tenant_foundation","phase_label":"多租户底座","id":"corp_id","label":"企业标识","detail":"缺少 corp_id，无法绑定企微企业。","action":"补 WECOM_CORP_ID 或第三方授权后的企业 corp_id。"}],"next_actions":[{"phase_id":"tenant_foundation","phase_label":"多租户底座","item_id":"corp_id","label":"企业标识","action":"补 WECOM_CORP_ID 或第三方授权后的企业 corp_id。","status":"missing"},{"phase_id":"data_security","phase_label":"数据隔离与安全","item_id":"tenant_guard","label":"租户隔离体检","action":"执行或保留租户补标迁移。","status":"pending"},{"phase_id":"data_security","phase_label":"数据隔离与安全","item_id":"secret_boundary","label":"敏感配置边界","action":"正式 SaaS 前迁到加密配置库。","status":"pending"},{"phase_id":"data_security","phase_label":"数据隔离与安全","item_id":"audit_logs","label":"审计日志","action":"把授权、规则审核、模型配置、计费导出等动作都写入审计。","status":"pending"},{"phase_id":"data_security","phase_label":"数据隔离与安全","item_id":"integrity","label":"数据完整性","action":"把错误项清掉，提醒项可放入上线前待办。","status":"pending"},{"phase_id":"wecom_live_chain","phase_label":"自建应用实测链路","item_id":"tenant_auth","label":"自建应用基础配置","action":"补齐 WECOM_CORP_ID / WECOM_AGENT_ID 等配置。","status":"missing"},{"phase_id":"wecom_live_chain","phase_label":"自建应用实测链路","item_id":"js_sdk","label":"当前客户识别","action":"先完成可信域名、AgentId、Secret 配置。","status":"missing"},{"phase_id":"wecom_live_chain","phase_label":"自建应用实测链路","item_id":"contact_profile","label":"客户详情接口","action":"在企业微信客户联系 API 中获取 Secret，并写入服务器 /opt/wecom-sidebar/.env.local。","status":"missing"},{"phase_id":"wecom_live_chain","phase_label":"自建应用实测链路","item_id":"archive","label":"会话存档","action":"客户开通会话内容存档后，补 secret、私钥和公钥版本。","status":"pending"},{"phase_id":"wecom_live_chain","phase_label":"自建应用实测链路","item_id":"archive_gateway","label":"SDK 解密网关","action":"保持 Go 网关常驻，并把地址写入 WECOM_ARCHIVE_GATEWAY_URL。","status":"pending"}],"listing_checklist":{"schema_version":"2026-06-13.5","generated_at":"2026-08-17T09:06:02.526Z","tenant_id":"tenant_default","corp_id":"","install_mode":"self_built_app","score":54,"summary":{"ready":7,"total":13,"pending":6},"sections":[{"id":"product_positioning","label":"产品与销售材料","description":"让服务商伙伴能讲清楚企业微信基础能力、AI 副驾价值和两者的关系。","status":"pending","score":83,"summary":{"ready":2,"pending":1,"missing":0,"total":3},"items":[{"id":"wecom_ai_story","label":"企业微信 + AI 副驾销售故事","status":"ready","status_label":"已就绪","owner":"service_provider","output":"一页式价值说明：先帮客户用好企微，再用 AI 副驾提升销售跟进效率。","note":"可继续用真实销售模板迭代话术。"},{"id":"pricing_packaging","label":"套餐与报价口径","status":"pending","status_label":"待完善","owner":"owner","output":"企微代下单优惠、AI 副驾搭建费、账号年费、模型按量计费说明。","note":"还需形成客户可读的价格页和账单导出。"},{"id":"service_identity","label":"服务商身份边界","status":"ready","status_label":"已就绪","owner":"service_provider","output":"明确只能说企业微信官方服务商，不能说腾讯或企微工作人员。","note":"销售模板已按该边界约束。"}]},{"id":"authorization_delivery","label":"授权与交付材料","description":"把自建应用测试链路和未来第三方标准应用授权链路拆清楚。","status":"pending","score":67,"summary":{"ready":1,"pending":2,"missing":0,"total":3},"items":[{"id":"self_built_playbook","label":"自建应用配置手册","status":"pending","status_label":"待完善","owner":"delivery","output":"可信域名、客户联系 API、会话存档、可信 IP、侧边栏入口配置步骤。","note":"当前阶段仍靠它跑真实链路。"},{"id":"third_party_install","label":"第三方授权安装说明","status":"pending","status_label":"待完善","owner":"service_provider","output":"授权链接、suite_ticket、auth_code、permanent_code、授权变更和卸载回调说明。","note":"等服务商后台字段补齐后继续。"},{"id":"runtime_diagnostics","label":"部署诊断清单","status":"ready","status_label":"已就绪","owner":"delivery","output":"runtime-health、launch-readiness、tenant-guard、integrity、billing usage 等诊断入口。","note":"用于交付和售后排障。"}]},{"id":"privacy_security","label":"隐私与数据安全材料","description":"给客户解释会话存档提醒、数据隔离、模型调用和人工确认发送边界。","status":"pending","score":75,"summary":{"ready":2,"pending":2,"missing":0,"total":4},"items":[{"id":"archive_notice","label":"会话存档客户提醒说明","status":"ready","status_label":"已就绪","owner":"owner","output":"说明客户会看到企微官方存档提醒，以及哪些消息会进入分析。","note":"不承诺隐藏企微官方提醒。"},{"id":"tenant_isolation","label":"租户隔离说明","status":"pending","status_label":"待完善","owner":"engineering","output":"tenant_id/corp_id 隔离、敏感字段不回传前端、跨租户体检。","note":"正式 SaaS 前建议迁到数据库和加密 Secret Store。"},{"id":"manual_send_boundary","label":"人工确认发送说明","status":"ready","status_label":"已就绪","owner":"service_provider","output":"AI 只给建议并填入输入框，员工确认后手动发送。","note":"符合当前合规和企微客户端限制。"},{"id":"model_data_policy","label":"模型调用与数据使用说明","status":"pending","status_label":"待完善","owner":"owner","output":"说明不同功能可选模型、按量计费、调用记录可追踪。","note":"后续补客户可导出的账单明细。"}]},{"id":"operations_success","label":"运营与客户成功材料","description":"让服务商能管理客户、做续费、做效果复盘，而不是只交付一个页面。","status":"pending","score":83,"summary":{"ready":2,"pending":1,"missing":0,"total":3},"items":[{"id":"role_console","label":"销售/老板/服务商后台视角","status":"ready","status_label":"已就绪","owner":"engineering","output":"三类角色入口：销售看跟进，老板审规则，服务商看配置和用量。","note":"后续接真实账号权限。"},{"id":"rule_governance","label":"规则审核 SOP","status":"ready","status_label":"已就绪","owner":"owner","output":"个人风格、公司规则、风险禁忌分层；公司和风险规则由老板/服务商审核。","note":"后续增加审核通知和批量处理。"},{"id":"usage_billing","label":"用量与成本复盘","status":"pending","status_label":"待完善","owner":"service_provider","output":"按租户、场景、模型统计调用量和估算成本。","note":"真实演示时继续沉淀调用记录。"}]}],"links":{"launch_readiness":"/api/saas/launch-readiness","listing_checklist":"/api/saas/listing-checklist","runtime_health":"/api/wecom/runtime-health","billing_usage":"/api/billing/usage"}},"delivery_materials":{"schema_version":"2026-06-13.5","generated_at":"2026-08-17T09:06:02.526Z","tenant_id":"tenant_default","corp_id":"","install_mode":"self_built_app","summary":{"sections":5,"materials":14,"ready":14,"tenant_mode":"self_built_app"},"sections":[{"id":"customer_authorization","label":"客户授权说明","description":"给客户解释为什么要开企微能力、开哪些能力，以及 AI 副驾不会绕过人工确认。","items":[{"id":"customer_intro","label":"客户开场说明","audience":"客户老板 / IT / 销售负责人","format":"微信沟通话术","summary":"解释企业微信和 AI 副驾的关系。","body":"我们是企业微信官方服务商，不是腾讯或企微工作人员。我们先帮你把企业微信的客户承接、客户管理、会话内容存档等基础能力跑顺，再接入销售 AI 副驾。\nAI 副驾不会替销售乱发消息，它会根据当前客户、历史沟通和知识库生成建议回复，由销售人工确认后再发送。\n如果你们想先小范围验证，可以先选 2-5 个销售账号做试点，看回复质量、跟进效率和线索转化有没有改善，再决定是否扩大。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["身份边界","销售开场"],"usage":"服务商首次介绍产品时使用。","caution":""},{"id":"customer_authorization_scope","label":"客户授权范围说明","audience":"客户管理员 / IT","format":"交付说明","summary":"列出需要客户配合开通的能力。","body":"为了让 AI 副驾在企业微信侧边栏里识别当前客户，并基于真实沟通生成建议，需要客户授权或配置以下能力：\n1. 企业微信自建应用或第三方应用授权，用于打开侧边栏和识别当前员工、当前客户。\n2. 客户联系 API，用于读取客户基本资料、添加时间、跟进关系等信息。\n3. 会话内容存档，用于合规获取已授权员工与客户的沟通记录，供画像、意向判断和建议回复使用。\n4. 可信域名、回调地址、可信 IP 等基础配置，用于保证企业微信能正常访问和回调。\n客户可以自行决定开通范围，试点阶段建议先开少量销售账号，确认效果后再扩展。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["授权","交付"],"usage":"客户管理员问需要开什么权限时使用。","caution":""},{"id":"archive_customer_notice","label":"会话存档提醒说明","audience":"客户负责人 / 销售团队","format":"风险解释","summary":"解释企微官方提醒不能隐藏。","body":"会话内容存档是企业微信官方能力。开通后，客户或群成员可能会看到企业微信官方的存档提醒，这是合规要求，服务商和 AI 副驾都不能隐藏或绕过。\n这条提醒的目的，是让对方知道本次沟通可能会被企业用于服务质量、合规管理和客户跟进。我们建议销售在客户问起时正面解释：这是企业微信的合规存档能力，不是私自录音或私自监控。\nAI 副驾只使用企业已经合规获取的数据来生成建议，不会把客户数据公开给其他客户企业。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["会话存档","合规"],"usage":"","caution":"不要承诺可以取消或隐藏企微官方提醒。"}],"count":3},{"id":"provider_delivery","label":"服务商交付 SOP","description":"给服务商伙伴一套从售前、试点、部署到验收的交付路径。","items":[{"id":"pilot_delivery_sop","label":"试点交付流程","audience":"服务商交付顾问","format":"SOP","summary":"服务商带客户跑通试点的步骤。","body":"1. 售前确认：确认客户行业、销售人数、当前是否使用企业微信、是否已有客户联系和会话存档需求。\n2. 选试点范围：建议先选 2-5 个销售账号、1 个销售场景和 1 套核心产品资料，不要一开始全员铺开。\n3. 配基础能力：配置企业微信应用、侧边栏入口、客户联系 API、可信域名、可信 IP；如需要真实消息分析，再配置会话内容存档。\n4. 建知识库：导入产品介绍、报价口径、案例、FAQ、风险禁忌、公司统一话术。\n5. 跑真实对话：销售在侧边栏里看建议、改建议、确认发送；系统记录人工修改，用于训练个人风格和公司规则候选。\n6. 复盘验收：看回复速度、回复质量、跟进任务、客户意向识别、模型调用成本，再决定是否扩大账号数。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["交付","试点"],"usage":"服务商内部交付培训使用。","caution":""},{"id":"go_live_checklist","label":"上线检查清单","audience":"服务商交付 / 客户管理员","format":"检查项","summary":"上线前排查关键配置。","body":"上线前建议逐项确认：\n1. 侧边栏 URL 可正常打开，HTTPS 证书有效，域名已完成可信域名校验。\n2. 客户联系 API Secret 已配置，能读取当前客户名称和添加时间。\n3. 会话内容存档 Secret、私钥、公钥版本、可信 IP 已配置，并能拉取到测试消息。\n4. 销售账号可见范围正确，员工只看到自己有权限处理的客户。\n5. 知识库已导入，回复建议不应凭空承诺价格、效果或腾讯身份。\n6. AI 建议默认走人工确认发送，不做绕过企微客户端的强自动发送。\n7. 后台能看到模型调用记录、用量和租户配置状态。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["上线","排障"],"usage":"上线前逐条核对。","caution":""},{"id":"troubleshooting_entry","label":"交付排障入口","audience":"服务商技术 / 售后","format":"排障说明","summary":"快速定位慢、识别失败、存档失败。","body":"排障优先看后台中控台：上线准备、服务商配置、会话存档、模型与计费。\n常见问题定位：\n1. 客户名识别慢：先看客户联系 API Secret、可信 IP、企微 JS-SDK 可信域名是否正确。\n2. 新消息拉取慢：看会话存档是否已开启、网关是否在线、最近 seq 是否推进。\n3. 回复质量差：看模板知识库、公司规则、风险禁忌、AI 学习候选规则是否被采纳。\n4. 费用异常：看模型路由和场景用量，不同功能可配置不同模型。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["售后","排障"],"usage":"服务商售后响应时使用。","caution":""}],"count":3},{"id":"security_compliance","label":"隐私与数据安全","description":"给客户说明数据边界、租户隔离、模型调用和停用后的处理方式。","items":[{"id":"privacy_statement","label":"隐私与数据使用说明","audience":"客户老板 / 法务 / IT","format":"客户说明","summary":"解释数据怎么用、不会怎么用。","body":"AI 副驾只围绕销售服务场景使用客户授权的数据，例如客户基本信息、已存档的沟通记录、销售确认发送的回复、客户阶段和跟进任务。\n数据按客户企业隔离，核心业务入口统一为 tenant_id、corp_id、staff_userid、external_userid 和 message，不会把 A 公司的客户数据展示给 B 公司。\n模型调用会记录场景、模型、token 估算和费用，用于成本核算和问题追踪。敏感配置不应直接暴露在前端页面。\n客户停止使用后，可以按合同约定停用应用、停止拉取会话存档，并导出或清理相关业务数据。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["隐私","数据隔离"],"usage":"客户担心数据安全时使用。","caution":""},{"id":"manual_send_policy","label":"人工确认发送边界","audience":"客户老板 / 销售负责人","format":"产品边界","summary":"明确不做全自动乱发。","body":"当前产品默认不做绕过企业微信客户端的全自动发送。AI 会生成建议并填入输入框，员工需要自己确认后点击发送。\n这么设计有三个原因：第一，销售最终要对客户沟通负责；第二，企业微信客户端没有开放让 H5 页面随意替员工点击发送的标准能力；第三，人工确认能避免错误承诺、价格错误和不合规表达。\n后续可以做更强的自动化，例如任务提醒、建议话术、资料推荐、复制/填入输入框，但正式发送仍建议保留人工确认。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["发送边界","合规"],"usage":"","caution":"不要把 AI 副驾卖成无人值守群发工具。"},{"id":"rule_governance_policy","label":"规则审核说明","audience":"客户老板 / 销售主管","format":"管理机制","summary":"解释个人风格、公司规则、风险禁忌。","body":"销售修改 AI 建议后，系统会总结可学习的规则。个人表达习惯可以沉淀为个人风格；涉及公司统一口径、报价边界、承诺边界、风险禁忌的内容，建议进入老板或主管审核。\n公司规则采纳后，会影响该公司后续 AI 建议；风险禁忌优先级最高，会优先约束回复，避免销售误承诺、冒充腾讯、隐瞒存档提醒、夸大效果等问题。\n如果规则和知识库冲突，建议优先级为：风险禁忌 > 公司规则 > 知识库事实 > 个人风格。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["AI训练","规则审核"],"usage":"给老板解释后台审核价值。","caution":""}],"count":3},{"id":"pricing_and_billing","label":"套餐与计费","description":"把企业微信代下单、AI 副驾费用和模型按量计费说清楚。","items":[{"id":"pricing_overview","label":"报价口径","audience":"客户老板 / 采购","format":"报价说明","summary":"统一报价方式。","body":"企业微信相关产品由我们协助客户代下单，新购客户可按 7 折口径沟通，续费客户可按 8 折口径沟通，最终以客户实际开通清单为准。\nAI 副驾：搭建费 3980 元，账号年使用费 980 元/账号/年；模型算力按量计费，后台提供调用记录和费用清单。\n建议试点阶段先少量账号开通，跑通一个核心业务场景；如果效果明确，再扩展到更多销售和更多业务线。\n模型算力不是固定包死，而是按实际调用量统计。后台可以按租户、场景、模型查看用量，方便客户控制成本。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["报价","套餐"],"usage":"客户问价格时使用。","caution":""},{"id":"billing_admin_note","label":"后台计费清单说明","audience":"服务商 / 客户管理员","format":"运营说明","summary":"说明模型路由和用量账单。","body":"当前系统已记录模型调用数据 0 条，后续可按客户企业、场景、模型和日期查看。\n不同功能可以配置不同模型，例如实时回复建议用速度稳定的模型，复盘分析和知识整理用更强的模型。客户不用自己理解太多模型细节，服务商可以预设套餐。\n建议套餐不要分得太碎：基础版可覆盖建议回复和客户画像；专业版增加会话存档分析、主动任务、AI 学习和老板审核；服务商版增加多客户企业管理和交付诊断。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["模型路由","计费"],"usage":"服务商配置套餐和账单时使用。","caution":""}],"count":2},{"id":"sales_enablement","label":"服务商销售话术","description":"帮助服务商伙伴把企业微信和 AI 副驾一起卖，但不过度书面化。","items":[{"id":"sales_strategy","label":"销售策略","audience":"服务商销售","format":"销售打法","summary":"先企微后 AI，顺势切入。","body":"销售时不要一上来只讲 AI。更顺的路径是：先问客户现在怎么接客户、销售用个人微信还是企微、客户资料和聊天记录有没有沉淀、销售回复是否统一。\n如果客户还没用好企业微信，先卖企微基础能力：客户承接、客户管理、员工离职继承、会话内容存档、客户群运营。\n当客户意识到“客户都在聊天里、销售回复不可控、管理者看不到过程”后，再切入 AI 副驾：我们现在就是用这个工具辅助回复，它能看客户阶段、帮销售组织回复、提醒跟进，还能把优秀话术沉淀下来。\n成交上建议先做试点，不要一口气推全员。试点越小、路径越清晰，客户越容易答应。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["销售策略","服务商"],"usage":"服务商销售培训使用。","caution":""},{"id":"sales_chat_script","label":"客户聊天示例话术","audience":"服务商销售","format":"微信话术","summary":"更自然地说明价值。","body":"你们现在客户主要是在个人微信、企业微信，还是多个渠道都有？\n如果客户已经在微信里咨询，其实最大的问题不是有没有 CRM，而是销售有没有及时、准确、统一地跟进。\n企微可以先解决客户资产和合规管理的问题；AI 副驾解决的是销售怎么回、下一步怎么推进、老板怎么把优秀话术沉淀下来。\n我现在跟你沟通时也在用我们的 AI 副驾做辅助，它不会替我乱发，但会根据客户问题提醒我该讲什么、下一步怎么问。你要不要先拿 2-3 个账号试一下？我们可以先搭起来，看效果再决定扩大。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["聊天话术","试点成交"],"usage":"销售跟客户微信沟通时可参考。","caution":""},{"id":"identity_boundary","label":"身份边界禁忌","audience":"服务商销售","format":"禁忌表达","summary":"避免身份误导。","body":"可以说：我们是企业微信官方服务商，可以帮你做企微开通、配置、培训和后续 AI 副驾接入。\n不要说：我们是腾讯的人、企微官方员工、可以代表腾讯承诺政策、可以隐藏企业微信官方合规提醒。\n可以说：企业微信产品和政策以官方页面和实际开通为准，我们负责服务和交付。\n可以说：AI 副驾是我们自研的销售辅助产品，和企业微信能力配合使用。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["身份边界","风险禁忌"],"usage":"","caution":"这是服务商销售必须遵守的底线。"}],"count":3}],"copy_all_text":"# 客户授权说明\n给客户解释为什么要开企微能力、开哪些能力，以及 AI 副驾不会绕过人工确认。\n\n## 客户开场说明\n我们是企业微信官方服务商，不是腾讯或企微工作人员。我们先帮你把企业微信的客户承接、客户管理、会话内容存档等基础能力跑顺，再接入销售 AI 副驾。\nAI 副驾不会替销售乱发消息，它会根据当前客户、历史沟通和知识库生成建议回复，由销售人工确认后再发送。\n如果你们想先小范围验证，可以先选 2-5 个销售账号做试点，看回复质量、跟进效率和线索转化有没有改善，再决定是否扩大。\n\n## 客户授权范围说明\n为了让 AI 副驾在企业微信侧边栏里识别当前客户，并基于真实沟通生成建议，需要客户授权或配置以下能力：\n1. 企业微信自建应用或第三方应用授权，用于打开侧边栏和识别当前员工、当前客户。\n2. 客户联系 API，用于读取客户基本资料、添加时间、跟进关系等信息。\n3. 会话内容存档，用于合规获取已授权员工与客户的沟通记录，供画像、意向判断和建议回复使用。\n4. 可信域名、回调地址、可信 IP 等基础配置，用于保证企业微信能正常访问和回调。\n客户可以自行决定开通范围，试点阶段建议先开少量销售账号，确认效果后再扩展。\n\n## 会话存档提醒说明\n会话内容存档是企业微信官方能力。开通后，客户或群成员可能会看到企业微信官方的存档提醒，这是合规要求，服务商和 AI 副驾都不能隐藏或绕过。\n这条提醒的目的，是让对方知道本次沟通可能会被企业用于服务质量、合规管理和客户跟进。我们建议销售在客户问起时正面解释：这是企业微信的合规存档能力，不是私自录音或私自监控。\nAI 副驾只使用企业已经合规获取的数据来生成建议，不会把客户数据公开给其他客户企业。\n\n# 服务商交付 SOP\n给服务商伙伴一套从售前、试点、部署到验收的交付路径。\n\n## 试点交付流程\n1. 售前确认：确认客户行业、销售人数、当前是否使用企业微信、是否已有客户联系和会话存档需求。\n2. 选试点范围：建议先选 2-5 个销售账号、1 个销售场景和 1 套核心产品资料，不要一开始全员铺开。\n3. 配基础能力：配置企业微信应用、侧边栏入口、客户联系 API、可信域名、可信 IP；如需要真实消息分析，再配置会话内容存档。\n4. 建知识库：导入产品介绍、报价口径、案例、FAQ、风险禁忌、公司统一话术。\n5. 跑真实对话：销售在侧边栏里看建议、改建议、确认发送；系统记录人工修改，用于训练个人风格和公司规则候选。\n6. 复盘验收：看回复速度、回复质量、跟进任务、客户意向识别、模型调用成本，再决定是否扩大账号数。\n\n## 上线检查清单\n上线前建议逐项确认：\n1. 侧边栏 URL 可正常打开，HTTPS 证书有效，域名已完成可信域名校验。\n2. 客户联系 API Secret 已配置，能读取当前客户名称和添加时间。\n3. 会话内容存档 Secret、私钥、公钥版本、可信 IP 已配置，并能拉取到测试消息。\n4. 销售账号可见范围正确，员工只看到自己有权限处理的客户。\n5. 知识库已导入，回复建议不应凭空承诺价格、效果或腾讯身份。\n6. AI 建议默认走人工确认发送，不做绕过企微客户端的强自动发送。\n7. 后台能看到模型调用记录、用量和租户配置状态。\n\n## 交付排障入口\n排障优先看后台中控台：上线准备、服务商配置、会话存档、模型与计费。\n常见问题定位：\n1. 客户名识别慢：先看客户联系 API Secret、可信 IP、企微 JS-SDK 可信域名是否正确。\n2. 新消息拉取慢：看会话存档是否已开启、网关是否在线、最近 seq 是否推进。\n3. 回复质量差：看模板知识库、公司规则、风险禁忌、AI 学习候选规则是否被采纳。\n4. 费用异常：看模型路由和场景用量，不同功能可配置不同模型。\n\n# 隐私与数据安全\n给客户说明数据边界、租户隔离、模型调用和停用后的处理方式。\n\n## 隐私与数据使用说明\nAI 副驾只围绕销售服务场景使用客户授权的数据，例如客户基本信息、已存档的沟通记录、销售确认发送的回复、客户阶段和跟进任务。\n数据按客户企业隔离，核心业务入口统一为 tenant_id、corp_id、staff_userid、external_userid 和 message，不会把 A 公司的客户数据展示给 B 公司。\n模型调用会记录场景、模型、token 估算和费用，用于成本核算和问题追踪。敏感配置不应直接暴露在前端页面。\n客户停止使用后，可以按合同约定停用应用、停止拉取会话存档，并导出或清理相关业务数据。\n\n## 人工确认发送边界\n当前产品默认不做绕过企业微信客户端的全自动发送。AI 会生成建议并填入输入框，员工需要自己确认后点击发送。\n这么设计有三个原因：第一，销售最终要对客户沟通负责；第二，企业微信客户端没有开放让 H5 页面随意替员工点击发送的标准能力；第三，人工确认能避免错误承诺、价格错误和不合规表达。\n后续可以做更强的自动化，例如任务提醒、建议话术、资料推荐、复制/填入输入框，但正式发送仍建议保留人工确认。\n\n## 规则审核说明\n销售修改 AI 建议后，系统会总结可学习的规则。个人表达习惯可以沉淀为个人风格；涉及公司统一口径、报价边界、承诺边界、风险禁忌的内容，建议进入老板或主管审核。\n公司规则采纳后，会影响该公司后续 AI 建议；风险禁忌优先级最高，会优先约束回复，避免销售误承诺、冒充腾讯、隐瞒存档提醒、夸大效果等问题。\n如果规则和知识库冲突，建议优先级为：风险禁忌 > 公司规则 > 知识库事实 > 个人风格。\n\n# 套餐与计费\n把企业微信代下单、AI 副驾费用和模型按量计费说清楚。\n\n## 报价口径\n企业微信相关产品由我们协助客户代下单，新购客户可按 7 折口径沟通，续费客户可按 8 折口径沟通，最终以客户实际开通清单为准。\nAI 副驾：搭建费 3980 元，账号年使用费 980 元/账号/年；模型算力按量计费，后台提供调用记录和费用清单。\n建议试点阶段先少量账号开通，跑通一个核心业务场景；如果效果明确，再扩展到更多销售和更多业务线。\n模型算力不是固定包死，而是按实际调用量统计。后台可以按租户、场景、模型查看用量，方便客户控制成本。\n\n## 后台计费清单说明\n当前系统已记录模型调用数据 0 条，后续可按客户企业、场景、模型和日期查看。\n不同功能可以配置不同模型，例如实时回复建议用速度稳定的模型，复盘分析和知识整理用更强的模型。客户不用自己理解太多模型细节，服务商可以预设套餐。\n建议套餐不要分得太碎：基础版可覆盖建议回复和客户画像；专业版增加会话存档分析、主动任务、AI 学习和老板审核；服务商版增加多客户企业管理和交付诊断。\n\n# 服务商销售话术\n帮助服务商伙伴把企业微信和 AI 副驾一起卖，但不过度书面化。\n\n## 销售策略\n销售时不要一上来只讲 AI。更顺的路径是：先问客户现在怎么接客户、销售用个人微信还是企微、客户资料和聊天记录有没有沉淀、销售回复是否统一。\n如果客户还没用好企业微信，先卖企微基础能力：客户承接、客户管理、员工离职继承、会话内容存档、客户群运营。\n当客户意识到“客户都在聊天里、销售回复不可控、管理者看不到过程”后，再切入 AI 副驾：我们现在就是用这个工具辅助回复，它能看客户阶段、帮销售组织回复、提醒跟进，还能把优秀话术沉淀下来。\n成交上建议先做试点，不要一口气推全员。试点越小、路径越清晰，客户越容易答应。\n\n## 客户聊天示例话术\n你们现在客户主要是在个人微信、企业微信，还是多个渠道都有？\n如果客户已经在微信里咨询，其实最大的问题不是有没有 CRM，而是销售有没有及时、准确、统一地跟进。\n企微可以先解决客户资产和合规管理的问题；AI 副驾解决的是销售怎么回、下一步怎么推进、老板怎么把优秀话术沉淀下来。\n我现在跟你沟通时也在用我们的 AI 副驾做辅助，它不会替我乱发，但会根据客户问题提醒我该讲什么、下一步怎么问。你要不要先拿 2-3 个账号试一下？我们可以先搭起来，看效果再决定扩大。\n\n## 身份边界禁忌\n可以说：我们是企业微信官方服务商，可以帮你做企微开通、配置、培训和后续 AI 副驾接入。\n不要说：我们是腾讯的人、企微官方员工、可以代表腾讯承诺政策、可以隐藏企业微信官方合规提醒。\n可以说：企业微信产品和政策以官方页面和实际开通为准，我们负责服务和交付。\n可以说：AI 副驾是我们自研的销售辅助产品，和企业微信能力配合使用。","links":{"delivery_materials":"/api/saas/delivery-materials","launch_readiness":"/api/saas/launch-readiness","listing_checklist":"/api/saas/listing-checklist","runtime_health":"/api/wecom/runtime-health"}},"links":{"launch_readiness":"/api/saas/launch-readiness","listing_checklist":"/api/saas/listing-checklist","data_model":"/api/saas/data-model","integrity":"/api/saas/integrity","tenant_guard":"/api/saas/tenant-guard","runtime_health":"/api/wecom/runtime-health","third_party_runtime":"/api/wecom/third-party/runtime","billing_usage":"/api/billing/usage","install_url":"","callbacks":{"instruction_callback_url":"https://tp1.copilot.timeflowai.com/wecom/third-party/instruction-callback","data_callback_url":"https://tp1.copilot.timeflowai.com/wecom/third-party/data-callback","install_callback_url":"https://tp1.copilot.timeflowai.com/wecom/third-party/install-callback"}},"guidance":["第一阶段继续跑自建应用真实链路，用它验证侧边栏、会话存档、AI回复质量。","业务逻辑统一依赖标准上下文，后续切第三方应用时不改核心回复逻辑。","第三方上架前要重点补：suite_ticket 回调、auth_code 换 permanent_code、权限范围同步、隐私与数据安全材料。","前端体验可以继续迭代，不会影响这套租户/授权/计费底座。"]},"deliveryMaterials":{"schema_version":"2026-06-13.5","generated_at":"2026-08-17T09:06:02.526Z","tenant_id":"tenant_default","corp_id":"","install_mode":"self_built_app","summary":{"sections":5,"materials":14,"ready":14,"tenant_mode":"self_built_app"},"sections":[{"id":"customer_authorization","label":"客户授权说明","description":"给客户解释为什么要开企微能力、开哪些能力，以及 AI 副驾不会绕过人工确认。","items":[{"id":"customer_intro","label":"客户开场说明","audience":"客户老板 / IT / 销售负责人","format":"微信沟通话术","summary":"解释企业微信和 AI 副驾的关系。","body":"我们是企业微信官方服务商，不是腾讯或企微工作人员。我们先帮你把企业微信的客户承接、客户管理、会话内容存档等基础能力跑顺，再接入销售 AI 副驾。\nAI 副驾不会替销售乱发消息，它会根据当前客户、历史沟通和知识库生成建议回复，由销售人工确认后再发送。\n如果你们想先小范围验证，可以先选 2-5 个销售账号做试点，看回复质量、跟进效率和线索转化有没有改善，再决定是否扩大。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["身份边界","销售开场"],"usage":"服务商首次介绍产品时使用。","caution":""},{"id":"customer_authorization_scope","label":"客户授权范围说明","audience":"客户管理员 / IT","format":"交付说明","summary":"列出需要客户配合开通的能力。","body":"为了让 AI 副驾在企业微信侧边栏里识别当前客户，并基于真实沟通生成建议，需要客户授权或配置以下能力：\n1. 企业微信自建应用或第三方应用授权，用于打开侧边栏和识别当前员工、当前客户。\n2. 客户联系 API，用于读取客户基本资料、添加时间、跟进关系等信息。\n3. 会话内容存档，用于合规获取已授权员工与客户的沟通记录，供画像、意向判断和建议回复使用。\n4. 可信域名、回调地址、可信 IP 等基础配置，用于保证企业微信能正常访问和回调。\n客户可以自行决定开通范围，试点阶段建议先开少量销售账号，确认效果后再扩展。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["授权","交付"],"usage":"客户管理员问需要开什么权限时使用。","caution":""},{"id":"archive_customer_notice","label":"会话存档提醒说明","audience":"客户负责人 / 销售团队","format":"风险解释","summary":"解释企微官方提醒不能隐藏。","body":"会话内容存档是企业微信官方能力。开通后，客户或群成员可能会看到企业微信官方的存档提醒，这是合规要求，服务商和 AI 副驾都不能隐藏或绕过。\n这条提醒的目的，是让对方知道本次沟通可能会被企业用于服务质量、合规管理和客户跟进。我们建议销售在客户问起时正面解释：这是企业微信的合规存档能力，不是私自录音或私自监控。\nAI 副驾只使用企业已经合规获取的数据来生成建议，不会把客户数据公开给其他客户企业。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["会话存档","合规"],"usage":"","caution":"不要承诺可以取消或隐藏企微官方提醒。"}],"count":3},{"id":"provider_delivery","label":"服务商交付 SOP","description":"给服务商伙伴一套从售前、试点、部署到验收的交付路径。","items":[{"id":"pilot_delivery_sop","label":"试点交付流程","audience":"服务商交付顾问","format":"SOP","summary":"服务商带客户跑通试点的步骤。","body":"1. 售前确认：确认客户行业、销售人数、当前是否使用企业微信、是否已有客户联系和会话存档需求。\n2. 选试点范围：建议先选 2-5 个销售账号、1 个销售场景和 1 套核心产品资料，不要一开始全员铺开。\n3. 配基础能力：配置企业微信应用、侧边栏入口、客户联系 API、可信域名、可信 IP；如需要真实消息分析，再配置会话内容存档。\n4. 建知识库：导入产品介绍、报价口径、案例、FAQ、风险禁忌、公司统一话术。\n5. 跑真实对话：销售在侧边栏里看建议、改建议、确认发送；系统记录人工修改，用于训练个人风格和公司规则候选。\n6. 复盘验收：看回复速度、回复质量、跟进任务、客户意向识别、模型调用成本，再决定是否扩大账号数。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["交付","试点"],"usage":"服务商内部交付培训使用。","caution":""},{"id":"go_live_checklist","label":"上线检查清单","audience":"服务商交付 / 客户管理员","format":"检查项","summary":"上线前排查关键配置。","body":"上线前建议逐项确认：\n1. 侧边栏 URL 可正常打开，HTTPS 证书有效，域名已完成可信域名校验。\n2. 客户联系 API Secret 已配置，能读取当前客户名称和添加时间。\n3. 会话内容存档 Secret、私钥、公钥版本、可信 IP 已配置，并能拉取到测试消息。\n4. 销售账号可见范围正确，员工只看到自己有权限处理的客户。\n5. 知识库已导入，回复建议不应凭空承诺价格、效果或腾讯身份。\n6. AI 建议默认走人工确认发送，不做绕过企微客户端的强自动发送。\n7. 后台能看到模型调用记录、用量和租户配置状态。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["上线","排障"],"usage":"上线前逐条核对。","caution":""},{"id":"troubleshooting_entry","label":"交付排障入口","audience":"服务商技术 / 售后","format":"排障说明","summary":"快速定位慢、识别失败、存档失败。","body":"排障优先看后台中控台：上线准备、服务商配置、会话存档、模型与计费。\n常见问题定位：\n1. 客户名识别慢：先看客户联系 API Secret、可信 IP、企微 JS-SDK 可信域名是否正确。\n2. 新消息拉取慢：看会话存档是否已开启、网关是否在线、最近 seq 是否推进。\n3. 回复质量差：看模板知识库、公司规则、风险禁忌、AI 学习候选规则是否被采纳。\n4. 费用异常：看模型路由和场景用量，不同功能可配置不同模型。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["售后","排障"],"usage":"服务商售后响应时使用。","caution":""}],"count":3},{"id":"security_compliance","label":"隐私与数据安全","description":"给客户说明数据边界、租户隔离、模型调用和停用后的处理方式。","items":[{"id":"privacy_statement","label":"隐私与数据使用说明","audience":"客户老板 / 法务 / IT","format":"客户说明","summary":"解释数据怎么用、不会怎么用。","body":"AI 副驾只围绕销售服务场景使用客户授权的数据，例如客户基本信息、已存档的沟通记录、销售确认发送的回复、客户阶段和跟进任务。\n数据按客户企业隔离，核心业务入口统一为 tenant_id、corp_id、staff_userid、external_userid 和 message，不会把 A 公司的客户数据展示给 B 公司。\n模型调用会记录场景、模型、token 估算和费用，用于成本核算和问题追踪。敏感配置不应直接暴露在前端页面。\n客户停止使用后，可以按合同约定停用应用、停止拉取会话存档，并导出或清理相关业务数据。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["隐私","数据隔离"],"usage":"客户担心数据安全时使用。","caution":""},{"id":"manual_send_policy","label":"人工确认发送边界","audience":"客户老板 / 销售负责人","format":"产品边界","summary":"明确不做全自动乱发。","body":"当前产品默认不做绕过企业微信客户端的全自动发送。AI 会生成建议并填入输入框，员工需要自己确认后点击发送。\n这么设计有三个原因：第一，销售最终要对客户沟通负责；第二，企业微信客户端没有开放让 H5 页面随意替员工点击发送的标准能力；第三，人工确认能避免错误承诺、价格错误和不合规表达。\n后续可以做更强的自动化，例如任务提醒、建议话术、资料推荐、复制/填入输入框，但正式发送仍建议保留人工确认。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["发送边界","合规"],"usage":"","caution":"不要把 AI 副驾卖成无人值守群发工具。"},{"id":"rule_governance_policy","label":"规则审核说明","audience":"客户老板 / 销售主管","format":"管理机制","summary":"解释个人风格、公司规则、风险禁忌。","body":"销售修改 AI 建议后，系统会总结可学习的规则。个人表达习惯可以沉淀为个人风格；涉及公司统一口径、报价边界、承诺边界、风险禁忌的内容，建议进入老板或主管审核。\n公司规则采纳后，会影响该公司后续 AI 建议；风险禁忌优先级最高，会优先约束回复，避免销售误承诺、冒充腾讯、隐瞒存档提醒、夸大效果等问题。\n如果规则和知识库冲突，建议优先级为：风险禁忌 > 公司规则 > 知识库事实 > 个人风格。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["AI训练","规则审核"],"usage":"给老板解释后台审核价值。","caution":""}],"count":3},{"id":"pricing_and_billing","label":"套餐与计费","description":"把企业微信代下单、AI 副驾费用和模型按量计费说清楚。","items":[{"id":"pricing_overview","label":"报价口径","audience":"客户老板 / 采购","format":"报价说明","summary":"统一报价方式。","body":"企业微信相关产品由我们协助客户代下单，新购客户可按 7 折口径沟通，续费客户可按 8 折口径沟通，最终以客户实际开通清单为准。\nAI 副驾：搭建费 3980 元，账号年使用费 980 元/账号/年；模型算力按量计费，后台提供调用记录和费用清单。\n建议试点阶段先少量账号开通，跑通一个核心业务场景；如果效果明确，再扩展到更多销售和更多业务线。\n模型算力不是固定包死，而是按实际调用量统计。后台可以按租户、场景、模型查看用量，方便客户控制成本。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["报价","套餐"],"usage":"客户问价格时使用。","caution":""},{"id":"billing_admin_note","label":"后台计费清单说明","audience":"服务商 / 客户管理员","format":"运营说明","summary":"说明模型路由和用量账单。","body":"当前系统已记录模型调用数据 0 条，后续可按客户企业、场景、模型和日期查看。\n不同功能可以配置不同模型，例如实时回复建议用速度稳定的模型，复盘分析和知识整理用更强的模型。客户不用自己理解太多模型细节，服务商可以预设套餐。\n建议套餐不要分得太碎：基础版可覆盖建议回复和客户画像；专业版增加会话存档分析、主动任务、AI 学习和老板审核；服务商版增加多客户企业管理和交付诊断。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["模型路由","计费"],"usage":"服务商配置套餐和账单时使用。","caution":""}],"count":2},{"id":"sales_enablement","label":"服务商销售话术","description":"帮助服务商伙伴把企业微信和 AI 副驾一起卖，但不过度书面化。","items":[{"id":"sales_strategy","label":"销售策略","audience":"服务商销售","format":"销售打法","summary":"先企微后 AI，顺势切入。","body":"销售时不要一上来只讲 AI。更顺的路径是：先问客户现在怎么接客户、销售用个人微信还是企微、客户资料和聊天记录有没有沉淀、销售回复是否统一。\n如果客户还没用好企业微信，先卖企微基础能力：客户承接、客户管理、员工离职继承、会话内容存档、客户群运营。\n当客户意识到“客户都在聊天里、销售回复不可控、管理者看不到过程”后，再切入 AI 副驾：我们现在就是用这个工具辅助回复，它能看客户阶段、帮销售组织回复、提醒跟进，还能把优秀话术沉淀下来。\n成交上建议先做试点，不要一口气推全员。试点越小、路径越清晰，客户越容易答应。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["销售策略","服务商"],"usage":"服务商销售培训使用。","caution":""},{"id":"sales_chat_script","label":"客户聊天示例话术","audience":"服务商销售","format":"微信话术","summary":"更自然地说明价值。","body":"你们现在客户主要是在个人微信、企业微信，还是多个渠道都有？\n如果客户已经在微信里咨询，其实最大的问题不是有没有 CRM，而是销售有没有及时、准确、统一地跟进。\n企微可以先解决客户资产和合规管理的问题；AI 副驾解决的是销售怎么回、下一步怎么推进、老板怎么把优秀话术沉淀下来。\n我现在跟你沟通时也在用我们的 AI 副驾做辅助，它不会替我乱发，但会根据客户问题提醒我该讲什么、下一步怎么问。你要不要先拿 2-3 个账号试一下？我们可以先搭起来，看效果再决定扩大。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["聊天话术","试点成交"],"usage":"销售跟客户微信沟通时可参考。","caution":""},{"id":"identity_boundary","label":"身份边界禁忌","audience":"服务商销售","format":"禁忌表达","summary":"避免身份误导。","body":"可以说：我们是企业微信官方服务商，可以帮你做企微开通、配置、培训和后续 AI 副驾接入。\n不要说：我们是腾讯的人、企微官方员工、可以代表腾讯承诺政策、可以隐藏企业微信官方合规提醒。\n可以说：企业微信产品和政策以官方页面和实际开通为准，我们负责服务和交付。\n可以说：AI 副驾是我们自研的销售辅助产品，和企业微信能力配合使用。","owner":"service_provider","status":"ready","status_label":"已就绪","tags":["身份边界","风险禁忌"],"usage":"","caution":"这是服务商销售必须遵守的底线。"}],"count":3}],"copy_all_text":"# 客户授权说明\n给客户解释为什么要开企微能力、开哪些能力，以及 AI 副驾不会绕过人工确认。\n\n## 客户开场说明\n我们是企业微信官方服务商，不是腾讯或企微工作人员。我们先帮你把企业微信的客户承接、客户管理、会话内容存档等基础能力跑顺，再接入销售 AI 副驾。\nAI 副驾不会替销售乱发消息，它会根据当前客户、历史沟通和知识库生成建议回复，由销售人工确认后再发送。\n如果你们想先小范围验证，可以先选 2-5 个销售账号做试点，看回复质量、跟进效率和线索转化有没有改善，再决定是否扩大。\n\n## 客户授权范围说明\n为了让 AI 副驾在企业微信侧边栏里识别当前客户，并基于真实沟通生成建议，需要客户授权或配置以下能力：\n1. 企业微信自建应用或第三方应用授权，用于打开侧边栏和识别当前员工、当前客户。\n2. 客户联系 API，用于读取客户基本资料、添加时间、跟进关系等信息。\n3. 会话内容存档，用于合规获取已授权员工与客户的沟通记录，供画像、意向判断和建议回复使用。\n4. 可信域名、回调地址、可信 IP 等基础配置，用于保证企业微信能正常访问和回调。\n客户可以自行决定开通范围，试点阶段建议先开少量销售账号，确认效果后再扩展。\n\n## 会话存档提醒说明\n会话内容存档是企业微信官方能力。开通后，客户或群成员可能会看到企业微信官方的存档提醒，这是合规要求，服务商和 AI 副驾都不能隐藏或绕过。\n这条提醒的目的，是让对方知道本次沟通可能会被企业用于服务质量、合规管理和客户跟进。我们建议销售在客户问起时正面解释：这是企业微信的合规存档能力，不是私自录音或私自监控。\nAI 副驾只使用企业已经合规获取的数据来生成建议，不会把客户数据公开给其他客户企业。\n\n# 服务商交付 SOP\n给服务商伙伴一套从售前、试点、部署到验收的交付路径。\n\n## 试点交付流程\n1. 售前确认：确认客户行业、销售人数、当前是否使用企业微信、是否已有客户联系和会话存档需求。\n2. 选试点范围：建议先选 2-5 个销售账号、1 个销售场景和 1 套核心产品资料，不要一开始全员铺开。\n3. 配基础能力：配置企业微信应用、侧边栏入口、客户联系 API、可信域名、可信 IP；如需要真实消息分析，再配置会话内容存档。\n4. 建知识库：导入产品介绍、报价口径、案例、FAQ、风险禁忌、公司统一话术。\n5. 跑真实对话：销售在侧边栏里看建议、改建议、确认发送；系统记录人工修改，用于训练个人风格和公司规则候选。\n6. 复盘验收：看回复速度、回复质量、跟进任务、客户意向识别、模型调用成本，再决定是否扩大账号数。\n\n## 上线检查清单\n上线前建议逐项确认：\n1. 侧边栏 URL 可正常打开，HTTPS 证书有效，域名已完成可信域名校验。\n2. 客户联系 API Secret 已配置，能读取当前客户名称和添加时间。\n3. 会话内容存档 Secret、私钥、公钥版本、可信 IP 已配置，并能拉取到测试消息。\n4. 销售账号可见范围正确，员工只看到自己有权限处理的客户。\n5. 知识库已导入，回复建议不应凭空承诺价格、效果或腾讯身份。\n6. AI 建议默认走人工确认发送，不做绕过企微客户端的强自动发送。\n7. 后台能看到模型调用记录、用量和租户配置状态。\n\n## 交付排障入口\n排障优先看后台中控台：上线准备、服务商配置、会话存档、模型与计费。\n常见问题定位：\n1. 客户名识别慢：先看客户联系 API Secret、可信 IP、企微 JS-SDK 可信域名是否正确。\n2. 新消息拉取慢：看会话存档是否已开启、网关是否在线、最近 seq 是否推进。\n3. 回复质量差：看模板知识库、公司规则、风险禁忌、AI 学习候选规则是否被采纳。\n4. 费用异常：看模型路由和场景用量，不同功能可配置不同模型。\n\n# 隐私与数据安全\n给客户说明数据边界、租户隔离、模型调用和停用后的处理方式。\n\n## 隐私与数据使用说明\nAI 副驾只围绕销售服务场景使用客户授权的数据，例如客户基本信息、已存档的沟通记录、销售确认发送的回复、客户阶段和跟进任务。\n数据按客户企业隔离，核心业务入口统一为 tenant_id、corp_id、staff_userid、external_userid 和 message，不会把 A 公司的客户数据展示给 B 公司。\n模型调用会记录场景、模型、token 估算和费用，用于成本核算和问题追踪。敏感配置不应直接暴露在前端页面。\n客户停止使用后，可以按合同约定停用应用、停止拉取会话存档，并导出或清理相关业务数据。\n\n## 人工确认发送边界\n当前产品默认不做绕过企业微信客户端的全自动发送。AI 会生成建议并填入输入框，员工需要自己确认后点击发送。\n这么设计有三个原因：第一，销售最终要对客户沟通负责；第二，企业微信客户端没有开放让 H5 页面随意替员工点击发送的标准能力；第三，人工确认能避免错误承诺、价格错误和不合规表达。\n后续可以做更强的自动化，例如任务提醒、建议话术、资料推荐、复制/填入输入框，但正式发送仍建议保留人工确认。\n\n## 规则审核说明\n销售修改 AI 建议后，系统会总结可学习的规则。个人表达习惯可以沉淀为个人风格；涉及公司统一口径、报价边界、承诺边界、风险禁忌的内容，建议进入老板或主管审核。\n公司规则采纳后，会影响该公司后续 AI 建议；风险禁忌优先级最高，会优先约束回复，避免销售误承诺、冒充腾讯、隐瞒存档提醒、夸大效果等问题。\n如果规则和知识库冲突，建议优先级为：风险禁忌 > 公司规则 > 知识库事实 > 个人风格。\n\n# 套餐与计费\n把企业微信代下单、AI 副驾费用和模型按量计费说清楚。\n\n## 报价口径\n企业微信相关产品由我们协助客户代下单，新购客户可按 7 折口径沟通，续费客户可按 8 折口径沟通，最终以客户实际开通清单为准。\nAI 副驾：搭建费 3980 元，账号年使用费 980 元/账号/年；模型算力按量计费，后台提供调用记录和费用清单。\n建议试点阶段先少量账号开通，跑通一个核心业务场景；如果效果明确，再扩展到更多销售和更多业务线。\n模型算力不是固定包死，而是按实际调用量统计。后台可以按租户、场景、模型查看用量，方便客户控制成本。\n\n## 后台计费清单说明\n当前系统已记录模型调用数据 0 条，后续可按客户企业、场景、模型和日期查看。\n不同功能可以配置不同模型，例如实时回复建议用速度稳定的模型，复盘分析和知识整理用更强的模型。客户不用自己理解太多模型细节，服务商可以预设套餐。\n建议套餐不要分得太碎：基础版可覆盖建议回复和客户画像；专业版增加会话存档分析、主动任务、AI 学习和老板审核；服务商版增加多客户企业管理和交付诊断。\n\n# 服务商销售话术\n帮助服务商伙伴把企业微信和 AI 副驾一起卖，但不过度书面化。\n\n## 销售策略\n销售时不要一上来只讲 AI。更顺的路径是：先问客户现在怎么接客户、销售用个人微信还是企微、客户资料和聊天记录有没有沉淀、销售回复是否统一。\n如果客户还没用好企业微信，先卖企微基础能力：客户承接、客户管理、员工离职继承、会话内容存档、客户群运营。\n当客户意识到“客户都在聊天里、销售回复不可控、管理者看不到过程”后，再切入 AI 副驾：我们现在就是用这个工具辅助回复，它能看客户阶段、帮销售组织回复、提醒跟进，还能把优秀话术沉淀下来。\n成交上建议先做试点，不要一口气推全员。试点越小、路径越清晰，客户越容易答应。\n\n## 客户聊天示例话术\n你们现在客户主要是在个人微信、企业微信，还是多个渠道都有？\n如果客户已经在微信里咨询，其实最大的问题不是有没有 CRM，而是销售有没有及时、准确、统一地跟进。\n企微可以先解决客户资产和合规管理的问题；AI 副驾解决的是销售怎么回、下一步怎么推进、老板怎么把优秀话术沉淀下来。\n我现在跟你沟通时也在用我们的 AI 副驾做辅助，它不会替我乱发，但会根据客户问题提醒我该讲什么、下一步怎么问。你要不要先拿 2-3 个账号试一下？我们可以先搭起来，看效果再决定扩大。\n\n## 身份边界禁忌\n可以说：我们是企业微信官方服务商，可以帮你做企微开通、配置、培训和后续 AI 副驾接入。\n不要说：我们是腾讯的人、企微官方员工、可以代表腾讯承诺政策、可以隐藏企业微信官方合规提醒。\n可以说：企业微信产品和政策以官方页面和实际开通为准，我们负责服务和交付。\n可以说：AI 副驾是我们自研的销售辅助产品，和企业微信能力配合使用。","links":{"delivery_materials":"/api/saas/delivery-materials","launch_readiness":"/api/saas/launch-readiness","listing_checklist":"/api/saas/listing-checklist","runtime_health":"/api/wecom/runtime-health"}},"tenantRegistry":{"schema_version":"2026-06-13.5","generated_at":"2026-08-17T09:06:02.528Z","current_tenant_id":"tenant_default","tenant_count":1,"active_count":0,"ready_count":0,"archive_enabled_count":0,"summary":{"tenants":1,"active":0,"ready":0,"archive_enabled":0,"pending":1},"tenants":[{"tenant_id":"tenant_default","tenant_name":"","display_name":"tenant_default","corp_id":"","install_mode":"self_built_app","install_mode_label":"客户自建应用","agent_id_configured":false,"suite_id_configured":false,"auth_status":"incomplete","auth_status_label":"待补配置","host_domain":"tp1.copilot.timeflowai.com","domain_mode":"provider_domain","archive_enabled":false,"archive_storage_mode":"local","trusted_ip_mode":"provider_server","model_route_count":4,"model_route_ready_count":4,"permanent_code_configured":false,"access_token_cached":false,"token_expire_at":"","provider_auth":false,"readiness":"needs_config","status":"missing","status_label":"待补基础配置","health_label":"待配置","metrics":{"contacts":1,"messages":1,"archive_messages":0,"inbox_items":0,"tasks":0,"usage_records":0},"next_actions":["补齐 WECOM_CORP_ID / WECOM_AGENT_ID 等配置。","先完成可信域名、AgentId、Secret 配置。","在企业微信客户联系 API 中获取 Secret，并写入服务器 /opt/wecom-sidebar/.env.local。","客户开通会话内容存档后，补 secret、私钥和公钥版本。"],"is_current":true,"source":"runtime_env","notes":"","created_at":"","updated_at":"2026-08-17T09:06:02.526Z"}],"links":{"tenants":"/api/tenants","current_config":"/api/tenants/current-config","launch_readiness":"/api/saas/launch-readiness","tenant_guard":"/api/saas/tenant-guard","runtime_health":"/api/wecom/runtime-health"}},"providerOperations":{"schema_version":"2026-06-13.5","generated_at":"2026-08-17T09:06:02.532Z","tenant_id":"tenant_default","corp_id":"","install_mode":"self_built_app","summary":{"pipeline_steps":9,"ready":1,"pending":1,"missing":7,"webhook_events":0,"third_party_events":0,"audit_logs":0,"auth_corp_count":0,"install_session_count":0,"pending_install_session_count":0,"auth_lifecycle":{},"needs_reauth_count":0,"disabled_or_cancelled_count":0,"role_count":3},"pipeline":[{"id":"self_built_baseline","label":"自建应用测试链路","status":"missing","detail":"缺少 corp_id、agent_id。"},{"id":"provider_callbacks","label":"第三方回调入口","status":"pending","detail":"安装、数据和指令回调入口已预留。"},{"id":"encrypted_callback","label":"加密回调验签","status":"missing","detail":"正式服务商应用需要配置回调 Token 和 EncodingAESKey。"},{"id":"suite_ticket","label":"suite_ticket","status":"missing","detail":"第三方应用创建后由企微定时推送。"},{"id":"suite_access_token","label":"suite_access_token","status":"missing","detail":"suite_id、suite_secret、suite_ticket 齐备后可自动获取。"},{"id":"pre_auth_code","label":"预授权码","status":"missing","detail":"服务商安装链接需要预授权码或平台生成的授权入口。"},{"id":"permanent_code","label":"permanent_code","status":"missing","detail":"客户授权安装后，用 auth_code 换取并加密保存。"},{"id":"archive","label":"会话存档","status":"missing","detail":"客户开通后再接入消息拉取与解密。"},{"id":"domain","label":"域名与证书","status":"ready","detail":"tp1.copilot.timeflowai.com / provider_domain"}],"roles":[{"role":"sales","label":"销售","description":"只处理自己的客户、回复建议和跟进任务。","permissions":["sidebar:use","customers:read","knowledge:read","analyzer:use"],"boundaries":["own_customer_context","reply_suggestion","own_tasks"],"can_manage_company_rules":false,"can_manage_tenant":false},{"role":"owner","label":"老板/主管","description":"看团队客户、审核公司规则、管理知识库和用量。","permissions":["sidebar:use","customers:read","knowledge:read","analyzer:use","customers:write","knowledge:write","tasks:manage","playbook:adopt","reports:view"],"boundaries":["tenant_customers","team_tasks","knowledge_and_rules","usage_reports"],"can_manage_company_rules":true,"can_manage_tenant":false},{"role":"provider","label":"服务商","description":"负责安装、诊断、账单支持和跨租户交付，不直接干预销售私聊。","permissions":["sidebar:use","customers:read","knowledge:read","analyzer:use","customers:write","knowledge:write","tasks:manage","playbook:adopt","reports:view","tenant:manage","provider:manage"],"boundaries":["tenant_installation","health_diagnostics","billing_and_support"],"can_manage_company_rules":false,"can_manage_tenant":true}],"auth_corps":[],"install_sessions":[],"auth_events":[],"audit_events":[],"permission_policy":{"tenant_data_access":"所有业务数据必须带 tenant_id；服务商只看交付诊断和计费支持，不默认进入客户私聊详情。","company_rule_approval":"销售只能提交个人风格候选；公司规则和风险禁忌由老板/主管审核后生效。","secret_policy":"非敏感配置走租户草稿；Secret、私钥和模型 Key 已支持加密 SecretStore，环境变量仅作为兼容兜底。"},"deployment_checklist":[{"id":"tenant_config","label":"租户配置","done":false,"detail":"企业 corp_id、tenant_id、接入模式已建立。"},{"id":"domain","label":"可信域名","done":true,"detail":"tp1.copilot.timeflowai.com"},{"id":"secret_store","label":"密钥加密库","done":false,"detail":"Secret、私钥和模型 Key 不进入租户草稿。"},{"id":"archive_policy","label":"会话存档策略","done":true,"detail":"私聊、群聊、员工发言的 AI 使用边界已预留。"},{"id":"billing_export","label":"模型计费导出","done":true,"detail":"支持按功能场景和模型导出调用明细。"}],"go_live_blocks":["缺少租户授权字段：corp_id、agent_id","正式客户需确认是否开通会话内容存档。","第三方标准应用上线前需配置 suite_id。"],"next_actions":["补齐缺失的服务商授权、回调或会话存档配置。","正式服务商联调时重点验证授权变更、停用/卸载、重新授权和可见范围同步。","把角色权限从演示账号迁到租户成员表，支持服务商/老板/销售分权。","上线前补隐私协议、数据处理说明、客户授权页和用量账单导出。"],"links":{"third_party_runtime":"/api/wecom/third-party/runtime","install_url":"/api/wecom/third-party/install-url","tenant_guard":"/api/saas/tenant-guard","secret_status":"/api/saas/secret-status","billing_usage":"/api/billing/usage","operations":"/api/provider/operations"}},"accessControl":{"schema_version":"2026-06-13.5","generated_at":"2026-08-17T09:06:02.535Z","tenant_id":"tenant_default","corp_id":"","install_mode":"self_built_app","status":"needs_review","summary":{"role_count":3,"tenant_scoped_table_count":24,"secret_table_count":5,"isolation_issue_count":2,"current_runtime_source":"runtime_env"},"roles":[{"role":"sales","label":"销售","description":"只处理自己的客户、回复建议和跟进任务。","permissions":["sidebar:use","customers:read","knowledge:read","analyzer:use"],"boundaries":["own_customer_context","reply_suggestion","own_tasks"],"forbidden":["跨销售查看客户私聊","采纳公司规则/风险禁忌","查看 Secret 和模型 Key","查看其他租户数据"]},{"role":"owner","label":"老板/主管","description":"看团队客户、审核公司规则、管理知识库和用量。","permissions":["sidebar:use","customers:read","knowledge:read","analyzer:use","customers:write","knowledge:write","tasks:manage","playbook:adopt","reports:view"],"boundaries":["tenant_customers","team_tasks","knowledge_and_rules","usage_reports"],"forbidden":["查看服务商其他客户企业","读取 Secret 明文","绕过风险禁忌直接改全局规则"]},{"role":"provider","label":"服务商","description":"负责安装、诊断、账单支持和跨租户交付，不直接干预销售私聊。","permissions":["sidebar:use","customers:read","knowledge:read","analyzer:use","customers:write","knowledge:write","tasks:manage","playbook:adopt","reports:view","tenant:manage","provider:manage"],"boundaries":["tenant_installation","health_diagnostics","billing_and_support"],"forbidden":["默认查看客户私聊全文","代替老板采纳客户公司规则","导出未授权客户数据"]}],"tenant_scope":{"identity_keys":["tenant_id","corp_id","staff_userid","external_userid","roomid"],"tenant_scoped_tables":["tenant_auths","archive_configs","archive_consent_records","domain_configs","staff_users","tenant_role_bindings","customer_profiles","conversation_threads","message_records","message_inbox","model_routes","ai_suggestions","ai_memory_events","company_rules","personal_style_memories","knowledge_libraries","knowledge_documents","knowledge_chunks","task_records","usage_records","audit_logs","webhook_events","sync_jobs","billing_accounts"],"guard_enforcement":"read_filter_enabled_write_stamp_required","legacy_policy":"旧 demo 数据允许缺 tenant_id，但新增企微与 SaaS 数据必须写入 tenant_id。","issues":[{"collection":"contacts","total":1,"current_tenant_count":1,"missing_tenant_count":1,"outside_tenant_count":0,"status":"legacy_compatible"},{"collection":"messages","total":1,"current_tenant_count":1,"missing_tenant_count":1,"outside_tenant_count":0,"status":"legacy_compatible"}]},"secret_policy":{"storage":"Secret、私钥、模型 Key 只进入加密库；租户草稿只保存非敏感配置。","sensitive_collections":["tenant_auths","service_provider_auths","archive_configs","model_credentials","secret_store"],"secret_tables":[{"table":"app_users","secret_fields":["password_hash","mfa_secret"]},{"table":"tenant_auths","secret_fields":["permanent_code","access_token_cache"]},{"table":"service_provider_auths","secret_fields":["suite_secret","suite_ticket","suite_access_token"]},{"table":"archive_configs","secret_fields":["msgaudit_secret","private_key"]},{"table":"model_routes","secret_fields":["provider_api_key"]}],"key_backup_reminder":"正式保存 Secret 后，请备份 /opt/wecom-sidebar/data/.secret_store_key；丢失后加密库无法解密。"},"rule_governance":{"tenant_customizable":true,"priority":["risk_guardrail","company_rule","knowledge_fact","personal_style"],"layers":[{"id":"personal_style","label":"个人风格","reviewer":"sales","can_sales_adopt":true,"examples":["去掉重复寒暄","回复更短","少用方便问下"]},{"id":"company_rule","label":"公司规则","reviewer":"owner_or_provider","can_sales_adopt":false,"examples":["报价口径","服务流程","分润规则","标准产品介绍"]},{"id":"risk_guardrail","label":"风险禁忌","reviewer":"owner_or_provider","can_sales_adopt":false,"examples":["不能承诺结果","不能越界承诺政策/合同","不能重复索要已留联系方式"]}],"conflict_resolution":["风险禁忌优先于所有回复和知识库。","公司规则优先于个人风格；和知识库事实冲突时，需要老板/服务商确认后更新知识库或规则。","知识库负责事实，个人风格只能改变表达方式，不能改事实。"]},"checks":[{"id":"tenant_filter","label":"租户读取过滤","status":"warn","detail":"2 个集合仍有历史数据需要标记 tenant_id。"},{"id":"secret_redaction","label":"密钥不回显","status":"ready","detail":"接口只返回 configured 状态，不返回 Secret 原文。"},{"id":"role_boundary","label":"角色边界","status":"ready","detail":"销售、老板、服务商的权限边界已经在后台和合约中明确。"},{"id":"archive_context","label":"存档使用边界","status":"ready","detail":"私聊用于回复上下文，群聊默认只做画像、意向和背景，不直接混入私聊回复。"}],"links":{"tenant_guard":"/api/saas/tenant-guard","data_model":"/api/saas/data-model","secret_status":"/api/saas/secret-status","archive_policy":"/api/wecom/archive/context-policy"}},"archiveContextPolicy":{"schema_version":"2026-06-13.5","generated_at":"2026-08-17T09:06:02.535Z","tenant_id":"tenant_default","policy":{"private_chat":{"default_ai_use":"reply_context","description":"私聊消息进入当前客户回复上下文，可生成 AI 建议回复、意向判断、客户画像和跟进任务。","allowed":["AI建议回复","客户画像","意向判断","主动任务","AI学习"]},"group_chat":{"default_ai_use":"background_only","description":"群聊消息默认只作为客户画像、兴趣判断、群聊背景和销售复盘，不直接混入私聊回复上下文。","allowed":["客户画像证据","群聊兴趣判断","群成员识别","销售复盘"],"blocked_by_default":["私聊回复直接引用","自动生成一对一催单话术"]},"staff_message":{"default_ai_use":"learning_and_review","description":"销售发送的最终话术用于风格学习、销冠复盘和规则候选，不进入待回复队列。"},"duplicate_text":{"description":"同一句话在不同群出现，必须按 roomid 和 msgid 分开保存，不能仅按文本去重。"}},"filters":{"reply_context":"conversation_type=private AND role=customer AND queue_status in pending_reply/suggested/suggestion_failed","profile_evidence":"conversation_type in private/group AND role=customer","sales_learning":"role=human_final","group_background":"conversation_type=group"},"stats":{"total":0,"customer_count":0,"staff_count":0,"group_count":0,"private_count":0,"queued_count":0,"archived_only_count":0,"latest_seq":0},"samples":{"private_reply_candidates":[],"group_background_evidence":[]},"next_actions":["AI 生成私聊回复时优先取私聊上下文；群聊只作为画像和兴趣证据。","中控台数据表按客户、群聊、销售、消息类型和队列状态筛选。","后续上线前把策略固化到数据库权限和模型提示词路由中。"]},"billingUsage":{"tenant_id":"tenant_default","corp_id":"","date":"2026-08-17","currency":"USD","summary":{"count":0,"totalCost":0,"inputTokens":0,"outputTokens":0},"byScene":[],"byModule":[],"byModel":[],"recent":[],"budget":{"plan":"pilot","owner":"service_provider","monthly_usd":0,"today_estimated_usd":0,"status":"normal"},"provider_rollup":{"all_tenants_today":{"count":0,"totalCost":0,"inputTokens":0,"outputTokens":0},"byTenant":[],"byProvider":[]},"updated_at":"2026-08-17T09:06:02.536Z"},"activeContactId":"ct_4d5a5c4afa51963b","account":null,"wecom":{"enabled":true,"mode":"manual_mapping","stage":"sidebar_embedded","tenantId":"tenant_default","corpId":"","installMode":"self_built_app","canUseJsSdk":false,"configured":false,"missing":["WECOM_CORP_ID","WECOM_AGENT_ID","WECOM_AGENT_SECRET"],"corpIdConfigured":false,"agentIdConfigured":false,"contactSecretConfigured":false,"archiveEnabled":false,"domainMode":"provider_domain","messageSourceProviders":[{"provider":"WeComArchiveProvider","enabled":false,"mainline":true,"status":"pending_config"},{"provider":"LocalGatewayProvider","enabled":false,"mainline":false,"status":"reserved"},{"provider":"DesktopAgentProvider","enabled":false,"mainline":false,"status":"experimental"},{"provider":"SidebarManualProvider","enabled":true,"mainline":false,"status":"transitional_until_archive_enabled"}],"tenantRuntime":{"install_modes":["self_built_app","third_party_standard_app","customized_app_agency","private_deployment"],"tenant_config":{"source":"runtime_env","updated_at":"","billing_plan":"pilot","billing_owner":"service_provider","usage_budget_monthly_usd":0,"non_secret_fields_ready":false,"secret_policy":"Secret、私钥、模型 Key 只进入加密库；租户草稿只保存非敏感配置。"},"tenant_auth":{"tenant_id":"tenant_default","corp_id":"","install_mode":"self_built_app","agent_id":"","suite_id":"","permanent_code":false,"access_token_cache":null,"token_expire_at":null,"auth_status":"incomplete","visible_scope":[],"authorized_permissions":["sidebar_js_sdk"],"missing":["corp_id","agent_id"],"config_source":"runtime_env","config_updated_at":""},"service_provider_auth":{"suite_id":"","suite_secret_configured":true,"callback_token_configured":false,"encoding_aes_key_configured":false,"encrypted_callback_ready":false,"receive_id_configured":false,"suite_ticket_configured":false,"suite_ticket_updated_at":"","suite_access_token_cached":false,"pre_auth_code_cached":false,"pre_auth_code_expire_at":"","auth_corp_count":0,"token_expire_at":null,"instruction_callback_url":"","data_callback_url":"","install_callback_url":"","config_source":"runtime_env","config_updated_at":""},"archive_config":{"tenant_id":"tenant_default","corp_id":"","private_key_file":"","public_key_version":"","archive_enabled":false,"trusted_ip_mode":"provider_server","archive_storage_mode":"local","last_seq":0,"pull_limit":50,"pull_timeout":10,"gateway_url":"","decryptor_url":"","config_source":"shared_server_trusted_provider","trusted_config_provider_bound":true,"trusted_config_authority":"shared_server_provider","trusted_config_scope_aligned":true,"trusted_config_secret_resolution":{"wecom_msgaudit_secret":"missing","wecom_archive_private_key":"missing","wecom_archive_private_key_file":"missing"},"config_updated_at":"","archive_trusted_config_authority":"shared_server_trusted_provider","msgaudit_secret_configured":false,"private_key_configured":false},"domain_config":{"host_domain":"tp1.copilot.timeflowai.com","tenant_id":"tenant_default","domain_mode":"provider_domain","ssl_status":"configured","verification_status":"pending","config_source":"runtime_env","config_updated_at":""},"third_party_auth":{"schema_version":"2026-06-13.5","mode":"third_party_standard_app","ready":false,"suite_id":"","suite_secret_configured":true,"callback_token_configured":false,"encoding_aes_key_configured":false,"encrypted_callback_ready":false,"receive_id_configured":false,"suite_ticket_configured":false,"suite_ticket_updated_at":"","suite_access_token_cached":false,"token_expire_at":null,"pre_auth_code_cached":false,"pre_auth_code_expire_at":"","auth_corp_count":0,"auth_corps":[],"install_session_count":0,"pending_install_session_count":0,"install_sessions":[],"last_error":"","install_url":"","install_url_configured":false,"callbacks":{"instruction_callback_url":"https://tp1.copilot.timeflowai.com/wecom/third-party/instruction-callback","data_callback_url":"https://tp1.copilot.timeflowai.com/wecom/third-party/data-callback","install_callback_url":"https://tp1.copilot.timeflowai.com/wecom/third-party/install-callback"},"missing":["suite_id","callback_token","encoding_aes_key","suite_ticket"],"reserved_steps":["生成授权安装链接","临时 auth_code 换 permanent_code","permanent_code 换企业 access_token","授权变更/停用/卸载回调","可见范围和权限同步","租户启停状态同步"],"note":"当前只预留第三方应用框架；正式上架前再接入企微服务商授权链接。","updated_at":"2026-08-17T09:06:02.538Z"},"message_source_providers":[{"provider":"WeComArchiveProvider","enabled":false,"mainline":true,"status":"pending_config"},{"provider":"LocalGatewayProvider","enabled":false,"mainline":false,"status":"reserved"},{"provider":"DesktopAgentProvider","enabled":false,"mainline":false,"status":"experimental"},{"provider":"SidebarManualProvider","enabled":true,"mainline":false,"status":"transitional_until_archive_enabled"}],"unified_message_context":["tenant_id","corp_id","staff_userid","external_userid","message"],"third_party_reserved_flows":["install_url","auth_code_to_permanent_code","permanent_code_to_corp_access_token","auth_change_callback","uninstall_callback","permission_change_callback","tenant_enable_disable","visible_scope_sync"]},"runtimeHealth":{"readiness":"needs_config","label":"待配置","template":{"active_template_id":"wecom_service_provider","env_template_id":"","default_template_id":"wecom_service_provider","configured_by_env":false,"template_path":"prompts/templates/wecom_service_provider","template_exists":true},"tenant_id":"tenant_default","corp_id":"","install_mode":"self_built_app","archive_enabled":false,"mapped_contact_count":0,"pending_inbox_count":0,"open_task_count":0,"archive_last_seq":0,"archive_last_pull_at":"","archive_last_success_at":"","archive_last_error":"","items":[{"id":"tenant_auth","label":"租户授权","status":"missing","detail":"缺少 corp_id、agent_id。","action":"补齐 WECOM_CORP_ID / WECOM_AGENT_ID 等配置。"},{"id":"js_sdk","label":"当前客户识别","status":"missing","detail":"缺少 WECOM_CORP_ID、WECOM_AGENT_ID、WECOM_AGENT_SECRET。","action":"先完成可信域名、AgentId、Secret 配置。"},{"id":"contact_profile","label":"客户详情","status":"missing","detail":"缺少 WECOM_CONTACT_SECRET，只能识别 external_userid，无法读取客户名字。","action":"在企业微信客户联系 API 中获取 Secret，并写入服务器 /opt/wecom-sidebar/.env.local。"},{"id":"archive","label":"会话存档","status":"pending","detail":"当前未开通，先用手动粘贴或测试消息入口。","action":"客户开通会话内容存档后，补 secret、私钥和公钥版本。"},{"id":"domain","label":"域名与证书","status":"ready","detail":"tp1.copilot.timeflowai.com / provider_domain / configured","action":""},{"id":"third_party","label":"第三方应用预留","status":"pending","detail":"暂未配置 suite_id / suite_secret，当前仍按自建应用测试。","action":"服务商阶段再补授权安装、回调和 permanent_code。"},{"id":"message_pipeline","label":"消息入口","status":"ready","detail":"已统一到消息队列：0 个待处理，已映射 0 个企微客户。","action":""},{"id":"task_queue","label":"主动任务","status":"ready","detail":"已接入后端任务队列：0 个开放任务。","action":""}],"next_actions":["补齐 WECOM_CORP_ID / WECOM_AGENT_ID 等配置。","先完成可信域名、AgentId、Secret 配置。","在企业微信客户联系 API 中获取 Secret，并写入服务器 /opt/wecom-sidebar/.env.local。","客户开通会话内容存档后，补 secret、私钥和公钥版本。"],"updated_at":"2026-08-17T09:06:02.540Z"},"message":"当前为手动/模拟映射模式；补充 WECOM_CORP_ID、WECOM_AGENT_ID、WECOM_AGENT_SECRET 后可启用企微自动识别。","mappedCount":0},"runtime":{"model":{"provider":"deepseek","configured":true,"model":"deepseek-chat","mode":"model","routes":[{"id":"sales_reply","scene":"sales_reply","label":"实时回复","description":"客户新消息、重写建议、主动跟进优先走这里。","provider":"deepseek","model":"deepseek-chat","max_tokens":1200,"enabled":true,"customer_facing":true,"modules":["main_reply","proactive_reply"],"source":"default","configured":true,"price":{"input":2,"output":8}},{"id":"learning","scene":"learning","label":"学习沉淀","description":"人工改写后的记忆写回、规则总结和质量判断。","provider":"deepseek","model":"deepseek-chat","max_tokens":600,"enabled":true,"customer_facing":false,"modules":["memory_update","quality_eval"],"source":"default","configured":true,"price":{"input":2,"output":8}},{"id":"analysis","scene":"analysis","label":"分析复盘","description":"销冠复盘、方案生成、后台深度分析。","provider":"deepseek","model":"deepseek-chat","max_tokens":1200,"enabled":true,"customer_facing":false,"modules":["sales_review","sales_playbook","champion_analyzer","diagnostic_report"],"source":"default","configured":true,"price":{"input":2,"output":8}},{"id":"utility","scene":"utility","label":"轻量工具","description":"低成本分类、摘要、检索辅助等小任务。","provider":"deepseek","model":"deepseek-chat","max_tokens":400,"enabled":true,"customer_facing":false,"modules":["cheap","classifier","summary"],"source":"default","configured":true,"price":{"input":2,"output":8}}],"roles":{"main_reply_model":"deepseek-chat","cheap_model":"deepseek-chat","eval_model":"deepseek-chat","memory_model":"deepseek-chat"},"limits":{"main_reply_max_tokens":1200,"memory_update_max_tokens":600,"quality_eval_max_tokens":400}},"template":{"id":"wecom_service_provider","name":"企微服务商销售模板","type":"guardrailed_wecom_service_provider_sales","owner":"时间流AI企微服务商团队","leadRules":{"version":"v1","base_score":18,"no_recent_customer_cap":35,"levels":[{"min":82,"label":"高意向"},{"min":65,"label":"中高意向"},{"min":42,"label":"可继续观察"},{"min":0,"label":"待判断"}],"node_rules":[{"label":"主动暴露客户接待或销售管理痛点","points":18,"patterns":["个人微信","客户在销售手里","离职带走客户","销售回复慢","话术不统一","跟进漏","客户沉淀"]},{"label":"主动询问企微能力或开通方式","points":14,"patterns":["企业微信","企微","客户联系","客户群","离职继承","朋友圈","微信客服","视频号","对外收款"]},{"label":"主动询问价格或优惠","points":12,"patterns":["多少钱","怎么收费","价格","费用","折扣","续费","新购","报价"]},{"label":"关注会话内容存档或监管","points":16,"patterns":["会话内容存档","聊天记录","质检","监管","合规","提醒","客户会看到"]},{"label":"主动询问AI副驾或自动生成话术","points":20,"patterns":["AI副驾","AI","自动生成","回复建议","客户画像","意向判断","知识库","试用"]},{"label":"愿意看演示或试点","points":24,"patterns":["演示","试点","先试","试用","搭建","什么时候能用","开几个账号"]},{"label":"主动留下联系方式或约时间","points":28,"patterns":["电话","微信","加我","约个时间","明天聊","方便联系","发我方案"]},{"label":"只泛泛了解或身份试探","points":6,"patterns":["了解一下","你们是谁","腾讯的人","真的假的","先看看"]}],"next_action_rules":[{"when":"客户还没说明行业、规模、当前接待方式","action_code":"suggest_collect_business_context"},{"when":"客户已有客户沉淀、私域、离职继承、客户群等痛点","action_code":"suggest_match_wecom_features"},{"when":"客户问聊天记录、质检、合规或会话存档提醒","action_code":"suggest_explain_archive"},{"when":"客户问价格、折扣、续费或报价","action_code":"suggest_send_price_reference"},{"when":"客户提到销售回复、话术、跟进、AI或效率问题","action_code":"suggest_introduce_ai_copilot"},{"when":"客户愿意继续了解或问如何落地","action_code":"suggest_offer_demo_trial"},{"when":"客户已有明确采购或试点意向","action_code":"suggest_human_followup"},{"when":"客户暂缓或信息不足","action_code":"suggest_soft_followup"}]},"learning":{"adoptedRuleCount":0,"governancePolicy":{"tenant_customizable":true,"priority":["risk_guardrail","company_rule","knowledge_fact","personal_style"],"layers":[{"id":"personal_style","label":"个人风格","reviewer":"sales","can_sales_adopt":true,"examples":["去掉重复寒暄","回复更短","少用方便问下"]},{"id":"company_rule","label":"公司规则","reviewer":"owner_or_provider","can_sales_adopt":false,"examples":["报价口径","服务流程","分润规则","标准产品介绍"]},{"id":"risk_guardrail","label":"风险禁忌","reviewer":"owner_or_provider","can_sales_adopt":false,"examples":["不能承诺结果","不能越界承诺政策/合同","不能重复索要已留联系方式"]}],"conflict_resolution":["风险禁忌优先于所有回复和知识库。","公司规则优先于个人风格；和知识库事实冲突时，需要老板/服务商确认后更新知识库或规则。","知识库负责事实，个人风格只能改变表达方式，不能改事实。"]},"activeRules":[],"adoptedPlaybookId":"","adoptedPlaybookAt":"","updatedAt":"","sync":{"checked":0,"inserted":0,"updated":0,"changed":false}}},"prompts":{"root":"/opt/wecom-ai-copilot-e5c-tp1/prompts","files":[{"name":"common/reply_master.md","ok":true,"bytes":6501},{"name":"common/memory_update.md","ok":true,"bytes":3423},{"name":"common/knowledge_context.md","ok":true,"bytes":911},{"name":"common/quality_eval.md","ok":true,"bytes":951},{"name":"common/split_reply.md","ok":true,"bytes":592},{"name":"common/diagnostic_report.md","ok":true,"bytes":2397},{"name":"templates/wecom_service_provider/template.config.json","ok":true,"bytes":5209},{"name":"templates/wecom_service_provider/route_policy.json","ok":true,"bytes":9988},{"name":"templates/wecom_service_provider/master_rules.md","ok":true,"bytes":4509},{"name":"templates/wecom_service_provider/business_facts_current.md","ok":true,"bytes":2399},{"name":"templates/wecom_service_provider/style_rules.md","ok":true,"bytes":2231},{"name":"templates/wecom_service_provider/lead_rules.json","ok":true,"bytes":2879},{"name":"templates/wecom_service_provider/template_learning.json","ok":true,"bytes":1460},{"name":"templates/wecom_service_provider/profile_schema.json","ok":true,"bytes":2450},{"name":"templates/wecom_service_provider/state_schema.json","ok":true,"bytes":435},{"name":"templates/wecom_service_provider/action_rules.json","ok":true,"bytes":862},{"name":"templates/wecom_service_provider/handlers/N00_reply_master_reference.md","ok":true,"bytes":1179}]},"data":{"storePath":"/var/lib/wecom-ai-copilot-e5c-tp1/store.wecom_service_provider.json","salesAssetsPath":"/opt/wecom-ai-copilot-e5c-tp1/data/sales_assets/wecom_service_provider","salesAssetCount":0,"salesAssetReviewCount":0,"salesPlaybookCount":0},"usage":{"lastRequest":{"count":0,"totalCost":0,"inputTokens":0,"outputTokens":0},"today":{"count":0,"totalCost":0,"inputTokens":0,"outputTokens":0},"byModule":[],"byScene":[],"byModel":[],"recent":[]}}}