iloom-flatten/outputs/文档鉴别材料-设计说明书.md

14 KiB
Raw Permalink Blame History

纺织行业采购计划管理系统 - 设计说明书

文档鉴别材料 - 设计说明书

软件名称:纺织行业采购计划管理系统
软件简称:昱森
版本号V1.0.0
编制日期2025年05月


目录

  1. 系统架构设计
  2. 数据库设计
  3. 接口设计
  4. 安全设计
  5. 部署架构
  6. 技术选型说明

第一章 系统架构设计

1.1 整体架构

本系统采用前后端分离架构,基于云原生技术栈构建:

┌─────────────────────────────────────────────────────────────┐
│                        客户端层                              │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │   Web浏览器  │  │   移动端    │  │   平板      │         │
│  │  (React)    │  │  (H5)       │  │  (响应式)   │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                      云服务层 (Meoo Cloud)                   │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │   Supabase  │  │   认证服务   │  │   实时订阅   │         │
│  │  (PostgreSQL)│  │  (Auth)     │  │ (Realtime)  │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
└─────────────────────────────────────────────────────────────┘

1.2 前端架构

技术栈

  • 框架React 18 + TypeScript
  • 路由React Router v6 (HashRouter)
  • 状态管理React Context + Zustand
  • 样式方案TailwindCSS
  • 动画库Framer Motion
  • 构建工具Webpack 5

目录结构

src/
├── components/     # 公共组件
├── pages/          # 页面组件
│   ├── purchaser/  # 采购商页面
│   ├── textile/    # 纺织厂页面
│   └── washing/    # 水洗厂页面
├── hooks/          # 自定义Hooks
├── contexts/       # React上下文
├── stores/         # 状态管理
├── utils/          # 工具函数
├── types/          # 类型定义
└── supabase/       # Supabase客户端

1.3 后端架构

云服务Meoo Cloud (基于Supabase)

  • 数据库PostgreSQL 15
  • 认证Supabase Auth
  • 实时Supabase Realtime
  • 存储Supabase Storage

第二章 数据库设计

2.1 ER关系图

auth.users (Supabase内置)
    │
    ├── 1:1 ── profiles (用户配置)
    │              │
    │              ├── N:1 ── companies (公司)
    │              │              │
    │              │              ├── 1:N ── company_members (公司成员)
    │              │              │
    │              │              ├── 1:N ── factories (工厂)
    │              │              │              │
    │              │              │              ├── N:M ── production_plans
    │              │              │
    │              │              ├── 1:N ── warehouses (仓库)
    │              │              │              │
    │              │              │              ├── 1:N ── inventory_records
    │              │              │
    │              │              ├── 1:N ── yarn_stock (纱线库存)
    │              │
    │              ├── 1:N ── production_plans (采购商创建的计划)
    │              │              │
    │              │              ├── 1:N ── yarn_ratios (纱线配比)
    │              │              │
    │              │              ├── 1:N ── plan_process_steps (流程节点)
    │              │              │
    │              │              ├── N:M ── factories (通过plan_factories关联)
    │              │
    │              ├── 1:N ── payments (结款记录)

2.2 核心表结构

2.2.1 companies - 公司表

字段 类型 说明
id UUID (PK) 公司ID
name TEXT 公司名称
role app_role 公司类型purchaser/textile/washing
address TEXT 公司地址
contact_phone TEXT 联系电话
created_at TIMESTAMPTZ 创建时间

2.2.2 profiles - 用户配置表

字段 类型 说明
id UUID (PK) 关联auth.users.id
username TEXT (UNIQUE) 用户名
display_name TEXT 显示名称
phone TEXT 手机号(加密存储)
company_id UUID (FK) 所属公司
is_master BOOLEAN 是否主账号
master_id UUID (FK) 主账号ID子账号使用
created_at TIMESTAMPTZ 创建时间

2.2.3 production_plans - 生产计划表

字段 类型 说明
id UUID (PK) 计划ID
plan_code TEXT (UNIQUE) 系统自动生成计划唯一识别码
product_name TEXT 成品名称
color TEXT 颜色
fabric_code TEXT 坯布唯一识别码(纯字母)
color_code TEXT 色号(数字排序)
remark TEXT 备注
purchaser_id UUID (FK) 采购商公司ID
target_quantity INTEGER 计划产量(米)
completed_quantity INTEGER 已完成产量(米)
yarn_usage_per_meter DECIMAL 每米布纱用量(g/m)
production_price DECIMAL 生产采购价(元/米)
status plan_status 状态pending/producing/completed
start_time TIMESTAMPTZ 计划开始时间
created_by UUID (FK) 创建人
created_at TIMESTAMPTZ 创建时间
updated_at TIMESTAMPTZ 更新时间

2.2.4 plan_process_steps - 计划流程节点表

字段 类型 说明
id UUID (PK) 节点ID
plan_id UUID (FK) 计划ID
step_type step_type 节点类型confirm/yarn_purchase/dyeing/machine_start/fabric_warehouse
status step_status 状态pending/active/completed
timestamp TIMESTAMPTZ 确认时间戳
operator_id UUID (FK) 操作人
notes TEXT 备注
created_at TIMESTAMPTZ 创建时间

2.3 自定义枚举类型

-- 应用角色(公司类型)
CREATE TYPE app_role AS ENUM ('purchaser', 'textile', 'washing');

-- 工厂类型
CREATE TYPE factory_type AS ENUM ('textile', 'washing');

-- 计划状态
CREATE TYPE plan_status AS ENUM ('pending', 'producing', 'completed');

-- 流程节点类型
CREATE TYPE step_type AS ENUM ('confirm', 'yarn_purchase', 'dyeing', 'machine_start', 'fabric_warehouse');

-- 流程节点状态
CREATE TYPE step_status AS ENUM ('pending', 'active', 'completed');

-- 仓库类型
CREATE TYPE warehouse_type AS ENUM ('raw_fabric', 'fabric', 'finished', 'yarn');

-- 结款状态
CREATE TYPE payment_status AS ENUM ('pending', 'completed');

2.4 RLS安全策略

所有表启用Row Level Security (RLS)基于公司ID进行数据隔离

-- 示例production_plans表RLS策略
CREATE POLICY company_select_plans ON production_plans
  FOR SELECT USING (purchaser_id = get_user_master_company_id());

CREATE POLICY company_insert_plans ON production_plans
  FOR INSERT WITH CHECK (purchaser_id = get_user_master_company_id());

CREATE POLICY company_update_plans ON production_plans
  FOR UPDATE USING (purchaser_id = get_user_master_company_id());

CREATE POLICY company_delete_plans ON production_plans
  FOR DELETE USING (purchaser_id = get_user_master_company_id());

第三章 接口设计

3.1 认证接口

接口 方法 说明
/auth/v1/token POST 用户登录
/auth/v1/signup POST 用户注册
/auth/v1/logout POST 用户退出
/auth/v1/refresh POST 刷新Token

3.2 数据接口

基于Supabase自动生成的RESTful API

资源 操作 接口示例
production_plans CRUD /rest/v1/production_plans
companies CRUD /rest/v1/companies
profiles CRUD /rest/v1/profiles
inventory_records CRUD /rest/v1/inventory_records
plan_process_steps CRUD /rest/v1/plan_process_steps

3.3 实时订阅

使用Supabase Realtime进行数据实时同步

supabase
  .channel('inventory_changes')
  .on('postgres_changes', {
    event: '*',
    schema: 'public',
    table: 'inventory_records'
  }, callback)
  .subscribe();

第四章 安全设计

4.1 数据安全

加密存储

  • 手机号使用XOR加密存储
  • 敏感数据加密传输HTTPS

访问控制

  • 基于角色的访问控制RBAC
  • 行级安全策略RLS
  • 公司数据隔离

4.2 认证安全

  • JWT Token认证
  • Token自动刷新
  • Session持久化
  • 虚拟邮箱格式保护隐私

4.3 分享安全

  • 分享链接使用Base64 + 盐值混淆加密
  • 链接不包含敏感信息
  • 导入页面隐藏成品名称、颜色等敏感字段

第五章 部署架构

5.1 部署环境

云服务Meoo Cloud (Supabase)

  • 托管数据库
  • 托管认证服务
  • 托管实时服务

前端部署

  • 静态资源托管
  • CDN加速
  • HTTPS安全传输

5.2 构建配置

开发环境

pnpm run dev      # 启动开发服务器
pnpm run build    # 构建生产版本

生产构建

  • Webpack 5优化打包
  • 代码分割
  • Tree Shaking
  • 资源压缩

第六章 技术选型说明

6.1 前端技术选型

技术 版本 选型理由
React 18.2.0 组件化开发,生态丰富
TypeScript 5.3.3 类型安全,提升开发效率
TailwindCSS 3.3.5 原子化CSS快速开发
Framer Motion 11.16.1 流畅动画,用户体验好
React Router 6.8.0 声明式路由,易于管理
Zustand 4.4.7 轻量状态管理,简单易用

6.2 后端技术选型

技术 版本 选型理由
PostgreSQL 15+ 关系型数据库,支持复杂查询
Supabase 2.98.0 开源Firebase替代功能完整
Row Level Security - 行级安全,数据隔离

6.3 开发工具选型

工具 版本 用途
Webpack 5.89.0 模块打包
Babel 7.23.5 JavaScript编译
Jest 29.7.0 单元测试
Playwright 1.40.0 E2E测试
pnpm 8+ 包管理

附录

A. 数据库迁移脚本

-- 创建公司表
CREATE TABLE companies (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name TEXT NOT NULL,
  role app_role NOT NULL,
  address TEXT,
  contact_phone TEXT,
  created_at TIMESTAMPTZ DEFAULT NOW()
);

-- 创建用户配置表
CREATE TABLE profiles (
  id UUID PRIMARY KEY REFERENCES auth.users(id),
  username TEXT UNIQUE NOT NULL,
  display_name TEXT,
  phone TEXT,
  company_id UUID REFERENCES companies(id),
  is_master BOOLEAN DEFAULT false,
  master_id UUID REFERENCES auth.users(id),
  created_at TIMESTAMPTZ DEFAULT NOW()
);

-- 启用RLS
ALTER TABLE companies ENABLE ROW LEVEL SECURITY;
ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;

B. 技术架构图

┌────────────────────────────────────────────────────────────┐
│                         前端层                              │
│  React 18 + TypeScript + TailwindCSS + Framer Motion      │
└────────────────────────────────────────────────────────────┘
                              │
                              ▼ HTTP/HTTPS
┌────────────────────────────────────────────────────────────┐
│                      API网关层                             │
│              Supabase REST API / Realtime                 │
└────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌────────────────────────────────────────────────────────────┐
│                      数据层                                │
│  PostgreSQL + Row Level Security + Realtime Subscription  │
└────────────────────────────────────────────────────────────┘

文档版本V1.0.0
最后更新2025年05月
编制单位[您的单位名称]


本说明书版权归软件著作权人所有,未经许可不得复制、传播。