# Neo4j · 共享关系记忆(P0 最小集) > **为何需要**:持仓-产品-客户、产品-适当性规则、客户-代理人归属是 **四 Agent 共同依赖的关系视图**,用于: > C-01 持仓关联、A-01 客户概况、R-01/R-02 上下文、D-05 交叉问数。 > **为何不存 MySQL 主表**:关系遍历与传导(持仓→行业→风险事件)在图上更高效;**事实金额仍以 Core RO 为准**。 --- ## 1. P0 节点(Node Labels) | Label | 主键属性 | 来源 | 说明 | | --- | --- | --- | --- | | `Customer` | `customer_id` | Core 同步 | 不含敏感明文,仅 ID + 脱敏标记 | | `Advisor` | `advisor_id` | Core 同步 | | | `Product` | `product_id` | Core 同步 | 基金/产品 | | `RiskGrade` | `code` | Core | C1~C5 或 R1~R5 | | `Industry` | `industry_code` | Core 同步 | 行业分类,P1 扩展 | **不在 Neo4j 存**:会话、审计、向量、画像 JSON(仍 MySQL)。 --- ## 2. P0 关系(Relationships) | 关系 | 起 → 止 | 属性 | 用途 | | --- | --- | --- | --- | | `ASSIGNED_TO` | Customer → Advisor | `since`, `status` | F-01 归属校验 | | `HAS_RISK_LEVEL` | Customer → RiskGrade | `source=l0`, `evaluated_at` | R-02 适当性(L0 权威) | | `HOLDS` | Customer → Product | `qty`, `market_value`, `cost`, `pnl_pct`, `as_of` | C-01/A-01/R-01 上下文 | | `REQUIRES_MIN_RISK` | Product → RiskGrade | `rule_id` | R-02 产品最低适配等级 | | `BELONGS_TO` | Product → Industry | — | C-13 持仓传导,P1 | --- ## 3. 同步策略 ```text Core 持仓/产品/归属变更(CDC 或 T+0 批) → Sync Job 更新 Neo4j 节点与 HOLDS/ASSIGNED_TO → 金额字段 as_of 戳记;Agent 展示时仍可调 Core API 二次确认 Agent 写入画像(L1/L2/L3) → 不写 Neo4j(避免双写);Neo4j 只读关系,画像走 MySQL ``` | 同步频率 | 数据 | | --- | --- | | 准实时(≤5min) | HOLDS 市值/盈亏 | | 日批 | Industry、REQUIRES_MIN_RISK | | 事件驱动 | ASSIGNED_TO 变更 | --- ## 4. 各 Agent 读图场景 | Agent | Cypher 意图示例 | 场景 | | --- | --- | --- | | 客户财富 | 我的某产品→所属行业→相关资讯标的 | C-01, C-13 | | 代理人助手 | 客户→持仓→产品风险等级分布 | A-01 | | 风控监测 | 客户→HOLDS→Product→REQUIRES_MIN_RISK vs HAS_RISK_LEVEL | R-02 | | 数据分析 | 统计某 RiskGrade 下 HOLD 产品类别分布 | D-05 | --- ## 5. P0 不建模(避免过度设计) | 不建 | 原因 | | --- | --- | | 会话/Message 节点 | MySQL + Redis 已覆盖 | | 预警 Alert 节点 | MySQL `risk_alert` 权威 | | 画像标签节点 | MySQL JSON + 分析用 SQL 聚合足够 P0 | | 全文文档节点 | Milvus 负责 RAG | --- ## 6. 示例 Cypher(R-02 适当性) ```cypher MATCH (c:Customer {customer_id: $cid})-[:HAS_RISK_LEVEL]->(cr:RiskGrade) MATCH (p:Product {product_id: $pid})-[:REQUIRES_MIN_RISK]->(pr:RiskGrade) RETURN cr.code AS customer_risk, pr.code AS product_min_risk ``` 硬判定逻辑仍在风控服务代码 + Core 规则引擎;Neo4j 提供 **关系查询加速**,非唯一真相源。