Files
2026-05-09 16:40:29 +08:00

131 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 次元取景器
> 为 Coser 和摄影师打造的二次元取景地发现与分享平台
## 项目结构
```
├── clients/ # 用户端 — uni-app Vue3 (HBuilderX 项目 + Pinia)
├── server/ # 服务端 — Python (FastAPI + SQLAlchemy 2.x)
│ └── app/admin/ # 管理端 — sqladmin(挂载在 FastAPI 上)
├── docker-compose.yml
└── docs.md # 产品功能规划文档
```
## 技术栈
| 层级 | 技术 |
|------|------|
| 用户端 | uni-app Vue3 (HBuilderX) · Pinia · 高德地图 |
| 服务端 | FastAPI · SQLAlchemy 2.x · Alembic · PostgreSQL + PostGIS · Redis |
| 管理端 | sqladmin(基于 FastAPI |
| 存储 | MinIOS3 兼容) |
| 容器 | Docker ComposeNginx / PostgreSQL / Redis / MinIO |
## Docker Compose 一次部署
项目已支持一次启动后端、管理端、用户端和基础设施:
```bash
docker-compose up -d --build
```
默认访问地址:
- 用户端 H5http://localhost:5173
- 管理前端:http://localhost:5174
- 后端 APIhttp://localhost:5173/api
- API 文档:http://localhost:5173/docs
除 Nginx 网关外,后端、PostgreSQL、Redis、MinIO 和前端静态容器都只在 Docker 内部网络通信,不绑定宿主机端口。
默认数据库、Redis、MinIO 和端口可以通过环境变量覆盖,常用变量如下:
```bash
POSTGRES_USER=shiran
POSTGRES_PASSWORD=zxh2488252513
POSTGRES_DB=ciyuan_viewfinder
CLIENT_WEB_PORT=5173
ADMIN_WEB_PORT=5174
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
SECRET_KEY=change-me-before-production
TENCENT_MAP_KEY=
```
后端容器启动时会执行应用内启动迁移逻辑。用户端 H5 和管理前端会在镜像构建阶段生成静态文件,并由 nginx 托管。
## 本地开发
### 1. 启动基础设施
```bash
docker-compose up -d postgres redis minio
```
这会启动 PostgreSQL(含 PostGIS)、Redis 和 MinIO。
### 2. 启动服务端
```bash
cd server
# 创建虚拟环境
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
# source .venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 复制并编辑环境变量
cp .env.example .env
# 执行数据库迁移
alembic upgrade head
# 启动开发服务器
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
```
API 文档:http://localhost:8000/docs
管理后台:http://localhost:8000/admin
### 3. 启动用户端 HBuilderX
使用 HBuilderX 打开 `clients/` 目录,安装 Pinia 依赖后运行:
```bash
cd clients
npm install
```
然后在 HBuilderX 中选择 运行 → 运行到浏览器 / 运行到小程序模拟器。
也可以构建 H5
```bash
cd clients
npm install
npm run build:h5
```
## 功能阶段
| 阶段 | 内容 |
|------|------|
| **MVP(阶段 1** | 登录注册、地图发现、地点详情、上传地点、我的 |
| **阶段 2** | 评论评分、标签筛选、搜索 |
| **阶段 3** | 约拍广场、报名匹配、站内私信 |
| **阶段 4** | 活动发布与报名 |
| **阶段 5** | 商业化(推广位、会员) |
## 开发约定
- 服务端 API 前缀:`/api/v1/`
- 所有 UGC 内容需审核(`audit_status`pending → approved / rejected
- 前端统一请求封装,自动携带 Token、统一错误处理
- 管理端使用 RBACadmin / moderator / user