106 lines
3.5 KiB
Markdown
106 lines
3.5 KiB
Markdown
# Session: 2026-06-03 14:13:50 GMT+8
|
||
|
||
- **Session Key**: agent:main:feishu:direct:ou_e63ce6b760ad39382852472f28fbe2a2
|
||
- **Session ID**: db61f0f5-442d-4804-adfa-ad619f609f70
|
||
- **Source**: feishu
|
||
|
||
## Conversation Summary
|
||
|
||
assistant: 解密结果:**15944281022**
|
||
user: 你会手机号MD5加密么
|
||
assistant: 会的。Python 标准库 `hashlib` 直接就能做:
|
||
|
||
```python
|
||
import hashlib
|
||
hashlib.md5("13800138000".encode()).hexdigest()
|
||
```
|
||
|
||
需要我加密哪个手机号?发过来就行。
|
||
user: 我需要你帮我写一个脚本,就是可以将bi_vala_app_account表里面的tel_encrypt,通过上面的解密方式解密成手机号明文,再用MD5加密。
|
||
assistant: 先确认一下:这个脚本的输出你希望是什么形式?
|
||
|
||
- **A)** 导出为 CSV 文件(`account_id, tel_encrypt, phone_md5`)
|
||
- **B)** 直接更新回 `bi_vala_app_account` 表(新增一个 `phone_md5` 字段)
|
||
- **C)** 其他格式
|
||
|
||
另外是全量处理 `tel_encrypt` 不为空的所有记录对吧?
|
||
user: 导出为csv文件。另外我是希望可以在其他的skill里面调用这个脚本,来实现对部分特定的用户的手机号的解密加密操作。
|
||
assistant: 明白了,两件事:1)全量导出 CSV;2)提供可被其他 skill 调用的函数。
|
||
|
||
我先在 `phone_encrypt.py` 里加 MD5 函数,再写导出脚本。
|
||
|
||
|
||
assistant: 先验证一下脚本能跑通:
|
||
|
||
|
||
assistant: 加密解密 + MD5 都正常。测试一下导出脚本(先取少量数据验证):
|
||
|
||
|
||
assistant: 密码变量名是 `PG_ONLINE_PASSWORD`,修正一下:
|
||
|
||
|
||
assistant: 验证通过。确认下全量有多少条记录:
|
||
|
||
|
||
assistant: 全量 29489 条。现在登记到 SKILL_REGISTRY.md:
|
||
|
||
|
||
assistant: 完成了。汇总如下:
|
||
|
||
---
|
||
|
||
### 改动内容
|
||
|
||
**1. `scripts/phone_encrypt.py` — 新增两个 MD5 函数**
|
||
|
||
```python
|
||
phone_md5(phone: str) -> str # 明文 → MD5
|
||
tel_encrypt_to_md5(tel_encrypt: str) # tel_encrypt → 解密 → MD5(一步到位)
|
||
```
|
||
|
||
**2. `scripts/export_phone_md5.py` — 导出脚本**
|
||
|
||
两种用法:
|
||
|
||
| 场景 | 命令 |
|
||
|------|------|
|
||
| 全量导出 | `python3 export_phone_md5.py` |
|
||
| 按 account_id 导出 | `python3 export_phone_md5.py --ids 57,308,100` |
|
||
| 指定输出路径 | `python3 export_phone_md5.py --output /path/to/out.csv` |
|
||
|
||
**被其他 skill 调用:**
|
||
|
||
```python
|
||
from scripts.export_phone_md5 import query_phone_md5
|
||
|
||
# 全量
|
||
results = query_phone_md5()
|
||
# 指定用户
|
||
results = query_phone_md5([57, 308, 100])
|
||
# 返回: [{account_id, tel_encrypt, phone_plain, phone_md5}, ...]
|
||
```
|
||
|
||
**输出 CSV 格式:** `account_id, tel_encrypt, phone_plain, phone_md5`
|
||
|
||
---
|
||
|
||
已验证通过,全量 **29,489 条**记录。要不要我现在跑一次全量导出?
|
||
user: 所以后面我应该用哪个脚本来实现tel_encrypt解密再MD5加密的操作呢
|
||
assistant: 直接用 `phone_encrypt.py`,核心函数都在这里面:
|
||
|
||
```python
|
||
from scripts.phone_encrypt import tel_encrypt_to_md5
|
||
|
||
md5 = tel_encrypt_to_md5("5WeooSK74KICOTX-LDEGhg..")
|
||
# → "ec7df1c501d154c5da6c873d9cb051e4"
|
||
```
|
||
|
||
`export_phone_md5.py` 是专门做全量/按ID导出 CSV 用的,它内部也是调 `phone_encrypt.py`。日常在其他 skill 里做解密+MD5,只引 `phone_encrypt.py` 就够了,它现在提供了完整的四个函数:
|
||
|
||
| 函数 | 作用 |
|
||
|------|------|
|
||
| `encrypt_phone(phone)` | 明文 → tel_encrypt |
|
||
| `decrypt_phone(tel_encrypt)` | tel_encrypt → 明文 |
|
||
| `phone_md5(phone)` | 明文 → MD5 |
|
||
| `tel_encrypt_to_md5(tel_encrypt)` | tel_encrypt → 解密 → MD5(一步到位) |
|