# Talent节点Neo4j属性设置说明

## 概述

本文档说明了在`parse_task.py`的`add_single_talent`函数中，当创建新的Neo4j Talent节点时，节点包含的属性信息。

## 属性列表

### 基本信息
- **`name_zh`** (string): 中文姓名
- **`name_en`** (string): 英文姓名

### 联系方式
- **`mobile`** (string): 手机号码
- **`phone`** (string): 固定电话
- **`email`** (string): 电子邮箱

### 状态信息
- **`status`** (string): 人才状态，通常为'active'

### 个人信息
- **`birthday`** (date_string_or_null): 生日，格式为'YYYY-MM-DD'，可能为None
- **`age`** (integer_or_null): 年龄，可能为None
- **`residence`** (string): 居住地
- **`native_place`** (string): 籍贯

### 系统信息
- **`pg_id`** (integer): PostgreSQL数据库中business_cards表的主键ID
- **`updated_at`** (datetime_string): 更新时间，格式为'YYYY-MM-DD HH:MM:SS'

## 代码实现

```python
# 创建Talent节点属性
talent_properties = {
    'name_zh': business_card.name_zh,
    'name_en': business_card.name_en,
    'mobile': business_card.mobile,
    'phone': business_card.phone,
    'email': business_card.email,
    'status': business_card.status,
    'birthday': business_card.birthday.strftime('%Y-%m-%d') if business_card.birthday else None,
    'age': business_card.age,
    'residence': business_card.residence,
    'native_place': business_card.native_place,
    'pg_id': business_card.id,  # PostgreSQL主记录的ID
    'updated_at': datetime.now().strftime('%Y-%m-%d %H:%M:%S')
}
```

## 属性处理说明

### 生日字段处理
- 如果`business_card.birthday`存在，将其格式化为'YYYY-MM-DD'字符串
- 如果为None，则属性值也为None

### 年龄字段处理
- 直接使用`business_card.age`的值
- 支持整数和None值

### 时间字段处理
- `updated_at`字段使用当前系统时间，格式化为'YYYY-MM-DD HH:MM:SS'

## 数据来源

所有属性都来自PostgreSQL数据库中的`business_cards`表记录，通过`BusinessCard`模型对象获取。

## 使用场景

这些属性用于在Neo4j图数据库中创建Talent节点，支持：
- 人才信息查询和检索
- 人才关系图谱构建
- 人才数据分析
- 与其他节点的关系建立

## 注意事项

1. **数据类型**: 确保属性值类型与Neo4j支持的类型兼容
2. **空值处理**: 某些字段可能为None，需要正确处理
3. **数据一致性**: 与PostgreSQL数据库中的数据保持同步
4. **性能考虑**: 属性过多可能影响查询性能，建议根据实际需求调整

## 扩展建议

可以根据业务需求添加更多属性：
- 技能标签
- 工作经验
- 教育背景
- 证书信息
- 推荐指数
- 等等

## 相关文件

- `app/core/data_parse/parse_task.py`: 主要实现文件
- `app/core/data_parse/parse_system.py`: BusinessCard模型定义
- `app/core/graph/graph_operations.py`: Neo4j节点创建函数 