2026-10-13-market-five-module-mobile-parity-completion.md 6.8 KB

市场五模块小程序与 Web 功能对齐完成矩阵

日期: 2026-10-14
适用角色: 市场专员、地区经理
实现载体: mobile-oa-h5 + /api/mini/market/{specialist|manager}

完成情况

模块 筛选 列表与详情信息 开放动作 结果
预签约订单 关键词、订单状态 对齐业务日期、协议/客户、地区/医院/专员/经理、采集时间、缴费模式、金额、状态、备注、创建时间及意向金转账 新增、编辑、删除、转正式;转账新增、编辑、删除、提交财务、撤回 已完成
协议单 来源、协议状态、创建时间、样本采集时间 对齐协议、采集、客户、样本接收/运输/质检/生产/入库放行、v1/v2 缴费、意向金、转账、附件,以及储存证/保险/审核/状态记录只读信息 新增、编辑、查看、单条删除、移动端逐条授权的批量删除 已完成
缴费信息 关键词、缴费方式、缴费进度、应缴日期 对齐协议号、客户/样本、合同与应收、全部期次、全部转账、累计实缴、待缴和备注;进度复用 Web 口径 查看、登记/编辑/删除待提交转账、提交财务、被退回后撤回 已完成
催缴信息 关键词、催缴类型、缴费方式 对齐协议/客户/样本、人员、期次、应缴/已缴/欠缴、催缴状态和协议状态;按目标期次提供受限只读详情 查看缴费详情、查看关联协议;催缴详情本身不下发写动作 已完成
运费信息 关键词、运输方式、来源、创建时间 对齐批次、运输方式、金额、范围内关联数、来源、协议号/客户/样本、创建更新信息和备注 新增、编辑、关联、取消关联;候选支持来源、关键词和服务端分页,范围外明细和数量不可见 已完成

两个角色共用上述移动端页面与业务契约,数据差异继续由既有租户隔离、角色数据权限和现场范围控制,不由客户端身份参数决定。

明确保持关闭的能力

以下能力在市场专员、地区经理移动端均无操作入口,市场路由也不提供对应写接口:

  • 协议审核;
  • 协议生效、过期、作废、转科研等状态变更;
  • 退费、开票;
  • 储存证、保险办理;
  • 财务确认、财务拒绝。

审核记录、状态记录、储存证和保险信息仅作只读展示。“提交财务确认”和“确认中撤回”属于市场发起/撤回流程,仍按需求开放,不等同于财务确认或拒绝。

关键实现位置

  • 移动列表筛选与卡片:mobile-oa-h5/src/market/list-filters.js、components/MarketFilterSheet.vue、list-presenter.js。
  • 移动页面编排:mobile-oa-h5/src/views/market/MarketModuleList.vue、MarketModuleDetail.vue、MarketModuleForm.vue。
  • 五模块契约:mobile-oa-h5/src/market/modules/。
  • 协议复杂表单:ProtocolCustomerSearchField.vue、ProtocolSampleTransportPanel.vue、ProtocolSamplePaymentPanel.vue 及对应纯函数模块。
  • 移动动作边界:mobile-oa-h5/src/market/action-policy.js、mobile-oa-h5/src/api/market.js、backend/app/services/market_support.py。
  • 后端路由与范围复核:backend/app/api/market_mobile.py、backend/app/services/market_{protocol,payment,freight}.py。

Web 字段、移动展示与后端来源

模块 Web 权威页面 移动展示位置 后端来源与安全边界
预签约订单 web-admin/src/views/cell-storage/presign-order/ views/market/presign/PresignOrderList.vue、PresignOrderForm.vue、market/modules/presign.js market_presign.py;订单、转账和状态写入均锁后复核租户、数据范围和状态
协议单 web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue、ProtocolViewDialog.vue MarketModuleForm.vue、market/modules/protocol.js、协议客户/样本运输/缴费组件 market_protocol.py 复用 Web 详情 bundle;cell/donation 均在 scoped FOR UPDATE 后写入;v1 只读,v2 金额使用 Decimal
缴费信息 web-admin/src/views/cell-storage/payment-info/ market/modules/payment.js、MarketModuleDetail.vue market_payment.py + sample_payment_progress.py;转账按 Schedule→Transfer 锁序,Web 财务写入口也改为写前数据权限校验
催缴信息 web-admin/src/views/cell-storage/payment-chase/ market/modules/payment-chase.js、MarketModuleDetail.vue market_payment.py 的 schedule-bound 只读端点;每次重新校验租户、union scope、非作废期次和催缴资格,allowedActions=[]
运费信息 web-admin/src/views/cell-storage/sample-freight/ market/modules/freight.js、MarketModuleForm.vue market_freight.py;列表只返回 visibleItemCount,关联/解绑在同一事务内锁定父单、关系和明细并重新校验 scope

所有移动金额输入和协议金额 DTO 均采用十进制定点字符串/Decimal(18,2),避免 JavaScript Number 和 Python float 造成财务金额精度损失。协议和预签附件与 Web 对齐为单文件 20 MiB,并继续执行扩展名、MIME、魔数、OOXML 结构和暂存附件归属校验。

自动化验证结果(2026-10-14 新鲜运行)

  • 移动端全部 Node 测试:255 项通过、0 失败。
  • 移动端生产构建:通过,701 个模块完成转换;仅保留 Vite 已有的大包体提示。
  • 后端完整测试:1174 项通过、0 失败;40 个既有弃用/环境警告。
  • Python compileall:通过。
  • 字段一致性:0 errors;5 个既有警告均为 orderNum 默认隐藏或既有页面路径未找到,不属于本次五模块改动。
  • git diff --check:通过。
  • 后端知识图谱:已执行 ./scripts/update-graph.sh backend。

测试环境手工验收待办

自动化测试不能替代真实账号、真实数据和微信 WebView 验收。以下项目尚未在本地自动化环境中宣称通过;发布前需要使用市场专员、地区经理各一个测试账号,在 375px、390px、430px 视口完成:

  1. 五个入口的加载、搜索、组合筛选、分页和详情查看。
  2. 与对应 Web 页面逐项核对信息元素,确认长文本、附件、多期缴费和多样本卡片无截断。
  3. 执行每个已开放动作,确认二次提示、防重复提交、成功刷新和失败恢复。
  4. 确认禁用动作无入口;对历史地址直调时也无法执行对应市场写接口。
  5. 对照同一条数据验证专员与经理的数据范围,并验证兼岗用户不同入口不串用范围。
  6. 在微信环境验证附件上传、预览、下载和删除。
  7. 在 MySQL 5.7 双连接环境验证协议/转账/运费关联的真实行锁阻塞与并发提交行为,并在测试库重复执行样本菜单撤权迁移。