5.5 KiB
5.5 KiB
手机接码价格区间与最低购买价开发方案
1. 需求结论
本次需求不是把“价格上限”改成一个可解析字符串,而是要在现有接码价格逻辑上新增一个独立的最低购买价边界,让用户能配置:
- 只设上限
- 只设下限
- 上下限都设
- 仍然保留“指定档位”作为独立偏好
最终结论:
- 不建议把上限文本框直接改成“范围字符串”。
- 建议在当前价格控制区内新增一个独立的“最低购买价”输入。
- 价格区间采用闭区间语义,两个边界都可空。
指定档位不并入区间字段,只在区间内才生效。- 现有的内部换档下限
countryPriceFloorByCountryId继续保留,不和用户可配最低价混用。
2. 需求符合性分析
2.1 符合的部分
- 低价号过滤是明确业务诉求,和当前“只看上限”确实不匹配。
- 用户希望继续保留指定档位,说明这是“筛选 + 偏好”组合,而不是单纯范围匹配。
- 当前价格控制区本来就集中在同一块,适合扩展为区间控制,不需要拆散到别的区域。
2.2 不足和潜在冲突
-
直接复用上限做范围解析不稳
- 会把“上限”语义和“范围”语义混在一起。
- 还会让
指定档位的优先级变得不清楚。
-
最低价不能复用
heroSmsPreferredPriceheroSmsPreferredPrice是“指定档位”,不是下限。- 两者语义完全不同,混用会造成维护和排障困难。
-
用户最低价和内部换档下限不是同一层
countryPriceFloorByCountryId是 Step 9 内部避让逻辑。- 用户最低购买价是配置项。
- 两者必须分开,否则会互相污染。
-
区间反转是边界问题
- 如果最低价大于上限,逻辑上是无效区间。
- 这个状态必须显式处理,不能默默当成正常配置。
-
区间和指定档位的关系要明确
- 指定档位只有在区间内才应参与排序。
- 超出区间的指定档位应忽略,不应反向突破边界。
3. 设计方案
3.1 字段模型
建议保留现有字段结构,只新增最低价字段:
heroSmsMinPriceheroSmsMaxPriceheroSmsPreferredPricefiveSimMinPricefiveSimMaxPrice
其中:
heroSmsMinPrice兼容 HeroSMS / NexSMSfiveSimMinPrice仅服务 5simheroSmsPreferredPrice保持原语义,不改名
3.2 UI 位置
价格区仍放在当前 row-hero-sms-max-price 这一块里,不另起炉灶。
建议布局为:
最低购买价价格上限指定档位号码复用
这样用户一眼就能看出这四项是一组策略,不会散到别的位置。
3.3 逻辑规则
- 先按价格区间过滤候选。
- 再应用指定档位排序。
- 再按平台自身规则进行换档、重试、兜底。
- 当区间内没有可用价格时,显示“无可用号源”类提示,而不是继续尝试区间外价格。
3.4 取号语义
建议统一成如下顺序:
flowchart TD
A["读取当前 provider 的最低价/上限/指定档位"] --> B["收集平台候选价格"]
B --> C["过滤掉区间外价格"]
C --> D{"指定档位是否仍在区间内"}
D -->|是| E["优先尝试指定档位"]
D -->|否| F["忽略指定档位"]
E --> G["按平台规则排序并取号"]
F --> G
G --> H{"是否仍无可用号源"}
H -->|是| I["输出范围相关诊断/提示"]
H -->|否| J["继续验证码和后续流程"]
4. 开发清单
阶段 1:字段与持久化
目标:
- 新增最低价字段默认值
- 新增归一化逻辑
- 新增保存/回显/导入兼容
- 不破坏旧配置
自检项:
- 保存后能否正确回显
- 旧配置导入后是否保持可用
- 新旧字段是否存在命名冲突
- 是否有乱码或字段缺失
阶段 2:UI 改造
目标:
- 在现有价格区内新增最低购买价输入
- 调整文案为“价格区间”
- 保持控件布局整齐,不把新输入塞到别的区域
自检项:
- 侧边栏宽度下是否挤压、换行错乱
- 输入框宽度是否足够
- 切换 provider 时回显是否正确
- 文案是否统一、无错别字、无乱码
阶段 3:取号与预览逻辑
目标:
- HeroSMS / NexSMS / 5sim 都按区间过滤候选
- 指定档位仅在区间内生效
- 预览文案同步展示区间后的结果
- 无号源提示能反映“区间过窄/区间反转/无可用档位”
自检项:
- 只设上限是否仍与现有行为一致
- 只设下限是否能正常过滤低价
- 上下限同时设置是否只保留区间内候选
- 指定档位超出区间时是否被正确忽略
- 与
countryPriceFloorByCountryId是否仍然隔离
阶段 4:测试与全量复审
目标:
- 补齐单测
- 回归 sidepanel、background、preview、保存/切换
- 全量检查无遗漏后再提交
自检项:
- 运行测试是否通过
- 新增字段是否所有路径都覆盖
- 是否还有未同步的文案/默认值/回显逻辑
- 是否存在边界问题或乱码
5. 完成标准
本需求只有在以下条件同时满足时才算完成:
- 新的最低购买价能正确保存、回显、切换、导入。
- 价格区间在 HeroSMS / NexSMS / 5sim 的候选过滤中生效。
- 指定档位不会突破区间边界。
- 预览与无号源提示和真实取号逻辑一致。
- 代码、测试、文案、注释都没有乱码和明显冲突。
- 全量复审通过后再写中文提交信息并提交。