返回架构笔记
Arch Day 74

Arch Day 74: POS系统架构

Arch Day 74: POS系统架构

2026-06-12
第三阶段 - 零售域深度
电商POS门店数字化离线模式Edge智能零售

日期: 2026-06-12 (Day 74) 阶段: 第三阶段 - 零售域深度 标签: #电商 #POS #门店数字化 #离线模式 #Edge AI #智能零售


核心概念

一句话定义

POS(Point of Sale)系统不只是收银机——它是门店数字化的入口,连接着商品、库存、会员、支付、营销等所有零售能力,是全渠道零售的"最后一米"。

为什么关注

2025年超过72%的零售商使用云POS系统(ConnectPOS Report),移动POS(mPOS)在2026年成为主流——近65%的新POS安装是智能手机或平板方案(Swell统计)。IDC预测2026年78%的零售商将采用边缘AI混合架构。全球POS终端市场预计到2027年达到1,340亿美元。POS正在从"交易记录工具"进化为"智能零售操作系统"。

误区与反模式

误区现实
"POS就是收银软件"现代POS是门店全业务平台(销售/库存/会员/营销/分析)
"云POS不需要离线能力"网络不稳定的门店(地下室/偏远区域)必须支持离线
"所有数据实时同步即可"离线→上线的数据冲突、幂等、顺序保证极其复杂
"POS系统就是前端"POS涉及硬件外设驱动、支付安全(PCI-DSS)、本地数据库等
"升级POS只需换软件"需要考虑外设兼容、培训成本、业务连续性

知识点详解

一、POS系统架构总览

1.1 整体架构

┌──────────────────────────────────────────────────────────────┐
│                      POS客户端(门店侧)                        │
│                                                              │
│  ┌──────────────────────────────────────────────┐            │
│  │               前端UI层                         │            │
│  │  收银界面 │ 商品搜索 │ 会员查询 │ 报表 │ 管理    │            │
│  └──────────────────────┬───────────────────────┘            │
│                         │                                     │
│  ┌──────────────────────▼───────────────────────┐            │
│  │              业务逻辑层                         │            │
│  │  价格计算 │ 促销引擎 │ 库存管理 │ 交易处理       │            │
│  └──────────────────────┬───────────────────────┘            │
│                         │                                     │
│  ┌──────────────────────▼───────────────────────┐            │
│  │              本地数据层                         │            │
│  │  SQLite/本地DB │ 离线缓存 │ 交易日志            │            │
│  └──────────────────────┬───────────────────────┘            │
│                         │                                     │
│  ┌──────────────────────▼───────────────────────┐            │
│  │              外设驱动层                         │            │
│  │  打印机 │ 扫码枪 │ 电子秤 │ 钱箱 │ 支付终端    │            │
│  └──────────────────────────────────────────────┘            │
└──────────────────────────┬───────────────────────────────────┘
                           │ 网络(在线时)
                           │ 离线队列(离线时)
┌──────────────────────────▼───────────────────────────────────┐
│                      云端服务(总部侧)                          │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐       │
│  │ 商品中心  │ │ 库存中心  │ │ 会员中心  │ │ 订单中心  │       │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘       │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐       │
│  │ 支付中心  │ │ 营销中心  │ │ 数据分析  │ │ 门店管理  │       │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘       │
└──────────────────────────────────────────────────────────────┘

1.2 POS部署模式演进

代际模式架构典型产品
第1代单机POS本地安装/单机运行传统收银机
第2代C/S架构门店服务器+终端海信HiStone
第3代Cloud POS云端SaaS+瘦客户端Shopify POS/Square
第4代Hybrid POS云+边缘+离线ConnectPOS/现代方案
第5代AI POS边缘AI+云协同Amazon Just Walk Out

二、离线模式设计

离线模式是POS系统最关键也最复杂的设计。门店网络不稳定时,POS必须能继续正常收银。

2.1 离线架构设计

在线模式:
  POS操作 → 实时调云端API → 返回结果 → 更新本地缓存

离线模式:
  POS操作 → 本地业务逻辑 → 本地数据库 → 操作日志队列
                                              │
                                              │ 网络恢复
                                              ▼
                                        同步引擎 → 云端API
                                              │
                                              │ 冲突检测
                                              ▼
                                        冲突解决策略

2.2 离线数据缓存策略

class OfflineDataManager:
    """离线数据管理器"""

    # 数据分级缓存策略
    DATA_SYNC_POLICY = {
        # 热数据:每次在线时全量同步
        'hot': {
            'product_catalog': {'sync': 'full', 'freq': '1h', 'storage': 'sqlite'},
            'price_list': {'sync': 'full', 'freq': '30min', 'storage': 'sqlite'},
            'promotion_rules': {'sync': 'full', 'freq': '1h', 'storage': 'sqlite'},
            'member_tier_config': {'sync': 'full', 'freq': '4h', 'storage': 'sqlite'},
        },
        # 温数据:增量同步
        'warm': {
            'inventory': {'sync': 'delta', 'freq': '5min', 'storage': 'sqlite'},
            'member_points': {'sync': 'delta', 'freq': '10min', 'storage': 'sqlite'},
        },
        # 冷数据:按需查询,本地缓存
        'cold': {
            'member_detail': {'sync': 'on_demand', 'cache_ttl': '24h', 'storage': 'lru_cache'},
            'order_history': {'sync': 'on_demand', 'cache_ttl': '1h', 'storage': 'lru_cache'},
        },
    }

    def ensure_offline_ready(self):
        """确保离线数据就绪"""
        for tier, datasets in self.DATA_SYNC_POLICY.items():
            for name, policy in datasets.items():
                last_sync = self.get_last_sync_time(name)
                if self.is_stale(last_sync, policy['freq']):
                    self.sync_data(name, policy)

    def is_offline_capable(self):
        """检查是否具备离线能力"""
        # 核心数据必须已缓存
        required = ['product_catalog', 'price_list', 'promotion_rules']
        for name in required:
            if not self.has_local_data(name):
                return False
        return True

2.3 离线交易处理

class OfflineTransactionProcessor:
    """离线交易处理器"""

    def process_sale(self, items, payment_info, member_id=None):
        """
        离线状态下处理销售交易
        """
        # 1. 本地生成交易ID(离线安全ID)
        txn_id = self.generate_offline_txn_id()
        # 格式: STORE_ID-TERMINAL_ID-TIMESTAMP-SEQ
        # 例: S001-T03-20260612143022-0001

        # 2. 本地价格计算(使用缓存的促销规则)
        price_result = self.local_price_engine.calculate(items)

        # 3. 本地库存扣减
        for item in items:
            self.local_inventory.deduct(item.sku_id, item.qty)

        # 4. 支付处理
        if payment_info.type == 'CASH':
            # 现金支付:纯本地处理
            payment_result = self.process_cash_payment(payment_info)
        elif payment_info.type in ['WECHAT', 'ALIPAY']:
            # 扫码支付:尝试在线,失败则排队
            try:
                payment_result = self.payment_gateway.pay(payment_info, timeout=5)
            except NetworkError:
                # 记录待支付,网络恢复后重试
                payment_result = self.queue_payment(txn_id, payment_info)

        # 5. 创建本地交易记录
        transaction = Transaction(
            txn_id=txn_id,
            items=items,
            price_result=price_result,
            payment=payment_result,
            member_id=member_id,
            is_offline=True,
            created_at=datetime.now(),
            synced=False,
        )
        self.local_db.save(transaction)

        # 6. 加入同步队列
        self.sync_queue.enqueue(transaction)

        # 7. 打印小票(本地完成,不依赖网络)
        self.receipt_printer.print(transaction)

        return transaction

2.4 上线同步与冲突解决

class SyncEngine:
    """离线→在线同步引擎"""

    def sync_when_online(self):
        """网络恢复时执行同步"""
        # 1. 按时间顺序获取离线交易
        pending_txns = self.sync_queue.get_all_pending()

        for txn in pending_txns:
            try:
                result = self.sync_transaction(txn)
                if result.has_conflict:
                    self.resolve_conflict(txn, result.conflict)
                txn.synced = True
                self.local_db.update(txn)
            except Exception as e:
                self.error_log.record(txn, e)
                # 不阻塞后续同步,继续处理下一条

    def sync_transaction(self, txn):
        """同步单条交易到云端"""
        return self.cloud_api.post('/transactions/sync', {
            'txn_id': txn.txn_id,
            'store_id': self.store_id,
            'terminal_id': self.terminal_id,
            'items': txn.items,
            'amount': txn.price_result.total,
            'payment': txn.payment,
            'member_id': txn.member_id,
            'offline_time': txn.created_at,
            'sync_time': datetime.now(),
        })

    def resolve_conflict(self, txn, conflict):
        """
        冲突解决策略
        """
        if conflict.type == 'INVENTORY_OVERSOLD':
            # 库存冲突:离线期间卖出的商品线上也被卖了
            # 策略:交易已完成不回滚,补记超卖,触发紧急补货
            self.alert_service.notify(
                f"门店{self.store_id} SKU{conflict.sku_id} 超卖{conflict.oversold_qty}件"
            )
            self.inventory_service.record_oversold(conflict)

        elif conflict.type == 'PRICE_CHANGED':
            # 价格冲突:离线期间使用的价格与当前不同
            # 策略:以交易时价格为准(保护消费者),记录差异
            self.price_diff_log.record(txn, conflict)

        elif conflict.type == 'PROMOTION_EXPIRED':
            # 促销冲突:离线期间促销已过期但仍使用
            # 策略:承认已完成交易,记录促销损失
            self.promotion_loss_log.record(txn, conflict)

        elif conflict.type == 'MEMBER_POINTS_CONFLICT':
            # 积分冲突:离线期间积分变动与线上冲突
            # 策略:取并集(两边操作都保留)
            self.member_service.merge_points(txn.member_id, conflict)

2.5 冲突类型与策略矩阵

冲突类型发生原因解决策略优先级
库存超卖线上线下同时卖同一SKU承认交易+紧急补货+告警P0
价格不一致离线期间价格变更以交易时价格为准P1
促销过期离线期间促销结束承认交易+记录损失P1
会员积分多端同时操作积分合并策略(取并集)P2
订单重复同一交易上传两次幂等校验(txn_id去重)P0
优惠券超用离线用了线上已核销的券承认交易+标记异常P1

三、外设集成架构

3.1 外设抽象层

class DeviceAbstractionLayer:
    """外设抽象层:统一接口,屏蔽硬件差异"""

    class PrinterDriver:
        """打印机驱动抽象"""
        def print_receipt(self, receipt_data): pass
        def print_label(self, label_data): pass
        def open_cash_drawer(self): pass
        def check_status(self) -> DeviceStatus: pass

    class ScannerDriver:
        """扫码枪驱动抽象"""
        def on_scan(self, callback): pass
        def get_last_scan(self) -> str: pass

    class ScaleDriver:
        """电子秤驱动抽象"""
        def get_weight(self) -> float: pass
        def tare(self): pass  # 去皮
        def on_weight_stable(self, callback): pass

    class PaymentTerminal:
        """支付终端驱动抽象"""
        def process_card(self, amount) -> PaymentResult: pass
        def process_qr_code(self, amount) -> PaymentResult: pass
        def cancel(self): pass
        def refund(self, txn_id, amount) -> RefundResult: pass

    class CustomerDisplay:
        """顾客显示屏驱动抽象"""
        def show_item(self, name, price): pass
        def show_total(self, total): pass
        def show_message(self, message): pass

3.2 外设集成方案

外设接口类型协议离线支持
热敏打印机USB/网口/蓝牙ESC/POS指令完全支持
扫码枪USB(HID)/串口键盘模拟/串口协议完全支持
电子秤串口/USB厂商私有协议完全支持
钱箱打印机级联打印机指令触发完全支持
支付终端网络/串口银联/微信/支付宝SDK部分支持
顾客显示屏串口/USB厂商私有协议完全支持
人脸识别USB摄像头SDK离线模型支持

四、门店管理功能

4.1 开关店流程

开店流程:
  店员登录 → 身份验证 → 检查昨日未提交 → 点备用金
  → 确认开店金额 → 设备自检(打印机/扫码枪/网络)
  → 同步最新数据(商品/价格/促销) → 开始营业

交班流程:
  当前班次统计(现金/刷卡/扫码各多少笔)
  → 清点现金 → 录入实际金额 → 差异记录
  → 交班报告打印 → 下一班次接手

关店流程(日结):
  停止收银 → 全天汇总统计 → 清点现金
  → 对账(系统金额 vs 实际金额) → 差异处理
  → 日结报告 → 数据上传 → 关闭系统

4.2 日结对账

class DailySettlement:
    """日结对账"""

    def settle(self, store_id, date):
        # 1. 汇总当日交易
        summary = self.aggregate_transactions(store_id, date)

        report = {
            'sales': {
                'total_count': summary.total_txn_count,
                'total_amount': summary.total_amount,
                'by_payment': {
                    'cash': summary.cash_amount,
                    'wechat': summary.wechat_amount,
                    'alipay': summary.alipay_amount,
                    'card': summary.card_amount,
                },
                'by_category': summary.category_breakdown,
            },
            'refunds': {
                'count': summary.refund_count,
                'amount': summary.refund_amount,
            },
            'discounts': {
                'coupon': summary.coupon_discount,
                'promotion': summary.promo_discount,
                'manual': summary.manual_discount,  # 手工折扣(需审计)
            },
            'cash_reconciliation': {
                'system_cash': summary.system_cash_amount,
                'actual_cash': None,  # 待店员录入
                'difference': None,   # 差异
            },
            'offline_transactions': {
                'count': summary.offline_txn_count,
                'synced': summary.offline_synced_count,
                'pending': summary.offline_pending_count,
            },
        }

        return report

五、智能POS(2025-2026趋势)

5.1 Edge AI在POS中的应用

据IDC(2025)预测,到2026年90%的零售工具将嵌入AI算法。Edge AI让POS具备本地智能,不依赖云端。

class EdgeAIPOS:
    """Edge AI驱动的智能POS"""

    def __init__(self):
        # 本地AI模型(运行在POS终端/边缘设备上)
        self.face_recognition = LocalFaceModel()   # 人脸识别
        self.product_recognition = LocalVisionModel()  # 商品视觉识别
        self.anomaly_detector = LocalAnomalyModel()  # 异常检测

    def smart_checkout(self, camera_frame):
        """智能收银:视觉识别商品"""
        # 1. 识别商品(无需扫码)
        products = self.product_recognition.detect(camera_frame)
        # 适用于:水果蔬菜、烘焙、自助称重

        # 2. 识别顾客(会员识别)
        if self.face_recognition.enabled:
            member = self.face_recognition.identify(camera_frame)
            # 立即展示会员价、推荐、优惠

        return products, member

    def next_best_action(self, member, cart):
        """
        Agentic AI:下一步最佳行动建议
        2026年零售趋势——POS成为"最聪明的店员"
        """
        # 基于会员画像+当前购物车,生成建议
        actions = []

        # 交叉销售推荐
        if self.should_cross_sell(member, cart):
            actions.append({
                'type': 'CROSS_SELL',
                'suggestion': f"这位顾客上次买了X,推荐搭配Y",
            })

        # 升级会员提醒
        if member.is_near_upgrade():
            actions.append({
                'type': 'MEMBER_UPGRADE',
                'suggestion': f"再消费{member.gap_to_upgrade}元即可升级金卡",
            })

        # 优惠提醒
        unused_coupons = self.get_unused_coupons(member)
        if unused_coupons:
            actions.append({
                'type': 'COUPON_REMIND',
                'suggestion': f"有{len(unused_coupons)}张优惠券可用",
            })

        return actions

5.2 智能POS形态

形态特点场景代表
传统POS固定终端大型超市收银台海信/新大陆
mPOS(移动)平板/手机导购、排队结账Square/Shopify POS
自助收银顾客自助扫码结账超市/便利店NCR/Diebold
无人收银视觉AI自动识别便利店/无人店Amazon Just Walk Out
社交POS直播间/小程序社交电商微信小程序POS

对比分析

POS架构方案对比

维度本地安装POSCloud POSHybrid POS
部署门店本地安装浏览器/SaaS本地+云端
离线能力
更新维护需上门自动更新本地引擎+云更新
数据实时性低(定时同步)高(实时)高(在线时实时)
初始成本高(硬件+软件)低(订阅制)
扩展性
安全性本地控制依赖云安全分层安全
适用大型连锁中小门店全场景

国内外POS方案对比

方案类型特点价格模型
SquareCloud mPOS北美最流行,生态完整交易费率
Shopify POSCloud mPOS与Shopify电商一体月费+费率
有赞Cloud POS微信生态,社交电商强SaaS月费
海信HiStoneHybrid大型连锁专用一次性+维护费
ConnectPOSCloud全渠道整合SaaS月费

架构设计实操

设计目标

设计一个"智能POS"系统,满足:

  • 100+门店连锁部署
  • 支持离线收银(24小时内无网络可运行)
  • 外设即插即用
  • AI辅助(会员识别/商品识别/智能推荐)
  • 与全渠道中台集成

方案架构

┌─────────────────────────────────────────────────────────────┐
│                    门店POS终端                                │
│                                                             │
│  ┌───────────────────────────────────────────────┐          │
│  │              UI层(跨平台)                       │          │
│  │  Flutter/Electron + 自适应布局                   │          │
│  └────────────────────┬──────────────────────────┘          │
│                       │                                      │
│  ┌────────────────────▼──────────────────────────┐          │
│  │           业务逻辑层(本地引擎)                    │          │
│  │  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐        │          │
│  │  │交易   │ │价格   │ │库存   │ │会员   │        │          │
│  │  │引擎   │ │引擎   │ │管理   │ │管理   │        │          │
│  │  └──────┘ └──────┘ └──────┘ └──────┘        │          │
│  └────────────────────┬──────────────────────────┘          │
│                       │                                      │
│  ┌────────────────────▼──────────────────────────┐          │
│  │           数据层(本地存储)                       │          │
│  │  SQLite │ LevelDB(KV缓存) │ WAL日志            │          │
│  └────────────────────┬──────────────────────────┘          │
│                       │                                      │
│  ┌────────────────────▼──────────────────────────┐          │
│  │           同步层(在线/离线切换)                   │          │
│  │  在线: REST API ←→ 云端                         │          │
│  │  离线: 本地队列 → 网络恢复后批量同步              │          │
│  └────────────────────┬──────────────────────────┘          │
│                       │                                      │
│  ┌────────────────────▼──────────────────────────┐          │
│  │           Edge AI层                            │          │
│  │  人脸识别 │ 商品识别 │ 异常检测 │ 推荐           │          │
│  │  (TFLite/ONNX Runtime 本地推理)                 │          │
│  └───────────────────────────────────────────────┘          │
│                                                             │
│  ┌───────────────────────────────────────────────┐          │
│  │           外设层(HAL)                           │          │
│  │  USB │ 串口 │ 蓝牙 │ 网口                      │          │
│  │  打印机 │ 扫码枪 │ 电子秤 │ 钱箱 │ 支付终端      │          │
│  └───────────────────────────────────────────────┘          │
└─────────────────────────────────────────────────────────────┘

ADR: POS采用Hybrid架构(本地引擎+云同步)

背景: 纯Cloud POS在网络不稳定时无法收银,纯本地POS难以实时获取最新数据

决策: Hybrid架构——业务核心引擎本地运行,数据通过云端同步

理由:

  • 本地引擎保证100%可用性(离线也能收银)
  • 云同步保证数据时效性(在线时实时)
  • Edge AI本地推理保证响应速度(<100ms)

权衡:

  • 优势:高可用性、低延迟、离线能力
  • 劣势:本地存储管理复杂、同步冲突处理、终端性能要求高
  • 兜底:24小时以上离线自动锁定POS,要求联网同步后才能继续

AI增强实践

1. 防损AI(Loss Prevention)

class LossPreventionAI:
    """AI防损系统"""

    def detect_sweethearting(self, transaction_stream):
        """
        检测"甜蜜欺诈"(收银员给熟人不扫某些商品)
        信号:频繁取消扫描、跳过商品、手工折扣异常
        """
        features = {
            'void_rate': self.calc_void_rate(transaction_stream),
            'manual_discount_rate': self.calc_manual_discount_rate(transaction_stream),
            'avg_items_per_txn': self.calc_avg_items(transaction_stream),
            'scan_speed_variance': self.calc_scan_speed_var(transaction_stream),
        }
        risk_score = self.model.predict(features)
        if risk_score > 0.7:
            self.alert("收银异常", f"终端{self.terminal_id}疑似损耗行为")

    def detect_scan_avoidance(self, video_frame, scanned_items):
        """
        视觉AI检测:购物车中商品数 vs 扫码商品数不匹配
        """
        detected_items = self.vision_model.count_items(video_frame)
        if detected_items > len(scanned_items) + 1:  # 容差1件
            self.alert("扫码遗漏", f"检测到{detected_items}件,只扫了{len(scanned_items)}件")

2. AI辅助门店运营

AI功能说明边缘/云端
客流计数进出店人数统计边缘
热力图店内区域热度分析边缘+云
排队预测预测收银排队时间边缘
动态排班根据客流预测调整云端
缺货检测货架空位识别边缘
价签核查识别错误价签边缘

与Web3/DeFi的关联

POS × Web3

场景实现价值
加密支付POS集成加密支付(Lightning/USDC)跨境支付/低手续费
NFT会员卡POS扫描NFT验证会员身份可转让/可交易会员权益
链上小票交易记录上链防篡改/可验证消费凭证
Token积分POS发放Token积分积分可交易/跨品牌通用
供应链验真POS扫码查链上溯源消费者验真

今日思考

1. POS离线模式下如何处理扫码支付?

扫码支付(微信/支付宝)天然依赖网络。离线时的策略:(1) 引导现金支付;(2) 如果是付款码(被扫),可以先本地记录,网络恢复后补扣(风险:失败率高);(3) 对于大额交易,要求网络在线才能扫码支付。最佳实践是POS具备4G/5G备用网络,确保支付通道永远在线。

2. 连锁门店POS如何做灰度更新?

不能全量推送——万一新版本有bug,所有门店瘫痪。策略:分批灰度(先5%门店→20%→50%→100%),每批观察24小时。更新时间选在闭店后(凌晨自动更新)。保留回滚能力(本地保存上一版本)。关键指标监控:交易成功率、同步失败率、外设兼容性。

3. 自助收银(Self-Checkout)的防损挑战如何解决?

自助收银的shrinkage(损耗率)是传统收银的5-10倍。AI解决方案:(1) 视觉AI监控扫码动作,检测"假装扫码";(2) 重量验证(扫码后放到秤上验证重量匹配);(3) 随机抽查(AI判断高风险交易弹出人工检查)。但要平衡防损和用户体验——过度检查会降低自助的便利性。


面试题准备

题目:POS离线模式如何设计?上线后如何同步和解决冲突?

30秒回答: 离线模式通过"本地引擎+操作日志队列"实现——本地缓存核心数据(商品/价格/促销),交易在本地完成并记入日志。上线后按时间顺序回放日志同步到云端,冲突按"已完成交易不回滚"原则处理。

2分钟回答

离线设计三层

  1. 数据预缓存:商品目录、价格表、促销规则定期全量同步到本地SQLite,确保离线有足够数据完成交易
  2. 本地事务处理:交易引擎完全本地运行(价格计算、库存扣减、小票打印),生成唯一交易ID防重复
  3. 操作日志队列:所有操作记入本地WAL日志,FIFO队列等待同步

同步策略

  1. 网络恢复后,按FIFO顺序逐条同步
  2. 每条交易同步采用幂等设计(txn_id去重)
  3. 批量同步减少网络往返(100条/批)
  4. 同步失败自动重试(指数退避)

冲突解决原则

  • 已完成交易不回滚——顾客已拿走商品,无法追回
  • 库存超卖→告警+紧急补货(不取消交易)
  • 价格差异→以交易时价格为准(保护消费者)
  • 积分冲突→取并集(保留双方操作)

追问准备

  • Q: 离线24小时,数据会不会太旧?→ 商品/价格数据日更新频率低(<1%),促销规则提前缓存到过期时间。超24小时锁定POS要求同步。
  • Q: 离线期间退货怎么处理?→ 本地处理退货(有原交易记录就能退),上线后同步退货交易。

学习资源


明日预告

Day 75: O2O业务架构 —— O2O(Online-to-Offline)正在演变为即时零售(Instant Retail)。2024年中国即时零售规模达7810亿元,预计2026年突破万亿。我们将深入前置仓(Dark Store)vs门店发货模式、配送调度系统(骑手匹配/路径优化/ETA)、以及社区团购的架构设计。