{"owner":"Usagi-org","repo":"ai-goofish-monitor","hasSkills":true,"totalSkillsCount":2,"totalTokensCount":2090,"categories":["claude-rule","root-instruction"],"hasMcp":false,"mcpConfig":null,"found":["CLAUDE.md","AGENTS.md"],"skills":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## 项目概述\n\n基于 Playwright + AI 的闲鱼智能监控机器人。FastAPI 后端 + Vue 3 前端，支持多任务并发监控、多模态 AI 商品分析、多渠道通知推送。\n\n## 核心架构\n\n```\nAPI层 (src/api/routes/)\n    ↓\n服务层 (src/services/)\n    ↓\n领域层 (src/domain/)\n    ↓\n基础设施层 (src/infrastructure/)\n```\n\n关键入口：\n- `src/app.py` - FastAPI 应用主入口\n- `spider_v2.py` - 爬虫 CLI 入口\n- `src/scraper.py` - Playwright 爬虫核心逻辑\n\n服务层：\n- `TaskService` - 任务 CRUD\n- `ProcessService` - 爬虫子进程管理\n- `SchedulerService` - APScheduler 定时调度\n- `AIAnalysisService` - 多模态 AI 分析\n- `NotificationService` - 多渠道通知（ntfy/Bark/企业微信/Telegram/Webhook）\n\n前端 (`web-ui/`)：Vue 3 + Vite + shadcn-vue + Tailwind CSS\n\n## 开发命令\n\n```bash\n# 后端开发\npython -m src.app\n# 或\nuvicorn src.app:app --host 0.0.0.0 --port 8000 --reload\n\n# 前端开发\ncd web-ui && npm install && npm run dev\n\n# 前端构建\ncd web-ui && npm run build\n\n# 一键本地启动（构建前端 + 启动后端）\nbash start.sh\n\n# Docker 部署\ndocker compose up --build -d\n```\n\n## 爬虫命令\n\n```bash\npython spider_v2.py                          # 运行所有启用任务\npython spider_v2.py --task-name \"MacBook\"    # 运行指定任务\npython spider_v2.py --debug-limit 3          # 调试模式，限制商品数\npython spider_v2.py --config custom.json     # 自定义配置文件\n```\n\n## 测试\n\n```bash\npytest                              # 运行所有测试\npytest --cov=src                    # 覆盖率报告\npytest tests/unit/test_utils.py    # 运行单个测试文件\npytest tests/unit/test_utils.py::test_safe_get  # 运行单个测试函数\n```\n\n测试规范：文件 `tests/**/test_*.py`，函数 `test_*`\n\n## 配置\n\n环境变量 (`.env`)：\n- AI 模型：`OPENAI_API_KEY`, `OPENAI_BASE_URL`, `OPENAI_MODEL_NAME`\n- 通知：`NTFY_TOPIC_URL`, `BARK_URL`, `WX_BOT_URL`, `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID`\n- 爬虫：`RUN_HEADLESS`, `LOGIN_IS_EDGE`\n- Web 认证：`WEB_USERNAME`, `WEB_PASSWORD`\n- 端口：`SERVER_PORT`\n\n任务配置 (`config.json`)：定义监控任务（关键词、价格范围、cron 表达式、AI prompt 文件等）\n\n## 数据流\n\n1. Web UI / config.json 创建任务\n2. SchedulerService 按 cron 触发或手动启动\n3. ProcessService 启动 spider_v2.py 子进程\n4. scraper.py 使用 Playwright 抓取商品\n5. AIAnalysisService 调用多模态模型分析\n6. NotificationService 推送符合条件的商品\n7. 结果存储：`jsonl/`（数据）、`images/`（图片）、`logs/`（日志）\n\n## 注意事项\n\n- AI 模型必须支持图片上传（多模态）\n- Docker 部署需通过 Web UI 手动更新登录状态（`state.json`）\n- 遇到滑动验证码时设置 `RUN_HEADLESS=false` 手动处理\n- 生产环境务必修改默认 Web 认证密码\n","AGENTS.md":"# Repository Guidelines\n\n## 项目结构与模块组织\n- 后端位于 `src/`，入口 `src/app.py`，API 路由在 `src/api/routes/`，服务层在 `src/services/`，领域模型在 `src/domain/`，基础设施在 `src/infrastructure/`。\n- 前端在 `web-ui/`（Vue 3 + Vite），视图放于 `web-ui/src/views/`，组件在 `web-ui/src/components/`，构建产物会复制到根目录 `dist/`。\n- 测试位于 `tests/`，命名遵循 `test_*.py` 或 `tests/*/test_*.py`。\n- 运行数据与资源：`prompts/`、`jsonl/`、`logs/`、`images/`、`static/`、`state/`，配置文件 `config.json` 与 `.env` 位于仓库根目录。\n\n## 构建、测试与本地开发\n- 后端开发：`python -m src.app` 或 `uvicorn src.app:app --host 0.0.0.0 --port 8000 --reload`。\n- 爬虫任务：`python spider_v2.py --task-name \"MacBook Air M1\" --debug-limit 3`（可用 `--config` 指定自定义配置）。\n- 前端开发：`cd web-ui && npm install && npm run dev`；构建：`cd web-ui && npm run build`（产物复制到根目录 `dist/`）。\n- 一键本地启动：`bash start.sh`（自动安装依赖、前端构建并启动后端）。\n- Docker：`docker compose up --build -d`，查看日志 `docker compose logs -f app`，停止 `docker compose down`。\n\n## 编码风格与命名约定\n- 保持分层：API → services → domain → infrastructure，避免跨层耦合，模块保持精简。\n- Python 测试函数命名为 `test_*`，文件与路径遵循上述测试目录规范。\n- 使用描述性、任务导向的命名（如爬虫任务名、配置键），与业务含义对应。\n\n## 架构与运行时\n- 后端使用 FastAPI 提供 API 与静态资源，爬虫与 AI 推理在独立任务进程中协作，前后端通过 HTTP/Web UI 交互。\n- 任务运行会在 `jsonl/` 写入结果、在 `logs/` 留存运行日志、在 `images/` 下载图片，前端监控页面依赖这些数据。\n- 默认监听 8000 端口，前端构建后静态文件可由后端或 Docker 镜像直接提供。\n\n## 测试指南\n- 测试框架：`pytest`（默认同步测试，无需 `pytest-asyncio`）。\n- 运行全部测试：`pytest`；覆盖率：`pytest --cov=src` 或 `coverage run -m pytest`；定向测试：`pytest tests/test_utils.py::test_safe_get`。\n- 优先覆盖核心服务、爬虫管道的异常分支与重试逻辑，避免回归。\n- PR 前请运行相关测试，新增逻辑补充针对性用例。\n\n## 提交与 PR 规范\n- Commit 采用类 Conventional Commits：`feat(...)`、`fix(...)`、`refactor(...)`、`chore(...)`、`docs(...)` 等。\n- PR 需说明变更范围与影响模块；UI 变更在 `web-ui/` 提供截图；关联相关 Issue；提及配置或迁移步骤。\n\n## 安全与配置提示\n- 复制 `.env.example` 为 `.env`，设置必填项 `OPENAI_API_KEY`、`OPENAI_BASE_URL`、`OPENAI_MODEL_NAME` 等。\n- 不要提交真实凭据或 cookies（如 `state.json`）；Playwright 需本地浏览器，Docker 镜像已预装 Chromium。\n- Web 认证默认 `admin/admin123`，生产环境务必修改，推荐启用 HTTPS 并限制访问来源。\n"},"files":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## 项目概述\n\n基于 Playwright + AI 的闲鱼智能监控机器人。FastAPI 后端 + Vue 3 前端，支持多任务并发监控、多模态 AI 商品分析、多渠道通知推送。\n\n## 核心架构\n\n```\nAPI层 (src/api/routes/)\n    ↓\n服务层 (src/services/)\n    ↓\n领域层 (src/domain/)\n    ↓\n基础设施层 (src/infrastructure/)\n```\n\n关键入口：\n- `src/app.py` - FastAPI 应用主入口\n- `spider_v2.py` - 爬虫 CLI 入口\n- `src/scraper.py` - Playwright 爬虫核心逻辑\n\n服务层：\n- `TaskService` - 任务 CRUD\n- `ProcessService` - 爬虫子进程管理\n- `SchedulerService` - APScheduler 定时调度\n- `AIAnalysisService` - 多模态 AI 分析\n- `NotificationService` - 多渠道通知（ntfy/Bark/企业微信/Telegram/Webhook）\n\n前端 (`web-ui/`)：Vue 3 + Vite + shadcn-vue + Tailwind CSS\n\n## 开发命令\n\n```bash\n# 后端开发\npython -m src.app\n# 或\nuvicorn src.app:app --host 0.0.0.0 --port 8000 --reload\n\n# 前端开发\ncd web-ui && npm install && npm run dev\n\n# 前端构建\ncd web-ui && npm run build\n\n# 一键本地启动（构建前端 + 启动后端）\nbash start.sh\n\n# Docker 部署\ndocker compose up --build -d\n```\n\n## 爬虫命令\n\n```bash\npython spider_v2.py                          # 运行所有启用任务\npython spider_v2.py --task-name \"MacBook\"    # 运行指定任务\npython spider_v2.py --debug-limit 3          # 调试模式，限制商品数\npython spider_v2.py --config custom.json     # 自定义配置文件\n```\n\n## 测试\n\n```bash\npytest                              # 运行所有测试\npytest --cov=src                    # 覆盖率报告\npytest tests/unit/test_utils.py    # 运行单个测试文件\npytest tests/unit/test_utils.py::test_safe_get  # 运行单个测试函数\n```\n\n测试规范：文件 `tests/**/test_*.py`，函数 `test_*`\n\n## 配置\n\n环境变量 (`.env`)：\n- AI 模型：`OPENAI_API_KEY`, `OPENAI_BASE_URL`, `OPENAI_MODEL_NAME`\n- 通知：`NTFY_TOPIC_URL`, `BARK_URL`, `WX_BOT_URL`, `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID`\n- 爬虫：`RUN_HEADLESS`, `LOGIN_IS_EDGE`\n- Web 认证：`WEB_USERNAME`, `WEB_PASSWORD`\n- 端口：`SERVER_PORT`\n\n任务配置 (`config.json`)：定义监控任务（关键词、价格范围、cron 表达式、AI prompt 文件等）\n\n## 数据流\n\n1. Web UI / config.json 创建任务\n2. SchedulerService 按 cron 触发或手动启动\n3. ProcessService 启动 spider_v2.py 子进程\n4. scraper.py 使用 Playwright 抓取商品\n5. AIAnalysisService 调用多模态模型分析\n6. NotificationService 推送符合条件的商品\n7. 结果存储：`jsonl/`（数据）、`images/`（图片）、`logs/`（日志）\n\n## 注意事项\n\n- AI 模型必须支持图片上传（多模态）\n- Docker 部署需通过 Web UI 手动更新登录状态（`state.json`）\n- 遇到滑动验证码时设置 `RUN_HEADLESS=false` 手动处理\n- 生产环境务必修改默认 Web 认证密码\n","AGENTS.md":"# Repository Guidelines\n\n## 项目结构与模块组织\n- 后端位于 `src/`，入口 `src/app.py`，API 路由在 `src/api/routes/`，服务层在 `src/services/`，领域模型在 `src/domain/`，基础设施在 `src/infrastructure/`。\n- 前端在 `web-ui/`（Vue 3 + Vite），视图放于 `web-ui/src/views/`，组件在 `web-ui/src/components/`，构建产物会复制到根目录 `dist/`。\n- 测试位于 `tests/`，命名遵循 `test_*.py` 或 `tests/*/test_*.py`。\n- 运行数据与资源：`prompts/`、`jsonl/`、`logs/`、`images/`、`static/`、`state/`，配置文件 `config.json` 与 `.env` 位于仓库根目录。\n\n## 构建、测试与本地开发\n- 后端开发：`python -m src.app` 或 `uvicorn src.app:app --host 0.0.0.0 --port 8000 --reload`。\n- 爬虫任务：`python spider_v2.py --task-name \"MacBook Air M1\" --debug-limit 3`（可用 `--config` 指定自定义配置）。\n- 前端开发：`cd web-ui && npm install && npm run dev`；构建：`cd web-ui && npm run build`（产物复制到根目录 `dist/`）。\n- 一键本地启动：`bash start.sh`（自动安装依赖、前端构建并启动后端）。\n- Docker：`docker compose up --build -d`，查看日志 `docker compose logs -f app`，停止 `docker compose down`。\n\n## 编码风格与命名约定\n- 保持分层：API → services → domain → infrastructure，避免跨层耦合，模块保持精简。\n- Python 测试函数命名为 `test_*`，文件与路径遵循上述测试目录规范。\n- 使用描述性、任务导向的命名（如爬虫任务名、配置键），与业务含义对应。\n\n## 架构与运行时\n- 后端使用 FastAPI 提供 API 与静态资源，爬虫与 AI 推理在独立任务进程中协作，前后端通过 HTTP/Web UI 交互。\n- 任务运行会在 `jsonl/` 写入结果、在 `logs/` 留存运行日志、在 `images/` 下载图片，前端监控页面依赖这些数据。\n- 默认监听 8000 端口，前端构建后静态文件可由后端或 Docker 镜像直接提供。\n\n## 测试指南\n- 测试框架：`pytest`（默认同步测试，无需 `pytest-asyncio`）。\n- 运行全部测试：`pytest`；覆盖率：`pytest --cov=src` 或 `coverage run -m pytest`；定向测试：`pytest tests/test_utils.py::test_safe_get`。\n- 优先覆盖核心服务、爬虫管道的异常分支与重试逻辑，避免回归。\n- PR 前请运行相关测试，新增逻辑补充针对性用例。\n\n## 提交与 PR 规范\n- Commit 采用类 Conventional Commits：`feat(...)`、`fix(...)`、`refactor(...)`、`chore(...)`、`docs(...)` 等。\n- PR 需说明变更范围与影响模块；UI 变更在 `web-ui/` 提供截图；关联相关 Issue；提及配置或迁移步骤。\n\n## 安全与配置提示\n- 复制 `.env.example` 为 `.env`，设置必填项 `OPENAI_API_KEY`、`OPENAI_BASE_URL`、`OPENAI_MODEL_NAME` 等。\n- 不要提交真实凭据或 cookies（如 `state.json`）；Playwright 需本地浏览器，Docker 镜像已预装 Chromium。\n- Web 认证默认 `admin/admin123`，生产环境务必修改，推荐启用 HTTPS 并限制访问来源。\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","rawUrl":"https://raw.githubusercontent.com/Usagi-org/ai-goofish-monitor/HEAD/AGENTS.md","title":"AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# Repository Guidelines\n\n## 项目结构与模块组织\n- 后端位于 `src/`，入口 `src/app.py`，API 路由在 `src/api/routes/`，服务层在 `src/services/`，领域模型在 `src/domain/`，基础设施在 `src/infrastructure/`。\n- 前端在 `web-ui/`（Vue 3 + Vite），视图放于 `web-ui/src/views/`，组件在 `web-ui/src/components/`，构建产物会复制到根目录 `dist/`。\n- 测试位于 `tests/`，命名遵循 `test_*.py` 或 `tests/*/test_*.py`。\n- 运行数据与资源：`prompts/`、`jsonl/`、`logs/`、`images/`、`static/`、`state/`，配置文件 `config.json` 与 `.env` 位于仓库根目录。\n\n## 构建、测试与本地开发\n- 后端开发：`python -m src.app` 或 `uvicorn src.app:app --host 0.0.0.0 --port 8000 --reload`。\n- 爬虫任务：`python spider_v2.py --task-name \"MacBook Air M1\" --debug-limit 3`（可用 `--config` 指定自定义配置）。\n- 前端开发：`cd web-ui && npm install && npm run dev`；构建：`cd web-ui && npm run build`（产物复制到根目录 `dist/`）。\n- 一键本地启动：`bash start.sh`（自动安装依赖、前端构建并启动后端）。\n- Docker：`docker compose up --build -d`，查看日志 `docker compose logs -f app`，停止 `docker compose down`。\n\n## 编码风格与命名约定\n- 保持分层：API → services → domain → infrastructure，避免跨层耦合，模块保持精简。\n- Python 测试函数命名为 `test_*`，文件与路径遵循上述测试目录规范。\n- 使用描述性、任务导向的命名（如爬虫任务名、配置键），与业务含义对应。\n\n## 架构与运行时\n- 后端使用 FastAPI 提供 API 与静态资源，爬虫与 AI 推理在独立任务进程中协作，前后端通过 HTTP/Web UI 交互。\n- 任务运行会在 `jsonl/` 写入结果、在 `logs/` 留存运行日志、在 `images/` 下载图片，前端监控页面依赖这些数据。\n- 默认监听 8000 端口，前端构建后静态文件可由后端或 Docker 镜像直接提供。\n\n## 测试指南\n- 测试框架：`pytest`（默认同步测试，无需 `pytest-asyncio`）。\n- 运行全部测试：`pytest`；覆盖率：`pytest --cov=src` 或 `coverage run -m pytest`；定向测试：`pytest tests/test_utils.py::test_safe_get`。\n- 优先覆盖核心服务、爬虫管道的异常分支与重试逻辑，避免回归。\n- PR 前请运行相关测试，新增逻辑补充针对性用例。\n\n## 提交与 PR 规范\n- Commit 采用类 Conventional Commits：`feat(...)`、`fix(...)`、`refactor(...)`、`chore(...)`、`docs(...)` 等。\n- PR 需说明变更范围与影响模块；UI 变更在 `web-ui/` 提供截图；关联相关 Issue；提及配置或迁移步骤。\n\n## 安全与配置提示\n- 复制 `.env.example` 为 `.env`，设置必填项 `OPENAI_API_KEY`、`OPENAI_BASE_URL`、`OPENAI_MODEL_NAME` 等。\n- 不要提交真实凭据或 cookies（如 `state.json`）；Playwright 需本地浏览器，Docker 镜像已预装 Chromium。\n- Web 认证默认 `admin/admin123`，生产环境务必修改，推荐启用 HTTPS 并限制访问来源。\n","isInternal":false,"tokens":1095,"sizeBytes":3085},{"name":"CLAUDE.md","path":"CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/Usagi-org/ai-goofish-monitor/HEAD/CLAUDE.md","title":"Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## 项目概述\n\n基于 Playwright + AI 的闲鱼智能监控机器人。FastAPI 后端 + Vue 3 前端，支持多任务并发监控、多模态 AI 商品分析、多渠道通知推送。\n\n## 核心架构\n\n```\nAPI层 (src/api/routes/)\n    ↓\n服务层 (src/services/)\n    ↓\n领域层 (src/domain/)\n    ↓\n基础设施层 (src/infrastructure/)\n```\n\n关键入口：\n- `src/app.py` - FastAPI 应用主入口\n- `spider_v2.py` - 爬虫 CLI 入口\n- `src/scraper.py` - Playwright 爬虫核心逻辑\n\n服务层：\n- `TaskService` - 任务 CRUD\n- `ProcessService` - 爬虫子进程管理\n- `SchedulerService` - APScheduler 定时调度\n- `AIAnalysisService` - 多模态 AI 分析\n- `NotificationService` - 多渠道通知（ntfy/Bark/企业微信/Telegram/Webhook）\n\n前端 (`web-ui/`)：Vue 3 + Vite + shadcn-vue + Tailwind CSS\n\n## 开发命令\n\n```bash\n# 后端开发\npython -m src.app\n# 或\nuvicorn src.app:app --host 0.0.0.0 --port 8000 --reload\n\n# 前端开发\ncd web-ui && npm install && npm run dev\n\n# 前端构建\ncd web-ui && npm run build\n\n# 一键本地启动（构建前端 + 启动后端）\nbash start.sh\n\n# Docker 部署\ndocker compose up --build -d\n```\n\n## 爬虫命令\n\n```bash\npython spider_v2.py                          # 运行所有启用任务\npython spider_v2.py --task-name \"MacBook\"    # 运行指定任务\npython spider_v2.py --debug-limit 3          # 调试模式，限制商品数\npython spider_v2.py --config custom.json     # 自定义配置文件\n```\n\n## 测试\n\n```bash\npytest                              # 运行所有测试\npytest --cov=src                    # 覆盖率报告\npytest tests/unit/test_utils.py    # 运行单个测试文件\npytest tests/unit/test_utils.py::test_safe_get  # 运行单个测试函数\n```\n\n测试规范：文件 `tests/**/test_*.py`，函数 `test_*`\n\n## 配置\n\n环境变量 (`.env`)：\n- AI 模型：`OPENAI_API_KEY`, `OPENAI_BASE_URL`, `OPENAI_MODEL_NAME`\n- 通知：`NTFY_TOPIC_URL`, `BARK_URL`, `WX_BOT_URL`, `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID`\n- 爬虫：`RUN_HEADLESS`, `LOGIN_IS_EDGE`\n- Web 认证：`WEB_USERNAME`, `WEB_PASSWORD`\n- 端口：`SERVER_PORT`\n\n任务配置 (`config.json`)：定义监控任务（关键词、价格范围、cron 表达式、AI prompt 文件等）\n\n## 数据流\n\n1. Web UI / config.json 创建任务\n2. SchedulerService 按 cron 触发或手动启动\n3. ProcessService 启动 spider_v2.py 子进程\n4. scraper.py 使用 Playwright 抓取商品\n5. AIAnalysisService 调用多模态模型分析\n6. NotificationService 推送符合条件的商品\n7. 结果存储：`jsonl/`（数据）、`images/`（图片）、`logs/`（日志）\n\n## 注意事项\n\n- AI 模型必须支持图片上传（多模态）\n- Docker 部署需通过 Web UI 手动更新登录状态（`state.json`）\n- 遇到滑动验证码时设置 `RUN_HEADLESS=false` 手动处理\n- 生产环境务必修改默认 Web 认证密码\n","isInternal":false,"tokens":995,"sizeBytes":3011}],"systemPromptSnippet":"<yakaai_skills repo=\"Usagi-org/ai-goofish-monitor\">\n<!-- File: AGENTS.md (Tokens: ~1095 | Category: root-instruction) -->\n# Repository Guidelines\n\n## 项目结构与模块组织\n- 后端位于 `src/`，入口 `src/app.py`，API 路由在 `src/api/routes/`，服务层在 `src/services/`，领域模型在 `src/domain/`，基础设施在 `src/infrastructure/`。\n- 前端在 `web-ui/`（Vue 3 + Vite），视图放于 `web-ui/src/views/`，组件在 `web-ui/src/components/`，构建产物会复制到根目录 `dist/`。\n- 测试位于 `tests/`，命名遵循 `test_*.py` 或 `tests/*/test_*.py`。\n- 运行数据与资源：`prompts/`、`jsonl/`、`logs/`、`images/`、`static/`、`state/`，配置文件 `config.json` 与 `.env` 位于仓库根目录。\n\n## 构建、测试与本地开发\n- 后端开发：`python -m src.app` 或 `uvicorn src.app:app --host 0.0.0.0 --port 8000 --reload`。\n- 爬虫任务：`python spider_v2.py --task-name \"MacBook Air M1\" --debug-limit 3`（可用 `--config` 指定自定义配置）。\n- 前端开发：`cd web-ui && npm install && npm run dev`；构建：`cd web-ui && npm run build`（产物复制到根目录 `dist/`）。\n- 一键本地启动：`bash start.sh`（自动安装依赖、前端构建并启动后端）。\n- Docker：`docker compose up --build -d`，查看日志 `docker compose logs -f app`，停止 `docker compose down`。\n\n## 编码风格与命名约定\n- 保持分层：API → services → domain → infrastructure，避免跨层耦合，模块保持精简。\n- Python 测试函数命名为 `test_*`，文件与路径遵循上述测试目录规范。\n- 使用描述性、任务导向的命名（如爬虫任务名、配置键），与业务含义对应。\n\n## 架构与运行时\n- 后端使用 FastAPI 提供 API 与静态资源，爬虫与 AI 推理在独立任务进程中协作，前后端通过 HTTP/Web UI 交互。\n- 任务运行会在 `jsonl/` 写入结果、在 `logs/` 留存运行日志、在 `images/` 下载图片，前端监控页面依赖这些数据。\n- 默认监听 8000 端口，前端构建后静态文件可由后端或 Docker 镜像直接提供。\n\n## 测试指南\n- 测试框架：`pytest`（默认同步测试，无需 `pytest-asyncio`）。\n- 运行全部测试：`pytest`；覆盖率：`pytest --cov=src` 或 `coverage run -m pytest`；定向测试：`pytest tests/test_utils.py::test_safe_get`。\n- 优先覆盖核心服务、爬虫管道的异常分支与重试逻辑，避免回归。\n- PR 前请运行相关测试，新增逻辑补充针对性用例。\n\n## 提交与 PR 规范\n- Commit 采用类 Conventional Commits：`feat(...)`、`fix(...)`、`refactor(...)`、`chore(...)`、`docs(...)` 等。\n- PR 需说明变更范围与影响模块；UI 变更在 `web-ui/` 提供截图；关联相关 Issue；提及配置或迁移步骤。\n\n## 安全与配置提示\n- 复制 `.env.example` 为 `.env`，设置必填项 `OPENAI_API_KEY`、`OPENAI_BASE_URL`、`OPENAI_MODEL_NAME` 等。\n- 不要提交真实凭据或 cookies（如 `state.json`）；Playwright 需本地浏览器，Docker 镜像已预装 Chromium。\n- Web 认证默认 `admin/admin123`，生产环境务必修改，推荐启用 HTTPS 并限制访问来源。\n\n<!-- File: CLAUDE.md (Tokens: ~995 | Category: claude-rule) -->\n# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## 项目概述\n\n基于 Playwright + AI 的闲鱼智能监控机器人。FastAPI 后端 + Vue 3 前端，支持多任务并发监控、多模态 AI 商品分析、多渠道通知推送。\n\n## 核心架构\n\n```\nAPI层 (src/api/routes/)\n    ↓\n服务层 (src/services/)\n    ↓\n领域层 (src/domain/)\n    ↓\n基础设施层 (src/infrastructure/)\n```\n\n关键入口：\n- `src/app.py` - FastAPI 应用主入口\n- `spider_v2.py` - 爬虫 CLI 入口\n- `src/scraper.py` - Playwright 爬虫核心逻辑\n\n服务层：\n- `TaskService` - 任务 CRUD\n- `ProcessService` - 爬虫子进程管理\n- `SchedulerService` - APScheduler 定时调度\n- `AIAnalysisService` - 多模态 AI 分析\n- `NotificationService` - 多渠道通知（ntfy/Bark/企业微信/Telegram/Webhook）\n\n前端 (`web-ui/`)：Vue 3 + Vite + shadcn-vue + Tailwind CSS\n\n## 开发命令\n\n```bash\n# 后端开发\npython -m src.app\n# 或\nuvicorn src.app:app --host 0.0.0.0 --port 8000 --reload\n\n# 前端开发\ncd web-ui && npm install && npm run dev\n\n# 前端构建\ncd web-ui && npm run build\n\n# 一键本地启动（构建前端 + 启动后端）\nbash start.sh\n\n# Docker 部署\ndocker compose up --build -d\n```\n\n## 爬虫命令\n\n```bash\npython spider_v2.py                          # 运行所有启用任务\npython spider_v2.py --task-name \"MacBook\"    # 运行指定任务\npython spider_v2.py --debug-limit 3          # 调试模式，限制商品数\npython spider_v2.py --config custom.json     # 自定义配置文件\n```\n\n## 测试\n\n```bash\npytest                              # 运行所有测试\npytest --cov=src                    # 覆盖率报告\npytest tests/unit/test_utils.py    # 运行单个测试文件\npytest tests/unit/test_utils.py::test_safe_get  # 运行单个测试函数\n```\n\n测试规范：文件 `tests/**/test_*.py`，函数 `test_*`\n\n## 配置\n\n环境变量 (`.env`)：\n- AI 模型：`OPENAI_API_KEY`, `OPENAI_BASE_URL`, `OPENAI_MODEL_NAME`\n- 通知：`NTFY_TOPIC_URL`, `BARK_URL`, `WX_BOT_URL`, `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID`\n- 爬虫：`RUN_HEADLESS`, `LOGIN_IS_EDGE`\n- Web 认证：`WEB_USERNAME`, `WEB_PASSWORD`\n- 端口：`SERVER_PORT`\n\n任务配置 (`config.json`)：定义监控任务（关键词、价格范围、cron 表达式、AI prompt 文件等）\n\n## 数据流\n\n1. Web UI / config.json 创建任务\n2. SchedulerService 按 cron 触发或手动启动\n3. ProcessService 启动 spider_v2.py 子进程\n4. scraper.py 使用 Playwright 抓取商品\n5. AIAnalysisService 调用多模态模型分析\n6. NotificationService 推送符合条件的商品\n7. 结果存储：`jsonl/`（数据）、`images/`（图片）、`logs/`（日志）\n\n## 注意事项\n\n- AI 模型必须支持图片上传（多模态）\n- Docker 部署需通过 Web UI 手动更新登录状态（`state.json`）\n- 遇到滑动验证码时设置 `RUN_HEADLESS=false` 手动处理\n- 生产环境务必修改默认 Web 认证密码\n</yakaai_skills>"}