Files
soul/开发文档/10、项目管理/永平版优化对比与合并说明.md

92 lines
4.8 KiB
Markdown
Raw Normal View History

# 永平版 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()` 已包含上述结构。
---
**文档状态**:已合并项已落地;未合并项见第三节,按需迭代。