乐于分享
好东西不私藏

聊出来的一份设计文档

聊出来的一份设计文档

上次发了篇不写代码的软件开发时代已经到来,有朋友问文档是什么样的,这里发一下。

这份文档,是跟AI聊出来的,而不是自己动手一个字一个字敲出来的。

工具是 Trae ,模型是系统自带的Kimi 2.5/GLM5.0/MiniMax2.5等。

这里顺便提一句,即便不写程序的朋友,也可以安装Trae、CodeBuddy等VSCode类的IDE(集成开发环境)工具。

这类工具比传统办公软件,对AI的支持程度要高得多

至于传统办公软件,只把它们当成排版工具就可以了。

1. 项目概述

1.1 项目背景

旅游年卡在线销售平台,销售产品为各类旅游年卡(电子卡),一次性销售,不涉及线下核销。

1.2 项目目标

  • 支持年卡在线购买、支付
  • 电子卡密/兑换码获取
  • 提供用户注册登录
  • 实现购物车、优惠券等电商功能

1.3 项目类型

B2C 电商平台(旅游年卡垂直领域)- 虚拟商品销售,Web 应用


2. 技术架构

2.1 技术栈选型

层级
技术方案
说明
前端框架
React 18 + TypeScript
类型安全的组件化开发
构建工具
Vite 5
快速的开发服务器和构建
状态管理
Zustand
轻量级状态管理
路由
React Router 6
客户端路由
HTTP 客户端
Axios
Promise 风格的 HTTP 请求
后端框架
Node.js + Express
轻量易上手
数据库
PostgreSQL
支持复杂查询
ORM
Prisma
类型安全的 ORM
缓存
Redis
会话缓存、数据缓存
认证
JWT
Token 认证
支付接入
微信支付
小程序内支付

2.2 系统架构图

┌─────────────────────────────────────────────────────────┐│                   Web 客户端 (React)                    ││  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐     ││  │  首页   │  │ 详情页  │ │ 购物车  │ │ 用户中心 │     ││  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘     │└───────┼───────────┼───────────┼───────────┼───────────┘        │           │           │           │        └───────────┴─────┬─────┴───────────┘                          │                    ┌─────▼─────┐                    │  Nginx    │                    │ (负载均衡) │                    └─────┬─────┘                          │        ┌─────────────────┼─────────────────┐        │                 │                 │  ┌─────▼─────┐    ┌─────▼─────┐    ┌─────▼─────┐  │API Server │    │API Server │    │API Server │  │  (Node.js)│    │  (Node.js)│    │  (Node.js)│  └─────┬─────┘    └─────┬─────┘    └─────┬─────┘        │                 │                 │        └─────────────────┼─────────────────┘                          │              ┌───────────┼───────────┐              │           │           │        ┌─────▼─────┐ ┌───▼───┐ ┌─────▼─────┐        │ PostgreSQL│ │Redis  │ │ 腾讯云COS │        │(主数据库) │ │(缓存) │ │ (文件存储) │        └───────────┘ └───────┘ └───────────┘

2.3 目录结构

ct-yearcard/├── client/                   # Web 前端(React)│   ├── src/│   │   ├── components/      # 公共组件│   │   │   ├── Button/      # 按钮组件│   │   │   ├── Header/      # 头部导航│   │   │   ├── ProductCard/ # 商品卡片│   │   │   ├── Toast/       # 提示组件│   │   │   └── ErrorBoundary/ # 错误边界│   │   ├── pages/           # 页面│   │   │   ├── Home/        # 首页│   │   │   ├── ProductDetail/ # 商品详情│   │   │   ├── Cart/        # 购物车│   │   │   ├── Checkout/    # 结算页│   │   │   ├── OrderList/   # 订单列表│   │   │   ├── OrderDetail/ # 订单详情│   │   │   ├── UserCenter/  # 用户中心│   │   │   ├── Login/       # 登录页│   │   │   ├── Coupons/     # 优惠券页│   │   │   ├── Points/      # 积分明细页│   │   │   └── Feedback/    # 意见反馈页│   │   ├── services/        # API 请求封装│   │   ├── store/           # Zustand 状态管理│   │   ├── styles/          # 全局样式│   │   ├── App.tsx          # 应用入口│   │   └── main.tsx         # 渲染入口│   ├── index.html│   ├── vite.config.ts       # Vite 配置│   └── package.json├── server/                   # 后端项目│   ├── src/│   │   ├── common/           # 公共模块│   │   │   ├── decorators/  # 装饰器│   │   │   ├── filters/      # 异常过滤器│   │   │   ├── guards/       # 守卫│   │   │   └── utils/        # 工具函数│   │   ├── config/           # 配置文件│   │   ├── modules/          # 业务模块│   │   │   ├── auth/         # 认证模块│   │   │   ├── user/         # 用户模块│   │   │   ├── product/      # 商品模块│   │   │   ├── cart/         # 购物车模块│   │   │   ├── order/        # 订单模块│   │   │   ├── payment/      # 支付模块│   │   │   ├── coupon/       # 优惠券模块│   │   │   └── feedback/     # 反馈模块│   │   ├── app.module.ts│   │   └── main.ts│   ├── prisma/│   │   ├── schema.prisma     # 数据库模型│   │   └── seed.ts           # 种子数据│   ├── package.json│   └── tsconfig.json├── docs/│   ├── DESIGN.md             # 本设计文档│   └── BUG_FIXES.md          # Bug 修复记录├── docker-compose.yml        # Docker 编排└── package.json              # 根目录脚本

3. 数据库设计

3.1 ER 图(实体关系)

┌─────────────┐       ┌─────────────┐        ┌─────────────┐│    users    │       │  products   │        │   coupons   │├─────────────┤       ├─────────────┤        ├─────────────┤│ id (PK)     │       │ id (PK)     │        │ id (PK)     ││ username    │       │ name        │        │ code        ││ email       │       │ type        │        │ name        ││ phone       │       │ price       │        │ value       ││ password_   │       │ stock       │        │ min_amount  ││   hash      │       │ status      │        │ total_count ││ nickname    │       └──────┬──────┘        │ used_count  ││ role        │              │               └──────┬──────┘│ status      │              │                      ││ points      │              │                      │└──────┬──────┘              │                      │       │                     │                      │       │ 1:N                 │ N:N                  │       ▼                     │                      │┌─────────────┐       ┌──────▼──────┐        ┌──────▼──────┐│  cart_items │       │  order_items│        │ user_coupons│├─────────────┤       ├─────────────┤        ├─────────────┤│ id (PK)     │       │ id (PK)     │        │ id (PK)     ││ user_id (FK)│◄──────│ order_id(FK)│        │ user_id(FK) ││ product_id  │       │ product_id  │        │ coupon_id   ││   (FK)      │       │   (FK)      │        │   (FK)      ││ quantity    │       │ product_name│        │ status      │└──────┬──────┘       │ price       │        │ order_id    │       │              │ quantity    │        └──────┬──────┘       │              │ subtotal    │               │       │              └──────┬──────┘               │       │                     │                      │       │ 1:N                 │ 1:N                  │       ▼                     ▼                      ▼┌─────────────┐       ┌─────────────┐│   orders    │       │ card_codes  │├─────────────┤       ├─────────────┤│ id (PK)     │       │ id (PK)     ││ order_no    │       │ product_id  ││ user_id(FK) │◄──────│ order_item_ ││ total_amount│       │   id (FK)   ││ discount_   │       │ code        ││   amount    │       │ password    ││ pay_amount  │       │ status      ││ status      │       │ expired_at  ││ pay_method  │       └─────────────┘│ pay_time    ││ expired_at  │└─────────────┘

3.2 数据模型

3.1.1 用户表 (users)

字段
类型
说明
id
UUID
主键
username
VARCHAR(50)
用户名
email
VARCHAR(255)
邮箱(唯一)
phone
VARCHAR(20)
手机号(唯一)
password_hash
VARCHAR(255)
密码哈希
avatar
VARCHAR(500)
头像 URL
nickname
VARCHAR(50)
昵称
openid
VARCHAR(100)
微信 OpenID(唯一)
role
ENUM
ADMIN/USER
status
ENUM
ACTIVE/INACTIVE/BANNED
points
INT
积分余额
created_at
TIMESTAMP
创建时间
updated_at
TIMESTAMP
更新时间

3.1.2 年卡商品表 (products)

字段
类型
说明
id
UUID
主键
name
VARCHAR(200)
商品名称
type
ENUM
provincial/hefei/huangshan/chizhou/other
city
VARCHAR(50)
适用城市
price
DECIMAL(10,2)
价格
original_price
DECIMAL(10,2)
原价
spots_count
VARCHAR(20)
适用景区数量
cover_image
VARCHAR(500)
封面图
images
JSON
轮播图数组
description
TEXT
详细介绍
features
JSON
特色标签数组
highlight
VARCHAR(100)
亮点标签
purchase_channel
VARCHAR(200)
购买渠道
note
VARCHAR(500)
特殊说明
stock
INT
库存(-1 无限)
status
ENUM
on_sale/off_sale
sort_order
INT
排序
created_at
TIMESTAMP
创建时间
updated_at
TIMESTAMP
更新时间

3.1.3 订单表 (orders)

字段
类型
说明
id
UUID
主键
order_no
VARCHAR(50)
订单号(唯一)
user_id
UUID
用户 ID
total_amount
DECIMAL(10,2)
订单总额
discount_amount
DECIMAL(10,2)
优惠金额
pay_amount
DECIMAL(10,2)
实付金额
use_points
INT
使用积分数量
points_amount
DECIMAL(10,2)
积分抵扣金额
status
ENUM
PENDING/PAID/CANCELLED/REFUNDED
pay_method
VARCHAR(20)
支付方式(wechat/alipay)
pay_time
TIMESTAMP
支付时间
expired_at
TIMESTAMP
过期时间
remark
VARCHAR(500)
订单备注
created_at
TIMESTAMP
创建时间
updated_at
TIMESTAMP
更新时间

3.1.4 订单商品表 (order_items)

字段
类型
说明
id
UUID
主键
order_id
UUID
订单 ID
product_id
UUID
商品 ID
product_name
VARCHAR(200)
商品名称(冗余)
product_image
VARCHAR(500)
商品图片(冗余)
price
DECIMAL(10,2)
购买单价
quantity
INT
数量
subtotal
DECIMAL(10,2)
小计

3.1.5 积分记录表 (points_records)

字段
类型
说明
id
UUID
主键
user_id
UUID
用户 ID
amount
INT
积分变动数量(正数增加,负数减少)
type
VARCHAR(50)
类型(earn/use/refund)
description
VARCHAR(200)
描述
created_at
TIMESTAMP
创建时间

3.1.6 购物车表 (cart_items)

字段
类型
说明
id
UUID
主键
user_id
UUID
用户 ID
product_id
UUID
商品 ID
quantity
INT
数量
created_at
TIMESTAMP
添加时间
updated_at
TIMESTAMP
更新时间

3.1.7 优惠券表 (coupons)

字段
类型
说明
id
UUID
主键
code
VARCHAR(50)
优惠码(唯一)
name
VARCHAR(100)
优惠券名称
type
ENUM
FIXED/DISCOUNT
value
DECIMAL(10,2)
优惠值
min_amount
DECIMAL(10,2)
最低消费
total_count
INT
发放总量
used_count
INT
已使用数量
per_limit
INT
每人限领
valid_from
TIMESTAMP
生效时间
valid_until
TIMESTAMP
失效时间
status
ENUM
ACTIVE/INACTIVE
created_at
TIMESTAMP
创建时间

3.1.8 用户优惠券表 (user_coupons)

字段
类型
说明
id
UUID
主键
user_id
UUID
用户 ID
coupon_id
UUID
优惠券 ID
status
ENUM
UNUSED/USED/EXPIRED
order_id
UUID
使用的订单 ID
used_at
TIMESTAMP
使用时间
created_at
TIMESTAMP
领取时间

3.1.9 年卡卡密表 (card_codes)

字段
类型
说明
id
UUID
主键
product_id
UUID
商品 ID
order_item_id
UUID
订单商品 ID
code
VARCHAR(100)
卡密/兑换码
password
VARCHAR(100)
卡密密码(可选)
status
ENUM
UNUSED/USED
used_at
TIMESTAMP
使用时间
expired_at
TIMESTAMP
过期时间
created_at
TIMESTAMP
创建时间

3.3 索引与约束

表名
索引字段
类型
说明
users
phone
UNIQUE
手机号唯一
users
email
UNIQUE
邮箱唯一
users
openid
UNIQUE
微信 OpenID 唯一
users
role
INDEX
角色查询
products
type
INDEX
分类筛选
products
status
INDEX
上架状态
orders
order_no
UNIQUE
订单号唯一
orders
user_id
INDEX
用户订单查询
orders
status
INDEX
订单状态
order_items
order_id
INDEX
订单商品查询
cart_items
user_id
INDEX
用户购物车
cart_items
user_id, product_id
UNIQUE
防止重复加购
coupons
code
UNIQUE
优惠码唯一
user_coupons
user_id, coupon_id
INDEX
用户优惠券查询
card_codes
code
UNIQUE
卡密唯一
points_records
user_id
INDEX
用户积分记录

3.4 级联关系

父表
子表
关系
级联操作
users
orders
1:N
删除用户时保留订单(软删除用户)
users
cart_items
1:N
删除用户时删除购物车
users
user_coupons
1:N
删除用户时删除用户优惠券
users
points_records
1:N
删除用户时删除积分记录
orders
order_items
1:N
删除订单时删除订单商品
order_items
card_codes
1:N
删除订单商品时删除卡密

4. API 接口设计

4.1 接口规范

  • 基础路径:/api/v1
  • 认证方式:Bearer Token (JWT)
  • 请求格式:JSON
  • 响应格式:{ code: number, message: string, data: any }

4.2 接口列表

4.2.1 认证模块

方法
路径
说明
POST
/auth/register
用户注册
POST
/auth/login
用户登录
POST
/auth/logout
退出登录
POST
/auth/refresh
刷新 Token
GET
/auth/info
获取当前用户信息

4.2.2 商品模块

方法
路径
说明
GET
/products
商品列表(支持筛选分页)
GET
/products/:id
商品详情
GET
/products/types
获取所有商品类型

4.2.3 购物车模块

方法
路径
说明
GET
/cart
获取购物车列表
POST
/cart
添加商品到购物车
PUT
/cart/:id
修改购物车商品数量
DELETE
/cart/:id
删除购物车商品
DELETE
/cart
清空购物车

4.2.4 订单模块

方法
路径
说明
POST
/orders
创建订单
GET
/orders
订单列表
GET
/orders/:id
订单详情
PUT
/orders/:id/cancel
取消订单
DELETE
/orders/:id
删除订单

4.2.5 支付模块

方法
路径
说明
POST
/payment/create
创建支付(返回支付参数)
POST
/payment/notify
支付回调通知
GET
/payment/status
查询支付状态

4.2.6 优惠券模块

方法
路径
说明
GET
/coupons
可领取优惠券列表
POST
/coupons/:id/claim
领取优惠券
GET
/my-coupons
我的优惠券
GET
/my-coupons/available
可用优惠券(结算页)

4.2.7 用户模块

方法
路径
说明
GET
/user/profile
获取用户资料
PUT
/user/profile
更新用户资料
GET
/user/points
积分明细

4.3 详细接口规范

4.3.1 认证模块

POST /auth/login – 微信小程序登录

参数
类型
必填
说明
code
string
wx.login 返回的 code
响应字段
类型
说明
access_token
string
访问令牌
refresh_token
string
刷新令牌
expires_in
number
令牌过期时间(秒)
user
object
用户信息

GET /auth/info – 获取当前用户信息

响应字段
类型
说明
id
string
用户 ID
nickname
string
昵称
avatar
string
头像 URL
phone
string
手机号
points
number
积分余额

4.3.2 商品模块

GET /products – 商品列表

参数
类型
必填
说明
type
string
商品类型筛选
keyword
string
搜索关键词
page
number
页码,默认 1
pageSize
number
每页数量,默认 10
响应字段
类型
说明
list
array
商品列表
total
number
总数
page
number
当前页
pageSize
number
每页数量

GET /products/:id – 商品详情

响应字段
类型
说明
id
string
商品 ID
name
string
商品名称
type
string
商品类型
price
number
价格
original_price
number
原价
cover_image
string
封面图
images
array
轮播图数组
description
string
详细介绍
features
array
特色标签
stock
number
库存(-1 无限)

4.3.3 购物车模块

GET /cart – 获取购物车列表

响应字段
类型
说明
id
string
购物车项 ID
product_id
string
商品 ID
product
object
商品信息
quantity
number
数量

POST /cart – 添加到购物车

参数
类型
必填
说明
product_id
string
商品 ID
quantity
number
数量,默认 1

4.3.4 订单模块

POST /orders – 创建订单

参数
类型
必填
说明
items
array
订单商品列表
coupon_id
string
优惠券 ID
use_points
number
使用积分抵扣

items 数组项结构:

参数
类型
必填
说明
product_id
string
商品 ID
quantity
number
数量
响应字段
类型
说明
order_no
string
订单号
pay_amount
number
实付金额

GET /orders – 订单列表

参数
类型
必填
说明
status
string
状态筛选(pending/paid/cancelled)
page
number
页码
pageSize
number
每页数量

GET /orders/:id – 订单详情

响应字段
类型
说明
order_no
string
订单号
status
string
状态
total_amount
number
订单总额
discount_amount
number
优惠金额
pay_amount
number
实付金额
pay_method
string
支付方式
pay_time
string
支付时间
items
array
订单商品
card_codes
array
卡密列表

4.3.5 支付模块

POST /payment/create – 创建支付

参数
类型
必填
说明
order_id
string
订单 ID
响应字段
类型
说明
order_id
string
订单 ID
pay_params
object
微信支付参数(appId, timeStamp, nonceStr, package, signType, paySign)

4.3.6 优惠券模块

GET /coupons – 可领取优惠券列表

响应字段
类型
说明
id
string
优惠券 ID
name
string
名称
type
string
类型(fixed/discount)
value
number
优惠值
min_amount
number
最低消费
valid_until
string
过期时间
can_claim
boolean
是否可领取

GET /my-coupons/available – 可用优惠券

参数
类型
必填
说明
order_amount
number
订单金额
响应字段
类型
说明
id
string
优惠券 ID
name
string
名称
type
string
类型
value
number
优惠值
min_amount
number
最低消费

4.4 错误码规范

错误码
错误信息
说明
0
success
成功
1000
invalid_param
参数错误
1001
param_missing
缺少必要参数
2001
user_not_found
用户不存在
2002
user_disabled
用户已被禁用
2003
auth_failed
认证失败
2004
token_expired
token 已过期
2005
token_invalid
token 无效
3001
product_not_found
商品不存在
3002
product_off_sale
商品已下架
3003
product_stock_empty
商品库存不足
4001
cart_empty
购物车为空
4002
cart_item_not_found
购物车项不存在
5001
order_not_found
订单不存在
5002
order_cancelled
订单已取消
5003
order_paid
订单已支付
5004
order_expired
订单已过期
5005
order_amount_error
订单金额异常
6001
coupon_not_found
优惠券不存在
6002
coupon_expired
优惠券已过期
6003
coupon_used
优惠券已使用
6004
coupon_limit
优惠券已达领取上限
6005
coupon_condition
不满足优惠券使用条件
7001
payment_failed
支付失败
7002
payment_timeout
支付超时
7003
pay_method_error
支付方式错误
8001
system_error
系统错误

4.5 响应示例

成功响应:

{"code"0,"message""success","data": {"id""xxx","name""测试"  }}

失败响应:

{"code"1001,"message""缺少必要参数","data"null}

5. 前端页面设计

5.1 页面结构

├── 首页 (Home)                    ✅ 已实现│   ├── 顶部导航(Logo、搜索、购物车、用户入口)│   ├── 分类筛选区│   ├── 年卡列表(卡片式展示)│   └── 商品推荐├── 登录页 (Login)                  ✅ 已实现│   ├── 账号密码登录│   ├── 注册表单│   └── 协议勾选├── 商品详情页 (ProductDetail)      ✅ 已实现│   ├── 商品图片展示│   ├── 价格区域(原价/促销价)│   ├── 商品信息(名称、城市、适用景区)│   ├── 数量选择│   ├── 加入购物车 / 立即购买│   ├── 商品详情介绍│   └── 产品特点├── 购物车页 (Cart)                 ✅ 已实现│   ├── 商品列表(勾选、数量修改)│   ├── 全选操作│   ├── 价格汇总│   └── 去结算├── 结算页 (Checkout)               ✅ 已实现│   ├── 订单商品预览│   ├── 优惠券选择│   ├── 积分抵扣│   ├── 支付方式选择│   └── 提交订单├── 订单列表页 (OrderList)          ✅ 已实现│   ├── 订单筛选(全部/待支付/已支付/已取消)│   ├── 订单卡片│   └── 订单详情入口├── 订单详情页 (OrderDetail)        ✅ 已实现│   ├── 订单状态│   ├── 商品信息│   ├── 支付信息│   └── 操作按钮(支付/取消)├── 用户中心 (UserCenter)           ✅ 已实现│   ├── 用户头像/昵称│   ├── 订单快捷入口│   ├── 优惠券入口│   ├── 积分入口│   └── 退出登录├── 优惠券页 (Coupons)              ✅ 已实现│   ├── 可用优惠券列表│   ├── 已使用优惠券│   ├── 已过期优惠券│   ├── 票券式卡片设计│   └── 使用说明├── 积分明细页 (Points)             ✅ 已实现│   ├── 积分余额展示│   ├── 积分明细列表│   └── 积分规则说明└── 意见反馈页 (Feedback)           ✅ 已实现    ├── 反馈表单    └── 提交反馈

5.2 公共组件

组件
路径
说明
Header
components/Header
页面头部导航
Button
components/Button
按钮组件
ProductCard
components/ProductCard
商品卡片
Toast
components/Toast
消息提示
ErrorBoundary
components/ErrorBoundary
错误边界

5.2 核心交互流程

5.2.1 购买流程

1. 用户浏览年卡列表        ↓2. 点击进入年卡详情页        ↓3. 选择年卡类型、数量        ↓4. 点击"加入购物车""立即购买"        ↓5a. 加入购物车 → 继续浏览/去购物车结算5b. 立即购买 → 进入结算页        ↓6. 结算页:选择优惠券、积分抵扣        ↓7. 提交订单 → 选择支付方式        ↓8. 调用支付接口 → 跳转支付网关        ↓9. 支付成功 → 获取卡密/兑换码 → 订单详情

6. 安全设计

6.1 认证与授权

  • 密码使用 bcrypt 哈希存储
  • JWT Token 有效期:access_token 2小时,refresh_token 7天
  • 敏感接口需携带有效 Token
  • 管理员操作需校验角色权限

6.2 数据安全

  • SQL 注入:使用 Prisma ORM 参数化查询
  • XSS:输出转义
  • CSRF:Token 校验
  • 订单金额后端计算,禁止前端传入

6.3 支付安全

  • 支付签名校验
  • 回调验签
  • 订单状态幂等性处理

7. 部署方案

7.1 环境准备

环境
配置
开发环境
本地 Docker
测试环境
云服务器 2核4G
生产环境
云服务器 4核8G + CDN

7.2 开发环境搭建(本地 Docker)

7.2.1 环境要求

工具
版本
说明
Docker
>= 20.10
容器引擎
Docker Compose
>= 2.0
编排工具

7.2.2 docker-compose.yml

在项目根目录创建 docker-compose.yml

version:'3.8'services:# PostgreSQL 数据库postgres:image:postgres:15-alpinecontainer_name:yearcard-postgresenvironment:POSTGRES_USER:yearcardPOSTGRES_PASSWORD:yearcard123POSTGRES_DB:yearcardports:-"5432:5432"volumes:-postgres_data:/var/lib/postgresql/datahealthcheck:test:["CMD-SHELL","pg_isready -U yearcard"]interval:10stimeout:5sretries:5# Redis 缓存redis:image:redis:7-alpinecontainer_name:yearcard-redisports:-"6379:6379"volumes:-redis_data:/datacommand:redis-server--appendonlyyeshealthcheck:test:["CMD","redis-cli","ping"]interval:10stimeout:5sretries:5volumes:postgres_data:redis_data:

7.2.3 启动步骤

# 1. 启动服务docker-compose up -d# 2. 查看服务状态docker-compose ps# 3. 查看日志docker-compose logs -f# 4. 停止服务docker-compose down

7.2.4 连接配置

服务启动后,本地连接信息:

服务
主机
端口
用户名
密码
数据库
PostgreSQL
localhost
5432
yearcard
yearcard123
yearcard
Redis
localhost
6379

7.2.5 后端 .env 配置

DATABASE_URL="postgresql://yearcard:yearcard123@localhost:5432/yearcard"REDIS_URL="redis://localhost:6379"JWT_SECRET="dev-secret-key-change-in-production"JWT_EXPIRES_IN="2h"

7.2.6 初始化数据库

cd server# 安装依赖npm install# 执行数据库迁移npx prisma migrate dev# 生成 Prisma Clientnpx prisma generate

7.3 部署流程

1. 构建前端:npm run build2. 构建后端:npm run build3. 配置 Nginx 静态文件托管4. 配置 PM2 进程管理5. 配置 HTTPS 证书6. 配置域名解析

8. 开发计划

Phase 1:基础框架 ✅ 已完成

  • [x] 项目初始化
  • [x] 数据库设计与迁移
  • [x] 基础 API 实现
  • [x] 前端基础页面
  • [x] Docker 开发环境

Phase 2:核心功能 ✅ 已完成

  • [x] 用户认证(账号密码登录)
  • [x] 商品展示与筛选
  • [x] 购物车
  • [x] 订单创建

Phase 3:支付与完善 ✅ 已完成

  • [x] 支付接入(模拟支付)
  • [x] 订单管理
  • [x] 优惠券功能
  • [x] 用户中心
  • [x] 积分明细
  • [x] 意见反馈

Phase 4:优化与上线 🚧 进行中

  • [ ] 性能优化
  • [ ] 安全加固
  • [ ] 测试与修复
  • [ ] 部署上线

当前实现状态

模块
后端
前端
状态
认证
完成
用户
完成
商品
完成
购物车
完成
订单
完成
支付
完成(模拟)
优惠券
完成
卡密
完成
积分
完成
反馈
完成


本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 聊出来的一份设计文档

评论 抢沙发

8 + 2 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮