
1. 概述1.1 术语【可选】要求描述开发和产品之间交流的术语统一模型语言定义避免大家有gap特别是对于新增的需求新增的术语eg术语名称解释大包组包预报特指首公里将大小包关系数据推送给干线履行干线履行推送数据给干线仓的行为1.2 背景prd概要【可选】XX1.3 目标价值【可选】1.3.1 业务目标XX1.3.2 技术目标XX1.4 相关文档【强制】1.4.1 prd链接1.4.2 交互稿链接1.4.3 视觉稿链接1.4.4 上下游技术方案链接1.4.5 其他链接1.5 项目里程碑要求列出详细的里程碑让大家能够很明确测试时间发布时间还有责任人核心的里程碑包含如下几个PRD最终评审时间交互视觉评审时间可选技术方案评审时间联调时间按照上下游可拆分多个模块整体开发完成时间代码review时间这个建议在项目提测前先做一轮代码review解决测试后再次代码review返工的问题提测时间发布时间灰度计划时间1.6 功能模块拆分按照功能模块拆分到人到具体的投入时间人日阶段领域模块子功能开发投入时间人日开发阶段干线仓配舱a荀玉12.221b2实操c干线履行大包中心ab联调阶段干线仓XX模块和XX模块联调荀玉礼斯01013测试阶段提测洁柔 1219-1222海梦发布阶段发布1223具体参考发布计划要求2. 概要设计2.1 系统架构图要求如功能涉及到跨域多系统 或者本域多功能需要描述系统、功能之间的交互关系2.2 系统依赖【强制】要求如若调用下游接口的需给出调到下游的容量/流量依赖中间件的地方给出依赖的量依赖项预计qps依赖项负责人xxtair10W2.3 领域模型要求如果涉及到领域模型变更需要同步出来比如更改了某个核心服务、核心领域等动作2.4 数据模型要求如果涉及到数据模型变更需要列出来比如更改了xx表字段新建xx表等动作每个字段的含义索引是怎么建立的特别是联合索引怎么建立表1表名称ae_capacity列名是否为空缺省值描述修改点idN主键gmt_createY创建时间gmt_modifiedY修改时间prediction_versionN预测版本日期形式YYYY-MM-dd HH:mm:ss自定义sourceN订单来源0-ae首干交接预测1-已交接未交航dateY日期YYYY-MM-ddreceiver_countryN目的国lg_product_nameN物流产品lane_nameN二段渠道is_controlY是否强控Y or Nis_airY是否空运Y or Npostal_clearanceY是否邮清服务Y or Nis_x_day_serviceY是否x日达服务Y or Ninjection_portN注入港departure_areaN起飞区域total_amountY总单量weightY重量单位kg 保留小数点后3位departure_portN起飞口岸featureY扩展字段if_consoN是否集运batteryY是否带电cn_areaY运力区域 欧向、MEAI、俄向、美向索引名索引列PRIMARYuk_for_ae_capacity表23. 详细设计要求1详细设计主要描述业务领域模型数据模型执行流程数据、状态是如何进行在各个模块中流转的我们的缓存是怎么设计的幂等是怎么设计的等要求2按照功能点进行拆分描述书写review逻辑更加内聚每个功能点下分析改动点、流程图、接口等动作。3.1 功能模块{a}3.1.1 改动点分析【强制】要求列举出详细的改动点要有逻辑性和专业性每条写清楚改动点3.1.2 流程图 - 功能详细流程图【复杂功能强制】要求业务逻辑复杂建议写流程图并给出逻辑说明3.1.3 时序图 - 各个组件间的交互【强制】要求系统交互复杂建议写时序图并给出逻辑说明包括前后端无状态的交互时序3.1.4 状态机设计【涉及到状态流转的强制】要求系统交互复杂设计到订单状态流转的必须画状态机并给出逻辑说明3.1.5 缓存设计【涉及到使用缓存的强制】要求设计到缓存使用的需要给出用到缓存的地方合理性用到mdb还是ldb还是redis缓存的key怎么设计失效时间怎么设计缓存数据的一致性怎么设计3.1.6 幂等设计【涉及到相关写接口强制设计幂等】要求对于写接口需要设计幂等对于消息投递外部的调用都需要设计幂等比方说分布式锁DB唯一索引3.1.7 消息设计【涉及消息中间件的强制】要求用到消息中间件的地方强制必须给出用消息的合理性消息体的设计topictag的设计3.1.8 SQL设计要求写出本次功能主要改动的sql是哪些会不会出现慢sql是不是都有索引3.1.9 其他设计要求上述没考虑到的地方其他的核心设计放到这里后续可以吸收为模板3.1.9 SQL设计3.1 功能模块{b}3.1.1 改动点分析【强制】要求列举出详细的改动点要有逻辑性和专业性每条写清楚改动点3.1.2 流程图 - 功能详细流程图【复杂功能强制】要求业务逻辑复杂建议写流程图并给出逻辑说明3.1.3 时序图 - 各个组件间的交互【强制】要求系统交互复杂建议写时序图并给出逻辑说明包括前后端无状态的交互时序3.1.4 状态机设计【涉及到状态流转的强制】要求系统交互复杂设计到订单状态流转的必须画状态机并给出逻辑说明3.1.5 缓存设计【涉及到使用缓存的强制】要求设计到缓存使用的需要给出用到缓存的地方合理性用到mdb还是ldb还是redis缓存的key怎么设计失效时间怎么设计缓存数据的一致性怎么设计3.1.6 幂等设计【涉及到相关写接口强制设计幂等】要求对于写接口需要设计幂等对于消息投递外部的调用都需要设计幂等比方说分布式锁DB唯一索引3.1.7 消息设计【涉及消息中间件的强制】要求用到消息中间件的地方强制必须给出用消息的合理性消息体的设计topictag的设计3.1.8 SQL设计要求写出本次功能主要改动的sql是哪些会不会出现慢sql是不是都有索引3.1.9 其他设计要求上述没考虑到的地方其他的核心设计放到这里后续可以吸收为模板4. 详细接口文档依赖外部hsf接口接口概要要求写清楚做了什么事情依赖外部什么能力。需要写的标准1. 此外部接口是本次新增。 或者 2. 此外部接口有jar升级入参、返回值模型变更。需依赖的jar包接口名称接口入参入参里面需要注明这个入参是否必传接口返回值对外提供hsf接口接口概要要求写清楚做了什么事情提供了什么能力大概写下简单的实现。需依赖的jar包接口名称接口入参入参里面需要注明这个入参是否必传接口返回值mtop接口接口概要要求做了什么事情大概写下简单的实现接口名称链接接口入参入参里面需要注明这个入参是否必传接口返回值5. 非功能性设计5.1 限流设计要求需和上下游评估出详细的容量给出我们的限流值以及下游对我们的限流值并同步给上下游接口名称调用方限流值5.2 降级设计要求需给出核心依赖的降级策略降级后的影响依赖项什么情况下降级降级后的影响6. 影响面分析6.1 对业务域内有何影响要求写出本次改动的影响面会影响到什么功能还有外带的功能比方说加一种用户白名单类型虽然数据没问题但是使用的地方决策逻辑是不是需要改动6.2 对外部依赖方有何影响要求对外依赖的地方外部依赖我的地方是不是有影响6.3 对老系统、历史版本是否兼容要求对现有的功能是否可以兼容对外部的调用有没有兼容服务端发了前端没有发会不会有兼容性问题6.4 本次改动与现在正在开发功能是否冲突6.5 本次改动是否影响资金结算是否有资损风险6.6 本次改动数据上需要check的地方要求特别是对于本次的改动设计到的下游链路和产品比方说语音添加偏好但是偏好添加后其实会添加授权保管授权还会同步给掌柜这就会影响到线上偏好的展示上门决策是否生效掌柜的重要客户页面是否可以展示例如check项check方法备注偏好sta_user_preference_setting 数据check1.设置自提2.设置上门授权表sta_user_mobile_auth 数据check驿站掌柜白名单表sta_user_ext 数据check线上收口页面偏好的展示上门决策数据是否可用掌柜重要客户是否正常展示7. 稳定性方案7.1 灰度计划要求灰度方案根据实际情况评估是否要有技术灰度和业务灰度如果是需要灰度需要说明灰度的节奏灰度期间观察的指标灰度放量的依据一般我们这边可以按照站点城市手机号等维度灰度参考我们的灰度模板单独写下这个项目的灰度方案这里可以链接过来7.2 监控设计要求监控设计根据实际情况评估本次需要加的监控项监控的内容是什么什么时候触发链接还有监控告警后我们的措施是什么监控项名称监控内容什么时候触发链接报警后的措施7.3 预案设计要求结合自己的依赖梳理下本次改动的预案包括紧急预案前置预案相关灰度开关也可以作为预案预案项名称预案内容什么时候触发链接触发后的影响7.4 资损防控要求本次改动如影响/涉及资金、结算需要梳理影响的资金场景及资损布控方案资金场景影响点布控方案布控完成时间因为系统多数是最终一致性难免会有数据不一致性所以需要做一些必要的对账包含实时对账-可使用bcp平台 http://bcp.alibaba-inc.com离线对账-金盾 https://fs.cainiao-inc.com/v2#/fundasset/fundloss-scene7.5 对账方案要求本次改动如有数据冗余数据dump例如DB到tair等场景需写明自己的对账方案对账场景影响点对账方案对账完成时间消费者上门服务单据和履约单对账例子如果对账异常会影响C端对消费者的表达转自提下单离线T1双方单据对账具体见链接XXXXXX4.14业务报表要求结合业务评估是否需要报表性价比遵从以下原则报表是为了解决开发产品直观排查问题、分析数据驱动的一劳永逸的过程方便发现问题