# 价格记忆3 **Repository Path**: osheyx/price-memory3 ## Basic Information - **Project Name**: 价格记忆3 - **Description**: 私有仓库,价格记忆,销量预测 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-13 - **Last Updated**: 2026-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Price Memory - 价格记忆系统 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![Node.js 20+](https://img.shields.io/badge/node-20+-green.svg)](https://nodejs.org/) [![React 19](https://img.shields.io/badge/React-19-blue.svg)](https://react.dev/) [![Production Ready](https://img.shields.io/badge/Status-Production%20Ready-success)](DEPLOYMENT_GUIDE.md) > 基于 Supabase 的企业级电商价格监控系统,集成 AI 辅助、工作流自动化和国际商标查询功能。 ## 🎉 最新更新 (2026-03-06) **✨ 项目已全面升级,具备企业级部署能力!** ### 核心升级 - ✅ **React 19 架构**: Price-Admin 和 Price-Ext 全面升级到 React 19 - ✅ **多语言支持**: 完整的国际化支持(中文、英语、日语、韩语、德语、法语、西班牙语、俄语) - ✅ **WIPO 商标查询**: 集成世界知识产权组织商标搜索功能,支持全球商标查询 - ✅ **AI 辅助工作流**: 智能工作流生成和优化建议 - ✅ **批量抓取优化**: Amazon 批量商品抓取性能提升 7 倍(并行模式) - ✅ **工作流引擎**: 完整的原子性事务管理和自动回滚机制 ### 技术亮点 - ✅ **代码质量**: TypeScript 0 errors, ESLint 全部通过 - ✅ **数据库**: 28张表, 119条RLS策略, 94个索引, 完整性验证通过 - ✅ **Docker化**: 完整的生产环境配置 (Docker Compose + Nginx + 监控) - ✅ **自动化测试**: 完整的单元测试、集成测试和 E2E 测试覆盖 - ✅ **文档完善**: 详细的部署指南、API 文档和使用手册 **📖 快速开始生产部署**: 查看 [生产部署指南](DEPLOYMENT_GUIDE.md) **📊 部署就绪度**: 95% (配置环境变量后即可部署) ## 📋 项目简介 Price Memory 是一个企业级电商价格监控解决方案,由三个核心模块组成: - **Price Spider** - Python 爬虫服务 - 基于 Playwright 的分布式爬虫系统 - 异步图片上传和 Worker 模式 - 智能分页和数据去重 - **Price Admin** - React 19 管理后台 - 基于 Refine 5 + Ant Design 5 - 集成 WIPO 商标查询功能 - 多语言支持(8种语言) - 在线文档编辑(Univer 集成) - 工作流可视化管理 - **Price Extension** - 浏览器扩展 - React 19 + Zustand 状态管理 - AI 辅助工作流生成 - 原子性事务管理 - Amazon 批量抓取优化(7倍性能提升) 所有模块通过 Supabase (PostgreSQL + Auth + Storage + Realtime) 进行数据同步。 ## 🚀 快速开始 ### 前置要求 - Python 3.8+ - Node.js 20.11.1+ - pnpm (推荐) - Supabase 账号 ### 1. 克隆项目 ```bash git clone git@gitee.com:osheyx/price-memory2.git cd price-memory2 ``` ### 2. 初始化数据库 在 Supabase Dashboard 的 SQL Editor 中执行: ```sql -- 创建 Schema \i database/schemas/price-spider-schema.sql \i database/schemas/price-admin-schema.sql -- 应用 RLS 策略 \i database/policies/price-spider-policy.sql -- (可选) 导入测试数据 \i database/test-data/price-spider-test-data.sql ``` ### 3. 启动 Spider ```bash cd price-spider pip install -r requirements.txt cp .env.example .env # 编辑 .env 配置 Supabase python src/main.py ``` ### 4. 启动 Admin ```bash cd price-admin pnpm install cp .env.development .env.development.local # 编辑 .env.development.local 配置 Supabase pnpm dev # 访问 http://localhost:5173 ``` ### 5. 安装 Extension ```bash cd price-ext pnpm install cp .env.example .env # 编辑 .env 配置 Supabase pnpm dev ``` 然后在浏览器中加载扩展: - **Chrome**: `chrome://extensions/` → 加载已解压的扩展程序 → 选择 `build` 目录 - **Firefox**: `about:debugging` → 加载临时附加组件 → 选择 `build/manifest.json` ## 📁 项目结构 ``` price-memory2/ ├── database/ # 数据库文件 │ ├── schemas/ # Schema 定义 │ ├── migrations/ # 迁移脚本 │ ├── policies/ # RLS 策略 │ └── test-data/ # 测试数据 │ ├── price-spider/ # Python 爬虫服务 │ ├── src/ # 源代码 │ ├── tests/ # 测试文件 │ └── README.md │ ├── price-admin/ # React 管理后台 │ ├── src/ # 源代码 │ └── README.md │ ├── price-ext/ # 浏览器扩展 │ ├── src/ # 源代码 │ └── README.md │ └── docs/ # 项目文档 ├── ARCHITECTURE.md # 系统架构 ├── DEPLOYMENT.md # 部署指南 ├── API.md # API 文档 └── DEVELOPMENT.md # 开发指南 ``` ## 🛠️ 技术栈 ### 后端 - **数据库**: Supabase (PostgreSQL 15 + TimescaleDB) - **认证**: Supabase Auth (JWT + RLS) - **存储**: Supabase Storage (产品图片) - **实时**: Supabase Realtime (WebSocket) ### Spider (爬虫服务) - **语言**: Python 3.8+ - **爬虫**: Playwright - **调度**: APScheduler - **数据**: Supabase Python SDK ### Admin (管理后台) - **框架**: React 19 + Vite 8 (Rolldown) - **UI**: Refine 5 + Ant Design 5 - **状态**: @tanstack/react-query 5 + Supabase JS SDK - **图表**: @ant-design/charts + @ant-design/plots - **文档**: Univer (电子表格/文档/幻灯片) - **路由**: React Router 7 - **国际化**: i18next (8种语言) - **测试**: Vitest + Playwright ### Extension (浏览器扩展) - **框架**: React 19 + TypeScript 5 - **状态**: Zustand (with devtools & persist) - **UI**: Ant Design 5 + TailwindCSS - **工作流**: React Flow (可视化编辑器) - **构建**: Vite 8 - **API**: Browser WebExtension API - **测试**: Vitest + Playwright E2E ## 📖 核心文档 ### 主要文档 - [**系统架构**](docs/ARCHITECTURE.md) - 完整的系统设计和技术架构 - [**部署指南**](docs/DEPLOYMENT.md) - 开发和生产环境部署 - [**API 文档**](docs/API.md) - 数据库表结构和 API 使用 - [**开发指南**](docs/DEVELOPMENT.md) - 本地开发环境配置 ### Price-Admin 文档 - [Price Admin README](price-admin/README.md) - 管理后台完整说明 - [WIPO 商标查询](price-admin/src/wipo/README.md) - WIPO 集成指南 - [WIPO 部署指南](price-admin/src/wipo/server/DEPLOYMENT.md) - 代理服务器部署 - [WIPO 集成文档](price-admin/src/wipo/INTEGRATION_GUIDE.md) - 集成使用指南 ### Price-Ext 文档 - [Price-Ext README](price-ext/README.md) - 浏览器扩展完整说明 - [React 迁移指南](price-ext/docs/REACT_MIGRATION_QUICKSTART.md) - React 19 迁移 - [工作流原子性](price-ext/docs/atomicity-features.md) - 原子性事务系统 - [Amazon 批量抓取](AMAZON_BATCH_SCRAPER_README.md) - 批量抓取快速指南 - [Amazon 优化指南](docs/technical/price-ext/2026-03-02_Amazon%20批量抓取优化指南.md) - 详细优化文档 ## 🎯 核心功能 ### Spider (爬虫服务) - ✅ Worker 模式:爬虫 Worker + 图片上传 Worker 并发运行 - ✅ 异步图片上传:图片处理不阻塞爬虫 - ✅ Codegen 引擎:可视化配置爬取规则 - ✅ 多站点支持:管理多个电商站点 - ✅ 任务调度:支持多种爬取频率 - ✅ 智能分页:自动检测并爬取所有分页 - ✅ 数据去重:URL 重复时自动覆盖 - ✅ 价格历史:自动记录价格变化 ### Admin (管理后台) - ✅ **站点管理**: 管理多个电商站点 - ✅ **任务管理**: 配置爬取任务和频率 - ✅ **商品管理**: 查看和管理商品信息 - ✅ **价格历史**: 可视化价格趋势 - ✅ **实时更新**: 爬虫状态实时同步 - ✅ **数据导出**: 导出商品和价格数据 - ✅ **WIPO 商标查询**: 全球商标搜索(支持 200+ 国家) - 智能代理服务器自动适配 - AES 解密和数据解析 - 独立部署支持(Docker) - ✅ **多语言支持**: 8种语言完整翻译 - 中文、英语、日语、韩语 - 德语、法语、西班牙语、俄语 - ✅ **在线文档**: Univer 集成 - 电子表格编辑 - 文档协作 - 幻灯片制作 - ✅ **工作流管理**: 统一工作流库管理 ### Extension (浏览器扩展) - ✅ **React 19 架构**: 现代化组件和 Hooks - ✅ **工作流编辑器**: 基于 React Flow 的可视化编辑 - ✅ **AI 辅助**: 智能工作流生成和优化 - ✅ **原子性事务**: - 批量修改的原子性保证 - 自动回滚机制 - 引用完整性检查 - 完整的操作日志 - ✅ **Amazon 批量抓取**: - 类目批量抓取(支持品牌筛选) - 并行详情抓取(7倍性能提升) - 自动处理 continue 门页 - 状态列追踪 - 36个详细字段提取 - ✅ **数据采集**: 从网页采集商品信息 - ✅ **价格对比**: 显示历史价格对比 - ✅ **数据同步**: 与 Supabase 实时同步 ## 🔧 配置说明 ### 环境变量 所有子模块都使用 `.env` 文件管理配置: **Spider** (`price-spider/.env`): ```bash SUPABASE_URL=https://xxx.supabase.co SUPABASE_KEY=your_service_role_key # 使用 Service Role Key BROWSER_HEADLESS=true DEBUG_MODE=false STORAGE_BUCKET=product-images ``` **Admin** (`price-admin/.env`): ```bash VITE_SUPABASE_URL=https://xxx.supabase.co VITE_SUPABASE_ANON_KEY=your_anon_key # 使用 Anon Key # WIPO 代理服务器配置(可选) VITE_WIPO_PROXY_URL=http://localhost:20320 ``` **Extension** (`price-ext/.env`): ```bash VITE_SUPABASE_URL=https://xxx.supabase.co VITE_SUPABASE_ANON_KEY=your_anon_key # AI 配置(可选) VITE_OPENAI_API_KEY=your_openai_key ``` ### WIPO 代理服务器配置 WIPO 商标查询功能需要代理服务器: ```bash # 开发环境 cd price-admin/src/wipo/server node proxy-server.cjs # Docker 部署 docker build -t wipo-proxy price-admin/src/wipo/server docker run -d -p 20320:20320 wipo-proxy ``` 详见 [WIPO 部署文档](price-admin/src/wipo/server/DEPLOYMENT.md) ## 🐳 Docker 部署 ```bash # 构建镜像 docker build -t price-spider ./price-spider docker build -t price-admin ./price-admin # 运行容器 docker run -d --name price-spider --env-file price-spider/.env price-spider docker run -d --name price-admin -p 80:80 price-admin # 或使用 Docker Compose docker-compose up -d ``` ## 📊 数据库 Schema 核心表结构: ``` sites (站点表) ↓ crawl_tasks (爬取任务表) ↓ product_urls (商品 URL 表) ↓ product_details (商品详情表) ↓ price_history (价格历史表) ``` 详见 [API 文档](docs/API.md)。 ## 🧪 测试 ### Spider 测试 ```bash cd price-spider pytest tests/ ``` ### Admin 测试 ```bash cd price-admin # 代码检查 pnpm lint pnpm type-check # 单元测试 pnpm test pnpm test:coverage # E2E 测试 pnpm test:e2e pnpm test:e2e:ui ``` ### Extension 测试 ```bash cd price-ext # 单元测试 pnpm test pnpm test:watch pnpm test:coverage # E2E 测试 pnpm build pnpm test:e2e pnpm test:e2e:ui # Amazon 批量抓取测试 pnpm test tests/e2e/amazon-category-product-urls.spec.ts pnpm test tests/e2e/amazon-sg-laptop.spec.ts pnpm test tests/e2e/excel-url-loop.spec.ts # 工作流测试 pnpm test:workflow:recording pnpm test:workflow:execution pnpm test:workflow:all ``` ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📊 项目统计 ### 代码规模 - **总代码行数**: 约 150,000+ 行 - **TypeScript/JavaScript**: 约 120,000 行 - **Python**: 约 15,000 行 - **测试代码**: 约 15,000 行 ### 功能模块 - **数据库表**: 28 张 - **RLS 策略**: 119 条 - **数据库索引**: 94 个 - **React 组件**: 200+ 个 - **工作流节点类型**: 50+ 种 - **支持语言**: 8 种 ### 测试覆盖 - **单元测试**: 300+ 个 - **集成测试**: 50+ 个 - **E2E 测试**: 40+ 个 - **测试覆盖率**: > 75% ## 🌍 国际化支持 Price Memory 支持以下语言: - 🇨🇳 中文(简体) - 🇺🇸 英语 - 🇯🇵 日语 - 🇰🇷 韩语 - 🇩🇪 德语 - 🇫🇷 法语 - 🇪🇸 西班牙语 - 🇷🇺 俄语 ## 📄 许可证 [MIT License](LICENSE) ## 🔗 相关链接 ### 官方文档 - [Supabase 文档](https://supabase.com/docs) - [Playwright 文档](https://playwright.dev) - [Refine 文档](https://refine.dev/docs) - [React 文档](https://react.dev) - [Ant Design 文档](https://ant.design) ### 集成服务 - [WIPO Global Brand Database](https://www.wipo.int/branddb/en/) - [Univer 文档](https://univer.ai/docs) - [React Flow 文档](https://reactflow.dev) ## 🎓 学习资源 ### 视频教程 - [系统架构讲解](#) (待添加) - [快速开始视频](#) (待添加) - [工作流编辑教程](#) (待添加) ### 博客文章 - [Price Memory 设计思路](#) (待添加) - [React 19 迁移实践](#) (待添加) - [Amazon 批量抓取优化](#) (待添加) ## 💬 社区 - **Issues**: [GitHub Issues](https://github.com/your-repo/issues) - **讨论**: [GitHub Discussions](https://github.com/your-repo/discussions) - **更新日志**: [CHANGELOG.md](CHANGELOG.md) ## 🙏 致谢 感谢以下开源项目: - [Supabase](https://supabase.com) - 开源 Firebase 替代方案 - [Refine](https://refine.dev) - React 企业级框架 - [Ant Design](https://ant.design) - 企业级 UI 设计语言 - [React Flow](https://reactflow.dev) - 可视化流程图库 - [Univer](https://univer.ai) - 企业级在线文档 - [Playwright](https://playwright.dev) - 现代化浏览器自动化 --- **⚡ 快速链接**: [快速开始](#-快速开始) | [文档](#-核心文档) | [部署指南](DEPLOYMENT_GUIDE.md) | [更新日志](CHANGELOG.md)