feat: P1 profile/portrait API and freeze local-dev environment

Add host-first environment contracts (Local vs CI vs Prod), deps-only
compose, and the Profile → Portrait → deep-access mock payment slice
with device identity and auto-migrate on API startup.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-08-02 16:24:57 +08:00
co-authored by Cursor
parent dd94e57277
commit 0f320e040b
49 changed files with 1907 additions and 191 deletions
+70
View File
@@ -0,0 +1,70 @@
# Docker Policy — AI Contract
## Docker SHOULD be used for
| ✓ | Examples |
|---|---|
| 依赖数据服务 | PostgreSQL |
| 缓存 | Redis(需要时) |
| 消息队列 | 需要时再加 |
| 对象存储 | MinIO / S3 兼容(需要时) |
| 第三方依赖模拟 | mailhog 等(需要时) |
| 生产/CI 应用交付 | 不可变 api / web 镜像 |
## Docker SHOULD NOT be used for
| ✗ | Why |
|---|---|
| Go API 日常开发 | 拖慢反馈;用本机 `go run` / `air` |
| Vue H5 日常开发 | 拖慢 HMR;用本机 Vite |
| Hot reload 工作流 | 禁止「改代码 → docker build → run」 |
| 把本机当成迷你 K8s | 违反 constitution:本地反馈速度优先 |
见 [development.md](development.md) · [environment.md](environment.md)。
---
## Local composedeps only
| File | Role |
|---|---|
| `docker-compose.dev.yml`(仓库根) | **默认本地**:仅依赖服务 |
| `deploy/docker-compose.yml` | 与 dev 对齐的依赖入口(兼容旧命令);生产见 prod 文件 |
```bash
docker compose -f docker-compose.dev.yml up -d
```
**允许的服务(local):** `postgres`+ 需要时 `redis` / `minio`
**禁止默认加入(local):** `api` · `user-h5` · `worker` · `nginx`
---
## Production / CI images
| Artifact | Location (target) |
|---|---|
| Backend Dockerfile | `deploy/Dockerfile.api`(按需新增) |
| H5/Nginx Dockerfile | `deploy/Dockerfile.user-h5`(按需新增) |
| Prod compose / K8s | `deploy/docker-compose.prod.yml` 等 |
生产镜像规则见 [deployment.md](deployment.md):禁止 `latest`;语义化版本或 git SHA。
---
## AI MUST NOT
- 把「本地开发」文档写成只能 `docker compose up` 全栈。
- 在业务 PR 里强制同事每次改代码都 build 应用镜像。
-`.env` 秘密 `COPY` 进镜像。
- 混用 `docker-compose.dev.yml` 与 prod 环境变量文件。
---
## When full-stack compose is OK
仅当任务明确是:
- 验证 prod compose / 镜像入口
- CI integration job
- 演示「一键依赖+应用」给非开发角色(仍非日常编码默认)