Brixa Group Order

共同注文开发路径与 GitHub Issue 对照表

这份页面按实际开发顺序组织,从架构调研、DB 基础、发案、审核、参加、成团、订单隔离,到契约②、AI 数据上传和测试收尾。每个阶段下面列出对应的 BE / FE issue,可直接点击跳转。

Updated 2026-05-11 BE: mmd-dev/brixa-be FE: mmd-dev/brixa-fe Project: Brixa
当前关键原则: 客户要求的是 UI 上分开。数据库层建议继续复用既存 orders 基础设施,并通过 source marker 标记共同注文由来;普通注文画面负责隐藏或分离展示。
0

架构调研 / Blocker 解除

先确认既存系统的权限、订单、支付、价格模拟和公司模型,避免后面 migration 或业务流走错方向。

实施内容

  • 确认当前 admin / user / company 权限体系,不直接照旧 issue 标题追加 users.role
  • 确认 orders 是否使用 STI,避免新增 type 或 source 字段时和 Rails 机制冲突。
  • 确认既存正单的预付款、付款单上传、月结流程可以如何复用。
  • 确认 SimulationCalculator 是否依赖 user / company / payment term,决定共同注文价格模块的边界。
  • 确认 Joiner 参与唯一性按 user 还是 company 控制。
1

Open Questions 最终确认

先处理还会影响 schema、价格、状态和后台检查的 OQ,再进入主体开发。

实施内容

  • 优先确认 OQ-1 / OQ-2 / OQ-3:折扣阶梯、目标数量、报价边界。
  • 确认 OQ-13:Admin 公开前审核 checklist。
  • 确认 OQ-27:从成团到生产准备的状态边界。
  • 把已确认的客户答案继续同步到设计文档和相关 issue 注释。
2

DB Schema 基础层

先建共同注文自己的核心表、历史表和 orders 来源标记,后续 API / job 都依赖这一层。

实施内容

  • 建立 group_ordersgroup_order_participations 和状态 / 编辑历史表。
  • 为共同注文生成的 orders 增加 source marker 和 participation 关联。
  • 建立热门尺寸排行的数据保持方式,v1 可先做简单 global ranking。
  • 确认并实现必要的 DB index、唯一约束和软删除策略。
3

Model / 状态机 / 权限

把基础表接成可用 domain model,先完成状态变更、权限矩阵和匿名显示。

实施内容

  • 实现 GroupOrderGroupOrderParticipation 状态机。
  • 实现 Anchor / Joiner / Admin 的读写权限矩阵。
  • 实现取消规则:Anchor 可以编辑 / 取消自己的项目;Joiner 到募集截止日为止可以取消。
  • 参与者匿名显示改为 B001 / B002 形式,不显示公司名 masking。
4

Anchor 发案流程

先让 Anchor 能创建共同注文草案,并按客户确认后的字段集和 validation 走通。

实施内容

  • Anchor 发案表单沿用 Brixa 既存字段集,但特殊加工只保留 UV / 箔印刷。
  • 去掉全面印刷有無。
  • 复用既存稿件规范:AI / PDF / PSD、大小上限和印刷色数沿用 Brixa。
  • 接入热门尺寸排行,后台可调整,v1 不做复杂自动统计。
5

Admin 公开前审核 / 契约① / 发布

完成从 Anchor 申请到 Admin 审核、契约①同意和公开募集的闭环。

实施内容

  • Admin 可 approve / reject / force cancel。
  • Anchor 公开前 dashboard 可看到审核状态和下一步。
  • 契约①同意后进入可公开状态。
  • 邮件可以后置实现,但状态和触发点需要先预留。
6

Browse / Joiner 参加

公开页、案件详情和 Joiner 仮申込先做通,demo 双按钮改成按登录身份动态显示。

实施内容

  • 案件卡片按钮按登录用户身份切换:自家案件显示管理,别家案件显示参加。
  • browse 页不显示公司名 masking,只显示 B001 / B002 这样的匿名参与者编号。
  • Joiner 可以仮申込,并看到募集中价格模拟。
  • Joiner 到募集截止日为止可以取消。
7

Anchor / Joiner My Cases

把发起方和参加方的管理入口补齐,支持编辑、取消和状态追踪。

实施内容

  • Anchor 在审核前可以编辑或取消自己的项目。
  • 公开后 Anchor 可编辑标题、数量、目标、寄语;数量也可以改,不需要通知 Joiner。
  • Joiner 看到自己的 participation 状态、取消入口和后续文件 / 契约入口。
  • Admin 列表的支付 / 契约 / 确定单价列不在招募中 tab 显示。
8

Pricing 正式实现

在 OQ 完成后集中实现价格模块,避免早写早改。

实施内容

  • Anchor 有人参团时最少 15% OFF,最大 42%。
  • Anchor 无人参团时最少 5% OFF。
  • Anchor 首次订货 500 个、Joiner 最小参与 300 个,全品类统一。
  • 成团时写入 final pricing snapshot,募集中 UI 使用 simulator。
9

成团 / Orders 生成 / UI 隔离

成团后生成既存 orders,但通过 source marker 和前端列表规则实现共同注文与普通注文的 UI 分离。

实施内容

  • 募集截止后 finalization job 判定成团并固化价格。
  • 为 Anchor / Joiner 生成 orders,标记 source = group_order 和 participation 来源。
  • 普通注文一覧隐藏共同注文来源订单,或明确分离到共同注文入口。
  • 发票、物流、文件系统尽量复用既存 Brixa 基础设施。
10

Admin 成团后处理 / 契约② / AI 数据

补齐后台后续运营动作:契约②手动发送、付款方式独立设置和可下载 AI 数据上传。

实施内容

  • 契约②不在成团后自动发,募集截止后人工确认,再由 Admin 逐个或批量发送。
  • 支付线下处理。预付款沿用正单逻辑,可上传付款单;月结在稿子校对后直接进入生产状态。
  • 各参加者支付方式可独立设置。
  • 不做内部立项书 PDF 输出,改为提供可上传 / 下载 AI 数据的位置。
11

Mailer / 测试收尾

在主流程稳定后补齐通知、集成测试和系统测试,保证 cron、job、邮件和权限都可回归。

实施内容

  • Anchor / Joiner / Admin mailer template 全量补齐。
  • 单测覆盖 AASM、价格、serializer、权限。
  • 集成测试覆盖 Anchor / Joiner / Admin 全流程。
  • 系统测试覆盖 cron、async job、mailer。
12

Phase 2 / Phase 3

v1 不做 AI 文案、3D 预览、内部立项 PDF。后续增强集中放进 Phase 2 / 3 tracker。

实施内容

  • AI 文案生成:客户回答不要。
  • 3D 预览:客户回答目前不需要。
  • 内部立项书 PDF:客户回答不要。
  • 热门尺寸排行需要,但放在 v1 简易实现,不等 Phase 2。
#

Issue 总表

按开发路径中的出现顺序整理,点击 issue 可跳转到 GitHub。

Stage Repo Issue 用途
0-1BEBE#13Open Questions tracker
0BEBE#17(Closed / Not planned)调查结论:既存 WordPress capabilities 体系已覆盖 admin 判定,不新增 users.role
2BEBE#14group_orders migration
2BEBE#15group_order_participations migration
2BEBE#16status / edit histories migration
2, 9BEBE#42orders source marker for group order
2, 4BEBE#43popular size ranking config model + API
3BEBE#18GroupOrder model + AASM
3BEBE#19GroupOrderParticipation model + AASM
3, 7BEBE#20cancellation deadline + history hooks
3, 6BEBE#28B001 / B002 anonymous participant serializer
3, 7, 10BEBE#36permission policy matrix
4BEBE#25Anchor proposal API
4FEFE#1Anchor proposal form
4FEFE#12Admin popular size ranking config UI
5, 10BEBE#27Admin approve / reject / force cancel API
5FEFE#2Anchor pre-publish dashboard
5FEFE#3Anchor contract 1 agreement screen
5FEFE#10Admin pre-publish check screen
6FEFE#5Landing page + CTA
6FEFE#6Public recruiting case list
6FEFE#7Case detail + Joiner apply sidebar
6BEBE#26Joiner apply API
7FEFE#4Anchor recruiting management page
7FEFE#8Joiner my cases list + detail
8BEBE#21price coefficient constants
8BEBE#22Anchor / Joiner shared pricing module
8BEBE#23finalized price snapshot
6, 8BEBE#24recruiting UI price simulator
9BEBE#29finalization job
9BEBE#30participation advance job
9BEBE#31Participation to Order conversion service
9BEBE#32async order generation job
9FEFE#13normal order list UI isolation
10FEFE#9Admin group order management list
10FEFE#11Admin participation detail page
10BEBE#44Contract 2 manual send workflow
10BEBE#45production AI file upload/download slot
11BEBE#33Anchor mailer templates
11BEBE#34Joiner mailer templates
11BEBE#35Admin mailer templates
8, 11BEBE#37unit tests
11BEBE#38integration tests
11BEBE#39system tests for cron / async / mailer
12BEBE#40Phase 2 tracker
12BEBE#41Phase 3 tracker
AllBEBE#12Group Order epic