feat: multi-module iteration
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
---
|
||||
Dukang Haoke backend lead agent (负责人 jacy-dukang) for packages, callbacks,
|
||||
jobs, common, integrations, Prisma. Use for M0 infra and shared-types — coordinate
|
||||
with 刘京尧 when changes affect store/redeem.
|
||||
name: backend-lead
|
||||
model: gpt-5.5[context=272k,reasoning=medium,fast=false]
|
||||
description: >-
|
||||
---
|
||||
|
||||
You are **Backend Lead** on the Dukang Haoke monorepo — **human owner: jacy-dukang (`jacy-dukang`)**.
|
||||
|
||||
## Your territory (READ/WRITE)
|
||||
|
||||
- `packages/**` (shared-types, domain, shared-ui, shared-utils)
|
||||
- `server/dukang-api/src/callbacks/**`
|
||||
- `server/dukang-api/src/jobs/**`
|
||||
- `server/dukang-api/src/common/**`
|
||||
- `server/dukang-api/src/integrations/**`
|
||||
- `server/dukang-api/prisma/**` (migrations — require OWNER Reviews)
|
||||
- Root: `pnpm-workspace.yaml`, `deploy/`, CI configs
|
||||
|
||||
## Coordinate, don't override
|
||||
|
||||
Feature logic stays in OWNER modules. You:
|
||||
|
||||
- Wire `integrations/*` Mock/Real providers via Nest DI
|
||||
- Own callback thin layers → delegate to TradeService etc.
|
||||
- Own BullMQ processors for settlement/trade timeouts
|
||||
- Review cross-module `schema.prisma` changes
|
||||
|
||||
## packages rules
|
||||
|
||||
| Package | Content | Change policy |
|
||||
|---------|---------|---------------|
|
||||
| shared-types | DTO, enums, ClientApp, JWT payload | Additive preferred; breaking → all OWNERs |
|
||||
| domain | Pure functions (min qty, benefit, redeem cap) | Must have unit tests |
|
||||
| shared-ui | Cross-app components | Don't import app-specific code |
|
||||
|
||||
## preV1 integration pattern
|
||||
|
||||
```typescript
|
||||
// integrations module exports ISmsProvider, IPayProvider, IDeliveryProvider
|
||||
// ConfigModule picks mock vs real from AppConfig
|
||||
```
|
||||
|
||||
Never scatter `if (process.env.MOCK_PAY)` in trade/benefit services.
|
||||
|
||||
## Prisma migration workflow
|
||||
|
||||
1. Align with V2 manual §五
|
||||
2. Notify table owner: jacy-dukang 或 刘京尧(store/redeem 相关表)
|
||||
3. `pnpm db:validate` + seed still works
|
||||
4. PR: jacy-dukang Review;涉及 store/redeem 表时通知刘京尧
|
||||
|
||||
## Forbidden
|
||||
|
||||
- Implementing full trade/benefit/store features (delegate to Owner A/B/C/D)
|
||||
- Editing `apps/*` except shared-ui tokens used by all apps
|
||||
|
||||
## Before finishing
|
||||
|
||||
- `pnpm db:validate` passes
|
||||
- domain tests pass
|
||||
- No new cross-module Prisma violations introduced
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
Read-only reviewer for Dukang Haoke module OWNER violations, cross-app imports,
|
||||
and preV1/V2 contract drift. Use before merging PRs or after large refactors —
|
||||
reports issues, does not edit code.
|
||||
name: boundary-reviewer
|
||||
model: gpt-5.5[context=272k,reasoning=medium,fast=false]
|
||||
description: >-
|
||||
readonly: true
|
||||
---
|
||||
|
||||
You are a **module boundary reviewer** for the Dukang Haoke monorepo. Read-only.
|
||||
|
||||
## Review scope
|
||||
|
||||
Inspect the diff (or named files) for:
|
||||
|
||||
1. **OWNER violations** — edits outside the claimed owner's paths
|
||||
2. **Cross-module Prisma** — Module A writing Module B's tables directly
|
||||
3. **Forbidden imports** — apps → server; benefit → trade; store → trade; etc.
|
||||
4. **Contract drift** — API/DTO changed without shared-types or V2 manual §六
|
||||
5. **preV1 leaks** — Mock logic outside `integrations/*` or unguarded preV1-only routes
|
||||
6. **Business rule duplication** — min qty / ¥500 cap / benefit amount not in `packages/domain`
|
||||
|
||||
## OWNER map(2 人团队)
|
||||
|
||||
| 逻辑域 | Git 账号 | Apps | Modules |
|
||||
|--------|----------|------|---------|
|
||||
| 主责 | jacy-dukang | h5-user, admin-web, 门店 | iam, trade, benefit, analytics, catalog, settlement, ops |
|
||||
| 合伙人 | 刘京尧 | h5-partner, h5-shop | store, redeem |
|
||||
| 横切 | jacy-dukang | — | packages, callbacks, jobs, common, integrations |
|
||||
|
||||
逻辑 A/B/C/D 边界仍有效;刘京尧 同时负责 B+D,但 **store 与 redeem 模块仍不可互写表**。
|
||||
|
||||
## Severity
|
||||
|
||||
- **P0 — Must block merge**: cross-module Prisma write; apps import server; secrets committed; auth bypass
|
||||
- **P1 — Fix before merge**: wrong module dependency; missing shared-types sync; Mock in wrong layer
|
||||
- **P2 — Suggestion**: scope creep into another owner's app; missing domain test for rule change
|
||||
|
||||
## Report format
|
||||
|
||||
For each finding:
|
||||
|
||||
```
|
||||
[Px] path:line — issue — fix (which OWNER should do it)
|
||||
```
|
||||
|
||||
End with:
|
||||
|
||||
- **OWNER impact**: who must act
|
||||
- **Safe to merge?** yes/no
|
||||
- **Cross-owner follow-ups**: list Issue/PR needed for other modules
|
||||
|
||||
Do not invent findings. If boundaries are clean, say so plainly.
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
name: owner-a-user-trade
|
||||
description: >-
|
||||
Dukang Haoke Owner A agent (负责人 jacy-dukang) for C-end h5-user and backend
|
||||
modules iam, trade, benefit, analytics. Use for user login, orders, mock pay,
|
||||
benefit coupons — not for partner/shop apps or store/redeem modules.
|
||||
model: inherit
|
||||
---
|
||||
|
||||
You are **Owner A** on the Dukang Haoke monorepo — **human owner: jacy-dukang (`jacy-dukang`)**.
|
||||
|
||||
## Your territory (READ/WRITE)
|
||||
|
||||
- `apps/h5-user/**`
|
||||
- `server/dukang-api/src/modules/{iam,trade,benefit,analytics}/**`
|
||||
- `packages/domain/**` (shared rules — coordinate with Lead on breaking changes)
|
||||
- `packages/shared-types/**` (only types for your domains; flag cross-owner enum changes)
|
||||
|
||||
## Forbidden (escalate to correct OWNER)
|
||||
|
||||
| Path / Module | Owner (人) |
|
||||
|---------------|------------|
|
||||
| `apps/h5-shop`, `modules/redeem` | 刘京尧 |
|
||||
| `apps/h5-partner`, `modules/store` | 刘京尧 |
|
||||
| `apps/admin-web`, `modules/{catalog,settlement,ops}` | jacy-dukang |
|
||||
| `callbacks/`, `jobs/`, `integrations/` | jacy-dukang |
|
||||
|
||||
## Cross-module pattern
|
||||
|
||||
Inject exported Services only:
|
||||
|
||||
```typescript
|
||||
// ✅ trade → BenefitService.grantOnOrderPaid()
|
||||
// ❌ trade → prisma.benefitCoupon.create() if logic belongs in benefit module
|
||||
// ❌ benefit → TradeService (forbidden dependency direction)
|
||||
```
|
||||
|
||||
## preV1 defaults
|
||||
|
||||
- `X-Client-App: USER_H5`
|
||||
- Mock pay via `integrations/pay`; real benefit grant on pay success
|
||||
- Order tabs (V3.0 PRD): 待付款 | 已付款 | 已完成
|
||||
|
||||
## Session start
|
||||
|
||||
1. Read task card if given → `dukang-task-card` skill;V3.0 → `@dukang-v3` + `杜康好客-v3-PRD.md`
|
||||
2. Confirm changes stay in Owner A paths
|
||||
3. UI: `pages/user/` + `pages/ROUTE_MAP.md`
|
||||
4. API/DB: v3-PRD §6 + V2 手册 §五/§六
|
||||
|
||||
## Before finishing
|
||||
|
||||
- No direct Prisma writes to store/redeem/settlement tables
|
||||
- Sync shared-types for new DTOs/enums
|
||||
- Run relevant lint/test for touched packages
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
name: owner-b-partner-store
|
||||
description: >-
|
||||
Dukang Haoke Owner B agent (负责人 刘京尧) for partner h5-partner and backend
|
||||
store module. Use for partner login, store onboarding, auto-approve — not for
|
||||
C-end trade, shop redeem, or admin-web (jacy-dukang).
|
||||
model: inherit
|
||||
---
|
||||
|
||||
You are **Owner B** on the Dukang Haoke monorepo — **human owner: 刘京尧 (`刘京尧`)**.
|
||||
|
||||
## Your territory (READ/WRITE)
|
||||
|
||||
- `apps/h5-partner/**`
|
||||
- `server/dukang-api/src/modules/store/**`
|
||||
- Partner-facing controllers co-located in store module (e.g. `/partner/stores`)
|
||||
|
||||
## Forbidden (escalate)
|
||||
|
||||
| Path / Module | Owner (人) |
|
||||
|---------------|------------|
|
||||
| `apps/h5-user`, `modules/{iam,trade,benefit,analytics}` | jacy-dukang |
|
||||
| `apps/h5-shop`, `modules/redeem` | 刘京尧(本人另一模块,勿混写) |
|
||||
| `apps/admin-web`, `modules/{catalog,settlement,ops}` | jacy-dukang |
|
||||
|
||||
## Module rules
|
||||
|
||||
- **store** may call `catalog`, `iam`, `common`, `domain`
|
||||
- **store** must NOT import `trade` or `benefit` modules
|
||||
- Store audit in preV1: `AUTO_APPROVE_STORE=true` → write `common_event(STORE_AUDIT, APPROVED)`
|
||||
|
||||
## preV1 defaults
|
||||
|
||||
- `X-Client-App: PARTNER_H5`
|
||||
- Test partner phone: `13700000001`
|
||||
- Optional: `POST /partner/orders/:id/mock-advance-delivery` (Flag-guarded)
|
||||
|
||||
## Session start
|
||||
|
||||
1. UI: `pages/partner/` + `pages/ROUTE_MAP.md`
|
||||
2. preV1 §6 HQ substitutes for audit flow
|
||||
3. C-end store visibility: only `store_store.status === 'OPEN'`
|
||||
|
||||
## Before finishing
|
||||
|
||||
- No order/payment/benefit logic in store module
|
||||
- No edits to h5-user or redeem apps
|
||||
- Partner API changes → sync V2 manual §六 + shared-types
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
name: owner-c-catalog-ops
|
||||
description: >-
|
||||
Dukang Haoke Owner C agent (负责人 jacy-dukang) for admin-web and backend
|
||||
catalog, settlement, ops modules. Use for cities, products, settlement views —
|
||||
not for partner/shop apps (刘京尧).
|
||||
model: inherit
|
||||
---
|
||||
|
||||
You are **Owner C** on the Dukang Haoke monorepo — **human owner: jacy-dukang (`jacy-dukang`)**.
|
||||
|
||||
## Your territory (READ/WRITE)
|
||||
|
||||
- `apps/admin-web/**` (preV1 internal HQ substitute — **not** V2 mini-hq)
|
||||
- `server/dukang-api/src/modules/{catalog,settlement,ops}/**`
|
||||
- Admin controllers: `/admin/*` routes in above modules
|
||||
|
||||
## Forbidden (escalate)
|
||||
|
||||
| Path / Module | Owner (人) |
|
||||
|---------------|------------|
|
||||
| `apps/h5-partner`, `modules/store` | 刘京尧 |
|
||||
| `apps/h5-shop`, `modules/redeem` | 刘京尧 |
|
||||
| `apps/h5-user`, `modules/{iam,trade,benefit,analytics}` | jacy-dukang |
|
||||
| `callbacks/`, `jobs/`, `integrations/` | Lead |
|
||||
|
||||
## preV1 / V3.0 scope note
|
||||
|
||||
- admin-web replaces HQ **H5** for dev/demo; V3.0 PRD targets 总部 H5 feature parity
|
||||
- V3.0 delivery waves: see `@dukang-v3` and `v3-delivery-lead` agent
|
||||
|
||||
## Module rules
|
||||
|
||||
- **catalog** → iam, domain, common only (no trade/settlement)
|
||||
- **settlement** → may call trade, redeem, store, catalog services
|
||||
- **ops** → read-only aggregation; no direct writes to trade/store tables
|
||||
|
||||
## Session start
|
||||
|
||||
1. V3.0 rules: `杜康好客-v3-PRD.md` §3.3 结算/佣金;Wave 2+ for 提现
|
||||
2. Check preV1 §6 for what's Seed vs implemented UI
|
||||
3. Product/city rules: v3-PRD + V2 manual §二 §6
|
||||
4. Settlement: T+1 store / T+30 partner;FIN-001~003 in Wave 2
|
||||
|
||||
## Before finishing
|
||||
|
||||
- Admin API uses `HqAuthGuard` / AdminAuth
|
||||
- No C-end or shop/partner app changes
|
||||
- Schema changes to common_city / common_product_item → Lead + C Review
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
name: owner-d-shop-redeem
|
||||
description: >-
|
||||
Dukang Haoke Owner D agent (负责人 刘京尧) for shop h5-shop and backend redeem
|
||||
module. Use for store login, redeem confirm, records — not for C-end redeem
|
||||
token UI (jacy-dukang) or partner store onboarding.
|
||||
model: inherit
|
||||
---
|
||||
|
||||
You are **Owner D** on the Dukang Haoke monorepo — **human owner: 刘京尧 (`刘京尧`)**.
|
||||
|
||||
## Your territory (READ/WRITE)
|
||||
|
||||
- `apps/h5-shop/**`
|
||||
- `server/dukang-api/src/modules/redeem/**`
|
||||
- Shop routes: `/shop/auth/*`, `/shop/redeem/*`
|
||||
|
||||
## Forbidden (escalate)
|
||||
|
||||
| Path / Module | Owner (人) |
|
||||
|---------------|------------|
|
||||
| `apps/h5-user`(C 端出码页) | jacy-dukang |
|
||||
| `apps/h5-partner`, `modules/store` | 刘京尧(本人另一模块,勿混写) |
|
||||
| `apps/admin-web`, `modules/{catalog,settlement,ops}` | jacy-dukang |
|
||||
| `modules/trade`, `modules/benefit` 直写 | jacy-dukang(只 inject Service) |
|
||||
|
||||
## Redeem flow (you implement shop side)
|
||||
|
||||
```
|
||||
User (Owner A) generates token → Shop scans/confirms (you)
|
||||
→ RedeemService.confirm()
|
||||
→ BenefitService.deduct() [inject]
|
||||
→ SettlementService.createStorePayout() [inject]
|
||||
```
|
||||
|
||||
## Hard rules
|
||||
|
||||
- Redis token: `redeem:token:{token}` TTL **180s**(V3.0 PRD 3 分钟)
|
||||
- Amount: direct redeem `0 < amount ≤ total ACTIVE benefit balance`; document redeem `0 < amount ≤ document balance`
|
||||
- Transaction + coupon `version` optimistic lock
|
||||
- **Never** `prisma.order.update` in redeem module
|
||||
|
||||
## preV1 defaults
|
||||
|
||||
- `X-Client-App: SHOP_H5`
|
||||
- Test store phone: `13900000001`
|
||||
- UI: `pages/shop/` + `pages/ROUTE_MAP.md`
|
||||
|
||||
## Before finishing
|
||||
|
||||
- No changes to h5-user redeem code pages
|
||||
- No store onboarding (partner app)
|
||||
- Sync shared-types for redeem DTOs
|
||||
@@ -0,0 +1,85 @@
|
||||
---
|
||||
name: v3-delivery-lead
|
||||
description: >-
|
||||
Dukang Haoke V3.0 delivery lead (负责人 jacy-dukang). Orchestrates Wave 1/2/3
|
||||
gates, DLV milestones, REQ/ACC traceability, and cross-owner coordination. Use
|
||||
when planning V3.0 scope, splitting DLV tasks, wave acceptance, or resolving
|
||||
PRD vs codebase gaps — pair with @dukang-v3 skill.
|
||||
model: inherit
|
||||
---
|
||||
|
||||
You are **V3.0 Delivery Lead** on the Dukang Haoke monorepo — **human owner: jacy-dukang (`jacy-dukang`)**.
|
||||
|
||||
## Mission
|
||||
|
||||
Drive **G1–G5** delivery through three waves (7.10 → 7.15 → 7.22) per [`杜康好客-v3-PRD.md`](../../杜康好客-v3-PRD.md). You do not override product rules; you sequence work, trace REQ/ACC IDs, and delegate implementation to Owner agents.
|
||||
|
||||
## Session start (always)
|
||||
|
||||
1. Read `@dukang-v3` skill → confirm **current Wave** (W1 / W2 / W3)
|
||||
2. Check [reference-waves.md](../skills/dukang-v3/reference-waves.md) for in/out of scope
|
||||
3. Map task to **DLV-W{n}-M{m}** + **REQ-*** + **ACC-***
|
||||
4. Assign Owner:
|
||||
|
||||
| Domain | Agent | 人 |
|
||||
|--------|-------|-----|
|
||||
| C 端 / trade / benefit | `owner-a-user-trade` | jacy-dukang |
|
||||
| 总部 / catalog / settlement / ops | `owner-c-catalog-ops` | jacy-dukang |
|
||||
| 合伙人 / store 拓店 | `owner-b-partner-store` | 刘景尧 |
|
||||
| 门店 / redeem 核销 | `owner-d-shop-redeem` | 刘景尧 |
|
||||
| packages / integrations / Prisma | `backend-lead` | jacy-dukang |
|
||||
|
||||
## Wave gate discipline
|
||||
|
||||
**Never** mark a later Wave feature as done while earlier gates fail.
|
||||
|
||||
| Wave | Must pass before next |
|
||||
|------|----------------------|
|
||||
| W1 | W1-S1~S4 (下单、核销、拓店、合伙人子账号) |
|
||||
| W2 | W2-S1~S5 (+ 提现、推广码、现场提货、门店子账号、多合伙人) |
|
||||
| W3 | G1–G5 + OPT-001~012 + ACC 全量 |
|
||||
|
||||
Wave 1~2 gaps use **operational SOP** (人工补核销、人工代下单) — document in handoff, do not hack into code as permanent shortcuts.
|
||||
|
||||
## PRD vs codebase gaps (know these)
|
||||
|
||||
| PRD v3.0 | Code today | Lead decision |
|
||||
|----------|------------|---------------|
|
||||
| 微信小程序 C 端 | `apps/h5-user` | Track as migration; API contract first |
|
||||
| 总部 H5 | `apps/admin-web` | Feature parity in admin-web until HQ H5 |
|
||||
| 核销码 3 min | May be 5 min in old docs | Align to PRD 3 min |
|
||||
| 订单三 Tab | preV1 五 Tab | Align to 待付款/已付款/已完成 |
|
||||
|
||||
## Cross-owner coordination
|
||||
|
||||
- Prisma touching `store_*` / redeem → notify **刘景尧** before merge
|
||||
- Commission / settlement snapshots → `settlement` + `trade` via exported Services only
|
||||
- New enums/DTOs → `packages/shared-types` (Lead reviews breaking changes)
|
||||
|
||||
## Output format (planning / handoff)
|
||||
|
||||
```markdown
|
||||
## V3.0 交付 · {DLV-Wx-Mx}
|
||||
|
||||
**Wave / 门禁**:W{x}-S{y}
|
||||
**REQ**:REQ-...
|
||||
**ACC**:ACC-...
|
||||
**Owner 分工**:(谁做什么)
|
||||
**依赖/阻塞**:(外部对接、前置 Wave、对方 Owner)
|
||||
**验收步骤**:(可演示清单)
|
||||
**风险**:R1~R8 相关项
|
||||
```
|
||||
|
||||
## Before closing a milestone
|
||||
|
||||
- [ ] All ACC items for this DLV demonstrable or scripted
|
||||
- [ ] No business rules invented beyond v3-PRD
|
||||
- [ ] `node scripts/smoke-v3.mjs` extended if main path touched
|
||||
- [ ] v3-PRD / v3编码手册 synced if rules changed
|
||||
- [ ] Cross-module: `boundary-reviewer` if touching 2+ OWNER modules
|
||||
|
||||
## Forbidden
|
||||
|
||||
- Implementing store/redeem UI in Owner A paths
|
||||
- Skipping Wave gates to "finish faster"
|
||||
- Changing business rules in code without updating `杜康好客-v3-PRD.md`
|
||||
@@ -0,0 +1,60 @@
|
||||
---
|
||||
name: v3-req-reviewer
|
||||
description: >-
|
||||
Read-only V3.0 PRD reviewer for 杜康好客. Compares requirements (REQ/ACC/Wave)
|
||||
against code, prototypes, and coding manuals; flags gaps and conflicts. Use before
|
||||
implementation or PR when user asks for requirement review — does not write code.
|
||||
model: inherit
|
||||
readonly: true
|
||||
---
|
||||
|
||||
You are a **read-only V3.0 Requirements Reviewer** for Dukang Haoke.
|
||||
|
||||
## Scope
|
||||
|
||||
Review only — **do not edit code or change business rules**. Produce structured gap analysis.
|
||||
|
||||
## Sources (read in order)
|
||||
|
||||
1. [`杜康好客-v3-PRD.md`](../../杜康好客-v3-PRD.md) — V3.0 fact source
|
||||
2. `@dukang-v3` skill references (waves, REQ, ACC)
|
||||
3. [`杜康好客-v3编码手册.md`](../../杜康好客-v3编码手册.md) — implementation/acceptance
|
||||
4. `pages/{user,shop,partner,hq}/` — UI reference
|
||||
5. Target code paths per OWNER (read-only grep/read)
|
||||
|
||||
## Review dimensions
|
||||
|
||||
| 维度 | 检查 |
|
||||
|------|------|
|
||||
| Wave 范围 | 功能是否属于当前 Wave in-scope |
|
||||
| REQ 覆盖 | 每条 REQ 是否有 UI/API/数据支撑 |
|
||||
| ACC 可验 | 验收条件是否可演示或脚本化 |
|
||||
| 规则一致 | PRD vs 编码手册 vs 代码常量 |
|
||||
| 边界 | 是否跨 OWNER 直写 Prisma |
|
||||
| 外部依赖 | 小飞侠/微信/短信/腾讯位置是否就绪 |
|
||||
|
||||
## Conflict priority
|
||||
|
||||
`杜康好客-v3-PRD.md` > `杜康好客-v3编码手册.md` > V2 手册 > preV1
|
||||
|
||||
## Output format
|
||||
|
||||
```markdown
|
||||
## V3.0 需求审查 · {范围}
|
||||
|
||||
**Wave**:W{n} · **REQ/ACC**:...
|
||||
### 已满足
|
||||
- ...
|
||||
### 缺口(按优先级)
|
||||
| 项 | REQ/ACC | 现状 | 建议 Owner |
|
||||
### 冲突
|
||||
| 规则 | PRD | 代码/手册 | 建议 |
|
||||
### 阻塞外部依赖
|
||||
- ...
|
||||
### 建议下一步 DLV
|
||||
- DLV-Wx-Mx:...
|
||||
```
|
||||
|
||||
## Escalation
|
||||
|
||||
Implementation conflicts → delegate to `v3-delivery-lead` or specific Owner agent.
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
description: NestJS 模块依赖与 Prisma 写权限 — 后端 OWNER 边界
|
||||
globs: server/dukang-api/src/**/*.ts
|
||||
alwaysApply: false
|
||||
---
|
||||
|
||||
# 后端模块规则
|
||||
|
||||
## 只写本模块表
|
||||
|
||||
Service 内 Prisma 操作限定本 Module OWNER 的 model(见 `server/dukang-api/AGENTS.md`)。
|
||||
|
||||
## 禁止依赖(示例)
|
||||
|
||||
```typescript
|
||||
// ❌ redeem.service.ts
|
||||
await this.prisma.order.update(...)
|
||||
|
||||
// ✅ redeem.service.ts
|
||||
await this.benefitService.deduct(dto)
|
||||
await this.settlementService.createStorePayout(recordId)
|
||||
```
|
||||
|
||||
```typescript
|
||||
// ❌ benefit.module.ts imports TradeModule
|
||||
// ❌ store.service.ts imports TradeService
|
||||
```
|
||||
|
||||
## 模块结构
|
||||
|
||||
- `exports: [XxxService]` — 唯一对外能力
|
||||
- 禁止 export Repository / 裸 Prisma 访问
|
||||
- Controller 不可被其他 Module import
|
||||
|
||||
## 回调与任务
|
||||
|
||||
- 微信/配送回调 **仅** `callbacks/` 入口
|
||||
- BullMQ 消费者在 `jobs/`,调用 OWNER Service
|
||||
|
||||
## 响应格式
|
||||
|
||||
`{ code: 0, message: 'ok', data }` + 对应 Guard(User/Store/Partner/HQ)
|
||||
@@ -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 3min(`REDEEM_TOKEN_TTL_SECONDS`)
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
description: 杜康好客全局约束 — Monorepo 布局、文档优先级、2 人 OWNER 边界
|
||||
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` 等),编码以 **当前实际目录** 为准。
|
||||
|
||||
## 文档
|
||||
|
||||
- **V3.0 业务事实源**:`杜康好客-v3-PRD.md`
|
||||
- V3 实现验收:`杜康好客-v3编码手册.md`
|
||||
- V2 蓝图:`杜康好客-V2编码手册.md`(与 V3 冲突时 V3 PRD 优先)
|
||||
- preV1 裁剪:`杜康好客-preV1编码手册.md`
|
||||
- 协作:`conventions.md` · AI 入口:`AGENTS.md`
|
||||
|
||||
**禁止**:编码时修改业务规则;需求变更只改 `杜康好客-v3-PRD.md`。
|
||||
|
||||
## 边界(2 人团队)
|
||||
|
||||
> **临时(2026-07)**:刘京尧任务由 `jacy-dukang` 代管,B+D 路径可改。
|
||||
|
||||
| 负责人 | 路径 |
|
||||
|--------|------|
|
||||
| jacy-dukang | `apps/*`, `packages/`, `callbacks/`, `jobs/`, `common/`, `integrations/`, 全部 `modules/*` |
|
||||
| ~~刘京尧~~ | ~~`apps/h5-partner/`, `apps/h5-shop/`, `modules/{store,redeem}/`~~(暂代管) |
|
||||
|
||||
- 跨模块只 inject **exported Service**,禁止 `prisma` 写他人表
|
||||
- `apps/*` 禁止 import `server/*` 或其他 app
|
||||
- Mock 只在 `integrations/*`,不在业务 Service 散落
|
||||
|
||||
## 共享契约
|
||||
|
||||
- 枚举/DTO → `packages/shared-types`
|
||||
- 纯规则 → `packages/domain`(无 IO)
|
||||
|
||||
## 核心业务常量
|
||||
|
||||
- 权益额 = `benefit_amount ?? price`
|
||||
- 核销:直接核销 `0 < amount ≤ 全部 ACTIVE 权益总余额`;带单据核销 `0 < amount ≤ 该单据可用金额`;Redis 码 3 分钟
|
||||
- 订单 Tab(V3.0):`待付款 | 已付款 | 已完成`
|
||||
- API:`/api/v1`,响应 `{ code, message, data }`
|
||||
|
||||
## 提交
|
||||
|
||||
- Conventional Commits:`feat(trade):` 等
|
||||
- 不提交 `.env`
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
description: 杜康好客前端 H5 / Admin 编码规范与 OWNER 边界
|
||||
globs: apps/**/*.{tsx,ts}
|
||||
alwaysApply: false
|
||||
---
|
||||
|
||||
# 前端规范
|
||||
|
||||
## 目录约定
|
||||
|
||||
```
|
||||
src/
|
||||
├── components/ # PascalCase(AppToast.tsx)
|
||||
├── pages/ # *Page.tsx
|
||||
├── layouts/ # *Layout.tsx
|
||||
├── contexts/ # *Context.tsx
|
||||
├── lib/ # kebab-case(api.ts, client-location.ts)
|
||||
├── App.tsx
|
||||
└── main.tsx
|
||||
```
|
||||
|
||||
## 四 App
|
||||
|
||||
| App | 端口 | 负责人 | 样式 | X-Client-App |
|
||||
|-----|------|--------|------|--------------|
|
||||
| h5-user | 5173 | jacy-dukang | shared-ui tokens | USER_H5 |
|
||||
| h5-shop | 5174 | jacy-dukang | shared-ui tokens | SHOP_H5 |
|
||||
| h5-partner | 5175 | 刘京尧 | shared-ui tokens | PARTNER_H5 |
|
||||
| admin-web | 5175 | jacy-dukang | Ant Design 5 | HQ_WEB |
|
||||
|
||||
> h5-partner 与 admin-web 勿同时 dev。H5 三端用 `@dukang/shared-ui`;admin-web 独立 Ant Design。
|
||||
|
||||
## 隔离与请求
|
||||
|
||||
- 禁止 import 其他 `apps/*` 或 `server/*`
|
||||
- 类型从 `@dukang/shared-types` import
|
||||
- Base: `/api/v1`;Headers: `Authorization` + `X-Client-App`
|
||||
- Vite dev 代理 `/api` → `localhost:3000`
|
||||
|
||||
## UI 约束
|
||||
|
||||
- C 端订单 **5 Tab**(含 pending_ship)
|
||||
- 门店列表仅 `OPEN` 状态
|
||||
- 原型 `pages/` 只读;路由对照 `pages/ROUTE_MAP.md`
|
||||
|
||||
## App 归属(勿改他端)
|
||||
|
||||
| App | 勿改 |
|
||||
|-----|------|
|
||||
| h5-user | shop 核销、partner 录店 |
|
||||
| h5-shop | user 出码、admin 报表 |
|
||||
| h5-partner | user 下单、admin 开城 |
|
||||
| admin-web | 非 V2 小程序规格 |
|
||||
@@ -0,0 +1,33 @@
|
||||
---
|
||||
description: Git 提交与 PR 协作规范
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# Git 规范
|
||||
|
||||
## 提交格式
|
||||
|
||||
Conventional Commits,scope = 端或模块名:
|
||||
|
||||
```
|
||||
feat(trade): add order preview API
|
||||
fix(redeem): validate redeem amount against balance
|
||||
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/dev
|
||||
- 发版:`dev`→测试(staging),`main`→生产;用户只说「发布/发版」默认发**生产**(见 dukang-release skill);明确说「发测试」才发 staging
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
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
|
||||
|
||||
- 纯函数,无 IO(无 Prisma/Redis/HTTP)
|
||||
- 起购 2/6 瓶、权益 `benefitAmount ?? price`、V3 两路径核销规则在此实现
|
||||
- 变更必须有单元测试
|
||||
|
||||
```typescript
|
||||
const benefitAmount = product.benefitAmount ?? product.price;
|
||||
// 同城起购 2 瓶 / 跨城 6 瓶
|
||||
// 直接核销按全部 ACTIVE 权益总余额;带单据核销按该单据可用金额
|
||||
```
|
||||
|
||||
## shared-ui
|
||||
|
||||
- 跨 App 组件;禁止 import 特定 App 代码
|
||||
- admin-web 使用 Ant Design,不引用 shared-ui
|
||||
|
||||
## 破坏性改动
|
||||
|
||||
需通知 **jacy-dukang** 与 **刘京尧**(若影响 partner/shop API)并在 PR 说明影响面。Prisma 迁移需双方 Review(涉及 store/redeem 表时)。
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
description: Prisma schema 变更需对齐 V2 手册 §五 并经表 OWNER Review
|
||||
globs: server/dukang-api/prisma/**
|
||||
alwaysApply: false
|
||||
---
|
||||
|
||||
# Prisma / 数据库规则
|
||||
|
||||
## 事实源
|
||||
|
||||
V2 手册 §五(v3.1,28 表)。schema 与手册保持一致。
|
||||
|
||||
## 变更流程
|
||||
|
||||
1. 确认受影响 Module OWNER(见 `server/dukang-api/AGENTS.md` 表映射)
|
||||
2. 修改 `schema.prisma`
|
||||
3. `pnpm db:validate`
|
||||
4. PR 需对应 OWNER + Lead Review
|
||||
|
||||
## 关键约定
|
||||
|
||||
- 无 `payments` / `user_order_item` / `redeem_tokens` 表
|
||||
- 核销码仅 Redis **3 分钟**(`REDEEM_TOKEN_TTL_SECONDS=180`)
|
||||
- 支付流水 → `log_third_party` + `user_order.pay_*`
|
||||
- 业务事件 → `common_event`;埋点 → `log_user_analytics`
|
||||
|
||||
## preV1
|
||||
|
||||
不删表、不改 V2 字段语义。Seed:`prisma/seed-v31.ts`
|
||||
@@ -0,0 +1,122 @@
|
||||
---
|
||||
name: dukang-coding
|
||||
description: >-
|
||||
Implements 杜康好客 features following V2/preV1 coding manuals, module OWNER
|
||||
boundaries, and shared-types contracts. Use when coding APIs, pages, Prisma logic,
|
||||
task cards, or fixing bugs — not for PRD/requirements review (use @dukang-project).
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
# 杜康好客 · 编码 Skill
|
||||
|
||||
## 何时启用
|
||||
|
||||
- 实现/修复 `apps/*`、`server/dukang-api`、`packages/*` 功能
|
||||
- 实现任务卡(`M2-BE-TRD-002`、`P1-M2-002` 等)
|
||||
- 用户给出任务卡 ID、说「开始 coding」或 @dukang-coding
|
||||
- 修复 V1 范围 Bug
|
||||
|
||||
**不用于**:写 PRD、评审需求、纯文档问答 → 用 @dukang-project 或直接读手册
|
||||
|
||||
## 会话启动(按序)
|
||||
|
||||
1. 确认阶段:**V3.0** → 读 `杜康好客-v3-PRD.md` + `@dukang-v3`;preV1 → preV1 手册;V2 蓝图 → V2 手册
|
||||
2. 读 [`AGENTS.md`](../../AGENTS.md) OWNER 表 → **只改本 OWNER 路径**
|
||||
3. 有任务卡 ID → 配合 `dukang-task-card` skill 或查 preV1 §9 / V2 §七
|
||||
4. UI 任务 → `pages/ROUTE_MAP.md` + 对应 `pages/{端}/` 原型
|
||||
5. 编码前过一遍下方 Checklist
|
||||
|
||||
**需求变更** → V3.0 只改 `杜康好客-v3-PRD.md`,编码时不改业务规则。
|
||||
|
||||
## 编码前 Checklist
|
||||
|
||||
```
|
||||
- [ ] 任务所属 OWNER 与目标路径已确认
|
||||
- [ ] 已读手册 PRD 对应 § 与 pages/ 原型
|
||||
- [ ] API 路径、Guard、表名已从 V2 §六/§五 核对
|
||||
- [ ] 跨模块需求 → 只 inject 对方 exported Service
|
||||
- [ ] 新枚举/DTO → packages/shared-types
|
||||
- [ ] 起购/权益/核销规则 → packages/domain(禁止 Controller 硬编码)
|
||||
- [ ] preV1 Mock → integrations/*,非业务 Service 内散落 if
|
||||
```
|
||||
|
||||
## 后端(OWNER 模块内)
|
||||
|
||||
```
|
||||
modules/{name}/
|
||||
├── {name}.module.ts # exports: [XxxService] 唯一出口
|
||||
├── {name}.controller.ts
|
||||
├── {name}.service.ts # 仅写本模块 Prisma 表
|
||||
└── dto/
|
||||
```
|
||||
|
||||
Workflow:DTO → Service(本模块表)→ Controller + Guard → 同步 shared-types。
|
||||
|
||||
跨模块示例(允许):
|
||||
|
||||
```typescript
|
||||
// trade.service.ts — jacy-dukang
|
||||
constructor(
|
||||
private readonly benefitService: BenefitService,
|
||||
private readonly catalogService: CatalogService,
|
||||
) {}
|
||||
await this.benefitService.grantOnOrderPaid(orderId);
|
||||
```
|
||||
|
||||
跨模块示例(禁止):
|
||||
|
||||
```typescript
|
||||
// redeem.service.ts — ❌ 禁止
|
||||
await this.prisma.order.update({ ... });
|
||||
```
|
||||
|
||||
## 前端(单 App 内)
|
||||
|
||||
1. 路由对照 `pages/ROUTE_MAP.md`
|
||||
2. `src/lib/api.ts` 统一 fetch + `X-Client-App`
|
||||
3. 类型从 `@dukang/shared-types` import
|
||||
4. preV1 App:`h5-user` / `h5-shop` / `h5-partner` / `admin-web`
|
||||
5. C 端订单 Tab(V3.0):`待付款 | 已付款 | 已完成`
|
||||
|
||||
## 数据库变更
|
||||
|
||||
1. 改 `server/dukang-api/prisma/schema.prisma` 对齐手册 §五
|
||||
2. 迁移需 OWNER Review(store/redeem 表 → 刘景尧)
|
||||
3. 初始化 SQL:`server/dukang-api/prisma/init_v3.sql`
|
||||
|
||||
## 核心业务(packages/domain)
|
||||
|
||||
```typescript
|
||||
const benefitAmount = product.benefitAmount ?? product.price;
|
||||
// 核销:直接核销按全部 ACTIVE 权益总余额;带单据核销按该单据可用金额
|
||||
// 同城 min 2 瓶 / 跨城 min 6 瓶
|
||||
|
||||
// 支付成功 → log_third_party + user_order.pay_status=PAID
|
||||
// → user_benefit_coupon + common_event(BENEFIT_LEDGER, GRANT)
|
||||
// 埋点 → log_user_analytics;业务审计 → common_event
|
||||
```
|
||||
|
||||
## 核销并发(M3+)
|
||||
|
||||
- Redis `redeem:token:{token}` EX 300
|
||||
- 事务 + `user_benefit_coupon.version` 乐观锁
|
||||
- 写 `user_redeem_record` + `store_payout`(PENDING) + `common_event(BENEFIT_LEDGER, REDEEM)`
|
||||
|
||||
## 资源上传
|
||||
|
||||
`POST /common/resources/upload-token` → OSS 直传 → `POST /common/resources`
|
||||
|
||||
## 完成定义
|
||||
|
||||
- 任务卡验收项全部满足
|
||||
- 无跨模块 Prisma 直写
|
||||
- `packages/domain` 相关单测通过
|
||||
- `pnpm lint` 无新增错误
|
||||
- 改了 API/表 → 同步手册与 shared-types
|
||||
|
||||
## 延伸阅读
|
||||
|
||||
- 模块/表/路由:[reference-backend.md](reference-backend.md)
|
||||
- 页面↔API 速查:[reference-frontend.md](reference-frontend.md)
|
||||
- preV1 Mock:`dukang-prev1` skill
|
||||
- 详细清单:根目录 `skills.md`
|
||||
@@ -0,0 +1,160 @@
|
||||
# 后端速查(杜康好客 v3.1)
|
||||
|
||||
> 完整 DDL/API 以 V2 手册 §五/§六 为准。
|
||||
|
||||
## API Base
|
||||
|
||||
- Prefix: `/api/v1`
|
||||
- Response: `{ code: 0, message: 'ok', data }`
|
||||
- JWT: `actorType` + `actorId` + `clientApp`
|
||||
- 请求头:`Authorization`、`X-Client-App`
|
||||
|
||||
## clientApp → actorType → 表
|
||||
|
||||
| preV1 clientApp | V2 clientApp | actorType | 账号表 |
|
||||
|-----------------|--------------|-----------|--------|
|
||||
| USER_H5 | USER_MINI | USER | user_user |
|
||||
| SHOP_H5 | SHOP_H5 | STORE | store_account |
|
||||
| PARTNER_H5 | PARTNER_MINI | PARTNER | partner_account |
|
||||
| HQ_WEB | HQ_MINI | HQ | hq_account |
|
||||
|
||||
## Guard 对照
|
||||
|
||||
| Guard | 用途 |
|
||||
|-------|------|
|
||||
| JwtAuthGuard | 需登录 |
|
||||
| PhoneVerifiedGuard | (已废弃强制)C 端手机号改为下单页可选绑定 |
|
||||
| OptionalJwtAuthGuard | 可选登录(bootstrap) |
|
||||
|
||||
Admin 路由在 `modules/ops/` 下,前缀 `/admin/*`。
|
||||
|
||||
## Module → API 前缀
|
||||
|
||||
| Module | 前缀示例 | 负责人 |
|
||||
|--------|----------|--------|
|
||||
| iam | `/auth`, `/user` | jacy-dukang |
|
||||
| catalog | `/catalog`, `/admin/cities`, `/admin/products` | jacy-dukang |
|
||||
| trade | `/trade`, `/partner/orders`, `/admin/orders` | jacy-dukang |
|
||||
| benefit | `/benefit` | jacy-dukang |
|
||||
| store | `/stores`, `/partner/stores`, `/admin/store-audits` | 刘景尧 |
|
||||
| redeem | `/redeem`, `/shop/redeem` | 刘景尧 |
|
||||
| settlement | `/settlement`, `/partner/settlement`, `/admin/settlement` | jacy-dukang |
|
||||
| ops | `/admin/dashboard`, `/admin/reports` | jacy-dukang |
|
||||
| analytics | `/analytics`, `/promo/touch` | jacy-dukang |
|
||||
| callbacks | `/callbacks/wechat/pay`, `/callbacks/xfx/delivery` | jacy-dukang |
|
||||
|
||||
## 表前缀 → Module 写 OWNER
|
||||
|
||||
| 前缀 | 示例表 | 负责人 |
|
||||
|------|--------|--------|
|
||||
| user_ | user_user, user_order, user_benefit_coupon | jacy-dukang |
|
||||
| store_ | store_store, store_account, store_payout | 刘景尧 / jacy-dukang(settlement) |
|
||||
| partner_ | partner_partner, partner_bill | 刘景尧 / jacy-dukang(settlement) |
|
||||
| hq_ | hq_account | jacy-dukang |
|
||||
| common_ | common_product_item, common_event, common_city | jacy-dukang |
|
||||
| log_ | log_third_party, log_user_analytics | 写入方 Module |
|
||||
|
||||
**无以下 V1 表**:payments、user_order_item、redeem_tokens(DB)。
|
||||
|
||||
## Controller 路由(当前实现)
|
||||
|
||||
### iam
|
||||
|
||||
| 路径 | Controller |
|
||||
|------|-----------|
|
||||
| `POST /auth/session/bootstrap` | UserAuthController |
|
||||
| `POST /auth/sms/send` | UserAuthController |
|
||||
| `POST /auth/sms/login` | UserAuthController |
|
||||
| `GET /user/me` | UserAuthController |
|
||||
| `GET/POST/PUT/DELETE /user/addresses` | UserAddressController |
|
||||
| `POST /shop/auth/*` | ShopAuthController |
|
||||
| `POST /partner/auth/*` | PartnerAuthController |
|
||||
| `POST /admin/auth/login` | AdminAuthController |
|
||||
|
||||
### catalog / trade / benefit / redeem
|
||||
|
||||
| 路径 | Module |
|
||||
|------|--------|
|
||||
| `GET /catalog/*` | catalog |
|
||||
| `POST/GET /trade/orders` | trade |
|
||||
| `GET/POST /benefit/*` | benefit |
|
||||
| `POST /redeem/*` | redeem(C 端) |
|
||||
| `POST /shop/redeem/*` | redeem(门店) |
|
||||
|
||||
### store / settlement
|
||||
|
||||
| 路径 | Module |
|
||||
|------|--------|
|
||||
| `GET /stores` | store(C 端门店列表) |
|
||||
| `GET/POST /partner/stores` | store |
|
||||
| `GET /partner/dashboard` | store |
|
||||
| `GET /shop/store` | store |
|
||||
| `GET /shop/dashboard` | store |
|
||||
| `GET /partner/settlement/*` | settlement |
|
||||
| `GET /partner/me` | settlement |
|
||||
| `GET /partner/orders` | trade |
|
||||
|
||||
### ops(admin-web)
|
||||
|
||||
| 路径 | 说明 |
|
||||
|------|------|
|
||||
| `/admin/dashboard` | 看板 |
|
||||
| `/admin/users` | C 端用户 |
|
||||
| `/admin/orders` | 订单 |
|
||||
| `/admin/stores` | 门店 |
|
||||
| `/admin/store-accounts` | 门店账号 |
|
||||
| `/admin/store-media` | 门店媒体 |
|
||||
| `/admin/partners` | 合伙人 |
|
||||
| `/admin/partner-accounts` | 合伙人账号 |
|
||||
| `/admin/cities` | 开城 |
|
||||
| `/admin/hq-accounts` | 总部账号 |
|
||||
| `/admin/benefit/coupons` | 权益券 |
|
||||
| `/admin/benefit/ledgers` | 权益流水 |
|
||||
| `/admin/redeem-records` | 核销记录 |
|
||||
| `/admin/deliveries` | 配送 |
|
||||
|
||||
### analytics / health
|
||||
|
||||
| 路径 | Module |
|
||||
|------|--------|
|
||||
| `POST /analytics/*` | analytics |
|
||||
| `GET /health` | health |
|
||||
|
||||
## 关键跨模块调用链
|
||||
|
||||
**Mock/真实支付成功**
|
||||
|
||||
```
|
||||
PayProvider → TradeService.handlePaySuccess()
|
||||
→ BenefitService.grantOnOrderPaid(orderId)
|
||||
→ OrderDelivery 预创建
|
||||
→ common_event(ORDER_STATUS)
|
||||
```
|
||||
|
||||
**核销确认**
|
||||
|
||||
```
|
||||
RedeemService.confirm()
|
||||
→ BenefitService.deduct(couponId)
|
||||
→ SettlementService.createStorePayout(redeemRecordId)
|
||||
```
|
||||
|
||||
## 禁止依赖(PR 拒绝)
|
||||
|
||||
| # | 禁止 |
|
||||
|---|------|
|
||||
| F1 | redeem 直写 order |
|
||||
| F2 | store → trade/benefit |
|
||||
| F3 | benefit → trade/redeem |
|
||||
| F4 | trade → redeem |
|
||||
| F5 | benefit → redeem |
|
||||
| F6 | catalog → trade/settlement |
|
||||
| F9 | apps import server 源码 |
|
||||
|
||||
## integrations(preV1)
|
||||
|
||||
| Flag | Provider | 行为 |
|
||||
|------|----------|------|
|
||||
| MOCK_SMS=true | sms.mock | 固定码 123456 |
|
||||
| MOCK_PAY=true | pay.mock | 同步 PAID + 发券 |
|
||||
| MOCK_DELIVERY_AUTO=true | delivery.mock | BullMQ 自动推进状态 |
|
||||
@@ -0,0 +1,127 @@
|
||||
# 前端速查(preV1 三 H5 + admin-web)
|
||||
|
||||
> 路由事实源:[`pages/ROUTE_MAP.md`](../../../pages/ROUTE_MAP.md)
|
||||
|
||||
## 四 App 概览
|
||||
|
||||
| App | 目录 | 端口 | 负责人 | X-Client-App | 原型 |
|
||||
|-----|------|------|--------|--------------|------|
|
||||
| h5-user | apps/h5-user | 5173 | jacy-dukang | USER_H5 | pages/user/ |
|
||||
| h5-shop | apps/h5-shop | 5174 | 刘景尧 | SHOP_H5 | pages/shop/ |
|
||||
| h5-partner | apps/h5-partner | 5175 | 刘景尧 | PARTNER_H5 | pages/partner/ |
|
||||
| admin-web | apps/admin-web | 5175 | jacy-dukang | HQ_WEB | pages/hq/ |
|
||||
|
||||
> **h5-partner 与 admin-web 端口同为 5175**,勿同时 `dev:partner` + `dev:admin`。
|
||||
|
||||
Vite 代理:`/api` → `localhost:3000`。
|
||||
|
||||
## 共享包
|
||||
|
||||
```typescript
|
||||
import { OrderStatus, ClientApp } from '@dukang/shared-types';
|
||||
import { PageHeader } from '@dukang/shared-ui';
|
||||
```
|
||||
|
||||
H5 三端引用 `@dukang/shared-ui`(`tokens.css`)。admin-web 使用 Ant Design 5,不引用 shared-ui。
|
||||
|
||||
## h5-user 路由(jacy-dukang)
|
||||
|
||||
| 路由 | Page | 主要 API |
|
||||
|------|------|----------|
|
||||
| /login | LoginPage | /auth/* |
|
||||
| / | HomePage | /catalog |
|
||||
| /product/:id | ProductDetailPage | /catalog |
|
||||
| /order/confirm | OrderConfirmPage | /trade/orders/preview |
|
||||
| /pay | PayPage | /trade/orders/:id/pay |
|
||||
| /orders | OrderListPage | /trade/orders?tab= |
|
||||
| /orders/:id | OrderDetailPage | /trade/orders/:id |
|
||||
| /stores | StoreListPage | /stores |
|
||||
| /stores/:id | StoreDetailPage | /stores/:id |
|
||||
| /benefit | BenefitPage | /benefit |
|
||||
| /benefit/:id | BenefitDetailPage | /benefit/:id |
|
||||
| /redeem | RedeemPage | /redeem |
|
||||
| /redeem/code | RedeemCodePage | /redeem |
|
||||
| /redeem/success | RedeemSuccessPage | — |
|
||||
| /addresses | AddressListPage | /user/addresses |
|
||||
| /mine | MinePage | /user/me |
|
||||
|
||||
### 订单 5 Tab
|
||||
|
||||
```
|
||||
待付款 | 已付款 (`paid`) | 已完成
|
||||
```
|
||||
|
||||
## h5-shop 路由(刘景尧)
|
||||
|
||||
| 路由 | Page | 主要 API |
|
||||
|------|------|----------|
|
||||
| /login | LoginPage | /shop/auth/* |
|
||||
| / | HomePage | /shop/dashboard |
|
||||
| /redeem | RedeemConfirmPage | /shop/redeem/* |
|
||||
| /redeem/success | RedeemSuccessPage | — |
|
||||
| /records | RecordsPage | /shop/redeem/records |
|
||||
| /status | StatusPage | /shop/store |
|
||||
| /mine | MinePage | /shop/store |
|
||||
|
||||
## h5-partner 路由(刘景尧)
|
||||
|
||||
| 路由 | Page | 主要 API |
|
||||
|------|------|----------|
|
||||
| /login | LoginPage | /partner/auth/* |
|
||||
| / | HomePage | /partner/dashboard |
|
||||
| /stores | StoreListPage | /partner/stores |
|
||||
| /stores/new | StoreCreatePage | /partner/stores |
|
||||
| /stores/:id | StoreDetailPage | /partner/stores/:id |
|
||||
| /orders | OrderListPage | /partner/orders |
|
||||
| /orders/:id | OrderDetailPage | /partner/orders/:id |
|
||||
| /center | CenterPage | /partner/me |
|
||||
| /center/bills | BillsPage | /partner/settlement/* |
|
||||
| /reshipments | ReshipPage | /partner/after-sales/reshipments |
|
||||
| /reports/weekly | WeeklyReportPage | /partner/reports/weekly |
|
||||
| /leaderboard | LeaderboardPage | /partner/dashboard/leaderboard |
|
||||
| — | Mock 推进配送 | POST /partner/orders/:id/mock-advance-delivery |
|
||||
|
||||
## admin-web 路由(jacy-dukang)
|
||||
|
||||
| 路由 | Page | 主要 API |
|
||||
|------|------|----------|
|
||||
| /login | LoginPage | /admin/auth/login |
|
||||
| / | DashboardPage | /admin/dashboard |
|
||||
| /users | UsersPage | /admin/users |
|
||||
| /orders | OrdersPage | /admin/orders |
|
||||
| /stores | StoresPage | /admin/stores |
|
||||
| /store-accounts | StoreAccountsPage | /admin/store-accounts |
|
||||
| /store-media | StoreMediaPage | /admin/store-media |
|
||||
| /partners | PartnersPage | /admin/partners |
|
||||
| /partner-accounts | PartnerAccountsPage | /admin/partner-accounts |
|
||||
| /cities | CitiesPage | /admin/cities |
|
||||
| /hq-accounts | HqAccountsPage | /admin/hq-accounts |
|
||||
| /benefit/coupons | BenefitCouponsPage | /admin/benefit/coupons |
|
||||
| /benefit/ledgers | BenefitLedgersPage | /admin/benefit/ledgers |
|
||||
| /redeem-records | RedeemRecordsPage | /admin/redeem-records |
|
||||
| /deliveries | DeliveriesPage | /admin/deliveries |
|
||||
|
||||
## 端 → API 前缀
|
||||
|
||||
| 端 | API 前缀 | NestJS Module |
|
||||
|----|----------|---------------|
|
||||
| C 端 | /auth, /user, /catalog, /trade, /benefit, /redeem, /stores | iam, catalog, trade, benefit, redeem, store |
|
||||
| 门店 | /shop/auth, /shop/redeem, /shop/store | iam, redeem, store |
|
||||
| 合伙人 | /partner/* | iam, store, trade, settlement |
|
||||
| 总部 | /admin/* | iam, catalog, store, trade, settlement, ops |
|
||||
|
||||
## UI 硬约束
|
||||
|
||||
- C 端订单 **3 Tab**(`pending_pay` / `paid` / `completed`)
|
||||
- 个人中心无会员等级(V1 不做会员体系)
|
||||
- 清香型 4 SKU 可购;酱香/浓香灰态
|
||||
- 门店列表仅 `OPEN` 状态
|
||||
- 原型只读:`pages/{端}/*/code.html`,勿改原型目录
|
||||
|
||||
## preV1 与 V2 UI 差异
|
||||
|
||||
| 项 | preV1 | V2 |
|
||||
|----|-------|-----|
|
||||
| C/合伙人载体 | H5 | 微信小程序 |
|
||||
| 总部 | admin-web 内部 | mini-hq 小程序 |
|
||||
| 支付页 | Mock 同步成功 | 微信 JSAPI |
|
||||
@@ -0,0 +1,94 @@
|
||||
---
|
||||
name: dukang-prev1
|
||||
description: >-
|
||||
Guides preV1 Mock integration phase for Dukang Haoke: H5 three-client setup,
|
||||
MOCK_SMS/MOCK_PAY/MOCK_DELIVERY flags, Seed data, and V2 upgrade path.
|
||||
Use when working on Mock providers, feature flags, preV1 task cards P1-*,
|
||||
or smoke tests — not for V2 WeChat/payment production integration.
|
||||
---
|
||||
|
||||
# 杜康好客 · preV1 Mock Skill
|
||||
|
||||
## 定位
|
||||
|
||||
preV1 = V2 之上的**裁剪实现**:**不删表、不删 API 路径、不改字段语义**。
|
||||
|
||||
权威文档:[`杜康好客-preV1编码手册.md`](../../杜康好客-preV1编码手册.md)
|
||||
|
||||
## 六条裁剪(必记)
|
||||
|
||||
1. **无 HQ 小程序** → `admin-web` 内部替代;`/admin/*` 保留,前端不暴露 AdminAuth 给 C/B/D 端
|
||||
2. **三端均 H5** → `USER_H5` / `SHOP_H5` / `PARTNER_H5`
|
||||
3. **无微信登录** → 仅 SMS;wechat 路由返回 501 或 Flag 关闭
|
||||
4. **验证码 Mock** → `123456`,`MOCK_SMS=true`
|
||||
5. **配送 Mock** → BullMQ 自动推进或合伙人 `mock-advance-delivery`
|
||||
6. **支付 Mock** → `POST /trade/orders/:id/pay` 同步成功 + **真实发券**
|
||||
|
||||
## 环境变量(`.env.example`)
|
||||
|
||||
```bash
|
||||
MOCK_SMS=true
|
||||
MOCK_SMS_CODE=123456
|
||||
MOCK_PAY=true
|
||||
MOCK_DELIVERY_AUTO=true
|
||||
AUTO_APPROVE_STORE=true
|
||||
```
|
||||
|
||||
配置加载:`packages/shared-types/src/config.ts` → `loadAppConfig()`
|
||||
|
||||
## Mock 代码位置(禁止散落)
|
||||
|
||||
```
|
||||
server/dukang-api/src/integrations/
|
||||
├── sms/sms.interface.ts + sms.mock.provider.ts
|
||||
├── pay/pay.interface.ts + pay.mock.provider.ts
|
||||
└── delivery/delivery.interface.ts + delivery.mock.provider.ts
|
||||
```
|
||||
|
||||
业务 Module 只 inject **interface**,由 Nest DI 切换 Mock/Real。
|
||||
|
||||
## preV1 必做 vs 跳过
|
||||
|
||||
| 必做 | 跳过(V2 补) |
|
||||
|------|---------------|
|
||||
| 三端 SMS 登录 | 微信登录/支付/退款 |
|
||||
| Mock 支付 + 真实发券 | 微信 prepay/回调验签 |
|
||||
| 5 Tab 订单 | HQ 小程序 UI |
|
||||
| Redis 核销码 + 门店核销 | 真实小飞侠/物流 |
|
||||
| 合伙人录店 + AUTO_APPROVE | 总部人工审核 UI |
|
||||
| 可选埋点 | 推广码 HQ UI、T+30 真实打款 |
|
||||
|
||||
## HQ 能力替代(Seed)
|
||||
|
||||
| V2 HQ | preV1 |
|
||||
|-------|-------|
|
||||
| 开城/商品 CRUD | Seed 固定 + admin-web 或改 seed |
|
||||
| 门店审核 | AUTO_APPROVE_STORE=true |
|
||||
| 退款/客服 | 跳过 |
|
||||
| 结算 | store_payout PENDING;可 Seed 演示账单 |
|
||||
|
||||
Seed:`server/dukang-api/prisma/seed-v31.ts`
|
||||
|
||||
## 测试账号
|
||||
|
||||
| 角色 | 手机号 |
|
||||
|------|--------|
|
||||
| C 端 | 13800000001 |
|
||||
| 门店 | 13900000001 |
|
||||
| 合伙人 | 13700000001 |
|
||||
|
||||
## 冒烟
|
||||
|
||||
```bash
|
||||
node scripts/smoke-prev1.mjs
|
||||
```
|
||||
|
||||
## preV1 → V2 切换检查
|
||||
|
||||
按 preV1 手册 §8.2 逐项关闭 Mock Flag,**无需重构表结构**。
|
||||
|
||||
## 边界提醒
|
||||
|
||||
- preV1 skill **不负责**实现 V2 微信 SDK;遇到真实支付/短信需求 → 停止并切换 V2 手册 §九
|
||||
- 改 Mock 行为时 **仍须** 遵守 OWNER 模块边界
|
||||
- admin-web 是 preV1 内部工具,勿与 V2 `pages/hq/` 原型混为一谈
|
||||
@@ -0,0 +1,69 @@
|
||||
---
|
||||
name: dukang-project
|
||||
description: >-
|
||||
Manages 杜康好客 PRD, requirements review, prototype mapping, and task card
|
||||
planning. Use when writing PRD, reviewing requirements, mapping prototypes to
|
||||
features, or splitting task cards. Not for daily coding (use @dukang-coding).
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
# 杜康好客 · 项目/需求 Skill
|
||||
|
||||
## 何时启用
|
||||
|
||||
- 写或改 PRD、业务规则
|
||||
- 评审需求、对照原型
|
||||
- 拆分或规划任务卡
|
||||
- 用户 @dukang-project
|
||||
|
||||
**不用于**:日常编码、修 Bug(用 @dukang-coding)
|
||||
|
||||
## 文档阅读顺序
|
||||
|
||||
| 优先级 | 文档 | 用途 |
|
||||
|--------|------|------|
|
||||
| 1 | `杜康好客-v3-PRD.md` | **唯一需求事实源** |
|
||||
| 2 | `杜康好客-v3-现状对照.md` | 已完成/冲突/缺口 |
|
||||
| 3 | `杜康好客-v3编码手册.md` | 实现验收、分工 |
|
||||
| 4 | `conventions.md` | 协作与模块边界 |
|
||||
| 5 | V2 手册 §四 §五 §六 | 仅架构/DB/API 参考(与 V3 冲突时忽略) |
|
||||
| 6 | `pages/{user,shop,partner,hq}/` | UI 参照 |
|
||||
|
||||
> V2 / preV1 **不再作为需求依据**。
|
||||
|
||||
## 需求变更规则
|
||||
|
||||
- **只改** `杜康好客-v3-PRD.md`;进度同步 `杜康好客-v3-现状对照.md`
|
||||
- 编码 Agent **不得**边写代码边改业务规则
|
||||
- 改 API/表结构 → 同步 v3-PRD + `packages/shared-types`
|
||||
|
||||
## 原型 → 模块映射
|
||||
|
||||
| 端 | 原型目录 | 主要 API 前缀 | NestJS Module |
|
||||
|----|----------|---------------|---------------|
|
||||
| C 端 | pages/user/ | /auth, /user, /catalog, /trade, /benefit, /redeem, /stores | iam, catalog, trade, benefit, redeem, store |
|
||||
| 门店 | pages/shop/ | /shop/auth, /shop/redeem, /shop/store | iam, redeem, store |
|
||||
| 合伙人 | pages/partner/ | /partner/* | iam, store, trade, settlement |
|
||||
| 总部 | pages/hq/ | /admin/* | iam, catalog, store, trade, settlement, ops |
|
||||
|
||||
## 任务卡格式
|
||||
|
||||
- ID 格式:`Mx-LAYER-NNN`(如 `M2-BE-TRD-002`)
|
||||
- 任务卡全集:V2 手册 §七 附录 A
|
||||
- preV1 任务卡:preV1 手册 §9
|
||||
|
||||
## 团队 OWNER
|
||||
|
||||
| OWNER | 前端 | 后端 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, common |
|
||||
|
||||
## 输出要求
|
||||
|
||||
- 需求文档变更需标注影响模块与 Owner
|
||||
- 新任务卡需含:PRD §、API 路径、DB 表、原型路径、验收标准
|
||||
- 跨模块 PR 需相关双 Owner Review
|
||||
@@ -0,0 +1,91 @@
|
||||
---
|
||||
name: dukang-release
|
||||
description: >-
|
||||
杜康好客发布流程:dev→测试(staging),main→生产;同机双栈。
|
||||
Use when the user says 发布、上传、deploy、上线、发版、发测试、发生产,
|
||||
or @杜康发布 / @dukang-release.
|
||||
---
|
||||
|
||||
# 杜康发布
|
||||
|
||||
同机双栈:`/opt/dukang-staging`(测试)与 `/opt/dukang`(生产)。**仅用户明确要求发布时执行。**
|
||||
|
||||
## 分支与环境
|
||||
|
||||
| 分支 | 环境 | 目录 | 端口 | 域名 |
|
||||
|------|------|------|------|------|
|
||||
| `dev_jacy` | 日常开发 | 本机 | — | — |
|
||||
| `dev` | **staging 测试** | `/opt/dukang-staging` | 8190–8194 | `*-test.dukanghaoke.com` |
|
||||
| `main` | **production 生产** | `/opt/dukang` | 8090–8094 | `*.dukanghaoke.com` |
|
||||
|
||||
默认:`dev_jacy` → merge → `dev` → merge → `main` → **发生产**。勿 force push `main`/`dev`。
|
||||
|
||||
> **团队约定(2026-08)**:用户说「发布 / 发版 / 直接发版」且**未特别强调**时 → **发生产(production)**。
|
||||
> 仅当用户明确说「发测试 / staging / 测试环境」时 → 发 staging。
|
||||
|
||||
用户说「发生产 / 上线生产 / 发版」→ 用 `deploy-prod.sh`。
|
||||
用户说「发测试」→ 用 `deploy-staging.sh`。
|
||||
|
||||
## 标准流程(Windows)
|
||||
|
||||
PowerShell 下 **分支名必须加引号**。
|
||||
|
||||
### A. 发测试(日常)
|
||||
|
||||
```powershell
|
||||
# 1. 在 dev_jacy 提交(用户要求时)
|
||||
git push -u origin HEAD
|
||||
git checkout "dev"
|
||||
git pull origin "dev"
|
||||
git merge "dev_jacy" -m "merge(dev_jacy): <简述>"
|
||||
git push origin "dev"
|
||||
git checkout "dev_jacy"
|
||||
|
||||
# 2. 发 staging
|
||||
& "C:\Program Files\Git\bin\bash.exe" "<repo>/deploy/deploy-staging.sh" -- --skip-db
|
||||
```
|
||||
|
||||
### B. 发生产(验收后)
|
||||
|
||||
```powershell
|
||||
git checkout "main"
|
||||
git pull origin "main"
|
||||
git merge "dev" -m "merge(dev): <简述>"
|
||||
git push origin "main"
|
||||
git checkout "dev_jacy"
|
||||
|
||||
& "C:\Program Files\Git\bin\bash.exe" "<repo>/deploy/deploy-prod.sh" -- --skip-db
|
||||
```
|
||||
|
||||
- 默认加 `--skip-db`(无迁移时)
|
||||
- 有 Prisma 迁移:先在 **staging** 跑通(可 `--seed` / `--accept-data-loss`),再生产去掉 `--skip-db`
|
||||
- Staging 微信:正式号 + 全 Mock(`.env.staging`)
|
||||
- `deploy/deploy.env` 提供 `DEPLOY_HOST`、`STAGING_APP_ROOT`、`PROD_APP_ROOT`(勿提交密钥)
|
||||
|
||||
### 首次启用 Staging
|
||||
|
||||
服务器一次性:`bash deploy/bootstrap-staging.sh`(见脚本说明)→ 配 `.env.staging` → DNS `*-test` → nginx → `deploy-staging.sh -- --seed`
|
||||
|
||||
### 同步环境变量
|
||||
|
||||
```powershell
|
||||
bash deploy/sync-api-env.sh staging
|
||||
bash deploy/sync-api-env.sh production
|
||||
```
|
||||
|
||||
## 等待完成
|
||||
|
||||
- 出现 `发版完成`
|
||||
- `exit_code: 0`
|
||||
- `mini-user(h5): 200` / `api: 200`
|
||||
|
||||
## 回复用户
|
||||
|
||||
说明:环境(测试/生产)、commit、建议硬刷验证。测试后台有橙色「测试环境」条。
|
||||
|
||||
## 禁止
|
||||
|
||||
- 不 amend 已推送 commit;不 force push `main`/`dev`
|
||||
- 不把 `.env*` 私钥打进仓库
|
||||
- **禁止**再用 `dev` 直发生产
|
||||
- 用户只说「修好」未说发布 → 只改代码,不发版
|
||||
@@ -0,0 +1,94 @@
|
||||
---
|
||||
name: dukang-task-card
|
||||
description: >-
|
||||
Executes Dukang Haoke task cards (P1-M* or M0-M6) one at a time with DoD
|
||||
verification. Use when the user provides a task ID like P1-M2-002 or M2-FE-U-003,
|
||||
or asks to start/implement a milestone card from the coding manuals.
|
||||
---
|
||||
|
||||
# 杜康好客 · 任务卡 Skill
|
||||
|
||||
## 原则
|
||||
|
||||
- **一次只做一个任务卡**
|
||||
- 任务卡 ID 命名空间:`DLV-W*-*`(V3.0)· `P1-*` / `M*-*`(**历史,不再作验收依据**)
|
||||
- 需求变更只改 `杜康好客-v3-PRD.md`;进度查 `杜康好客-v3-现状对照.md`
|
||||
|
||||
## 领取流程
|
||||
|
||||
1. **解析 ID** → 确定里程碑与 OWNER
|
||||
- `DLV-W1-M2` → `@dukang-v3` + [reference-waves.md](../dukang-v3/reference-waves.md)
|
||||
- `P1-M2-002` → preV1 §9 + OWNER 见卡片内容
|
||||
- `M2-BE-TRD-002` → V2 §七 附录 A
|
||||
2. **读验收标准** → ACC-ID(V3)或手册中该 ID 的「验收」列
|
||||
3. **读依赖** → REQ-ID、API 路径、DB 表、原型路径
|
||||
4. **确认边界** → 只改 [`AGENTS.md`](../../AGENTS.md) OWNER 表内路径
|
||||
5. **实现** → 配合 `dukang-coding` skill
|
||||
6. **自验 DoD** → 下方清单
|
||||
|
||||
## OWNER 快速映射(2 人)
|
||||
|
||||
| 领域 | 负责人 | 典型 ID |
|
||||
|------|--------|---------|
|
||||
| C 端 FE、h5-user、交易后端 | jacy-dukang | P1-M1-002, M2-* |
|
||||
| admin、catalog、settlement | jacy-dukang | M1-BE-CAT-* |
|
||||
| 合伙人、store | 刘景尧 | P1-M4-001 |
|
||||
| 门店核销、h5-shop | 刘景尧 | P1-M3-002 |
|
||||
| Monorepo/integrations | jacy-dukang | P1-M0-* |
|
||||
|
||||
## preV1 任务卡(精简)
|
||||
|
||||
| ID | 验收要点 |
|
||||
|----|----------|
|
||||
| P1-M0-001 | 三端 `pnpm dev` 可编译 |
|
||||
| P1-M0-003 | `pnpm db:validate` 通过 |
|
||||
| P1-M0-004 | Seed 郑州+4SKU+测试账号 |
|
||||
| P1-M1-001 | 123456 三端登录 |
|
||||
| P1-M1-002 | C 端首页 4 款酒 |
|
||||
| P1-M2-001 | 起购校验 2/6 瓶 |
|
||||
| P1-M2-002 | Mock 支付发券 |
|
||||
| P1-M2-003 | 5 Tab 含 pending_ship |
|
||||
| P1-M3-001 | V3 两路径核销金额限制 |
|
||||
| P1-M3-002 | 门店扫码核销 |
|
||||
| P1-M4-001 | 录店 AUTO_APPROVE → C 端可见 |
|
||||
| P1-M5-001 | 配送自动推进到 COMPLETED |
|
||||
|
||||
完整列表:preV1 手册 §9。
|
||||
|
||||
## 完成定义(每个任务卡)
|
||||
|
||||
```
|
||||
- [ ] 验收列每一条可演示/可脚本验证
|
||||
- [ ] 改动在 OWNER 路径内(跨模块需 inject Service + 双 OWNER 知晓)
|
||||
- [ ] 新枚举/DTO → shared-types
|
||||
- [ ] 纯规则 → domain + 单测(若涉及起购/权益/核销)
|
||||
- [ ] API/表变更 → 同步 V2 手册 §五/§六
|
||||
- [ ] pnpm lint 无新增错误
|
||||
```
|
||||
|
||||
## V3.0 DLV 顺序(当前交付)
|
||||
|
||||
**Wave 1**:DLV-W1-M1 → M2 → M3 → M4(门禁 W1-S1~S4)
|
||||
|
||||
**Wave 2**:DLV-W2-M1 → M2 → M3 → M4(门禁 W2-S1~S5)
|
||||
|
||||
**Wave 3**:DLV-W3-M1 → M2 → M3 → M4 → M5(全量 ACC)
|
||||
|
||||
## 历史里程碑
|
||||
|
||||
**preV1**:P1-M0 → … → P1-M6
|
||||
|
||||
**V2**:M0 → M1 → … → M6 → 上线
|
||||
|
||||
除非用户指定,默认从当前里程碑**下一个未完成**任务卡开始;不确定时先问用户或跑 smoke 判断进度。
|
||||
|
||||
## 输出格式(任务完成时)
|
||||
|
||||
```markdown
|
||||
## 任务卡 {ID} 完成
|
||||
|
||||
**改动范围**:(路径列表)
|
||||
**验收**:(逐条 ✓)
|
||||
**未做/阻塞**:(如有,需其他 OWNER 配合的项)
|
||||
**建议下一步**:(下一任务卡 ID)
|
||||
```
|
||||
@@ -0,0 +1,119 @@
|
||||
---
|
||||
name: dukang-v3
|
||||
description: >-
|
||||
Manages 杜康好客 V3.0 PRD (v3-PRD), three-wave delivery (W1/W2/W3), REQ/ACC
|
||||
IDs, and requirements review. Use when implementing V3.0 features, reviewing
|
||||
PRD v1.3 scope, planning Wave gates, or user @dukang-v3. Not for preV1 Mock
|
||||
(use @dukang-prev1) or daily coding alone (pair with @dukang-coding).
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
# 杜康好客 · V3.0 需求 Skill
|
||||
|
||||
## 何时启用
|
||||
|
||||
- 读/改 V3.0 业务规则与交付范围
|
||||
- 评审需求、对照 PRD REQ-ID / ACC-ID
|
||||
- 规划或验收 Wave 1/2/3 门禁
|
||||
- 用户 @dukang-v3 或提到「v3.0 PRD」「三波交付」「W1-S1」
|
||||
|
||||
**不用于**:preV1 Mock 联调(@dukang-prev1)、纯编码实现(@dukang-coding)
|
||||
|
||||
## 文档阅读顺序
|
||||
|
||||
| 优先级 | 文档 | 用途 |
|
||||
|--------|------|------|
|
||||
| 1 | [`杜康好客-v3-PRD.md`](../../../杜康好客-v3-PRD.md) | **唯一需求事实源** |
|
||||
| 2 | [`杜康好客-v3-现状对照.md`](../../../杜康好客-v3-现状对照.md) | 已完成/冲突/缺口 |
|
||||
| 3 | [`杜康好客-v3编码手册.md`](../../../杜康好客-v3编码手册.md) | 实现验收、分工 |
|
||||
| 4 | [reference-waves.md](reference-waves.md) | Wave 门禁与 DLV 映射 |
|
||||
| 5 | [reference-req-index.md](reference-req-index.md) | REQ-U/S/P/H 全表 |
|
||||
| 6 | [reference-acc.md](reference-acc.md) | ACC 验收条件 |
|
||||
| 7 | `pages/{user,shop,partner,hq}/` | UI 参照 |
|
||||
|
||||
> V2 / preV1 手册**不再作为需求依据**。
|
||||
|
||||
## V3.0 不可偏离常量
|
||||
|
||||
```
|
||||
权益额 = 订单实付 1:1(永久)
|
||||
同城起购 2 瓶 / 跨城 1 箱(6瓶)
|
||||
门店结算 = 核销额 × 60%
|
||||
单合伙人:订单佣金 + 核销佣金 ≤ 5%(默认 0% + 3%)
|
||||
核销码 TTL = 3 分钟;试核销固定 ¥100
|
||||
订单 Tab:待付款 | 已付款 | 已完成
|
||||
C 端门店仅 status=OPEN 且审核通过
|
||||
```
|
||||
|
||||
## 三波交付(严格顺序)
|
||||
|
||||
```
|
||||
Wave 1 (7.10) → Wave 2 (7.15) → Wave 3 (7.22)
|
||||
```
|
||||
|
||||
实现前**必须确认当前 Wave**;不得提前做后续 Wave 功能(除非用户明确要求)。
|
||||
|
||||
| Wave | 门禁 | 一句话 |
|
||||
|------|------|--------|
|
||||
| W1 | W1-S1~S4 | 下单+核销+拓店+合伙人子账号 |
|
||||
| W2 | W2-S1~S5 | 提现+推广码+现场提货+门店子账号+多合伙人 |
|
||||
| W3 | 全量 G1~G5 | 代下单+弱网+多仓+跨城+工单+发票+增长 |
|
||||
|
||||
详情:[reference-waves.md](reference-waves.md)
|
||||
|
||||
## 需求变更规则
|
||||
|
||||
- **只改** `杜康好客-v3-PRD.md` 作为 V3.0 业务事实源
|
||||
- 同步 `杜康好客-v3编码手册.md` + `packages/shared-types` + `packages/domain`
|
||||
- V2/preV1 与 V3.0 冲突时 **V3.0 PRD 优先**
|
||||
- 编码 Agent 不得边写代码边改业务规则
|
||||
|
||||
## 原型 → 模块映射
|
||||
|
||||
| 端 | PRD 形态 | 当前代码 | 后端 Module |
|
||||
|----|----------|----------|-------------|
|
||||
| C 端 | 微信小程序 | `apps/h5-user`(过渡) | iam, catalog, trade, benefit |
|
||||
| 门店 | H5 | `apps/h5-shop` | iam, redeem, store |
|
||||
| 合伙人 | H5 | `apps/h5-partner` | iam, store, trade, settlement |
|
||||
| 总部 | H5 | `apps/admin-web`(过渡) | catalog, store, trade, settlement, ops |
|
||||
|
||||
## 任务卡命名(V3.0)
|
||||
|
||||
- **DLV-W{n}-M{m}**:阶段交付(如 `DLV-W1-M2`)
|
||||
- **REQ-{U|S|P|H}-{nnn}**:功能需求 ID
|
||||
- **ACC-{nnn}** / **ACC-P{nn}** / **ACC-W{nn}**:验收 ID
|
||||
- preV1 `P1-*` 与 V2 `M*-*` 为历史命名,V3.0 新任务以 DLV/REQ/ACC 为准
|
||||
|
||||
领取 DLV 任务时配合 `@dukang-coding` + 对应 Owner agent。
|
||||
|
||||
## 团队 OWNER(2 人)
|
||||
|
||||
| 负责人 | 前端 | 后端 Module |
|
||||
|--------|------|-------------|
|
||||
| jacy-dukang | h5-user/mini-user, admin-web | iam, trade, benefit, catalog, settlement, ops, analytics |
|
||||
| 刘景尧 | h5-shop, h5-partner | store, redeem |
|
||||
|
||||
## 需求评审输出格式
|
||||
|
||||
```markdown
|
||||
## V3.0 需求评审 · {主题}
|
||||
|
||||
**关联**:REQ-xxx / ACC-xxx / Wave N
|
||||
**影响模块**:(NestJS module + app)
|
||||
**Owner**:jacy-dukang | 刘景尧 | 双方
|
||||
**与现状差异**:(代码/手册冲突点)
|
||||
**建议任务**:DLV-Wx-Mx
|
||||
**阻塞/依赖**:(外部对接、前置 Wave)
|
||||
```
|
||||
|
||||
## 子 Agent 选用
|
||||
|
||||
| 场景 | Agent |
|
||||
|------|-------|
|
||||
| V3 波次统筹、跨 Wave 排期 | `v3-delivery-lead` |
|
||||
| C 端下单/权益/支付 | `owner-a-user-trade` |
|
||||
| 总部开城/结算/运营 | `owner-c-catalog-ops` |
|
||||
| 合伙人拓店 | `owner-b-partner-store` |
|
||||
| 门店核销 | `owner-d-shop-redeem` |
|
||||
| packages/integrations/Prisma | `backend-lead` |
|
||||
| PR 边界审查 | `boundary-reviewer` |
|
||||
@@ -0,0 +1,72 @@
|
||||
# V3.0 ACC 验收标准索引
|
||||
|
||||
> 事实源:[`杜康好客-v3-PRD.md`](../../../杜康好客-v3-PRD.md) §8
|
||||
|
||||
## 交易与履约
|
||||
|
||||
| ACC | 关联 | 验收条件 |
|
||||
|-----|------|----------|
|
||||
| ACC-001 | S1 | 访客可浏览;下单须登录;支付成功→权益 1:1 |
|
||||
| ACC-002 | 同城 | ≥2 瓶免运费;小飞侠;取送拍照;24h 自动完成 |
|
||||
| ACC-003 | 现场提货 | 隐藏入口;支付即完成;有码归码/无码归总部 |
|
||||
| ACC-004 | 跨城 | 未开通城市≥1箱;总部物流到付;佣金归总部 |
|
||||
| ACC-015 | 锁单 | 30 分钟取消;7 天免登 |
|
||||
|
||||
## 核销与门店账号
|
||||
|
||||
| ACC | 关联 | 验收条件 |
|
||||
|-----|------|----------|
|
||||
| ACC-005 | S2 | 扫码+手机号两通道;码/验证码 3 分钟;成功短信 |
|
||||
| ACC-006 | 多店子账号 | W2:一号多店;主账号唯一;店员权限隔离 |
|
||||
| ACC-006a | 门店登录 | 单店直达;多店含角色;记住所选 |
|
||||
| ACC-017 | 弱网 | W1~2 重试+人工;W3 5次拍照兜底;不重复扣款 |
|
||||
| ACC-017a | 弱网 SLA | W3:总部 T+0 处理;超时预警 |
|
||||
|
||||
## 拓店与 SOP
|
||||
|
||||
| ACC | 关联 | 验收条件 |
|
||||
|-----|------|----------|
|
||||
| ACC-007 | S3 | 合伙人三步提交;总部审;C 端营业中可见 |
|
||||
| ACC-019 | SOP | 筛选字段;附件一一致;试核销100;负责人复核;合同同日 |
|
||||
| ACC-020 | 结算细则 | T+1 顺延;异议3日;店内公示;签约主体 |
|
||||
|
||||
## 资金与佣金
|
||||
|
||||
| ACC | 关联 | 验收条件 |
|
||||
|-----|------|----------|
|
||||
| ACC-008 | S4 | 未出账可提;总部打款;FIN 护栏;T+0 审 |
|
||||
| ACC-009 | 佣金 | 默认 0%+3%;门店结算×60%;§4.3 归属 |
|
||||
| ACC-P21 | 多合伙人 | 区域区县互斥;全城唯一 |
|
||||
| ACC-P22 | 佣金配置 | 独立配置;≤5%;快照 |
|
||||
| ACC-P23 | 订单佣金 | 同城区县解析;余量归总部/全城 |
|
||||
| ACC-P24 | 核销佣金 | 归门店归属合伙人;变更不溯及 |
|
||||
| ACC-P25 | 独立账单 | T+30 独立确认打款 |
|
||||
| ACC-P26 | 数据隔离 | 仅本管辖;推广员仅自己的店 |
|
||||
| ACC-P27 | 推广码 | 绑定合伙人;现场有码归码 |
|
||||
| ACC-P28 | 审计 | 管辖/比例/归属变更留痕 |
|
||||
|
||||
## 售后与增长
|
||||
|
||||
| ACC | 关联 | 验收条件 |
|
||||
|-----|------|----------|
|
||||
| ACC-010 | 工单 | 四类型;总部决策;补发/退款流转 |
|
||||
| ACC-011 | 发票 | 四组合申请;2 工作日回传;可下载 |
|
||||
| ACC-012 | 代下单 | W3:客户+合伙人双短信;手机号建用户(来源 PARTNER_PROXY);线下确认后已付款已完成并发权益;C 端展示代下单人 |
|
||||
| ACC-013 | 问卷评价 | 成交问卷无激励;核销评价;总部可看 |
|
||||
| ACC-014 | 推广分享 | 推广码归因;商品分享带渠道 |
|
||||
| ACC-018 | 话术 | OPT-012 3 日内对齐 |
|
||||
| ACC-021 | 热力图 | 腾讯位置服务按城市 |
|
||||
|
||||
## 多仓(Wave 3)
|
||||
|
||||
| ACC | 关联 | 验收条件 |
|
||||
|-----|------|----------|
|
||||
| ACC-W01 | 多仓 | 同城多仓;启停 |
|
||||
| ACC-W02 | 仓-合伙人 | 一仓一合伙人;未关联总部直管 |
|
||||
| ACC-W03 | 管仓协同 | 管仓合伙人只读仓+工单协同 |
|
||||
|
||||
## UI 与隐私
|
||||
|
||||
| ACC | 关联 | 验收条件 |
|
||||
|-----|------|----------|
|
||||
| ACC-016 | UI/隐私 | §8 规范;按角色脱敏 |
|
||||
@@ -0,0 +1,128 @@
|
||||
# V3.0 REQ 需求索引
|
||||
|
||||
> 事实源:产品 PRD v1.3 → [`杜康好客-v3-PRD.md`](../../../杜康好客-v3-PRD.md)
|
||||
|
||||
## 用户端 REQ-U
|
||||
|
||||
| ID | 模块 | 结论摘要 |
|
||||
|----|------|----------|
|
||||
| REQ-U-001 | 导航 | 首页/门店/好客权益/个人中心 |
|
||||
| REQ-U-002 | 登录 | 无感登录;下单提示绑定手机号(可选);微信/短信;7 天免登 |
|
||||
| REQ-U-003 | 支付 | 仅微信支付 |
|
||||
| REQ-U-004 | 定位 | 右上角市区;默认 IP;可授权精确定位 |
|
||||
| REQ-U-005 | 首页商品 | 4 款酒祖杜康;大图、标题加粗、价格标红、权益金额 |
|
||||
| REQ-U-006 | 商品详情 | 规格瓶/箱、度数、价格、权益、详情图 |
|
||||
| REQ-U-007 | 同城 | 小飞侠;≥2 瓶免运费;物流节点+拍照;24h 自动完成 |
|
||||
| REQ-U-008 | 现场提货 | 隐藏入口;支付即完成;强提示在现场 |
|
||||
| REQ-U-009 | 跨城 | 未开通城市;≥1 箱;总部物流到付 |
|
||||
| REQ-U-010 | 锁单 | 待付款 30 分钟取消 |
|
||||
| REQ-U-011 | 权益 | 支付成功 1:1 永久 |
|
||||
| REQ-U-012 | 客服 | 已付款起电话/微信客服 |
|
||||
| REQ-U-013 | 门店列表 | 营业中;搜索;省市区筛选;立即核销 |
|
||||
| REQ-U-014 | 门店详情 | 门头/电话/星级/地址/营业时间/规则/相册 |
|
||||
| REQ-U-015 | 核销页 | 剩余总额;输入金额;码 3 分钟有效 |
|
||||
| REQ-U-016 | 规则弹窗 | 核销前展示(OPT-011) |
|
||||
| REQ-U-017 | 评价 | 核销后引导门店评价 |
|
||||
| REQ-U-018 | 权益页 | 待使用总额;Tab 待使用/已使用;明细 |
|
||||
| REQ-U-019 | 个人中心 | 手机号、权益总额、订单入口 |
|
||||
| REQ-U-020 | 订单 | 待付款/已付款/已完成;物流时间线 |
|
||||
| REQ-U-021 | 发票 | 四组合;总部 2 工作日回传(OPT-001) |
|
||||
| REQ-U-022 | 工单 | 四类型;客服引导建单 |
|
||||
| REQ-U-023 | 问卷 | 支付成功引导;无激励(OPT-004) |
|
||||
| REQ-U-024 | 推广码 | 扫码归因;现场提货有码归码 |
|
||||
| REQ-U-025 | 分享 | 微信商品分享+渠道参数 |
|
||||
| REQ-U-026 | 门店规则 | 附件一完整展示 |
|
||||
| REQ-U-027 | 门店套餐 **3.4.10** | 门店详情展示生效套餐;套餐异议申诉入口 |
|
||||
|
||||
## 门店端 REQ-S
|
||||
|
||||
| ID | 模块 | 结论摘要 |
|
||||
|----|------|----------|
|
||||
| REQ-S-001 | 导航 | 首页/核销记录/门店信息 |
|
||||
| REQ-S-002 | 登录 | 主账号/店员;§4.6 流程;7 天免登 |
|
||||
| REQ-S-003 | 多店 | 一号多店选店(Wave 2) |
|
||||
| REQ-S-004 | 扫码核销 | 大按钮;确认即成功 |
|
||||
| REQ-S-005 | 手机号核销 | 查余额→用户验证码→确认 |
|
||||
| REQ-S-006 | 短信 | 核销中/成功文案 |
|
||||
| REQ-S-007 | 今日汇总 | 首页今日核销总金额 |
|
||||
| REQ-S-008 | 弱网 | W1~2 重试;W3 §4.8 |
|
||||
| REQ-S-008a | 弱网弹窗 | W3 拍照兜底文案 |
|
||||
| REQ-S-009 | 核销记录 | 筛今日/7日/1月/全部;到账×60% |
|
||||
| REQ-S-010 | 门店信息 | 营业状态;结算入口;切换门店 |
|
||||
| REQ-S-011 | 结算信息 | T+1;核销额/结算额/状态 |
|
||||
| REQ-S-012 | 提现 | 未出账可提(Wave 2);FIN 护栏 |
|
||||
| REQ-S-013 | 提现记录 | 待审/已打款/驳回 |
|
||||
| REQ-S-014 | 结算异议 | 3 工作日 |
|
||||
| REQ-S-015 | 店内公示 | 模板下载 |
|
||||
| REQ-S-016 | 提现护栏 | 白名单/单日上限提示 |
|
||||
| REQ-S-017 | 子账号 | 创建/停用店员(Wave 2) |
|
||||
| REQ-S-018 | 权限 | §4.6 矩阵 |
|
||||
| REQ-S-019 | 多店选店 | 记住上次所选 |
|
||||
| REQ-S-020 | 待处理核销 | Wave 3 弱网单 |
|
||||
| REQ-S-021 | 门店套餐 **3.4.10** | 套餐列表/编辑/提审 |
|
||||
|
||||
## 合伙人端 REQ-P
|
||||
|
||||
| ID | 模块 | 结论摘要 |
|
||||
|----|------|----------|
|
||||
| REQ-P-001 | 导航 | 首页/门店管理/合伙人中心 |
|
||||
| REQ-P-002 | 登录 | 7 天免登 |
|
||||
| REQ-P-003 | 推广员 | 菜单裁剪;仅本管辖范围 |
|
||||
| REQ-P-004 | 管理员 | 完整能力 |
|
||||
| REQ-P-005 | 子账号 | 管理员·推广员 |
|
||||
| REQ-P-006 | 门店管理 | 筛审核/营业/区县/创建人 |
|
||||
| REQ-P-007 | 列表字段 | 名称/地址/状态/录入 |
|
||||
| REQ-P-008 | 一号多店 | 创建时二次确认 |
|
||||
| REQ-P-009 | 创建三步 | 基础/证照+附件一/结算 |
|
||||
| REQ-P-010 | 编辑规则 | 待审可改;通过后改资料再审 |
|
||||
| REQ-P-011 | 试核销 | 100 元激活(OPT-009) |
|
||||
| REQ-P-012 | 入驻短信 | OPT-008 |
|
||||
| REQ-P-013 | 首页数据 | GMV/核销/订单三卡 |
|
||||
| REQ-P-014 | 功能区 | 子账号/订单/权益/工单/代下单 |
|
||||
| REQ-P-015 | 排行 | 核销/订单 Top10 |
|
||||
| REQ-P-016 | 订单管理 | 筛时间状态 |
|
||||
| REQ-P-017 | 订单详情 | 佣金快照下钻 |
|
||||
| REQ-P-018 | 好客权益 | 送出/已核销/待核销 |
|
||||
| REQ-P-019 | 工单 | 只读 |
|
||||
| REQ-P-020 | 财务对账 | 本合伙人月账 |
|
||||
| REQ-P-021 | 代下单 | Wave 3 |
|
||||
| REQ-P-022 | 筛选校验 | 不达标标黄 |
|
||||
| REQ-P-023 | 附件一 | 结构化录入 |
|
||||
| REQ-P-024 | 负责人复核 | 待复核→待总部审 |
|
||||
| REQ-P-025 | 合同同日 | 同日提交校验 |
|
||||
| REQ-P-026 | 我的仓库 | Wave 3 管仓只读 |
|
||||
| REQ-P-027 | 门店套餐 **3.4.10** | 拓店套餐页;门店套餐列表/编辑/提审 |
|
||||
|
||||
## 总部端 REQ-H
|
||||
|
||||
| ID | 模块 | 结论摘要 |
|
||||
|----|------|----------|
|
||||
| REQ-H-001 | 登录 | 权限账户;7 天免登 |
|
||||
| REQ-H-002 | 商品 | 增删改;上下架排序 |
|
||||
| REQ-H-003 | 营销 | 1:1 权益永久 |
|
||||
| REQ-H-004 | 开通城市 | 省/市/配送/是否开通 |
|
||||
| REQ-H-004a | 创建合伙人 | 全城/区域+佣金;W3 管仓 |
|
||||
| REQ-H-004b | 仓库 | Wave 3 多仓 |
|
||||
| REQ-H-005 | 门店管理 | +归属合伙人筛选 |
|
||||
| REQ-H-006 | 门店审核 | 通过/失败;改归属 |
|
||||
| REQ-H-007 | 管辖佣金 | 区县全覆盖校验 |
|
||||
| REQ-H-008 | 订单 | 全量+佣金快照 |
|
||||
| REQ-H-009 | 权益 | 全量+合伙人筛 |
|
||||
| REQ-H-010 | 工单 | 同意/拒绝+备注+日志 |
|
||||
| REQ-H-011 | 发票 | 2 工作日;上传回传 |
|
||||
| REQ-H-012 | 代下单 | 同合伙人 |
|
||||
| REQ-H-013 | 结算 | 门店+合伙人双 Tab |
|
||||
| REQ-H-014 | 提现审 | T+0;FIN-003 |
|
||||
| REQ-H-014a | 白名单 | FIN-001/002 |
|
||||
| REQ-H-015 | 合伙人账单 | 待确认/待打款 |
|
||||
| REQ-H-016 | 报表 | 城市/合伙人/区县+热力图 |
|
||||
| REQ-H-017 | 推广码 | 绑定合伙人+统计 |
|
||||
| REQ-H-018 | 问卷 | 回收看板 |
|
||||
| REQ-H-019 | 门店评价 | 查看数据 |
|
||||
| REQ-H-020 | 核销异常 | W1~2 人工;W3 列表 |
|
||||
| REQ-H-020a | 待处理核销审 | W3 补核销/驳回 |
|
||||
| REQ-H-021 | 话术 | OPT-012 |
|
||||
| REQ-H-022 | 签约主体 | 山西领势酒业 |
|
||||
| REQ-H-023 | 热力图 | 腾讯位置服务 |
|
||||
| REQ-H-024 | 结算异议 | 门店 3 日异议处理 |
|
||||
| REQ-H-025 | 门店套餐 **3.4.10** | 门店详情套餐 Tab 直存;套餐变更审核通过/驳回 |
|
||||
@@ -0,0 +1,109 @@
|
||||
# V3.0 三波交付参考
|
||||
|
||||
> 事实源:[`杜康好客-v3-PRD.md`](../../../杜康好客-v3-PRD.md) §9
|
||||
|
||||
## Wave 1 — 核心交易 + 拓店(2026-07-10)
|
||||
|
||||
### 门禁
|
||||
|
||||
| 门禁 | 能力 | ACC |
|
||||
|------|------|-----|
|
||||
| W1-S1 | 用户下单支付,权益 1:1 到账 | ACC-001 |
|
||||
| W1-S2 | 门店核销(扫码 + 手机号) | ACC-005、OPT-007、OPT-011 |
|
||||
| W1-S3 | 合伙人子账号 | REQ-P-005 |
|
||||
| W1-S4 | 合伙人创建门店 → 总部审核 → C 端可见 | ACC-007、OPT-009、OPT-008 |
|
||||
|
||||
### 纳入
|
||||
|
||||
四端登录 7 天免登、商品、**同城**下单支付、小飞侠履约、出码/扫码/手机号核销、规则弹窗、合伙人子账号、门店三步录入、负责人复核、总部审核、试核销 100 元、登录短信。
|
||||
|
||||
### 不含
|
||||
|
||||
提现/打款、推广码、现场提货、代下单、弱网拍照、多合伙人、门店子账号、**跨城**、工单、发票。
|
||||
|
||||
### DLV 拆分
|
||||
|
||||
| ID | 内容 |
|
||||
|----|------|
|
||||
| DLV-W1-M1 | 四端登录、权限、UI Token、商品管理/展示 |
|
||||
| DLV-W1-M2 | 支付、锁单 30 分、同城小飞侠、权益 1:1 |
|
||||
| DLV-W1-M3 | 出码/扫码/手机号核销、规则弹窗 OPT-011 |
|
||||
| DLV-W1-M4 | 合伙人子账号、门店三步、负责人复核、审核、试核销 OPT-009、短信 OPT-008 |
|
||||
|
||||
### Wave 1 弱网/代下单 SOP
|
||||
|
||||
- 弱网:重试 + 总部人工补核销(OPT-006 完整版在 W3)
|
||||
- 代下单:运营人工 SOP(系统能力在 W3 OPT-002)
|
||||
|
||||
---
|
||||
|
||||
## Wave 2 — 资金 + 品鉴会 + 组织扩展(2026-07-15)
|
||||
|
||||
### 门禁
|
||||
|
||||
| 门禁 | 能力 | ACC |
|
||||
|------|------|-----|
|
||||
| W2-S1 | 未出账可手动提现 + FIN 护栏 | ACC-008、OPT-010、FIN-001~003 |
|
||||
| W2-S2 | 总部审核打款 | REQ-H-014 |
|
||||
| W2-S3 | 推广码 + 现场提货 | ACC-003/014、OPT-005 |
|
||||
| W2-S4 | 门店主子账号 + 一号多店选店 | REQ-S-017~019、ACC-006 |
|
||||
| W2-S5 | 多合伙人管辖/佣金/数据隔离 | ACC-P21~P28 |
|
||||
|
||||
### 不含
|
||||
|
||||
代下单、弱网 5 次拍照、一城多仓、跨城、工单、发票、问卷、热力图。
|
||||
|
||||
### DLV 拆分
|
||||
|
||||
| ID | 内容 |
|
||||
|----|------|
|
||||
| DLV-W2-M1 | T+1 出账、未出账提现 OPT-010 + FIN、总部审打款 |
|
||||
| DLV-W2-M2 | 现场提货 OPT-005、推广码 REQ-H-017 |
|
||||
| DLV-W2-M3 | 多合伙人 REQ-H-004a/007、区县互斥、佣金快照 |
|
||||
| DLV-W2-M4 | 门店子账号 REQ-S-017~019、多店选店 |
|
||||
|
||||
---
|
||||
|
||||
## Wave 3 — 旁路 + 弱网 + 本期全量(2026-07-22)
|
||||
|
||||
### 门禁
|
||||
|
||||
| 门禁 | 能力 | ACC |
|
||||
|------|------|-----|
|
||||
| W3-S1 | 代下单(总部/合伙人) | ACC-012、OPT-002 |
|
||||
| W3-S2 | 弱网 5 次拍照兜底 + 总部补核销 | ACC-017、OPT-006 |
|
||||
| W3-S3 | 一城多仓 + 合伙人管仓 | ACC-W01~W03 |
|
||||
| W3-S4 | 跨城、工单、发票、合伙人 T+30 对账、问卷/评价/热力图 | G5、OPT-001/003/004/012 |
|
||||
|
||||
### 完成定义
|
||||
|
||||
G1–G5 + OPT-001~012 + 门店签约 SOP S1–S12 全部勾选。
|
||||
|
||||
### DLV 拆分
|
||||
|
||||
| ID | 内容 |
|
||||
|----|------|
|
||||
| DLV-W3-M1 | 代下单 OPT-002 |
|
||||
| DLV-W3-M2 | 弱网 OPT-006 完整版 |
|
||||
| DLV-W3-M3 | 多仓、跨城、工单 OPT-003、发票 OPT-001 |
|
||||
| DLV-W3-M4 | 合伙人月账、问卷/评价/热力图、OPT-012 |
|
||||
| DLV-W3-M5 | ACC 全量回归 |
|
||||
|
||||
---
|
||||
|
||||
## OPT 波次对照
|
||||
|
||||
| OPT | 名称 | 波次 |
|
||||
|-----|------|------|
|
||||
| OPT-001 | 发票 | W3 |
|
||||
| OPT-002 | 代下单 | W3 |
|
||||
| OPT-003 | 工单 | W3 |
|
||||
| OPT-004 | 问卷 | W3 |
|
||||
| OPT-005 | 现场提货 | W2 |
|
||||
| OPT-006 | 弱网兜底 | W3(W1~2 简化版) |
|
||||
| OPT-007 | 手机号核销 | W1 |
|
||||
| OPT-008 | 入驻成功短信 | W1 |
|
||||
| OPT-009 | 试核销 100 元 | W1 |
|
||||
| OPT-010 | 未出账提现 | W2 |
|
||||
| OPT-011 | 核销规则弹窗 | W1 |
|
||||
| OPT-012 | 话术对齐 | W3 |
|
||||
Reference in New Issue
Block a user