读书笔记:看板方法-科技企业渐进变革成功之道(中)

第四部分 实施看板方法

第六章 价值流映射

启动看板方法的关键要义是,变化要越少越好。你必须要抵制住改变工作流程、职位名称、角色以及职责,以及当前在用的具体实践的诱惑。不要试图去改变团队成员与其他合作伙伴、参与者、干系人的内驱力、专业自豪感和自我心理,主要要改变的是在制品的数量、与上下游业务间的借口及交互方式。因此,必须与团队一起把现有的价值流图描绘出来,不要试图是改变它或重新发明一种理想化的新过程。

有必要确定哪里是进行过程可视化的起点和终点,并且这样做时,要定义好和上下游合作伙伴的借口位置。

一旦选定工作流或价值流的起点,下一步要做的就是识别那些达到该点的工作项类型,以及其他已在工作流中并且需要对之进行限制的工作。

已经发现的典型工作项类型包括但不限于一下所列:需求、功能特征、用户故事、用例、变更请求、产品缺陷、维护工作、重构、错误、改进建议、受阻问题

绘制卡片墙

卡片墙通常是用来呈现针对工作项所进行的活动,而不是用来描述特定的职能或职务的活动。其步骤如下:

1.先画一个草图对工作流进行建模会很有帮助。

2.一旦通过绘制草图或建模的方式理解了工作流,就可以开始定义卡片墙,根据活动的执行次序在白板上画出多道分栏。

3.接下来,添加输入队列和任何想对之进行可视化的下游交付步骤。

4.最后,添加你认为有必要的缓中区或等待队列。

请求分析

对识别出来的每种类型的工作项,都应该对其进行请求分析,如果有历史数据,则可以用来对此进行定量研究,如果没有历史数据,则可以进行主管的定性分析。作者建议将工作项类型总体分为四种来进行跟踪:变更请求,产品缺陷,产品文本变更和bug。分析每种类型的工作项,什么时候会暴增、什么时候趋于稳定,哪些工作是季节性的等等。

根据请求分配产能

一旦对请求有了了解,就可以决定在看板系统如何分配产能以响应请求。例如:变更请求60%,维护工作10%,产品文本变更30%

工作项卡片详解

每张卡片都代表一项增加客户价值的具体工作,它们在视觉上拥有与此工作相关的多方面信息。例如:左上角的数字代表这一工作在电子跟踪系统中的唯一标识码;左下角为卡片进入系统的时间;右下角为要求的交付日期;

设置输入和输出边界

在设计看板系统和卡片墙的同时,要尽早对在制品控制的边界做出决策。后期,上下游合作伙伴会申请在卡片墙上对其工作进行可视化呈现。但是,最好先对自身团队的工作提供透明度,以等候其他上下游团队成员主动提出请求加入你实施的看板系统。

对应并行活动,例如:软件开发和测试开发

1.根本不对此进行区分:只设置一个分栏,允许两种活动同时发生

2.在垂直方向上将板分为两个或者更多的区块。

对应次序无关的活动

1.和对应并行活动类似:只使用一个分栏作为这些活动的容器,而且不在白板上显示地跟踪活动是否已经完成。

2.也是潜力相较要强大得多的一种策略,它是以类似处理并行活动的方式来对应无序活动。当工作项被拉入每个特定的活动时,卡片也应该随之上下移动。

第七章 使用看板进行协调

可视化控制和拉动

当人们谈及看板中用于协调的最流行的方法时,脑海中浮现的便是卡片墙。通常做啊时在卡片墙上每一栏的顶部标明在制品限额,或者以划定各栏纵向长度的方式限定在制品数量。如果某一栏中的卡片数量低于指定的限额,则发出一个拉信号。

电子跟踪

电子跟踪系统支持数据收集,可以用来生成度量数据和报告,以供日常管理和回顾,如每月运营回顾等所用。

每日站立会议

与敏捷站立会议有所不同,引导者通常会是项目经理或者产品线经理,会做看板走读,以经形成的惯例做法是从后往前走—从右向左产看看板上的卡片。引导者也会对每项工作状态进行更新,或者询问是否还有不在墙上的(对团队成员而言还是未知的)额外信息。重点是关注受阻的工作项(在其上黏贴一个粉色的便签)和因缺陷导致延期的工作项(在其上黏贴一个蓝色的便签)。对以经好几天没有挪动的工作项,重点提问。

会后讨论

一般由2~3人自发小组的形式开展。小组成员想讨论他们心中的一些问题,也许是一个受阻问题,也许是一个技术设计问题或者架构问题,但也许更多的是一个过程相关的问题。

队列填充会议

在看板方法中,召开队列填充会议的目的是进行优先级排序。这类会议的目的是为一个单独的像直流、系统或项目填充看板系统的输入队列。理想情况下,出席优先级排序会议的人员中,最好有来自公司内存在潜在竞争关系的若干产品负责人或者业务人员。建议每周一次定期召开,以减少协调成本,确保每个需要与会者都能准时参会。

发布规划会议

是专门为规划下游交付活动而召开的会议。出席会议的专家可以为会议贡献他们的技术知识和风险评估能力,管理人员则是负责做出决策。

会议检查列表如下:

1.系统中哪些工作项以经(或即将)做好发布准备?

2.将每个工作项发布到生产环境中还需要做哪些工作?

3.发布后,需要进行哪些测试来验证生产环境系统的一致性?

4.其中有哪些风险?

5.如何缓和与规避这些风险?

6.需要有哪些应急计划?

7.在这次发布中,需要哪些人参与?将系统推向生产环境(或执行其他部署机制)时,需要哪些人在工作现场?

8.发布将耗时多久?

还有其他哪些相关事情要筹备妥当?

鉴别分类

鉴别分类是从医学界借用来的一个术语,它是指对急诊患者进行评估和分类,根据需要关注的优先级进行归类的做法。这种方法最初使用在战地治疗单位中,病人被分为三类:1.无法挽救,可能不久于人世;2.如果给予及时治疗,很可能就能生存下来;3.即使不立即救治也能存活下来。

传统软件项目的稳定化阶段对缺陷和bug进行分类处理:1.需要修复的bug,并给出bug修复的优先级;2.不需要修复、允许在产品发布后保留的bug。

板板方法中,缺陷鉴别分类仍然很有意义,然而,最有益的还是安排代办项进入系统的排队次序时,使用分类方法。

1.代办项鉴别分类法的目的时走查代办项列表的每一项,以决定是否在列表上保留这一项,还是将其删除。

2.如果某个代办项在6个月内都没有被选出进入输入队列,它很可能没有重要价值,因此不需要选择这样的代办项。

3.对代办项进行鉴别分类的目的时缩小其规模。

问题日志的审查和升级

在看板方法中,如果看板系统中有工作项受阻,那么这些工作项需要被标识出来进行处理,同时创建一个对应的问题工作项。

问题日志审查会议应该经常进行并且定期召开。项目经理和将工作项标识为受阻的团队成员,应该参加问题日志审查会议。需要问答的主要问题包括“应该分派谁去解决这个问题”及“期望什么时候解决这个问题?”,无法推进和解决的问题自身也成为阻塞项,应当提请资深管理层来解决。

现场贴纸代理

用于解决一个协调问题,当人不在办公现场时,需要指定一个现场的人做代理人,帮助其移动看板上的卡片

跨多个地理位置保持同步

跨多个地点进行协调的关键时要使用电子跟踪系统。除了使用电子跟踪系统之外,还有必要做到电子跟踪系统与物理墙最其码能够保持每日同步。要在每一处均指派专人对此负责,这一点十分重要。

第8章 建立交付节奏

交付节奏:是指一种以固定频率交付可用软件的模式。例如,假设达成一致协议,确认每两周进行一次交付,那么交付节奏就是每两周一次,或者每年26次。也许,我们甚至还可以具体交付日期达成协议,例如每两周的第二个周三。

在敏捷软件开发圈子里面形成的一个基本共识是,稳定的节奏十分重要。

1.稳定的“心跳”对于项目十分重要。

2.在过去10年中,使用敏捷方法的团队也已经认识到WIP越少越好。

3.看板方法将创建用户故事的时间与交付频率分离开来。

交付的协调成本

每次软件交付都包含协调成本,每次交付都要召集相关人员讨论部署(或发布)、市场营销和推广、文档编写、终端用户培训、安装文档编写、安装程序制作、发布时的现场调度等各种活动。下面是必须要考虑的一些问题列表:

1.需要召开多少次会议?

2.需要多少人参与其中?

3.将会耗时多久?

4.当人们在常规活动上投入的精力被分散时,需要承受哪些机会成本?

交付的事物成本

实物交付的事务成本很容易理解,交付时,首先需要完成支付。

交付效率

评估交付效率的计算方法有两种

1.最简单的方法时查看投入的人力和成本。

交付效率%=100% *(总成本-(协调成本+事务成本))/总成本

为了提高效率,必须(a)拉长两次交付的间隔时间,或者(b)降低协调成本和事务成本。20世纪的西方企业通常选择(a)选项,它们看中的是发挥规模经济的价值:拉长交付周期,以大批量生产来分摊成本。20世纪末的日本企业通常选择(b)选项,这些企业推崇和贯彻的是精益思想。

2.更负载的方法时按照交付的价值来计算。

通过提高效率来提升交付节奏

作者的建议是,开始时先选择保守的频率。先选择每月发布一次的频率。通过实际结构来证明组织能够持续保持这个目标。在几个月之后,思考如何提升代码质量,发起对配置管理的改善行动。如果有富余资源可用,则可以把它们投入到工具开发中,改善发布过程中的数据迁移。最后,鼓励团队在模拟环境中进行发布演习。

降低协调成本和事务成本是精益方法的核心,是消除浪费最强有力的方式。这样做,可以使批次规模变得更小,效率更高,并且也带来了业务上的敏捷性。要在降低成本时心中牢记一个目标:通过更为频繁地交付可用软件,从而更频繁地向客户交付更多价值。

进行随需或临时交付

定期交付尤其自身的优点

1.承诺在某个固定日期交付,例如每两周的第二个周二,能够引导大家围绕着这个目标开展工作

2.定期交付也有利于建立信任。缺乏可预测性会破坏信任。

尽管建立定期交付的节奏十分重要,但是在某些情况下,却有必要进行随需或临时交付,什么情况下需要进行这类交付呢?

1.当发布活动的协调成本很低时,随需交付或临时交付很有意义。

2.当事务成本很低时,也有必要采用随需或临时交付

3.在支持代码频繁发布的环境中,根本就不存在要形成某种发布模式的需求,这是也可以进行随需或临时发布。

满足低协调成本和低事务成本这两个条件的环境,一般具有较高的成熟度。

第9章建立输入节奏

优先级排序的协调成本

在引入看板系统时,我们对业务负责人进行了工作流程、输入队列和拉动机制的培训,他们明白当队列中出现空位时自己要对队列进行填充,而不需要再对请求待办项进行排序。

确定优先级排序节奏

每周进行一次优先级排序,时一种好的合适的节奏。它使得业务负责人之间能够频繁互动,通过其中的交互,能够在彼此间建立起信任关系,软件开发时一种具有协作特性和合作特性的博弈活动,这种做法让参与者每周能够往前前进一步。

优先级排序的效率

一般的建议是,优先级排序会议开得越频繁越好,这样,输入队列就会越小,从而使得系统中的浪费越少,WIP越少,前置时间就会越短。

优先级排序的事务成本

有些时候,业务人员也许会出现,相比其价值,某个请求的实施成本过大,因此他们可能会要求分析团队进行估算。后来,服务级别协议相关的规则被引入进来,以指导是否有必要对某个工作项进行估算

全部这些会懂,包括估算、业务规划准备、从待办项列表中选出后选项等,都是优先级排序工作的前置工作。

提高效率以支持更频繁的优先级排序节奏

一般而言,由于协调成本的影响,这些敏捷规划方法仅对专注于单一系统和产品线的小团队才高效。

大部分服务类别都取消估算,能够降低优先级排序的事务成本和协调成本。由于会议保持高效,所以这些成本的降低有利于更为频繁地召开优先级排序会议。进一步地,这将使得看板团队有可能随需或临时召开优先级排序会议。

对已经建立高层次的信任,而且和优先级排序决策策略相关的事务成本和协调成本都很低的高成熟度组织,可以选择随需或临时进行优先级排序。

第10章 设置在制品限额

看板方法背后有两条基础性的原则:

1. 限制在制品的数量

2. 仅当有可用产能时才通过信号卡传递机制来拉动工作的流动。

当实施看板方法时,要和上下游的干系人与资深管理层就在制品限额达成一致共识。

工作任务的限额

根据某些研究和经验性观察,每个知识工作者同时只在2个工作项上工作时最优的。

在选择在制品限额数值上,并没有什么魔法公式。重要的是要记住,这个数值是可以通过实验观察不断调整的。可以先选择一个数值,然后观察这个数值是否能够很好地工作。如果不理想,则可以将之调高或者调低。

排队队列中的限额

如果在实际运行中,看板系统经常出现走走停停的现象,导致工作者由于受任务完成时间的变异性影响而出现停顿现象,就需要调高排队队列的大小。但是,如果你已经设置WIP限额规则为过程中的每个人,每个对子或者团多有2个工作项,那么就为变异性设置了缓冲。因此,理想情况下,这时队列大小是0。最简单的做法,只要将工作任务一栏和完成队列归在一起,合并计算在制品限额即可。

瓶颈前的缓冲

为了对应工作流中的存在的瓶颈,也许需要在瓶颈前设置一个缓冲区,这是一种充分利用瓶颈处资源的典型做法,缓冲区大小的设置很重要。同样,这个缓冲区也要尽可能小,缓冲和队列增大了系统的WIP值,它们将导致前置时间拉长。

输入队列大小

输入队列的大小可以直接根据系统的优先级排序节奏和交付速率来确定。例如,如果一个团队的平均交付速率是每周完成5个工作项(变化范围是4~7个)队列的填充节奏是每周一次,那么队列大小设置为7可能比较合适。同时,这个数值也可以根据具体情况进行调整。

工作流中不设WIP限额的区域

不对处于瓶颈下游的工序节点设置WIP限额。这个设计基于一个假设,即这些工序节点的产出能力比瓶颈工序大,存在有空闲的富余产能。因此不需要对它们设置WIP限额。

不要使组织压力过大

在一开始选择过小的WIP限额可能会使组织处于过大的压力之下。产能较低的低成熟度组织将会遭遇更多的障碍。

如果将WIP限额设置得太小,J型曲线效应造成的影响会很大,系统恢复稳定所需的时间会拉得很长,这不但会让人感到痛苦,而且可能导致不期望发生的反作用:看板方法暴露组织中存在的问题,由此可能会冠以使事情变得更加糟糕的罪名而被迫中止,并且其本身也会被视为是问题的一部分而不是解决办法。

不设置在制品限额是错误的。

作者确信,在价值流中添加WIP限额带来的压力是一种积极的压力。这种积极压力迫使大家去讨论组织的问题和机能障碍。机能障碍阻碍价值流动,需要组织可能仅对生产率,前置时间和质量进行局部优化,而不系统性的优化。

产能分配

产能分配一般要根据每种类型工作的提请量情况,进行合理分配。

第11章 建立服务水平协议

根据所需服务水平进行分类,是一种十分便捷的工作分类方法,这让我们可以优化经济成本,并在多个差异级别上保障合适的客户满意度。

服务类别的一种典型定义

服务类别往往根据业务影响来定义的,可以使用不同颜色的记事贴、索引卡或标签来表示不同类别;还有一种做法是通过卡片墙上出不同的横向泳道来识别服务类别。

每一个服务类别都有一套规则条款,决定该类别下的工作项被拉入看板系统的优先级次序。每个服务类别还向客户做出明确的承诺。

加急类

加急(或称“银弹”)服务类别在制造业为人熟知。具备加急能力,使得供应商在面对客户需求时,即使颇有困难也敢做出承诺。然而,加急订单对生产供应链及物流系统将造成严重影响。加急意味着既要提高库存水平,又要延长其他非加急订单的交付周期。生产制造公司通常会制定条例,以限制需要工程加急生产的需求数量。在一段给定时期内,授予区域销售副总裁固定数目的所谓“银弹”

固定交付日期类

有些请求与重大合同性义务相关,有些与法规要求相关,还有些与战略举措相关,比如收购了其他业务。这种性质的请求有直接或者间接的延期成本:

1.依据法律部门规定或者依照合同所列条款,延期至某日之后,公司将面临处罚(或罚金),这时需要企业自己直接承担付出的成本。

2.公司将被要求停止某些活动,如停止销售某类特殊物品或停止在某个区域的营运,直至符合某些需求才可重新开始,这种情况属于间接成本,是以损失某些机会的形式付出的成本。

标准类

大部分带有一定紧急度的工作项,都应当被视为标准类工作项处理。

无形类

无形类工作可能相当重要也很有价值,但是它们短期内不会带来具体可见的延期成本,即只要在其交付时间框架内,就不存在延期成本。

为服务类别设置规则条款

加急类的服务条款

1. 用白色卡片表示加急类请求

2. 任意时间,只能有一个加急请求。换言之,加急类服务的在制品限额时1

3. 符合要求的资源必须即刻配置给加急请求。其他工作将暂时搁置以便处理加急请求

4. 为满足处理加急请求所需,工作流任一节点的在制品限制都可以被打破。无需为家里处理事先预留产能

5. 如有必要,可以进行特殊(非周期性例行)发布,以便加急请求能够尽快发布或交付

固定交付日期类的交付规则条款

1. 用紫色卡片表示固定交付日期类的工作项

2. 在卡片的右下角标示所要求的交付日期

3. 分析固定日期类工作项,估算其规模及所需工作量,以评估所需的流动时间。如果工作项太大,则可以将之分解成若干小的工作项;然后单独评估每个小的工作项,以判断是否符合固定交付日期要求。

4. 固定交付日期类工作项放在待办项列表中,直到某一时间点被选到输入队列中。这个时间接近一个根据流动时间估算搞好可以按时交付的理想开始时间。

5. 相比其他低风险工作项,固定交付日期类工作项可以优先从待办项列表中拉出。它们比标准类工作项和无形类工作项优先拉出

6. 固定交付日期类工作项必须遵循在制品限制规则

7. 固定交付日期类工作项完成后出狱待发布状态,需要在等待发布队列中排队等候。它们可以在早于要求的交付日期前通过例行发布活动发布

8. 如果固定交付日期类工作项进度滞后,并且存在无法按指定日期发布风险,则可以将其服务类别调为加急类

标准类的规则条款

1. 使用换色卡片表示标准类工作项

2. 标准类工作项按照民主投票等约定做法排序进入输入队列,一般根据其延期成本或业务价值来进行选择

3. 标准工作项在系统中拉动时,遵循先进先出(FIFO)的原则。通常,再从输入队列拉入工作项时,如果没有需要优先选择的加急类工作项或固定交付日期类工作项,团队成员会先拉入最早进入队列的标准类工作项

4. 标准类工作项完成后,处于待发布状态,需要在等待发布队列中排队等候。它们会在下一轮例行发布活动中发布。

5. 无需估算标准类工作项的工作量大小和流动时间

6. 可以对标准类工作项进行分析,以判断其规模的数量级,一般可以分类小型(若干天)、中性(一两周)、大型(可能长达数月)三个级别。服务类别必须清晰地以可视化方式标示出来,例如,在卡片墙上通过不同颜色的卡片或者不同泳道来标识不同服务类别。

7. 大型工作项还可以分解成若干小型工作项。分解后的每个小型工作项可以单独进行排序和在看板系统中流动。

8. 标准类工作项通常会以m%的准时交付率在被选出后的x天内完成交付。

无形类的规则条款

1. 使用绿色卡片表示无形类工作项。

2. 无形类工作项按照民主投票等约定做法排序进入输入队列,一般根据其长期影响或延期成本进行选择。

3. 可以根据需要临时将无形类工作项拉入系统,只要么有其他更高级别的工作项,团队成员可以选择拉入一个无形类工作项,拉入时无需考虑该工作项时何时进入队列的。

4. 无形类工作项完成后,处于待发布状态,需要在等待发布队列中排队等候。它们会在下一轮例行发布活动中发布,或者也可以和其他工作项合并在一起发布。

5. 无须估算无形类工作项的工作量大小和流动时间

7. 可以对无形类工作项进行分析,以判定规模大小。大型工作项可以分解成若干个小型工作项。分解后的每个小型工作项可以单独进行排序和在看板系统中流动

8. 通常,无形类工作项需要让道与加急类工作项,以使后者优先得到处理。

9. 一般不必为无形类工作项制定服务水平协议。如有必要,该协议一般会远比标准类工作项的宽松,比如可能会定义为60天的交付期,准时交付率为50%

确定服务交付目标

通过这种将目标前置时间和准时交付率结合使用的办法,可以不用在一一分别对待每个工作项并为之一一进行估算及承若交付日期。你希望设定的前置时间目标大多数情况下时可以达成的,但是同时又具有足够的挑战性,以促使团队全力以赴地工作。

根据服务类别来配置产能

在一个WIP限额总数为20的看板系统,加急类1个占5%,固定交付日期类4个站20%,标准类10个占50%,无形类6个占30%

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容