# info-tmp **Repository Path**: lmrybc49/info-tmp ## Basic Information - **Project Name**: info-tmp - **Description**: 临时仓库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-13 - **Last Updated**: 2026-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 情报搜集工作台 可试运行的情报搜集工作台,打通**专题深采**和**热点观察**两条情报链路。 ## 业务链路 ``` 专题任务(topic): 任务配置 → 启动执行 → 信息采集 → 材料落库 → 人工确认 → 专题报告 热点观察任务(watch): 任务配置 → 周期执行 → 信息采集 → 线索生成 → 人工确认 → 创建专题任务 ``` ## 技术栈 | 组件 | 用途 | 当前状态 | |------|------|---------| | FastAPI | 后端 API | ✅ 11 个端点 | | PostgreSQL 16 | 业务数据存储 | ✅ 3 张核心表 | | Redis 7 | Celery broker + 停止信号 | ✅ | | Celery | 异步任务队列(3 个采集队列) | ✅ 桩任务 | | APScheduler | 热点观察周期调度 | ✅ cron 注册/恢复 | | SQLAlchemy 2.0 + Alembic | ORM + 数据库迁移 | ✅ | | Docker Compose | 本地 + 服务器部署 | ✅ dev/prod 分离 | **后续阶段接入**:SearXNG(关键词搜索)、Crawl4AI(网页采集)、browser-use + CloakBrowser(社交平台采集) ## 快速开始 ```bash # 1. 配置环境变量 cp .env.example .env # 编辑 .env,设置数据库密码(本地开发可保留默认值) # 2. 启动所有服务 docker compose up -d # 3. 验证 curl http://localhost:8000/health # → {"status":"healthy","details":{"database":"ok","redis":"ok"}} # 4. 创建第一个任务 curl -X POST http://localhost:8000/api/v1/tasks \ -H "Content-Type: application/json" \ -d '{ "task_kind":"topic", "title":"测试专题", "trigger_mode":"manual", "period_start":"2025-01-01T00:00:00Z", "period_end":"2025-12-31T23:59:59Z", "sources":[{"source_type":"keyword","source_value":"人工智能"}] }' ``` ## 项目结构 ``` info_tmp/ ├── app/ │ ├── main.py # FastAPI 入口 + lifespan + /health │ ├── config.py # 配置(pydantic-settings) │ ├── database.py # SQLAlchemy 双引擎(async + sync) │ ├── models.py # 3 张 ORM 模型 + 6 个 Enum │ ├── schemas.py # Pydantic 请求/响应模型 │ ├── api.py # 11 个 API 路由 │ ├── services.py # 业务逻辑层 │ ├── redis_client.py # Redis 停止信号封装 │ ├── celery_app.py # Celery 配置 + 5 个队列 │ ├── celery_tasks.py # 3 个采集桩任务 │ └── scheduler.py # APScheduler cron 调度 ├── alembic/ # 数据库迁移 ├── docker-compose.yml # 生产基准配置 ├── docker-compose.override.yml # 开发覆盖(热重载、端口暴露) ├── Dockerfile ├── docker-entrypoint.sh # 容器入口(等待 DB → 迁移 → 启动) ├── .env.example # 环境变量模板 ├── .gitattributes # 换行符统一 LF └── docs/ # 项目文档 ``` ## 核心设计 ### 状态机 **任务状态**: ``` draft ──start──→ active ──stop──→ stopped(终态) ``` **执行记录状态**: ``` queued → running → succeeded ↓ ↓ stopping → canceled failed ``` ### 队列体系 | 队列 | 触发条件 | 当前阶段 | |------|---------|---------| | `collect.search` | keyword 入口 | 桩任务 | | `collect.web` | url 入口 | 桩任务 | | `collect.social` | account 入口 | 桩任务 | | `lead` | 热点观察采集完成 | 未启用 | | `report` | 专题报告生成 | 未启用 | ### 停止信号 ``` stop 请求 → Redis SET stop:task:{uuid} (TTL 1h) Worker 轮询 → 检测到信号 → 安全退出 restart → Redis DEL stop:task:{uuid} ``` ## API 概览 基础路径:`/api/v1` | 方法 | 路径 | 说明 | |------|------|------| | POST | `/tasks` | 创建任务(含入口) | | GET | `/tasks` | 任务列表(含聚合状态) | | GET | `/tasks/{id}` | 任务详情 | | PATCH | `/tasks/{id}` | 编辑草稿 | | POST | `/tasks/{id}/start` | 启动 → 活跃 | | POST | `/tasks/{id}/trigger` | 手动触发执行 | | POST | `/tasks/{id}/stop` | 停止任务 | | POST | `/tasks/{id}/copy` | 复制为草稿 | | DELETE | `/tasks/{id}` | 删除草稿 | | GET | `/tasks/{id}/runs` | 执行历史 | | GET | `/runs/{id}` | 执行详情 | ## 文档索引 | 文档 | 内容 | |------|------| | [docs/dev.md](docs/dev.md) | 完整开发指导(领域对象、数据模型、API 设计、六阶段规划) | | [docs/README.md](docs/README.md) | API 参考 + 验证脚本 + 常用命令 | | [docs/deployment.md](docs/deployment.md) | 部署指南(dev/prod 分离、工作流、注意事项) | | [docs/operations.md](docs/operations.md) | 实操指南(DBeaver 连接、清理、跨平台) | ## 开发 ```bash # 本地开发(热重载 + 端口暴露) docker compose up -d # 查看日志 docker compose logs -f api docker compose logs -f celery-worker # 数据库连接(DBeaver 等工具) Host: localhost Port: 5432 User: intel_user Pass: intel_pass DB: intel_collection # 运行迁移(通常在 entrypoint 自动执行) docker compose exec api alembic upgrade head # 生成新迁移(修改 models.py 后) docker compose exec api alembic revision --autogenerate -m "描述" ``` ## 部署 ```bash # 服务器部署(无热重载、无端口暴露、无源码挂载) docker compose -f docker-compose.yml up -d ``` 详见 [docs/deployment.md](docs/deployment.md)。 ## 开发阶段 | 阶段 | 内容 | 状态 | |------|------|------| | 一 | 系统骨架 + 任务调度 | ✅ 已完成 | | 二 | 关键词搜索 + 公开网页采集 | 🔜 待开始 | | 三 | 社交平台采集适配 | 🔜 待开始 | | 四 | 热点观察线索生成 | 🔜 待开始 | | 五 | 专题报告闭环 | 🔜 待开始 | | 六 | 稳定性加固 | 🔜 待开始 | ## License Internal