Introduce the `别名失效` predicate to handle cases where an alias is explicitly no longer applicable to an entity. Changes: - write_pipeline.py: extend _merge_alias_in_memory to process `别名失效` edges — removes invalidated alias names from target entity's aliases list in-memory before Neo4j write - cypher_queries.py: add REMOVE_INVALID_ALIASES and DELETE_ALIAS_NODES queries; update REDIRECT_ALIAS_EDGES to handle both `别名属于` and `别名失效` predicates - tasks.py: add step 1.5 in post_store_dedup_and_alias_merge_task to execute REMOVE_INVALID_ALIASES and sync removals to PostgreSQL; add step 3 to delete alias nodes after edge redirection; add snapshot step 3.5 for post-merge entity state; pass snapshot_dir to the task - end_user_info_repository.py: add remove_aliases() method to remove specified aliases from end_user_info.aliases (case-insensitive) - write_snapshot_recorder.py: add save_alias_merge_result() static method to write stage 8 snapshot after alias merge and deletion - extract_triplet.jinja2: document `别名失效` predicate with usage rules — only use when conversation explicitly negates an alias
166 KiB
166 KiB