# GovCrawler — 政务网站信息采集系统

多站点、定时、低调地采集政务公开信息，结构化保存到本地文件系统与 PostgreSQL，供下游 RAG 系统消费。

## Setup

### 1. 安装 Python 依赖

```bash
uv sync --dev
```

### 2. 安装 Chromium（反检测版，首次运行约下载 150MB）

```bash
uv run patchright install chromium
```

### 3. 启动本地 PostgreSQL

```bash
docker compose up -d db
```

等待健康检查通过（约 5–10 秒）后，初始化数据库 schema：

```bash
uv run alembic upgrade head
```

### 4. 配置环境变量

```bash
cp .env.example .env
# 编辑 .env，按实际情况修改 DB_URL / DATA_DIR / USER_AGENT
```

## 运行

### 抓取单篇文章（Plan 02 实现后可用）

```bash
uv run python -m govcrawler fetch gdqy szfwj post_2136593
```

参数：`<site_id> <column_id> <article_key>`

### 数据库迁移

```bash
# 升级到最新 schema
uv run alembic upgrade head

# 回滚全部（清空所有表）
uv run alembic downgrade base

# 查看迁移历史
uv run alembic history --verbose
```

## 目录结构

```
data/govcrawler/
├── raw_html/<site>/<column>/<YYYY>/<MM>/<article_key>.html
├── articles_text/<site>/<column>/<YYYY>/<MM>/<article_key>.txt
└── attachments/<site>/<column>/<YYYY>/<MM>/<article_key>_<safe_filename>
```

## 许可证

内部使用。所有依赖遵守 MIT / BSD / Apache-2.0 / LGPL-3（动态链接）许可。
