243 lines
5.2 KiB
Markdown
243 lines
5.2 KiB
Markdown
# 善缘丹阳公益婚恋服务平台 V1.1 增量恢复中
|
||
|
||
> 面向丹阳市成年单身人士,由公益组织参与运营的实名制公益婚恋服务平台。
|
||
|
||
真实 · 公益 · 本地 · 安全 · 高效
|
||
|
||
**当前基线**: V1.0.0-RC.2 + V1.1 客户需求增量 · 状态:INCREMENTAL RECOVERY / NO-GO
|
||
|
||
> 当前代码包含 V1.1 部分实现,但尚未通过 Admin、Miniapp、权限和 E2E 发布门禁。请勿依据历史 Completion Report 或 Jira 勾选项判断已经上线。唯一执行计划见 `docs/善缘丹阳 V1.1 客户需求基线增量开发与修复计划.md`。
|
||
|
||
---
|
||
|
||
## 项目简介
|
||
|
||
本平台帮助丹阳本地单身人士通过实名认证、人工审核、智能匹配、双向喜欢、在线沟通、公益红娘和线下相亲活动,安全、高效、真实地寻找合适伴侣。
|
||
|
||
**用户永久免费。**
|
||
|
||
---
|
||
|
||
## 技术栈
|
||
|
||
| 组件 | 技术 |
|
||
|---|---|
|
||
| 后端 | Java 21 + Spring Boot 3.x |
|
||
| 数据库 | PostgreSQL |
|
||
| 缓存/Session | Redis |
|
||
| 对象存储 | S3 兼容(MinIO / 国内云存储) |
|
||
| 实时通信 | WebSocket |
|
||
| 数据库迁移 | Flyway |
|
||
| 小程序 | 微信原生 + TypeScript |
|
||
| 管理后台 | Vue 3 + TypeScript + Vite + Pinia + Element Plus |
|
||
| 容器化 | Docker + Docker Compose + Nginx |
|
||
| CI/CD | GitHub Actions |
|
||
|
||
---
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
├── backend/ # Spring Boot 后端服务
|
||
├── miniapp/ # 微信小程序用户端
|
||
├── admin-web/ # 运营管理后台(Web)
|
||
├── infrastructure/ # Docker Compose 编排
|
||
├── scripts/ # 运维脚本
|
||
├── tests/ # 测试代码
|
||
│ ├── unit/
|
||
│ ├── integration/
|
||
│ ├── api/
|
||
│ ├── permission/
|
||
│ ├── concurrency/
|
||
│ ├── e2e/
|
||
│ └── invariants/ # 核心不变量测试(每次CI必跑)
|
||
├── docs/ # 项目文档
|
||
│ ├── product/
|
||
│ ├── architecture/
|
||
│ ├── api/
|
||
│ ├── database/
|
||
│ ├── security/
|
||
│ ├── testing/
|
||
│ ├── ops/
|
||
│ └── decisions/
|
||
├── AGENTS.md # 项目最高执行规则摘要
|
||
├── CHANGELOG.md
|
||
└── README.md
|
||
```
|
||
|
||
---
|
||
|
||
## 快速开始(开发环境)
|
||
|
||
### 前置要求
|
||
|
||
- Docker & Docker Compose
|
||
- JDK 21
|
||
- Node.js 18+
|
||
- npm / pnpm
|
||
|
||
### 一键启动基础设施
|
||
|
||
```bash
|
||
# 进入基础设施目录
|
||
cd infrastructure
|
||
|
||
# 启动 PostgreSQL / Redis / MinIO
|
||
docker compose up -d
|
||
|
||
# 等待服务就绪(约30秒)
|
||
# 可运行:docker compose logs -f
|
||
```
|
||
|
||
### 启动后端
|
||
|
||
```bash
|
||
cd backend
|
||
|
||
# 复制环境变量
|
||
cp src/main/resources/application-dev.yml.example src/main/resources/application-dev.yml
|
||
# 编辑 application-dev.yml,设置数据库连接等
|
||
|
||
# 构建并启动
|
||
./mvnw spring-boot:run -Dspring-boot.run.profiles=dev
|
||
```
|
||
|
||
### 启动管理后台
|
||
|
||
```bash
|
||
cd admin-web
|
||
|
||
# 安装依赖
|
||
pnpm install
|
||
|
||
# 启动开发服务器
|
||
pnpm dev
|
||
```
|
||
|
||
### 启动小程序
|
||
|
||
使用微信开发者工具打开 `miniapp/` 目录,配置 AppID 后即可预览。
|
||
|
||
---
|
||
|
||
## 环境变量
|
||
|
||
所有环境变量参见各模块的 `.env.example` 文件。
|
||
|
||
关键变量:
|
||
|
||
```bash
|
||
# 数据库
|
||
DB_HOST=localhost
|
||
DB_PORT=5432
|
||
DB_NAME=danyang_match
|
||
DB_USER=app_rw
|
||
DB_PASSWORD=<secret>
|
||
|
||
# Redis
|
||
REDIS_HOST=localhost
|
||
REDIS_PORT=6379
|
||
|
||
# 对象存储
|
||
MINIO_ENDPOINT=localhost:9000
|
||
MINIO_ACCESS_KEY=<secret>
|
||
MINIO_SECRET_KEY=<secret>
|
||
MINIO_BUCKET_PUBLIC=public
|
||
MINIO_BUCKET_PRIVATE=private
|
||
|
||
# 微信
|
||
WECHAT_APP_ID=<secret>
|
||
WECHAT_APP_SECRET=<secret>
|
||
```
|
||
|
||
**Secret 不进 Git。**
|
||
|
||
---
|
||
|
||
## 数据库迁移
|
||
|
||
```bash
|
||
cd backend
|
||
./mvnw flyway:migrate -Dflyway.url=jdbc:postgresql://localhost:5432/danyang_match
|
||
```
|
||
|
||
---
|
||
|
||
## 运行测试
|
||
|
||
### Phase 01 一键基线检查
|
||
|
||
PowerShell:
|
||
|
||
```powershell
|
||
.\scripts\verify-phase01.ps1
|
||
```
|
||
|
||
Bash:
|
||
|
||
```bash
|
||
./scripts/verify-phase01.sh
|
||
```
|
||
|
||
脚本依次检查 Git、Backend tests、Admin type-check/build、Miniapp TypeScript 和 V1.1 E2E。任一门禁失败时脚本返回非零退出码,并在结尾列出失败项。Windows 未安装 JDK/Maven 时,Backend 检查使用 Docker 中的 JDK 21 与仓库内 Maven 包;不会永久修改系统环境。
|
||
|
||
首次执行 Admin/Miniapp 检查前,在 `admin-web` 目录运行 `npm ci`。E2E 使用 `python -m pytest`,不要依赖全局 `pytest` 命令。
|
||
|
||
### 分项命令
|
||
|
||
```bash
|
||
# 后端单元测试
|
||
cd backend
|
||
./mvnw test
|
||
|
||
# 后端集成测试
|
||
./mvnw verify
|
||
|
||
# 管理后台构建检查
|
||
cd admin-web
|
||
pnpm build
|
||
|
||
# 小程序编译检查
|
||
cd miniapp
|
||
# 在微信开发者工具中查看编译结果
|
||
```
|
||
|
||
---
|
||
|
||
## 构建部署
|
||
|
||
```bash
|
||
# 构建后端镜像
|
||
docker build -t danyang-match-backend:latest ./backend
|
||
|
||
# 构建管理后台
|
||
cd admin-web && pnpm build
|
||
|
||
# 完整部署
|
||
cd infrastructure && docker compose up -d
|
||
```
|
||
|
||
---
|
||
|
||
## 核心业务闭环
|
||
|
||
```
|
||
微信登录 → 绑定手机 → 实名认证 → 填写资料 → 设置择偶 → 提交审核
|
||
↓
|
||
审核通过 → 系统推荐 → 用户Like → 双向Match → 安全聊天
|
||
↓
|
||
公益红娘辅助 / 参加线下活动 → 进一步了解 → 双方确认成功牵手
|
||
```
|
||
|
||
---
|
||
|
||
## 开发阶段
|
||
|
||
项目按 Phase 01~Phase 26 顺序推进。详见 `docs/STATUS.md`。
|
||
|
||
---
|
||
|
||
## 许可证
|
||
|
||
本项目为公益项目,服务于丹阳市单身人士婚恋匹配。
|