196 lines
5.8 KiB
Markdown
196 lines
5.8 KiB
Markdown
# AI关键词导入与统计工具集
|
||
|
||
## 项目简介
|
||
|
||
用于管理 `ai_article` 数据库中百度关键词数据的导入、更新和统计导出。
|
||
|
||
## 环境依赖
|
||
|
||
```bash
|
||
pip install pandas pymysql openpyxl
|
||
```
|
||
|
||
## 文件说明
|
||
|
||
| 文件 | 功能 |
|
||
|------|------|
|
||
| `database_config.py` | 数据库配置与连接管理 |
|
||
| `import_keywords.py` | 定频轮询导入关键词到baidu_keyword表 |
|
||
| `start_import_keywords.sh` | 服务管理脚本(启动/停止/重启/状态) |
|
||
| `update_keywords_from_excel.py` | 根据Excel更新已有关键词记录 |
|
||
| `export_author_stats.py` | 导出作者发文统计到CSV |
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
ai_import_quary/
|
||
├── database_config.py # 数据库配置
|
||
├── import_keywords.py # 关键词导入脚本(定频轮询)
|
||
├── start_import_keywords.sh # 服务管理脚本
|
||
├── update_keywords_from_excel.py # 关键词更新脚本
|
||
├── export_author_stats.py # 统计导出脚本
|
||
├── query_upload/ # Excel导入文件存放目录
|
||
└── exports/ # CSV导出文件存放目录
|
||
```
|
||
|
||
## 数据库表关系
|
||
|
||
```
|
||
ai_departments (科室表)
|
||
│ id → department_id
|
||
▼
|
||
ai_authors (作者表)
|
||
│ id → author_id
|
||
▼
|
||
baidu_keyword (关键词表)
|
||
│ keyword
|
||
▼
|
||
ai_articles (文章表)
|
||
```
|
||
|
||
## 使用方法
|
||
|
||
### 1. 导入关键词 (import_keywords.py)
|
||
|
||
**服务管理**(推荐):
|
||
```bash
|
||
./start_import_keywords.sh start # 启动服务
|
||
./start_import_keywords.sh stop # 停止服务
|
||
./start_import_keywords.sh restart # 重启服务
|
||
./start_import_keywords.sh status # 查看状态
|
||
./start_import_keywords.sh logs # 查看日志
|
||
./start_import_keywords.sh logs-follow # 实时日志
|
||
```
|
||
|
||
**直接运行**:
|
||
```bash
|
||
python import_keywords.py
|
||
```
|
||
|
||
**运行模式**:定频轮询(默认每60秒轮询一次)
|
||
|
||
**工作流程**:
|
||
1. 脚本启动后持续监控 `query_upload/` 目录
|
||
2. 发现Excel文件后自动处理
|
||
3. 处理成功后自动删除源文件
|
||
|
||
**Excel格式要求**:
|
||
- 必须包含 `query` 列(关键词,不能为空)
|
||
- 必须包含 `科室` 列(部门信息)
|
||
|
||
**配置参数**(在脚本头部修改):
|
||
```python
|
||
POLL_INTERVAL = 60 # 轮询间隔(秒)
|
||
UPLOAD_FOLDER = 'query_upload' # 监控目录
|
||
SEED_ID = 9999 # 固定值
|
||
SEED_NAME = '手动提交' # 固定值
|
||
CRAWLED = 1 # 固定值
|
||
```
|
||
|
||
**流程图**:
|
||
|
||
```
|
||
┌─────────────────┐
|
||
│ 定频轮询启动 │
|
||
└────────┬────────┘
|
||
▼
|
||
┌─────────────────┐
|
||
│ 读取Excel │
|
||
│ (query+科室) │
|
||
└────────┬────────┘
|
||
▼
|
||
┌─────────────────┐
|
||
│ 查询科室 │
|
||
│ ai_departments │
|
||
│ → department_id│
|
||
└────────┬────────┘
|
||
▼
|
||
┌─────────────────┐
|
||
│ 指定科室 │
|
||
│ 获取author信息 │
|
||
│ ai_authors │
|
||
│ → author_id │
|
||
│ → author_name │
|
||
└────────┬────────┘
|
||
▼
|
||
┌─────────────────┐
|
||
│ 判重 │
|
||
│ keyword不能重复 │
|
||
└────────┬────────┘
|
||
│
|
||
┌────┴────┐
|
||
│ │
|
||
重复 不重复
|
||
│ │
|
||
▼ ▼
|
||
┌──────┐ ┌───────────────────────┐
|
||
│ 跳过 │ │ INSERT baidu_keyword │
|
||
└──────┘ │ ┌───────────────────┐ │
|
||
│ │ keyword = query值 │ │
|
||
│ │ crawled = 1 │ │
|
||
│ │ seed_id = 9999 │ │
|
||
│ │ seed_name = 手动提交│ │
|
||
│ │ department = 科室 │ │
|
||
│ │ department_id = x │ │
|
||
│ │ author_id = 随机 │ │
|
||
│ │ author_name = 随机│ │
|
||
│ │ query_status = │ │
|
||
│ │ manual_review │ │
|
||
│ └───────────────────┘ │
|
||
└───────────────────────┘
|
||
```
|
||
|
||
### 2. 更新关键词 (update_keywords_from_excel.py)
|
||
|
||
```bash
|
||
python update_keywords_from_excel.py
|
||
```
|
||
|
||
根据Excel更新已存在的关键词记录(department、department_id、author_id、author_name)。
|
||
|
||
### 3. 导出统计 (export_author_stats.py)
|
||
|
||
```bash
|
||
python export_author_stats.py
|
||
python export_author_stats.py --date 2026-01-28
|
||
```
|
||
|
||
**参数**:
|
||
- `--date`: 目标日期,默认当天
|
||
- `--output-dir`: 输出目录,默认 `./exports`
|
||
|
||
**输出文件**:
|
||
- `author_review_stats_{date}.csv` - 发文审核统计(所有状态)
|
||
- `author_published_stats_{date}.csv` - 发文成功统计(published状态)
|
||
|
||
## 数据库配置
|
||
|
||
默认配置在 `database_config.py`:
|
||
|
||
```python
|
||
DB_CONFIG = {
|
||
'host': '8.149.233.36',
|
||
'user': 'ai_article_read',
|
||
'password': '***',
|
||
'database': 'ai_article',
|
||
'charset': 'utf8mb4'
|
||
}
|
||
```
|
||
|
||
## 导入记录字段说明
|
||
|
||
`baidu_keyword` 表插入字段:
|
||
|
||
| 字段 | 值 | 说明 |
|
||
|------|-----|------|
|
||
| keyword | Excel中query列 | 关键词 |
|
||
| seed_id | 9999 | 种子ID |
|
||
| seed_name | 手动提交 | 种子名称 |
|
||
| crawled | 1 | 已爬取标记 |
|
||
| parents_id | 0 | 父级ID |
|
||
| department | Excel中科室列 | 科室名称 |
|
||
| department_id | 查表获取 | 科室ID |
|
||
| query_status | manual_review | 查询状态 |
|
||
| author_id | 查表获取 | 作者ID |
|
||
| author_name | 查表获取 | 作者名称 |
|