Files

3.1 KiB
Raw Permalink Blame History

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 C1C5 或 R1R5
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. 同步策略

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 适当性)

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 提供 关系查询加速,非唯一真相源。