fix:更新skill和rules

This commit is contained in:
2026-07-01 15:04:53 +08:00
parent 6fa8ecc714
commit f3ae9e6520
10 changed files with 634 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
---
description: 杜康好客 NestJS 后端编码规范
globs: server/**/*.ts
alwaysApply: false
---
# 后端规范
## 模块目录
```
server/dukang-api/src/
├── modules/{iam,trade,benefit,catalog,store,redeem,settlement,ops,analytics,health}/
├── common/{guards,decorators,interceptors,filters,prisma,redis}/
├── integrations/{pay,sms,delivery}/
└── jobs/
```
## 新接口流程
1. 在 **OWNER 模块** 建 `dto/`、`*.service.ts`、`*.controller.ts`
2. Service 只写本模块 Prisma 表
3. 跨域 inject 其他 Module 的 exported Service
4. Controller 加对应 Guard`JwtAuthGuard`、`PhoneVerifiedGuard` 等)
5. 响应 `{ code: 0, message: 'ok', data }`
6. 同步 `packages/shared-types`
## Controller 示例
```typescript
@Controller('trade/orders')
@UseGuards(JwtAuthGuard)
export class TradeController {
constructor(private readonly tradeService: TradeService) {}
}
```
## 鉴权路由前缀
| 端 | 前缀 |
|----|------|
| C 端 | `/auth`, `/user`, `/catalog`, `/trade`, `/benefit`, `/redeem`, `/stores` |
| 门店 | `/shop/auth`, `/shop/redeem`, `/shop/store` |
| 合伙人 | `/partner/*` |
| 总部 | `/admin/*` |
## 数据约定
- 埋点 → `log_user_analytics`;业务审计 → `common_event`
- 支付 → `log_third_party` + `user_order.pay_*`(无 payments 表)
- 核销码 → Redis 5min(无 DB 表)
+48
View File
@@ -0,0 +1,48 @@
---
description: 杜康好客前端 H5 / Admin 编码规范
globs: apps/**/*.{tsx,ts}
alwaysApply: false
---
# 前端规范
## 目录约定
```
src/
├── components/ # PascalCaseAppToast.tsx
├── pages/ # *Page.tsx
├── layouts/ # *Layout.tsx
├── contexts/ # *Context.tsx
├── lib/ # kebab-caseapi.ts, client-location.ts
├── App.tsx
└── main.tsx
```
## 四 App 与样式
| App | 端口 | 样式 |
|-----|------|------|
| h5-user | 5173 | shared-ui tokens |
| h5-shop | 5174 | shared-ui tokens |
| h5-partner | 5175 | shared-ui tokens |
| admin-web | 5175 | Ant Design 5 |
H5 三端通过 Vite alias 引用 `@dukang/shared-ui`admin-web 独立 Ant Design。
## API 请求
```typescript
export const apiBase = '/api/v1';
// 请求头:Authorization + X-Client-App
// preV1 值:USER_H5 | SHOP_H5 | PARTNER_H5 | HQ_WEB
```
Vite dev 代理 `/api` → `localhost:3000`。
## 新页面
1. 对照 `pages/{user,shop,partner,hq}/` 原型命名
2. 类型从 `@dukang/shared-types` 导入
3. C 端订单列表 **5 Tab**(含 `pending_ship`
4. 单引号 + 分号,与现有文件保持一致
+32
View File
@@ -0,0 +1,32 @@
---
description: Git 提交与 PR 协作规范
alwaysApply: true
---
# Git 规范
## 提交格式
Conventional Commitsscope = 端或模块名:
```
feat(trade): add order preview API
fix(redeem): enforce 500 yuan cap
chore(shared-types): add OrderStatus enum
```
## 禁止提交
- `.env`、`.env.local` 等敏感配置
- `node_modules/`、`dist/`(已在 .gitignore
## PR 与 Review
- feature 分支 + 小步 PR
- 跨模块改动需相关双 Owner Review
- Prisma 迁移必须多 Owner Review
## Agent 行为
- **仅用户明确要求时** 才执行 git commit / push
- 不 amend 已推送的 commit,不 force push main/master
+36
View File
@@ -0,0 +1,36 @@
---
description: 杜康好客共享包(shared-types / domain / shared-ui)规范
globs: packages/**/*.{ts,tsx}
alwaysApply: false
---
# 共享包规范
## 包职责
| 包 | 用途 | 约束 |
|----|------|------|
| `@dukang/shared-types` | DTO、枚举、错误码、JWT Payload | 前后端唯一契约 |
| `@dukang/domain` | 纯函数业务规则 | **禁止 IO**,含 Vitest 单测 |
| `@dukang/shared-ui` | H5 共享组件 + `tokens.css` | 仅 H5 三端使用 |
## shared-types
- 枚举用 `SCREAMING_SNAKE_CASE`(如 `OrderStatus.PENDING_PAY`
- API Tab 查询用 snake_case`pending_pay`
- **加法优先**:新字段 optional;删除/改名先 deprecated
- 改 API 必须同步 V2 手册 §六 与 shared-types
## domain
纯规则示例(无数据库/HTTP):
```typescript
const benefitAmount = product.benefitAmount ?? product.price;
// 同城起购 2 瓶 / 跨城 6 瓶
// 核销上限 ¥500
```
## 破坏性改动
`packages/*` 改动需全员 + tech-lead ReviewPrisma schema 迁移需全部 Owner Review。
+48
View File
@@ -0,0 +1,48 @@
---
description: 杜康好客 Monorepo 核心规范、事实源与模块边界
alwaysApply: true
---
# 杜康好客 · 项目核心
## Monorepo 布局
- `apps/` — 前端(preV1`h5-user`、`h5-shop`、`h5-partner`、`admin-web`
- `packages/` — `shared-types`、`domain`、`shared-ui`
- `server/dukang-api/` — NestJS 单体 API
- `pages/` — UI 原型(**只读参照**,勿改)
> V2 目标为 Taro 四端(`mini-user` 等),编码以 **当前实际目录** 为准。
## 事实源优先级
1. preV1 联调 → `杜康好客-preV1编码手册.md`
2. PRD / DB / API 权威 → `杜康好客-V2编码手册.md`
3. 协作边界 → `conventions.md`
4. Agent 流程 → `agent.md` + `skills.md`
**禁止**:编码时修改业务规则;需求变更只改 V2 手册。
## 模块边界(硬约束)
- 任一 `apps/*` **禁止** import 其他 app 或 `server/*` 源码
- 后端 Module **禁止** 跨模块直写 Prisma 表,只 inject 对方 `exports` 的 Service
- 新枚举/DTO → `packages/shared-types`;纯规则 → `packages/domain`(无 IO
## 核心业务常量
- 权益额 = `benefit_amount ?? price`
- 核销:0 < amount ≤ min(balance, **500**)
- 订单 Tab`all | pending_pay | pending_ship | pending_receive | completed`
- API`/api/v1`,响应 `{ code, message, data }`
- JWT`actorType` + `actorId` + `clientApp`
## 模块 OWNER
| Owner | App / Module |
|-------|-------------|
| A | h5-user → iam, trade, benefit, analytics |
| B | h5-partner → store |
| C | admin-web → catalog, settlement, ops |
| D | h5-shop → redeem |
| Lead | packages/*, callbacks/, jobs/ |