92 lines
4.8 KiB
Markdown
92 lines
4.8 KiB
Markdown
# 永平版 vs 主项目:优化对比与合并说明
|
||
|
||
> 对比目录:主项目(一场soul的创业实验) vs 永平版(一场soul的创业实验-永平)
|
||
> 更新日期:2026-02-20
|
||
|
||
---
|
||
|
||
## 一、两套目录结构概览
|
||
|
||
| 项目 | 根目录特点 | Next 源码位置 |
|
||
|------|------------|----------------|
|
||
| **主项目** | 单仓:Next + book + miniprogram + 开发文档 | 根下 `app/`、`lib/`、`components/` |
|
||
| **永平版** | 多仓:soul-api(Go)、soul-admin(Vue)、soul(Next) | `soul/dist/`(源码与构建同目录) |
|
||
|
||
永平版还包含:`本机运行文档.md`、Go API(8080)、Vue 管理后台(静态)、开发 API(8081)。主项目为纯 Next 站 + 宝塔 3006 部署。
|
||
|
||
---
|
||
|
||
## 二、已合并到主项目的优化(本次迭代)
|
||
|
||
| 模块 | 优化内容 | 主项目路径 |
|
||
|------|----------|------------|
|
||
| **数据库** | 环境变量 `MYSQL_*`、`SKIP_DB`、连接超时与单次连接错误日志 | `lib/db.ts` |
|
||
| **数据库** | 订单表 status 增加 `created`/`expired`,字段 `referrer_id`/`referral_code`;用户表 ALTER 兼容 MySQL 5.7 | 同上 |
|
||
| **认证** | 密码哈希/校验(scrypt,兼容旧明文) | `lib/password.ts`(新增) |
|
||
| **认证** | Web 端手机号+密码登录 | `app/api/auth/login/route.ts`(新增) |
|
||
| **认证** | 重置密码 | `app/api/auth/reset-password/route.ts`(新增) |
|
||
| **后台** | 管理员登出(清除 Cookie) | `app/api/admin/logout/route.ts`(新增) |
|
||
| **前端** | 仅生产环境加载 Vercel Analytics | `app/layout.tsx` |
|
||
| **文档** | 本机/服务器运行说明(端口、目录、Nginx) | `开发文档/本机运行文档.md`(新增) |
|
||
|
||
---
|
||
|
||
## 三、永平有、主项目未合并的(可选后续)
|
||
|
||
| 模块 | 说明 | 永平路径 | 合并建议 |
|
||
|------|------|----------|----------|
|
||
| 定时任务 | 订单状态同步、过期解绑 | `app/api/cron/sync-orders`、`cron/unbind-expired` | 若需定时同步/解绑再迁入;需配置 CRON_SECRET |
|
||
| 提现扩展 | 待确认列表、提现记录 API | `withdraw/pending-confirm`、`withdraw/records` | 若后台要做提现工作流与记录查询可迁入 |
|
||
| 用户 API | 购买状态、阅读进度、收货地址 CRUD | `user/check-purchased`、`user/reading-progress`、`user/addresses` | 按产品需要选择性迁入 |
|
||
| 后台 | 分销概览 API、推广设置页 | `admin/distribution/overview`、`admin/referral-settings/page.tsx` | 若有分销看板/推广配置页可迁入 |
|
||
| 前台 | 忘记密码页、我的地址列表/编辑/新增 | `app/view/login/forgot`、`app/view/my/addresses/*` | 主项目路由为 `app/login/`、`app/my/`,可对应新增 |
|
||
| 构建 | standalone 复制 static/public、clean、write-warning | `scripts/prepare-standalone.js` 等 | 若主项目用 standalone 部署可迁入 |
|
||
| 数据层 | Prisma 模型与迁移 | `prisma/schema.prisma`、迁移脚本 | 主项目当前为 mysql2;若统一用 Prisma 再迁 |
|
||
| 路由结构 | 前台统一在 `app/view/` | 整棵 `app/view/` | 主项目保持扁平 `app/`,非必须 |
|
||
|
||
---
|
||
|
||
## 四、主项目保留、与永平不同的部分
|
||
|
||
- **CORS**:主项目在 `middleware.ts` + `next.config.mjs` 的 headers 中配置 API CORS;永平可能用 Nginx/Go,未在 Next 层做。
|
||
- **路由**:主项目前台为 `app/page.tsx`、`app/my/`、`app/read/` 等,无 `view` 前缀。
|
||
- **book**:主项目根下保留 `book/` Markdown 与现有内容体系;永平书内容可能来自 API/DB。
|
||
|
||
---
|
||
|
||
## 五、环境变量说明(合并后)
|
||
|
||
主项目 `.env.local` 建议支持(可选):
|
||
|
||
```bash
|
||
# 数据库(不设则用代码内默认值)
|
||
MYSQL_HOST=
|
||
MYSQL_PORT=
|
||
MYSQL_USER=
|
||
MYSQL_PASSWORD=
|
||
MYSQL_DATABASE=
|
||
|
||
# 本地无数据库时跳过连接(接口会报错,适合纯前端联调)
|
||
SKIP_DB=0
|
||
```
|
||
|
||
---
|
||
|
||
## 六、合并与实施注意
|
||
|
||
1. **路径**:永平 Next 源码在 `soul/dist/`,合并到主项目时对应到根下 `app/`、`lib/`、`开发文档/`。
|
||
2. **CORS**:保留主项目现有 `middleware.ts` 与 `next.config.mjs` 的 CORS 配置。
|
||
3. **数据库**:主项目继续使用 mysql2,未引入 Prisma;`lib/db.ts` 已支持环境变量与 `SKIP_DB`。
|
||
4. **admin 登出**:后台可增加「退出登录」按钮,请求 `POST /api/admin/logout` 后跳转登录页。
|
||
|
||
5. **已有数据库**:若主项目此前已建过 `orders` 表且无 `referrer_id`/`referral_code` 或 status 无 `created`/`expired`,需自行执行迁移,例如:
|
||
```sql
|
||
ALTER TABLE orders MODIFY COLUMN status ENUM('created','pending','paid','cancelled','refunded','expired') DEFAULT 'created';
|
||
ALTER TABLE orders ADD COLUMN referrer_id VARCHAR(50) NULL COMMENT '推荐人用户ID', ADD COLUMN referral_code VARCHAR(20) NULL COMMENT '下单时使用的邀请码';
|
||
```
|
||
若表为新建,`initDatabase()` 已包含上述结构。
|
||
|
||
---
|
||
|
||
**文档状态**:已合并项已落地;未合并项见第三节,按需迭代。
|