Teanary - 全球多节点电商平台系统

地址:https://gitee.com/teanary/teanary_service

一个支持多节点部署、AI自动翻译、商品采集的现代化全球电商平台系统。专为解决跨国电商运营难题而设计。

🌟 核心特性

🌍 多节点数据同步系统

解决的核心问题:

  • 跨国服务器管理难题:服务器在国外,管理网站不方便?在中国部署管理节点,数据自动同步到全球各节点
  • 本地化运营:不同国家/地区运行独立节点,提供本地化服务,提升用户体验
  • 数据一致性:多节点数据自动双向同步,以最新数据为准,确保全球数据一致
  • 故障容灾:单个节点故障不影响其他节点,系统自动重试同步

技术特点:

  • 🔄 双向同步:支持任意数量节点间的数据双向同步
  • 📦 批量同步:多条记录打包同步,大幅提升效率
  • 🔐 安全可靠:API Key 验证,支持 HTTPS 加密传输
  • 📁 文件同步:自动同步媒体文件(图片、资源等)
  • 🔁 自动重试:同步失败自动重试,确保数据不丢失
  • 📊 同步监控:完整的同步日志和状态跟踪

适用场景:

  • 中国管理节点 + 美国/欧洲/亚洲等多个销售节点
  • 不同国家/地区独立运营,数据统一管理
  • 需要本地化服务但统一数据源的场景

🤖 AI 自动翻译系统

功能特点:

  • 🌐 多语言支持:支持 8 种语言自动翻译(中文、英文、西班牙语、法语、日语、韩语、德语、俄语)
  • 📝 内容翻译:自动翻译商品信息、文章内容、分类描述等
  • 🎯 智能识别:自动识别 HTML 内容,保留标签结构
  • 批量处理:支持批量翻译,提升效率
  • 🔄 状态跟踪:翻译状态实时跟踪(待翻译、翻译中、已完成、失败)

技术实现:

  • 集成 Ollama 本地 AI 模型,无需第三方 API
  • 支持自定义翻译提示词,优化翻译质量
  • 异步队列处理,不阻塞主流程

🛒 Chrome 插件商品采集

功能特点:

  • 🛍️ 1688 商品采集:一键采集 1688 商品信息
  • 📸 图片自动下载:自动下载商品图片并上传到服务器
  • 🌐 多语言处理:自动提取中文信息,准备翻译
  • 📋 批量导入:支持批量商品导入
  • 🔄 数据同步:采集的商品自动同步到所有节点

使用场景:

  • 从 1688 等平台快速采集商品
  • 批量导入商品到电商平台
  • 自动化商品管理流程

🛍️ 完整电商功能

  • 产品管理:多规格、多图片、多语言产品信息
  • 分类系统:灵活的层级分类和属性筛选
  • 购物车:实时购物车功能
  • 订单管理:完整的订单流程和状态跟踪
  • 支付集成:支持 PayPal 等多种支付方式
  • 促销系统:灵活的促销规则和优惠券
  • 用户系统:用户注册、登录、个人中心
  • 内容管理:多语言文章系统
  • SEO 优化:自动生成 SEO 标签

🎨 现代化管理后台

  • Filament 3.x:基于 Laravel 的现代化管理面板
  • 实时数据统计:销售数据、用户统计等
  • 多语言管理:统一管理所有语言内容
  • 媒体管理:图片上传、优化、管理
  • 系统设置:灵活的配置管理

🚀 技术栈

后端技术

  • Laravel 11.x - PHP Web 框架
  • PHP 8.1+ - 服务器端语言
  • MySQL 8.0+ - 数据库
  • Redis - 缓存和会话存储
  • Laravel Octane - 高性能应用服务器

前端技术

  • Tailwind CSS 3.x - 实用优先的 CSS 框架
  • Livewire 3.x - 全栈框架
  • Alpine.js - 轻量级 JavaScript 框架
  • Vite - 现代前端构建工具

管理后台

  • Filament 3.x - Laravel 管理面板
  • 自定义组件 - 针对业务定制的管理组件

其他工具

  • Laravel Media Library - 媒体文件管理
  • Laravel Scout - 全文搜索
  • Laravel Queue - 队列处理
  • Laravel Notifications - 通知系统
  • Ollama - 本地 AI 模型(用于翻译)

📦 快速开始

环境要求

  • PHP >= 8.1
  • Composer
  • Node.js >= 16.x
  • MySQL >= 8.0
  • Redis
  • Ollama (可选,用于 AI 翻译)

安装步骤

  1. 克隆项目
git clone https://gitee.com/teanary/teanary_service.git
cd teanary_service
git clone https://github.com/TeanaryService/teanary_srvice.git
cd teanary_service
  1. 安装依赖
composer install
npm install
  1. 环境配置
cp .env.example .env
php artisan key:generate
  1. 配置数据库
    编辑 .env 文件:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=teanary
DB_USERNAME=your_username
DB_PASSWORD=your_password
  1. 配置多节点同步(可选)
SYNC_ENABLED=true
SYNC_NODE=node1

# 配置其他节点
SYNC_NODE2_URL=https://node2.example.com
SYNC_NODE2_API_KEY=your-secret-api-key
SYNC_NODE2_TIMEOUT=600
  1. 运行数据库迁移
php artisan migrate
php artisan db:seed
  1. 构建前端资源
npm run build
  1. 启动开发服务器
php artisan serve

访问 http://localhost:8000 查看网站。

🌐 多节点部署指南

场景示例

场景 1:中国管理 + 全球销售节点

中国节点(管理节点)
├── 美国节点(销售节点)
├── 欧洲节点(销售节点)
└── 亚洲节点(销售节点)

场景 2:多地区独立运营

北京节点
├── 上海节点
├── 广州节点
└── 深圳节点

配置步骤

  1. 在每个节点配置环境变量
# 节点 1 配置
SYNC_ENABLED=true
SYNC_NODE=beijing
SYNC_BEIJING_URL=https://beijing.example.com
SYNC_BEIJING_API_KEY=key-for-beijing
SYNC_SHANGHAI_URL=https://shanghai.example.com
SYNC_SHANGHAI_API_KEY=key-for-shanghai

# 节点 2 配置
SYNC_ENABLED=true
SYNC_NODE=shanghai
SYNC_BEIJING_URL=https://beijing.example.com
SYNC_BEIJING_API_KEY=key-for-beijing
SYNC_SHANGHAI_URL=https://shanghai.example.com
SYNC_SHANGHAI_API_KEY=key-for-shanghai
  1. 配置雪花 ID 机器 ID
    每个节点必须配置不同的机器 ID:
SNOWFLAKE_MACHINE_ID=1  # 节点 1
SNOWFLAKE_MACHINE_ID=2  # 节点 2
  1. 启动队列处理
php artisan queue:work

详细配置请参考 SYNC.md

📡 API 文档

商品上传接口

接口地址: POST /api/products/add

功能: 上传商品,支持多语言、多规格、分类自动创建、图片上传

请求示例:

curl -X POST https://your-domain.com/api/products/add \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-token" \
  -d '{
    "slug": "product-slug",
    "translations": [
      {
        "language_id": 1,
        "name": "商品名称",
        "description": "商品描述"
      }
    ],
    "variants": [
      {
        "sku": "SKU-001",
        "price": 99.99,
        "stock": 100
      }
    ]
  }'

文章上传接口

接口地址: POST /api/articles/add

功能: 上传文章,支持多语言、图片上传

详细 API 文档请参考代码中的接口定义。

📄 开源协议

本项目采用 AGPL-3.0 (GNU Affero General Public License v3.0) 开源协议。

协议要点

您可以:

  • ✅ 自由使用、研究、修改代码
  • ✅ 自由分发代码
  • ✅ 用于商业项目

您必须:

  • ⚠️ 如果修改代码并部署为网络服务,必须公开修改后的源代码
  • ⚠️ 保留原始版权声明和协议声明
  • ⚠️ 使用相同的协议发布衍生作品

您不能:

  • ❌ 修改代码后作为闭源商业产品售卖
  • ❌ 移除版权声明

为什么选择 AGPL?

  • 保护开源项目的完整性
  • 防止将开源项目包装成闭源商业产品
  • 鼓励贡献回社区

完整协议内容请查看 LICENSE 文件。

🤝 贡献指南

我们欢迎社区贡献!请遵循以下步骤:

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建 Pull Request

代码规范

  • 遵循 PSR-12 编码标准
  • 使用有意义的变量和函数名
  • 添加适当的注释
  • 编写单元测试
  • 运行代码质量检查:composer check

📊 项目结构

teanary_service/
├── app/
│   ├── Console/          # 控制台命令
│   ├── Enums/           # 枚举类
│   ├── Filament/        # Filament管理面板
│   ├── Http/            # HTTP控制器
│   ├── Jobs/            # 队列任务
│   ├── Livewire/        # Livewire组件
│   ├── Models/          # 数据模型
│   ├── Services/        # 业务服务
│   │   └── SyncService.php  # 多节点同步服务
│   └── Traits/          # 特征类
│       └── Syncable.php     # 同步功能 Trait
├── config/
│   └── sync.php         # 同步配置
├── database/
│   ├── migrations/      # 数据库迁移
│   └── seeders/         # 数据填充
├── lang/                # 多语言文件(8种语言)
├── routes/              # 路由定义
└── tests/               # 测试文件

🧪 测试

# 运行所有测试
composer test

# 运行单元测试
php bin/phpunit tests/Unit/

# 运行功能测试
php bin/phpunit tests/Feature/

📚 相关文档

🌐 部署指南

高性能部署(推荐)

本项目已配置 Laravel Octane 高性能部署。

首次部署

vendor/bin/dep deploy:first teanary

常规部署

vendor/bin/dep deploy teanary

详细部署说明请参考 README 中的部署章节。

Teanary - 让全球电商运营更简单 🌍

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐