Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save yicone/4200467 to your computer and use it in GitHub Desktop.

Select an option

Save yicone/4200467 to your computer and use it in GitHub Desktop.
2012.12.04

业务人员的愿景

  • 客户在预定过程中会提出更换酒店的需求,由此带来客服人员的沟通成本的增加。
  • 产品经理设定航班时在售价和是否高端方面的两难抉择,希望能由客人来自行选择。

需求描述

客户在预定过程中:

  • 如果行程中的某一天,有可选酒店,客户可以根据偏好和价格进行选择。
  • 如果出发日、中转日、回程日,有可选航班,客户可以根据偏好和价格进行选择。

对领域模型的影响

  • 产品需要设定基础价(底价)。基础价的录入可能为两种情形
  1. 包含了固定酒店和固定航班的价格,也包含了每组可选酒店和可选航班的最低价。
  2. 不包含酒店和航班的价格,需要在数据预处理时,与酒店和航班的价格累加起来,形成新的基础价。
  • 酒店和行程要绑定起来。航班类似。
  • 产品和酒店的关系不在是纯粹固定的。可能会出现部分酒店是固定在产品上的,部分酒店是交由客户从多个酒店中选择的。航班类似。
  • 酒店和机票,分别有一组价格,每个价格受价格有效期限制。

##对UI的影响##

  • 客户从行程当日的每组可选酒店中选择,UI需要实时反映产品总价格的变化。航班的处理类似。
  • 产品展示方面,价格按产品的基础价显示。
  • 酒店展示方面,系统要按:客户选择的出发日期、酒店关联在行程的第几天、当日哪些酒店可用(有价格),来展示当日的固定酒店和可选酒店。
  • 航班展示方面,系统要按:客户选择的出发日期、产品的中转日和回程日期、当日那些航班可用(有价格),来展示当日的固定航班可选航班。中转日也要考虑和行程的绑定。回程日期还要考虑延住的情形。

涉及的变更

  • 表现层:实现UI需求。包括客户操作流程、搜索、展示、实时计价等
  • 领域层:领域模型变更
  • 仓储层:移除数据处理逻辑、适配可能的数据库结构变更、适配领域模型的变更

技术方案

针对产品有效性、产品可出发日期(需要包含对酒店可用日期的综合处理)、可回程日期、基础价的计算需求,采用数据预处理方案。
异步完成,将搜索、展示的程序逻辑与数据处理分离

方案影响

  • 出发点是职责分离,在满足需求变更的同时,为减少单一模块逻辑复杂度快速上升,将一部分工作交由新增的模块处理。
  • 数据预处理的异步进行,提升了查询和展示的性能。(这个不是主要出发点,因为目前相关处理并未产生性能瓶颈。)
  • 维护成本的客观增加,也包括当次迭代中修改和测试的成本,以及运维成本。
  1. 引入了数据预处理这个新模块。新模块的实现,引入了DB JOB或者定时执行的Windows服务。引入了临时表或内存中的数据模型(与领域模型有一定重合)。
  2. 未来数据库变更和业务逻辑变更,可能需要双方修改,双方测试,一方不正确导致整体结果不正确。如果数据预处理与前台各持一套计算模型,或者技术异构,这个影响加大。(由此更加需要实现一个数据验证器,来判断应用边界两边,哪方出错。)
@yicone
Copy link
Copy Markdown
Author

yicone commented Dec 4, 2012

业务人员的愿景

  • 客户在预定过程中会提出更换酒店的需求,由此带来客服人员的沟通成本的增加。
  • 产品经理设定航班时在售价和是否高端方面的两难抉择,希望能由客人来自行选择。

需求描述

客户在预定过程中:

  • 如果行程中的某一天,有可选酒店,客户可以根据偏好和价格进行选择。
  • 如果出发日、中转日、回程日,有可选航班,客户可以根据偏好和价格进行选择。

对领域模型的影响

  • 产品需要设定基础价(底价)。基础价的录入可能为两种情形
  • 包含了固定酒店和固定航班的价格,也包含了每组可选酒店和可选航班的最低价。
  • 不包含酒店和航班的价格,需要在数据预处理时,与酒店和航班的价格累加起来,形成新的基础价。
  • 酒店和行程要绑定起来。航班类似。
  • 产品和酒店的关系不在是纯粹固定的。可能会出现部分酒店是固定在产品上的,部分酒店是交由客户从多个酒店中选择的。航班类似。
  • 酒店和机票,分别有一组价格,每个价格受价格有效期限制。

对UI的影响

  • 客户从行程当日的每组可选酒店中选择,UI需要实时反映产品总价格的变化。航班的处理类似。
  • 产品展示方面,价格按产品的基础价显示。
  • 酒店展示方面,系统要按:客户选择的出发日期、酒店关联在行程的第几天、当日哪些酒店可用(有价格),来展示当日的固定酒店和可选酒店。
  • 航班展示方面,系统要按:客户选择的出发日期、产品的中转日和回程日期、当日那些航班可用(有价格),来展示当日的固定航班可选航班。中转日也要考虑和行程的绑定。回程日期还要考虑延住的情形。

涉及的变更

  • 表现层:实现UI需求。包括客户操作流程、搜索、展示、实时计价等
  • 领域层:领域模型变更
  • 仓储层:移除数据处理逻辑、适配可能的数据库结构变更、适配领域模型的变更

技术方案

针对产品有效性、产品可出发日期(需要包含对酒店可用日期的综合处理)、可回程日期、基础价的计算需求,采用数据预处理方案。
异步完成,将搜索、展示的程序逻辑与数据处理分离

方案影响

  • 出发点是职责分离,在满足需求变更的同时,为减少单一模块逻辑复杂度快速上升,将一部分工作交由新增的模块处理。
  • 数据预处理的异步进行,提升了查询和展示的性能。(这个不是主要出发点,因为目前相关处理并未产生性能瓶颈。)
  • 维护成本的客观增加,也包括当次迭代中修改和测试的成本,以及运维成本。
  • 引入了数据预处理这个新模块。新模块的实现,引入了DB JOB或者定时执行的Windows服务。引入了临时表或内存中的数据模型(与领域模型有一定重合)。
  • 未来数据库变更和业务逻辑变更,可能需要双方修改,双方测试,一方不正确导致整体结果不正确。如果数据预处理与前台各持一套计算模型,或者技术异构,这个影响加大。(由此更加需要实现一个数据验证器,来判断应用边界两边,哪方出错。)

@yicone
Copy link
Copy Markdown
Author

yicone commented Dec 4, 2012

业务人员的愿景

  • 客户在预定过程中会提出更换酒店的需求,由此带来客服人员的沟通成本的增加。
  • 产品经理设定航班时在售价和是否高端方面的两难抉择,希望能由客人来自行选择。

需求描述

客户在预定过程中:

  • 如果行程中的某一天,有可选酒店,客户可以根据偏好和价格进行选择。
  • 如果出发日、中转日、回程日,有可选航班,客户可以根据偏好和价格进行选择。

对领域模型的影响

  • 产品需要设定基础价(底价)。基础价的录入可能为两种情形
  • 包含了固定酒店和固定航班的价格,也包含了每组可选酒店和可选航班的最低价。
  • 不包含酒店和航班的价格,需要在数据预处理时,与酒店和航班的价格累加起来,形成新的基础价。
  • 酒店和行程要绑定起来。航班类似。
  • 产品和酒店的关系不在是纯粹固定的。可能会出现部分酒店是固定在产品上的,部分酒店是交由客户从多个酒店中选择的。航班类似。
  • 酒店和机票,分别有一组价格,每个价格受价格有效期限制。

对UI的影响

  • 客户从行程当日的每组可选酒店中选择,UI需要实时反映产品总价格的变化。航班的处理类似。
  • 产品展示方面,价格按产品的基础价显示。
  • 酒店展示方面,系统要按:客户选择的出发日期、酒店关联在行程的第几天、当日哪些酒店可用(有价格),来展示当日的固定酒店和可选酒店。
  • 航班展示方面,系统要按:客户选择的出发日期、产品的中转日和回程日期、当日那些航班可用(有价格),来展示当日的固定航班可选航班。中转日也要考虑和行程的绑定。回程日期还要考虑延住的情形。

涉及的变更

  • 表现层:实现UI需求。包括客户操作流程、搜索、展示、实时计价等
  • 领域层:领域模型变更
  • 仓储层:移除数据处理逻辑、适配可能的数据库结构变更、适配领域模型的变更

技术方案

针对产品有效性、产品可出发日期(需要包含对酒店可用日期的综合处理)、可回程日期、基础价的计算需求,采用数据预处理方案。
异步完成,将搜索、展示的程序逻辑与数据处理分离

方案影响

  • 出发点是职责分离,在满足需求变更的同时,为减少单一模块逻辑复杂度快速上升,将一部分工作交由新增的模块处理。
  • 数据预处理的异步进行,提升了查询和展示的性能。(这个不是主要出发点,因为目前相关处理并未产生性能瓶颈。)
  • 维护成本的客观增加,也包括当次迭代中修改和测试的成本,以及运维成本。
  • 引入了数据预处理这个新模块。新模块的实现,引入了DB JOB或者定时执行的Windows服务。引入了临时表或内存中的数据模型(与领域模型有一定重合)。
  • 未来数据库变更和业务逻辑变更,可能需要双方修改,双方测试,一方不正确导致整体结果不正确。如果数据预处理与前台各持一套计算模型,或者技术异构,这个影响加大。(由此更加需要实现一个数据验证器,来判断应用边界两边,哪方出错。)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment