[Teanary]又一个开源外贸电商系统及技术细节分享

简介: Teanary 是一款支持多节点部署、AI自动翻译与商品采集的全球化电商平台系统。基于 Laravel 与 Filament 构建,实现跨国数据同步、本地化运营与高可用架构,助力企业高效管理全球电商业务。

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

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

代码已通过单元测试和静态分析,普通bug反馈请通过Issues提交;安全相关bug请通过Email(hello@teanary.com)提交

🎮 在线演示

前端地址: https://demo.chatterup.fun:2003
后台管理: https://demo.chatterup.fun:2003/m

测试账号(前后端通用):

  • 邮箱: demo@demo.com
  • 密码: demo123456

重要说明:

  • ⚠️ Demo 数据每 8 小时自动重置一次
  • 💻 当前 Demo 服务器运行在一台树莓派上,性能有限,请谅解
  • 🌐 如果您愿意赞助服务器资源部署 Demo,我们可以部署多节点同步演示环境,展示完整的多节点同步功能
  • 📧 如有赞助意向或想了解更多信息,请联系:hello@teanary.com

🌟 核心特性

🌍 多节点数据同步系统

解决的核心问题:

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

技术特点:

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

适用场景:

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

🤖 AI 自动翻译系统

功能特点:

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

技术实现:

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

🛒 Chrome 插件商品采集

功能特点:

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

使用场景:

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

🛍️ 完整电商功能

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

🎨 现代化管理后台

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

🚀 技术栈

后端技术

  • Laravel 12.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
    
  2. 安装依赖

    composer install
    npm install
    
  3. 环境配置

    cp .env.example .env
    php artisan key:generate
    
  4. 配置数据库
    编辑 .env 文件:

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=teanary
    DB_USERNAME=your_username
    DB_PASSWORD=your_password
    
  5. 配置多节点同步(可选)
    ```env
    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


6. **运行数据库迁移**
```bash
php artisan migrate
php artisan db:seed
  1. 构建前端资源

    npm run build
    
  2. 启动开发服务器

    php artisan serve
    

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

🌐 多节点部署指南

为什么选择程序层同步而不是 MySQL 主从同步?

在跨国多节点部署场景下,我们选择了程序层数据同步而非传统的 MySQL 主从同步,主要原因如下:

1. 高网络延迟环境下的可靠性

  • 🌍 跨国网络延迟:中国到美国/欧洲的数据库连接延迟通常在 200-400ms,MySQL 主从同步在高延迟环境下容易出现超时和连接中断
  • 🔄 程序层同步:通过 HTTP/HTTPS API 进行数据同步,可以更好地处理网络波动,支持重试机制和断点续传

2. 灵活的数据同步策略

  • 📦 批量同步:程序层可以智能地将多条记录打包同步,大幅提升效率
  • 🎯 选择性同步:可以只同步需要的数据,避免同步不必要的系统表、日志表等
  • 🔀 双向同步:支持任意节点间的双向同步,而 MySQL 主从通常是单向的

3. 更好的容错和恢复能力

  • 🔁 自动重试:同步失败可以自动重试,不会因为网络波动导致数据丢失
  • 📊 同步监控:完整的同步日志和状态跟踪,可以清楚地知道每条数据的同步状态
  • 🛡️ 冲突处理:可以基于业务逻辑处理数据冲突(如以最新数据为准)

4. 跨数据库兼容性

  • 🗄️ 数据库无关:不依赖特定的数据库类型,可以支持 MySQL、PostgreSQL 等不同数据库
  • 🔧 易于扩展:未来如果需要支持其他数据库类型,只需修改同步逻辑,无需改变数据库架构

5. 业务逻辑集成

  • 🎨 数据转换:可以在同步过程中进行数据转换、验证和业务逻辑处理
  • 📁 文件同步:可以同时同步媒体文件、图片等,而 MySQL 主从同步无法处理文件

6. 安全性考虑

  • 🔐 API 认证:使用 API Key 进行认证,比直接暴露数据库连接更安全
  • 🔒 HTTPS 加密:所有数据传输通过 HTTPS 加密,保护数据安全

总结:在跨国高延迟网络环境下,程序层同步提供了更好的可靠性、灵活性和可维护性,更适合复杂的多节点电商场景。

场景示例

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

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

场景 2:多地区独立运营

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

配置步骤

  1. 在每个节点配置环境变量
    ```env

    节点 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


2. **配置雪花 ID 机器 ID**
每个节点必须配置不同的机器 ID:
```env
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 - 让全球电商运营更简单 🌍

相关文章
|
9天前
|
JavaScript 前端开发 算法
「管理内核解析」颗粒化职责切分:你的第一份原子级任务执行原理说明书
在数字化浪潮中,企业核心挑战从“人力堆砌”转向“责任模糊”。颗粒化职责切分工具以原子级解构业务流程,实现责任精准触达、权责穿透可视、动态预警校准与模板资产复用,打造可观测、可追踪、可响应的组织执行引擎。(239字)
|
7月前
|
人工智能 自然语言处理 小程序
Agent员工正在办理入职
企业正经历第二次AI革命,AI Agent逐渐参与经营环节,成为“智能员工”。千寻位置引入AI客服“AI小千”,试用期表现优异,准确率达82.45%,成功转正。AI小千兼具销售、客服与资料管理功能,提升效率、降低成本,推动客服从成本部门向价值部门转型,助力企业数智化升级。
150 0
|
11月前
|
存储 监控 API
1688平台API接口实战:Python实现店铺全量商品数据抓取
本文介绍如何使用Python通过1688开放平台的API接口自动化抓取店铺所有商品数据。首先,开发者需在1688开放平台完成注册并获取App Key和App Secret,申请“商品信息查询”权限。接着,利用`alibaba.trade.product.search4trade`接口,构建请求参数、生成MD5签名,并通过分页机制获取全量商品数据。文中详细解析了响应结构、存储优化及常见问题处理方法,还提供了竞品监控、库存预警等应用场景示例和完整代码。
|
Web App开发 JSON 安全
【跨域难题终结者】:一键解锁Chrome浏览器神秘设置,彻底告别开发阶段的跨域烦恼!
【8月更文挑战第20天】跨域是前端开发常遇难题,尤其在前后端分离项目中。浏览器因安全考量会阻止不同源间的请求。本文对比CORS、JSONP、代理服务器等解法,并介绍开发阶段通过调整Chrome设置来临时禁用跨域限制的方法,提供启动Chrome及使用`fetch`API示例,适合快速测试。但请注意这不适用于生产环境,存在一定安全风险。
3621 1
|
SQL 分布式计算 Ubuntu
【Hive】Hive开启远程连接及访问方法
【Hive】Hive开启远程连接及访问方法
4633 0
|
存储 JSON 关系型数据库
MySQL 5.x和MySQL 8.x到底有什么区别?
本文详细对比了MySQL 5.x与MySQL 8.x的主要区别,包括存储引擎改进、性能提升、SQL语法增强(如窗口函数、CTE、JSON支持)、安全性和权限管理、并发及锁机制、InnoDB引擎增强、复制与高可用性等方面的显著差异。通过具体示例展示了8.x版本在企业级应用和高并发场景下的优越表现,建议有条件时尽早升级至MySQL 8.x以充分利用其新特性。
|
Java Linux Maven
Docker镜像部署至Rancher全局配置 以xxl-job-admin为例
Docker镜像部署至Rancher全局配置 以xxl-job-admin为例
380 0
|
NoSQL MongoDB 数据库
实时计算 Flink版操作报错之在使用Flink CDC进行数据同步时遇到了全量同步不完全的问题,同时有任务偶尔报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。