“ERP(企业资源计划)系统涉及企业核心业务流程,数据表结构设计需兼顾业务完整性、数据一致性和查询效率。结合 FastAPI 的异步特性和 MySQL 的事务支持,以下是一套合理的 ERP 系统数据表结构设计方案。”
设计原则
- 业务驱动:按采购、销售、库存、生产等核心模块划分
- 范式设计:遵循第三范式,减少数据冗余
- 关系清晰:明确表间关联(一对一、一对多、多对多)
- 可扩展性:预留字段和表结构扩展空间
- 审计跟踪:所有表包含创建 / 更新时间和操作人
- 性能优化:合理设计索引和分区策略
核心数据表结构
1. 基础信息模块
1.1 公司信息表(companies)
CREATE TABLE companies (id INT AUTO_INCREMENT PRIMARY KEY,company_code VARCHAR(20) NOT NULL UNIQUE COMMENT '公司编码',company_name VARCHAR(100) NOT NULL COMMENT '公司名称',address VARCHAR(255) COMMENT '地址',contact_person VARCHAR(50) COMMENT '联系人',contact_phone VARCHAR(20) COMMENT '联系电话',email VARCHAR(100) COMMENT '邮箱',tax_id VARCHAR(50) COMMENT '税号',status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,created_by INT NOT NULL COMMENT '创建人',updated_by INT NOT NULL COMMENT '更新人',INDEX idx_company_code (company_code)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '公司信息表';
1.2 部门表(departments)
CREATE TABLE departments (id INT AUTO_INCREMENT PRIMARY KEY,company_id INT NOT NULL COMMENT '所属公司ID',dept_code VARCHAR(20) NOT NULL COMMENT '部门编码',dept_name VARCHAR(100) NOT NULL COMMENT '部门名称',parent_id INT COMMENT '上级部门ID',manager_id INT COMMENT '部门经理ID',status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,created_by INT NOT NULL,updated_by INT NOT NULL,UNIQUE KEY uk_dept_code (company_id, dept_code),INDEX idx_company (company_id),INDEX idx_parent (parent_id),FOREIGN KEY (company_id) REFERENCES companies(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '部门表';
1.3 用户表(users)
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,company_id INT NOT NULL COMMENT '所属公司ID',dept_id INT COMMENT '所属部门ID',user_code VARCHAR(20) NOT NULL COMMENT '用户编码',username VARCHAR(50) NOT NULL COMMENT '用户名',password_hash VARCHAR(255) NOT NULL COMMENT '密码哈希',full_name VARCHAR(50) NOT NULL COMMENT '姓名',phone VARCHAR(20) COMMENT '电话',email VARCHAR(100) COMMENT '邮箱',role_ids VARCHAR(255) COMMENT '角色ID,逗号分隔',status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用',last_login_at DATETIME COMMENT '最后登录时间',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,created_by INT NOT NULL,updated_by INT NOT NULL,UNIQUE KEY uk_user_code (company_id, user_code),UNIQUE KEY uk_username (username),INDEX idx_company_dept (company_id, dept_id),FOREIGN KEY (company_id) REFERENCES companies(id),FOREIGN KEY (dept_id) REFERENCES departments(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '用户表';
2. 供应链模块
2.1 供应商表(suppliers)
CREATE TABLE suppliers (id INT AUTO_INCREMENT PRIMARY KEY,company_id INT NOT NULL COMMENT '所属公司ID',supplier_code VARCHAR(20) NOT NULL COMMENT '供应商编码',supplier_name VARCHAR(100) NOT NULL COMMENT '供应商名称',short_name VARCHAR(50) COMMENT '简称',contact_person VARCHAR(50) COMMENT '联系人',contact_phone VARCHAR(20) COMMENT '联系电话',email VARCHAR(100) COMMENT '邮箱',address VARCHAR(255) COMMENT '地址',tax_id VARCHAR(50) COMMENT '税号',bank_info VARCHAR(255) COMMENT '银行信息',supplier_type TINYINT COMMENT '供应商类型',status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,created_by INT NOT NULL,updated_by INT NOT NULL,UNIQUE KEY uk_supplier_code (company_id, supplier_code),INDEX idx_company (company_id),INDEX idx_supplier_name (supplier_name),FOREIGN KEY (company_id) REFERENCES companies(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '供应商表';
2.2 客户表(customers)
CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY,company_id INT NOT NULL COMMENT '所属公司ID',customer_code VARCHAR(20) NOT NULL COMMENT '客户编码',customer_name VARCHAR(100) NOT NULL COMMENT '客户名称',short_name VARCHAR(50) COMMENT '简称',contact_person VARCHAR(50) COMMENT '联系人',contact_phone VARCHAR(20) COMMENT '联系电话',email VARCHAR(100) COMMENT '邮箱',address VARCHAR(255) COMMENT '地址',tax_id VARCHAR(50) COMMENT '税号',customer_level TINYINT COMMENT '客户等级',credit_limit DECIMAL(18,2) DEFAULT 0 COMMENT '信用额度',status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,created_by INT NOT NULL,updated_by INT NOT NULL,UNIQUE KEY uk_customer_code (company_id, customer_code),INDEX idx_company (company_id),INDEX idx_customer_name (customer_name),FOREIGN KEY (company_id) REFERENCES companies(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '客户表';
3. 产品管理模块
3.1 物料分类表(material_categories)
CREATE TABLE material_categories (id INT AUTO_INCREMENT PRIMARY KEY,company_id INT NOT NULL COMMENT '所属公司ID',category_code VARCHAR(20) NOT NULL COMMENT '分类编码',category_name VARCHAR(100) NOT NULL COMMENT '分类名称',parent_id INT COMMENT '上级分类ID',level INT NOT NULL COMMENT '层级',sort_order INT DEFAULT 0 COMMENT '排序',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,created_by INT NOT NULL,updated_by INT NOT NULL,UNIQUE KEY uk_category_code (company_id, category_code),INDEX idx_company (company_id),INDEX idx_parent (parent_id),FOREIGN KEY (company_id) REFERENCES companies(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '物料分类表';
3.2 物料表(materials)
CREATE TABLE materials (id INT AUTO_INCREMENT PRIMARY KEY,company_id INT NOT NULL COMMENT '所属公司ID',category_id INT NOT NULL COMMENT '分类ID',material_code VARCHAR(50) NOT NULL COMMENT '物料编码',material_name VARCHAR(200) NOT NULL COMMENT '物料名称',specification VARCHAR(255) COMMENT '规格型号',unit VARCHAR(20) NOT NULL COMMENT '单位',material_type TINYINT NOT NULL COMMENT '物料类型:1-原材料,2-半成品,3-成品',bar_code VARCHAR(100) COMMENT '条形码',cost_price DECIMAL(18,4) DEFAULT 0 COMMENT '成本价',selling_price DECIMAL(18,4) DEFAULT 0 COMMENT '售价',tax_rate DECIMAL(10,2) DEFAULT 0 COMMENT '税率(%)',min_stock DECIMAL(18,4) DEFAULT 0 COMMENT '最低库存',max_stock DECIMAL(18,4) DEFAULT 0 COMMENT '最高库存',status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,created_by INT NOT NULL,updated_by INT NOT NULL,UNIQUE KEY uk_material_code (company_id, material_code),INDEX idx_company_category (company_id, category_id),INDEX idx_material_name (material_name),INDEX idx_bar_code (bar_code),FOREIGN KEY (company_id) REFERENCES companies(id),FOREIGN KEY (category_id) REFERENCES material_categories(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '物料表';
4. 库存管理模块
4.1 仓库表(warehouses)
CREATE TABLE warehouses (id INT AUTO_INCREMENT PRIMARY KEY,company_id INT NOT NULL COMMENT '所属公司ID',warehouse_code VARCHAR(20) NOT NULL COMMENT '仓库编码',warehouse_name VARCHAR(100) NOT NULL COMMENT '仓库名称',address VARCHAR(255) COMMENT '地址',manager_id INT COMMENT '仓库管理员ID',status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,created_by INT NOT NULL,updated_by INT NOT NULL,UNIQUE KEY uk_warehouse_code (company_id, warehouse_code),INDEX idx_company (company_id),FOREIGN KEY (company_id) REFERENCES companies(id),FOREIGN KEY (manager_id) REFERENCES users(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '仓库表';
4.2 库存表(inventory)
CREATE TABLE inventory (id INT AUTO_INCREMENT PRIMARY KEY,company_id INT NOT NULL COMMENT '所属公司ID',warehouse_id INT NOT NULL COMMENT '仓库ID',material_id INT NOT NULL COMMENT '物料ID',quantity DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '库存数量',locked_quantity DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '锁定数量',available_quantity DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '可用数量',cost_price DECIMAL(18,4) DEFAULT 0 COMMENT '成本价',total_cost DECIMAL(18,4) DEFAULT 0 COMMENT '总成本',last_stockin_time DATETIME COMMENT '最后入库时间',last_stockout_time DATETIME COMMENT '最后出库时间',updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,updated_by INT NOT NULL,UNIQUE KEY uk_warehouse_material (warehouse_id, material_id),INDEX idx_company (company_id),INDEX idx_material (material_id),FOREIGN KEY (company_id) REFERENCES companies(id),FOREIGN KEY (warehouse_id) REFERENCES warehouses(id),FOREIGN KEY (material_id) REFERENCES materials(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '库存表';
4.3 库存交易记录表(inventory_transactions)
CREATE TABLE inventory_transactions (id INT AUTO_INCREMENT PRIMARY KEY,company_id INT NOT NULL COMMENT '所属公司ID',transaction_no VARCHAR(50) NOT NULL COMMENT '交易单号',transaction_type TINYINT NOT NULL COMMENT '交易类型:1-入库,2-出库,3-调拨,4-盘点',source_type TINYINT COMMENT '来源类型:1-采购,2-销售,3-生产',source_no VARCHAR(50) COMMENT '来源单号',warehouse_id INT NOT NULL COMMENT '仓库ID',material_id INT NOT NULL COMMENT '物料ID',quantity DECIMAL(18,4) NOT NULL COMMENT '数量',unit_cost DECIMAL(18,4) DEFAULT 0 COMMENT '单位成本',total_cost DECIMAL(18,4) DEFAULT 0 COMMENT '总成本',batch_no VARCHAR(50) COMMENT '批次号',transaction_time DATETIME NOT NULL COMMENT '交易时间',remarks VARCHAR(500) COMMENT '备注',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,created_by INT NOT NULL,INDEX idx_company (company_id),INDEX idx_transaction_no (transaction_no),INDEX idx_source_no (source_no),INDEX idx_warehouse_material (warehouse_id, material_id),INDEX idx_transaction_time (transaction_time),FOREIGN KEY (company_id) REFERENCES companies(id),FOREIGN KEY (warehouse_id) REFERENCES warehouses(id),FOREIGN KEY (material_id) REFERENCES materials(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '库存交易记录表';
5. 采购管理模块
5.1 采购订单表(purchase_orders)
CREATE TABLE purchase_orders (id INT AUTO_INCREMENT PRIMARY KEY,company_id INT NOT NULL COMMENT '所属公司ID',po_no VARCHAR(50) NOT NULL COMMENT '采购单号',supplier_id INT NOT NULL COMMENT '供应商ID',order_date DATE NOT NULL COMMENT '订单日期',expected_delivery_date DATE COMMENT '预计交货日期',warehouse_id INT NOT NULL COMMENT '收货仓库ID',total_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '订单总金额',total_tax DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '总税额',total_amount_with_tax DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '价税合计',status TINYINT NOT NULL COMMENT '状态:1-草稿,2-已审核,3-部分收货,4-全部收货,5-已取消',payment_terms VARCHAR(100) COMMENT '付款条件',remarks VARCHAR(500) COMMENT '备注',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,created_by INT NOT NULL,updated_by INT NOT NULL,reviewed_at DATETIME COMMENT '审核时间',reviewed_by INT COMMENT '审核人',UNIQUE KEY uk_po_no (company_id, po_no),INDEX idx_company (company_id),INDEX idx_supplier (supplier_id),INDEX idx_order_date (order_date),INDEX idx_status (status),FOREIGN KEY (company_id) REFERENCES companies(id),FOREIGN KEY (supplier_id) REFERENCES suppliers(id),FOREIGN KEY (warehouse_id) REFERENCES warehouses(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '采购订单表';
5.2 采购订单明细表(purchase_order_items)
CREATE TABLE purchase_order_items (id INT AUTO_INCREMENT PRIMARY KEY,po_id INT NOT NULL COMMENT '采购订单ID',material_id INT NOT NULL COMMENT '物料ID',specification VARCHAR(255) COMMENT '规格型号',unit VARCHAR(20) NOT NULL COMMENT '单位',order_quantity DECIMAL(18,4) NOT NULL COMMENT '订购数量',received_quantity DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '已收数量',unit_price DECIMAL(18,4) NOT NULL COMMENT '单价',tax_rate DECIMAL(10,2) DEFAULT 0 COMMENT '税率(%)',tax_amount DECIMAL(18,2) DEFAULT 0 COMMENT '税额',amount DECIMAL(18,2) NOT NULL COMMENT '金额',amount_with_tax DECIMAL(18,2) NOT NULL COMMENT '价税合计',sort_order INT DEFAULT 0 COMMENT '排序',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_po (po_id),INDEX idx_material (material_id),FOREIGN KEY (po_id) REFERENCES purchase_orders(id) ON DELETE CASCADE,FOREIGN KEY (material_id) REFERENCES materials(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '采购订单明细表';
6. 销售管理模块
6.1 销售订单表(sales_orders)
CREATE TABLE sales_orders (id INT AUTO_INCREMENT PRIMARY KEY,company_id INT NOT NULL COMMENT '所属公司ID',so_no VARCHAR(50) NOT NULL COMMENT '销售单号',customer_id INT NOT NULL COMMENT '客户ID',order_date DATE NOT NULL COMMENT '订单日期',expected_ship_date DATE COMMENT '预计发货日期',warehouse_id INT NOT NULL COMMENT '发货仓库ID',total_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '订单总金额',total_tax DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '总税额',total_amount_with_tax DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '价税合计',status TINYINT NOT NULL COMMENT '状态:1-草稿,2-已审核,3-部分发货,4-全部发货,5-已取消',payment_terms VARCHAR(100) COMMENT '付款条件',remarks VARCHAR(500) COMMENT '备注',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,created_by INT NOT NULL,updated_by INT NOT NULL,reviewed_at DATETIME COMMENT '审核时间',reviewed_by INT COMMENT '审核人',UNIQUE KEY uk_so_no (company_id, so_no),INDEX idx_company (company_id),INDEX idx_customer (customer_id),INDEX idx_order_date (order_date),INDEX idx_status (status),FOREIGN KEY (company_id) REFERENCES companies(id),FOREIGN KEY (customer_id) REFERENCES customers(id),FOREIGN KEY (warehouse_id) REFERENCES warehouses(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '销售订单表';
6.2 销售订单明细表(sales_order_items)
CREATE TABLE sales_order_items (id INT AUTO_INCREMENT PRIMARY KEY,so_id INT NOT NULL COMMENT '销售订单ID',material_id INT NOT NULL COMMENT '物料ID',specification VARCHAR(255) COMMENT '规格型号',unit VARCHAR(20) NOT NULL COMMENT '单位',order_quantity DECIMAL(18,4) NOT NULL COMMENT '订购数量',shipped_quantity DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '已发数量',unit_price DECIMAL(18,4) NOT NULL COMMENT '单价',tax_rate DECIMAL(10,2) DEFAULT 0 COMMENT '税率(%)',tax_amount DECIMAL(18,2) DEFAULT 0 COMMENT '税额',amount DECIMAL(18,2) NOT NULL COMMENT '金额',amount_with_tax DECIMAL(18,2) NOT NULL COMMENT '价税合计',sort_order INT DEFAULT 0 COMMENT '排序',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_so (so_id),INDEX idx_material (material_id),FOREIGN KEY (so_id) REFERENCES sales_orders(id) ON DELETE CASCADE,FOREIGN KEY (material_id) REFERENCES materials(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '销售订单明细表';
FastAPI 模型映射
使用 SQLAlchemy ORM 映射上述表结构,示例如下:
from sqlalchemy.ext.asyncio import AsyncAttrsfrom sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationshipfrom sqlalchemy import Integer, String, Numeric, DateTime, ForeignKey, Boolean, Text, Index, UniqueConstraintfrom datetime import datetimefrom typing import Optional, Listclass Base(AsyncAttrs, DeclarativeBase):passclass Material(Base):__tablename__ = "materials"id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)company_id: Mapped[int] = mapped_column(ForeignKey("companies.id"))category_id: Mapped[int] = mapped_column(ForeignKey("material_categories.id"))material_code: Mapped[str] = mapped_column(String(50))material_name: Mapped[str] = mapped_column(String(200))specification: Mapped[Optional[str]] = mapped_column(String(255))unit: Mapped[str] = mapped_column(String(20))material_type: Mapped[int] = mapped_column()bar_code: Mapped[Optional[str]] = mapped_column(String(100))cost_price: Mapped[float] = mapped_column(Numeric(18, 4), default=0)selling_price: Mapped[float] = mapped_column(Numeric(18, 4), default=0)tax_rate: Mapped[float] = mapped_column(Numeric(10, 2), default=0)min_stock: Mapped[float] = mapped_column(Numeric(18, 4), default=0)max_stock: Mapped[float] = mapped_column(Numeric(18, 4), default=0)status: Mapped[int] = mapped_column(default=1)created_at: Mapped[datetime] = mapped_column(default=datetime.now)updated_at: Mapped[datetime] = mapped_column(default=datetime.now, onupdate=datetime.now)created_by: Mapped[int] = mapped_column()updated_by: Mapped[int] = mapped_column()# 关系定义inventory_items: Mapped[List["Inventory"]] = relationship(back_populates="material")po_items: Mapped[List["PurchaseOrderItem"]] = relationship(back_populates="material")so_items: Mapped[List["SalesOrderItem"]] = relationship(back_populates="material")# 约束__table_args__ = (UniqueConstraint("company_id", "material_code", name="uk_material_code"),Index("idx_company_category", "company_id", "category_id"),Index("idx_material_name", "material_name"),Index("idx_bar_code", "bar_code"),)
设计优化建议
分表策略:
-
历史订单表按年度分表(如 sales_orders_2023) -
库存交易记录表按月份分表 索引优化:
-
为高频查询字段创建索引(如订单号、物料编码) -
为关联查询创建联合索引(如 company_id + status) -
避免过度索引影响写入性能 事务管理:
-
库存变动必须在事务中执行 -
订单状态变更使用乐观锁避免并发问题 数据归档:
-
定期归档历史数据到归档表 -
归档表可使用压缩存储节省空间 读写分离:
-
报表查询、历史数据查询走从库 -
实时交易、库存变更走主库
这套数据表结构设计覆盖了 ERP 系统的核心业务,通过合理的关系设计和索引策略,能够支持 FastAPI 构建高性能、高可用的 ERP 系统。实际应用中可根据企业具体业务需求进行调整和扩展。

关于【黄哥开源】
聚焦开源整合前沿技术,覆盖企业,教育,物联网,园区、工地智慧城市建设等核心领域。
提供更多前沿技术、高可用的开源项目。
商务合作/项目开发/联系微信:mingyu17173

