Files
dukang/conventions.md
T
2026-06-30 10:33:56 +08:00

76 lines
3.0 KiB
Markdown
Raw 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.
# 杜康好客 · 协同与开发规范
> **编码事实源**:根目录 [`杜康好客-V2编码手册.md`](./杜康好客-V2编码手册.md)PRD + DB v3.1 + API + 计划 + 架构)
> **preV1 Mock 联调**[`杜康好客-preV1编码手册.md`](./杜康好客-preV1编码手册.md)
---
## 1. 代码所有权
见 [`.github/CODEOWNERS`](./.github/CODEOWNERS)。端与后端模块边界:
| 目录 | Owner | 说明 |
|------|-------|------|
| `apps/mini-user` | @dev-a | C端小程序 |
| `apps/mini-partner` | @dev-b | 城市合伙人小程序 |
| `apps/mini-hq` | @dev-c | 总部管理小程序 |
| `apps/h5-shop` | @dev-d | 门店 H5 |
| `server/.../modules/{iam,trade,benefit,analytics}` | @dev-a | 交易与权益域 |
| `server/.../modules/store` | @dev-b | 门店域 |
| `server/.../modules/{catalog,settlement,ops}` | @dev-c | 开城与结算域 |
| `server/.../modules/redeem` | @dev-d | 核销域 |
| `server/.../callbacks`, `jobs`, `common` | @backend-lead | 回调与任务 |
| `packages/*` | 全员 + @tech-lead | 公共契约,破坏性改动谨慎 |
| `server/dukang-api/prisma` | 全部 Owner | 迁移必须多人 Review |
---
## 2. 模块边界(机器 + 人工)
- 任一 `apps/*` **禁止** import 另一个 app 或 `server/*` 源码。
- 后端 Module **禁止** 跨模块直写 Prisma 表,只 inject 对方 `exports` 的 Service(见编码手册 §四 §2.5)。
- 共享逻辑:`packages/shared-types`DTO/枚举)、`packages/domain`(纯函数规则)。
- 计划引入 `eslint-plugin-boundaries`,在 `pnpm lint` / CI 阶段强制。
---
## 3. 接口契约
- 单一事实源:`packages/shared-types` + `杜康好客-V2编码手册.md` §六。
- **加法优先**:新字段 optional;删除/改名先 deprecated。
- 改了 API 必须同步更新手册 §六 与 shared-types。
- 破坏性变更走 URI 版本 `/v1``/v2`
---
## 4. 数据库契约(v3.1
- 表结构事实源:编码手册 **§五**28 表,`user_`/`common_`/`log_` 等前缀)。
- Prisma schema 与手册保持一致;初始化 SQL 见 `server/dukang-api/prisma/init_v3.sql`
- 关键约定:
- C 端 `user_user.phone` 唯一;B 端 `store_account` / `partner_account` / `hq_account` 三表分离
-`payments` / `user_order_item` / `redeem_tokens`
- 埋点 → `log_user_analytics`;业务事件 → `common_event`;工单 → `common_ticket`
---
## 5. 分支与提交
- feature 分支 + 小步 PR;跨模块改动需相关双 Owner Review。
- Conventional Commitsscope 用端或模块名:`feat(user)``fix(trade)``chore(shared-types)`
---
## 6. 本地环境
- Docker Compose 起 MySQL + Redis + serverM0 交付 `deploy/docker-compose.yml`)。
- 敏感配置走 `.env`,不入库。
- `DATABASE_URL` 配置后:`npx prisma migrate dev` 或执行 `init_v3.sql`
---
## 7. 原型参照
- UI 以 `pages/{user,shop,partner,hq}/` 为准;与 PRD 映射见编码手册 **§二、§三**。
- C 端订单列表必须为 **5 Tab**(含待发货);V1 无会员等级标签。