refactor(memory): consolidate write pipeline and rename statement extraction step
- Rename StatementExtractionStep → StatementTemporalExtractionStep and extract_statement.jinja2 → extract_statement_temporal.jinja2 to reflect merged temporal extraction logic - Move extraction_pipeline_orchestrator.py out of steps/ to engine root - Move dedup_step.py into steps/ directory - Introduce WriteMemoryRequest schema to replace positional args in write_memory() - Extract _resolve_and_load_config, _preprocess_files, _write_neo4j, and _invalidate_interest_cache as private helpers in MemoryAgentService - Remove shadow pipeline and simplify NEW_PIPELINE_ENABLED branch - Merge 类型归属/成员隶属/任职服务 relation types into single 归属身份关系 in triplet prompt - Add alias merge logic (别名属于) in deduplication and MERGE_ALIAS_BELONGS_TO Cypher query - Add StorageType, Language, MessageItem enums/models to memory_agent_schema - Reduce AgentMemory_Long_Term.DEFAULT_SCOPE from 6 to 1 - Delete standalone extract_temporal.jinja2 (logic merged into statement step)
This commit is contained in:
@@ -1107,6 +1107,35 @@ RETURN (
|
||||
) AS is_complete
|
||||
"""
|
||||
|
||||
# 别名归并:将 predicate="别名属于" 的 EXTRACTED_RELATIONSHIP 边的 source.name
|
||||
# 合并进 target.aliases(去重),并将 source.description 追加到 target.description(分号分隔)
|
||||
MERGE_ALIAS_BELONGS_TO = """
|
||||
MATCH (source:ExtractedEntity {end_user_id: $end_user_id})-[r:EXTRACTED_RELATIONSHIP]->(target:ExtractedEntity {end_user_id: $end_user_id})
|
||||
WHERE r.predicate = '别名属于'
|
||||
WITH source, target,
|
||||
coalesce(target.aliases, []) AS existing_aliases,
|
||||
source.name AS source_name,
|
||||
coalesce(source.description, '') AS src_desc,
|
||||
coalesce(target.description, '') AS tgt_desc
|
||||
|
||||
// 1. 合并 aliases:将 source.name 追加到 target.aliases(去重)
|
||||
WITH source, target, src_desc, tgt_desc,
|
||||
CASE
|
||||
WHEN source_name IS NOT NULL AND source_name <> '' AND NOT source_name IN existing_aliases
|
||||
THEN existing_aliases + source_name
|
||||
ELSE existing_aliases
|
||||
END AS new_aliases
|
||||
|
||||
SET target.aliases = new_aliases,
|
||||
target.description = CASE
|
||||
WHEN src_desc <> '' AND NOT src_desc IN tgt_desc
|
||||
THEN CASE WHEN tgt_desc = '' THEN src_desc ELSE tgt_desc + ';' + src_desc END
|
||||
ELSE tgt_desc
|
||||
END
|
||||
|
||||
RETURN source.name AS merged_alias, target.name AS target_name, new_aliases AS updated_aliases
|
||||
"""
|
||||
|
||||
CHECK_COMMUNITY_IS_COMPLETE_WITH_EMBEDDING = """
|
||||
MATCH (c:Community {community_id: $community_id, end_user_id: $end_user_id})
|
||||
RETURN (
|
||||
|
||||
Reference in New Issue
Block a user