企业会话、询价与议价模块 PRD
模块目标
在企业级唯一会话中完成找货后的真人沟通,并通过结构化询价、报价、还价和成交确认卡片形成可审计的正式交易条件。
会话边界
- 唯一键为业务方向、买家企业和卖家企业。
- 同一业务方向的多笔询价和交易共用一个企业会话。
- 反向买卖关系使用另一业务方向的会话。
- 支持按关联交易聚焦,但不创建新会话。
消息类型
企业会话允许文本、附件、商品卡、询价卡、报价或还价卡、成交确认卡和合同卡。付款、发货、物流、订单、发票、账户安全和售后进度进入系统消息或业务详情。
询价规则
- 买家从商品详情或采购响应创建询价,填写数量、企业地址簿、交付要求、有效期和可选买家出价;询价默认 24 小时有效,可选择 30 分钟至 7 个自然日。
- 询价提交前重新校验商品状态、企业权限、最小起订量、可售库存和地址有效性,并保存商品、指标、售价、库存、地址和商品模型版本快照。库存此时不锁定,页面必须提示以成交确认时库存为准。
- 商品模型中标记为可协商的指标必须结构化列出并预填卖家当前值;买家只可修改这些字段的期望值,不得修改非协商字段或单位。未修改字段仍随询价快照提交。
- 买家有出价且卖家接受时直接进入待成交确认,不强制卖家再次报价。
- 买家未出价时卖家可首次报价;双方可多轮还价。
- 同一询价只有一个当前有效报价;新还价替换旧报价,历史版本保留。
- 接受操作必须针对当前有效报价;过期、撤回或被替代报价不可接受。
- 双方确认最终数量、单价、交付、结算和税费后创建交易并锁库存。
- 报价必须包含单价、数量、可协商指标最终值、交付方式、付款方式、预计交付日期、税务口径和有效期;任何一项变化都创建新报价版本并使上一版本失效。
- 买家可在卖家首次响应前撤回询价;产生有效报价后只能拒绝当前报价或关闭询价。关闭询价不删除企业会话和历史卡片。
询价与报价状态
| 对象 | 状态 | 允许的买家动作 |
| 询价 | 待卖家回复 | 查看、补充普通消息、撤回 |
| 询价 | 议价中 | 出价/还价、接受当前报价、拒绝、关闭 |
| 询价 | 待成交确认 | 确认最终条件或取消确认 |
| 询价 | 已成交 | 进入交易详情 |
| 询价 | 已撤回、已拒绝、已关闭、已过期 | 只读、重新询价 |
| 报价 | 当前有效 | 在有效期内接受、拒绝或发起还价 |
| 报价 | 已接受、已拒绝、已替代、已撤回、已过期 | 只读 |
页面结构
- 消息中心提供企业会话和系统消息切换。
- 桌面端为会话列表、消息流和关联业务三栏;窄屏隐藏关联栏;手机为列表和会话两级页面。
- 会话列表企业名称与时间同行,未读数独立垂直居中;当天显示时分,历史显示日期。
- 输入框为单行,发送按钮在右侧;不提供独立发送商品按钮。
- 业务卡一个主操作、最多两个次操作;失效卡保留原因并禁用动作。
系统消息
系统消息覆盖报价提醒、合同、付款、发货物流、采购响应、发票、账户安全和售后进度。支持逐条进入业务对象和全部标为已读;不创建企业会话。
并发与幂等
- 报价和接受使用询价版本号;同时还价时后提交方收到“报价已更新”。
- 重复发送业务动作只产生一个正式对象和一张有效卡片。
- 卡片展示状态来自询价、报价、交易或合同对象,不能单独修改消息状态冒充业务成功。
- 同一企业会话按服务端消息序号稳定排序;客户端临时消息只显示发送中,服务端确认后替换为正式消息。重连按最后已确认序号补拉,不得重复或乱序。
- 企业级已读位置按成员分别保存,企业会话列表的企业未读数按当前登录成员计算;不能因同企业另一名员工已读而替当前成员清零。
异常与边界
- 普通文字中的“同意”“可以”不改变业务状态。
- 商品下架、库存不足、企业失效或报价过期时禁止接受并给出恢复动作。
- 普通消息发送失败可重试;正式卡片失败不能先显示成功。
- 撤回普通文本使用占位;业务卡和审计事件不可物理删除。
- 多笔交易聚焦后返回全部沟通,历史顺序和未读状态保持不变。
通知与验收
- 新询价、报价、还价、接受、拒绝、成交确认和合同待签按企业角色通知。
- 同一企业组合不产生重复会话。
- 多轮议价后当前有效报价、卡片按钮和交易条件一致。
- 企业会话与系统消息内容边界清晰,履约进度不会淹没协商。
- 从消息进入交易详情后可返回原企业会话和原聚焦对象。