feat: multi-module iteration

This commit is contained in:
2026-08-04 21:38:49 +08:00
parent 9d96c73246
commit 71f508e02b
1366 changed files with 202004 additions and 0 deletions
+122
View File
@@ -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/
```
WorkflowDTO → 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 端订单 TabV3.0):`待付款 | 已付款 | 已完成`
## 数据库变更
1.`server/dukang-api/prisma/schema.prisma` 对齐手册 §五
2. 迁移需 OWNER Reviewstore/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-dukangsettlement |
| partner_ | partner_partner, partner_bill | 刘景尧 / jacy-dukangsettlement |
| 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_tokensDB)。
## 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/*` | redeemC 端) |
| `POST /shop/redeem/*` | redeem(门店) |
### store / settlement
| 路径 | Module |
|------|--------|
| `GET /stores` | storeC 端门店列表) |
| `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 |
### opsadmin-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 源码 |
## integrationspreV1
| 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 |
+94
View File
@@ -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. **无微信登录** → 仅 SMSwechat 路由返回 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/` 原型混为一谈
+69
View File
@@ -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
+91
View File
@@ -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` | 81908194 | `*-test.dukanghaoke.com` |
| `main` | **production 生产** | `/opt/dukang` | 80908094 | `*.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` 直发生产
- 用户只说「修好」未说发布 → 只改代码,不发版
+94
View File
@@ -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
```
+119
View File
@@ -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。
## 团队 OWNER2 人)
| 负责人 | 前端 | 后端 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` |
+72
View File
@@ -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+0FIN-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 直存;套餐变更审核通过/驳回 |
+109
View File
@@ -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 |
### 完成定义
G1G5 + OPT-001012 + 门店签约 SOP S1S12 全部勾选。
### 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 | 弱网兜底 | W3W1~2 简化版) |
| OPT-007 | 手机号核销 | W1 |
| OPT-008 | 入驻成功短信 | W1 |
| OPT-009 | 试核销 100 元 | W1 |
| OPT-010 | 未出账提现 | W2 |
| OPT-011 | 核销规则弹窗 | W1 |
| OPT-012 | 话术对齐 | W3 |