中华人民共和国最高人民法院民 事 判 决 书（2020）最高法知民终657号上诉人（原审被告、反诉原告）：南京飞垦智能科技有限公司。住所地：江苏省南京市江北新区研创园团结路99号孵鹰大厦1080室。法定代表人：罗凤仪，该公司执行董事。委托诉讼代理人：曹静，上海段和段（南京）律师事务所律师。委托诉讼代理人：韩琦，上海段和段（南京）律师事务所律师。被上诉人（原审原告、反诉被告）：南京橙红科技股份有限公司。住所地：江苏省南京市雨花台区软件大道106号2幢1201-1室。法定代表人：刘义林，该公司董事长。委托诉讼代理人：张方强，北京观韬中茂（南京）律师事务所律师。上诉人南京飞垦智能科技有限公司（以下简称飞垦公司）因与被上诉人南京橙红科技股份有限公司（以下简称橙红公司）计算机软件开发合同纠纷一案，不服江苏省南京市中级人民法院于2019年12月28日作出的(2018)苏01民初1339号民事判决，向本院提起上诉。本院于2020年5月20日立案后，依法组成合议庭，并于2020年7月2日公开开庭对本案进行了审理，上诉人飞垦公司的委托诉讼代理人曹静、韩琦，被上诉人橙红公司的委托诉讼代理人张方强到庭参加诉讼。本案现已审理终结。飞垦公司上诉请求：1.撤销原审判决第二项、第四项；2.判令橙红公司赔偿飞垦公司经济损失2810000元；3.本案的全部诉讼费用均由橙红公司承担。事实与理由：（一）原审判决认定橙红公司已依约履行了合同义务的观点与事实不符。橙红公司未及时交付符合飞垦公司和项目现场实际要求的软件，已构成根本违约。按照《南京飞垦智能科技有限公司喀纳斯电子围栏项目软件开发维护合同》（合同编号NCH-1206-203，以下简称软件开发合同）中关于项目时间表的约定，橙红公司应于2017年8月15日之前交付飞垦公司经过验收的软件，但自2017年7月以来，飞垦公司组织橙红公司与案外人江苏北斗卫星应用产业研究院有限公司（以下简称北斗公司）两次现场测试均未成功，至2017年9月软件的“系统测试”仍未通过验收，此时项目现场因冬季封山无法测试并协调相关工作，北斗公司的软件平台也因缺少软件无法运行，飞垦公司合同目的已无法实现，橙红公司的逾期行为已经构成根本违约。（二）原审判决认定飞垦公司就案外人北斗公司与橙红公司之间的沟通协调负有责任，并据此认定飞垦公司应承担合同无法履行的主要责任无法律依据。飞垦公司在2017年7月两次组织橙红公司与案外人北斗公司现场测试，并在项目开发过程中就橙红公司与案外人北斗公司的相关技术问题进行了及时传达、通知与协调，飞垦公司已经尽到相关义务。在橙红公司延期交付软件且项目现场无法继续进行测试的情况下，飞垦公司没有义务进一步协调橙红公司与案外人北斗公司的沟通，不能因橙红公司与案外人的沟通协调等细节而忽视橙红公司软件无法通过项目现场测试的主要问题。（三）原审判决认定的飞垦公司在交付期限后仍与橙红公司沟通属于对合同交付期限延期的认可观点有误，更不应就此得出合同目的在延期后仍可以实现的结论。飞垦公司与橙红公司在交付期限后就项目问题继续进行沟通并不意味着飞垦公司对橙红公司未能及时交付软件的认可，飞垦公司有权视项目的进展以及合同目的能否实现的情形再决定是否对橙红公司采取法律措施，并非如原审判决认定的属于对合同交付期限延期的认可。此外，如上所述，飞垦公司签订合同的根本目的已无法实现，原审判决认为合同目的在项目延期后仍可以实现的观点是错误的。（四）飞垦公司所提交关于因橙红公司未履行合同义务而导致飞垦公司经济损失的证据均与本案有关，原审法院对此不予理涉，损害了飞垦公司的合法权益。橙红公司应交付软件属于案外人北斗公司开发软件平台的一部分，因橙红公司未及时完成软件开发导致软件平台无法使用，飞垦公司支付给案外人北斗公司的258万元软件平台开发费用无法达成合同目的，飞垦公司就该费用以及相关利息向橙红公司索赔，应当依法得到法院的支持。橙红公司辩称：原审判决认定事实清楚，适用法律正确，应当予以维持。理由如下：橙红公司依约履行了合同义务，橙红公司已经将软件上线至飞垦公司的云客户端，飞垦公司可以使用该软件。对于飞垦公司的损失，橙红公司不应当承担赔偿责任。橙红公司向原审法院提起诉讼，原审法院于2018年7月31日立案受理，橙红公司起诉请求：1.飞垦公司立即支付橙红公司项目款710000元；2.飞垦公司支付违约金（自2018年3月29日起按每日545元计算至实际付清之日止）；3.飞垦公司承担本案全部诉讼费用。事实与理由:乙方橙红公司与甲方飞垦公司双方签订软件开发合同，合同总价款1090000元。支付方式为：本合同生效之日起，甲方在收到乙方正规发票20个工作日内，甲方向乙方支付本合同总价款35%；甲乙双方共同完成软件的联调测试工作，乙方软件功能经过甲方验收后，甲乙双方签署《验收报告》，甲方在收到乙方正规发票后10个工作日内，甲方向乙方支付本合同价款的65%。橙红公司早已完成项目的开发，要求飞垦公司提供运行环境，组织测试和验收，飞垦公司迟迟不予回应同时也不支付剩余65%的项目款。因此，橙红公司诉至法院。原审法院审理期间，经法院释明，橙红公司变更诉讼请求为：解除其与飞垦公司所签订的软件开发合同，并要求飞垦公司赔偿其经济损失710000元。飞垦公司原审辩称：橙红公司未按约定交付验收合格的软件属严重违约，导致合同目的无法实现，软件交付的可能性已不存在，故飞垦公司不应再向其支付任何费用。尽管橙红公司称其于2017年8月11日上线测试的版本是成功的，但首先上线测试系橙红公司单方进行，飞垦公司并未参与，无法认可该测试结果，且橙红公司于2018年3月邮寄的验收申请函中自认其软件开发任务至2017年9月完成。橙红公司存在未按时交付验收合格软件的违约行为，应承担相应的违约责任。橙红公司应赔偿飞垦公司因其违约所造成的损失。飞垦公司向原审法院提出反诉请求：1.判令解除双方签订的软件开发合同；2.判令橙红公司赔偿飞垦公司因未按时交付验收造成的损失2810000元；3.判令本案诉讼费等所有费用均由橙红公司承担。事实与理由：飞垦公司与橙红公司签订了软件开发合同，合同组成部分包含合同正文、附件一《工作范围说明书》和附件二《保密协议书》。合同第六章关于双方权利与义务中第十二条第6项约定，橙红公司违约、管理不善、疏忽或其他过错，造成飞垦公司直接或间接的其他损失，应由橙红公司承担全部损失的赔偿责任。合同第十五章第三十条关于违约责任的约定为，如因橙红公司原因造成项目工期延误，应自逾期之日起每日支付合同总金额万分之五的违约金，如超过约定的项目完成时间15天仍未交付验收的，应赔偿飞垦公司因此而遭受的损失。在该合同附件一《工作范围说明书》中第三项对合同项目交付验收时间约定为2017年08月15日。合同生效后，飞垦公司按照合同约定向橙红公司支付合同总价款的35％，但橙红公司并未按合同约定交付验收合格的软件。在橙红公司开发软件过程中，飞垦公司一直积极配合橙红公司解决其开发过程中存在的问题，但几次邮件沟通问题后橙红公司就不再回应，因此测试一直都未能进行，橙红公司便一直未交付验收合格的软件，导致软件开发合同项目现已无法进行，合同目的无法实现，根据《中华人民共和国合同法》（以下简称合同法）第九十四条第四款的规定，软件开发合同应予解除。同时，因橙红公司不按时交付的违约行为给飞垦公司造成了巨大的损失，橙红公司应对此损失承担赔偿责任。针对上述赔偿问题，双方经协商未能达成一致意见，为妥善解决双方存在的问题，维护飞垦公司的合法权益，故诉至法院，请求依法支持飞垦公司的诉讼请求。橙红公司原审辩称：橙红公司已按照合同约定按时按量完成了软件开发工作，不仅已经合格部署至飞垦公司项目现场，而且上线至飞垦公司阿里云服务器上，均测试合格。飞垦公司作为项目总包方，其他协作方的过错或者单方作出的需求变更导致项目无法按时交付，该不利后果应当依合同相对性由飞垦公司与其他协作方承担，与橙红公司无关。原审法院认定事实：（一）合同的订立2017年5月，飞垦公司与案外人北斗公司签订了《新疆喀纳斯景区电子围栏项目合同书》（合同编号：BDJS-XSHT-17022-001）（以下简称电子围栏合同），项目建设内容为：1.建设3个卡口与服务中心的数据信息交互。2.建设2个卡口的手机2G信号捕捉。3.喀纳斯景区管理平台软件。合同总价3142000元，合同约定的交货日期为2017年5月20日。2017年6月，飞垦公司（甲方）与橙红公司（乙方）签订了软件开发合同（合同组成部分含合同正文、附件一《工作范围说明书》和附件二《保密协议书》），项目名称：喀纳斯电子围栏项目，合同价款109万元，单价1500元/人天，工作量33.4人/月(即726人天）。合同就履行期限、地址、方式，支付方式、双方权利与义务、交付物、质量要求及风险责任的承担、交付与验收、违约责任等事项作了约定。其中第五章支付方式约定：自本合同生效之日起，甲方在收到乙方正规发票的20个工作日内，甲方向乙方支付本合同价款的35％，即人民币380000元，按照本合同约定，甲乙双方共同完成软件的联调测试工作，乙方软件功能经过甲方验收后，甲乙双方签署《验收报告》，甲方在收到乙方正规发票后10个工作日内，甲方向乙方支付本合同总价款的65％，即人民币710000元。第六章双方权利与义务中约定甲方负责提供项目开发所需的运行环境；甲方负责项目完成后及时组织测试和验收，确认开发成果。乙方保证按照本合同约定的开发计划实施本项目，并满足甲方的功能需求、业务需求，按期完成项目的开发任务。第十章交付与验收约定：对所有的软件完成验收后，甲乙双方需共同签署验收报告。第十一章售后服务约定：本合同所涉及的软件，需由乙方提供12个月免费维护服务。免费维护服务期限以软件验收合格之日起计算。双方还在合同附件中对交付验收时间约定为2017年8月15日。附件一中对人员配备约定，乙方项目开发小组由卓明琴担任项目经理，项目成员共14人。合同附件一中所附项目时间表（里程碑计划表）：No.里程碑主要活动/可交付成果计划完成时间1项目立项立项会议，主要项目范围，项目团队搭建，团队沟通机制及汇报机制等2017/6/82沟通、需求、需求采集2017/6/143设备对接调试与底层通讯平台对接调试2017/6/16～2017/6/234界面设计完成界面设计2017/6/185开发编码发布演示版本2017/6/306开发编码发布测试版本2017/7/77系统测试编码完成且达到系统测试要求准则2017/7/218系统上线系统上线及试运行2017/7/21～2017/8/109交付验收签署验收文档2017/8/15（二）合同的履行2017年6月15日，由飞垦公司、橙红公司及北斗公司三方共同参与，就案涉项目LoRa协议透传对接、设备接口对接、LoRa下发指令对接、手环NFC设备对接、UI样式调整、LoRa基站调试等事项进行商议。飞垦公司于2017年7月16日，按约支付橙红公司380000元首期合同款。2017年7月8日至10日，飞垦公司、橙红公司、北斗公司三方前往新疆喀纳斯景区进行实地联调测试，未获成功，原因不明。2017年8月7日，飞垦公司首席技术官许珍邮件确认：1.目前已经基本完成LoRa基站与橙红后台通信接口的联调；2.橙红这边还需要完成功能：1）橙红后台的下命令操作界面；2）手环上行包解析没有报警信息，只能在设备管理里看到上行信息，在终端监控里没有；3）……需要橙红与北斗进行接口调试；3.……；4.关于橙红后台界面需要改进的功能：1）不能查历史原始数据库；2）手表模块丢包率统计；3）附件（……）。2017年8月8日，飞垦公司技术人员殷伟发送给橙红公司项目负责人周永明关于丢包率统计的邮件。2017年8月11日，橙红公司项目负责人周永明发送邮件给飞垦公司首席技术官“关于橙红和北斗联调LoRa基站控制指令下发协议存在的问题”，内容如下：1.原始方案：前往新疆部署710Demo项目前，我们与北斗见面沟通，确定由北斗多卡平台提供HTTP接口调用和设备响应结果异步回调的方案。……原始方案关键点是：设备平台下发的HTTP消息中，请求ID也是必要的，北斗平台将实际发给设备请求序列号绑定至请求ID上，当设备回复下发的序列号时需要将绑定的请求ID（而不是直接返回序列号）一并返回给橙红平台，橙红平台根据这个请求ID去对应用户在界面上的请求。2.变更协议1：在本周四，北斗提出要求变更协议，使用不同的交互方式，将多卡返回的原始报文直接转发到橙红平台，而不是通过HTTP接口响应，但是由于交互命令是一应一答的方式，一个请求对应一个应答。应答报文中并不包含请求的业务信息，导致单独只接受到转发的应答报文并不能完成完整的业务。3.变更协议2：在本周五，北斗提出另外一种协议变更方式，要求应用上层去处理底层的消息序列号。下发消息时，北斗要求橙红应用平台携带消息序列号，返回的应答消息，也由橙红应用平台去做消息序列号的匹配。这个方案将本应该由底层平台处理的消息序列号，转嫁给上层处理，这样会限制了未来的多机器部署能力。消息序号，应该由直接与底层设备连接的北斗后台来进行统一管理。且当前橙红应用平台也还对接底层自己的消息平台，这样应用平台无法统一，需要拆分为两套了。以上，需要飞垦作为项目总包方来对方案的合理性做进一步的审核，并协调各方的联调工作顺利开展。自2017年8月11日，橙红公司陆续提交其所开发软件至飞垦公司阿里云上线进行测试。2017年8月13日，飞垦公司首席技术官许珍发送邮件给其公司总经理罗凤仪“关于布道长度”，内容是：之前给出方案的时候是每隔五公里布置一台基站。基站之间相隔五公里，也就是单个基站的覆盖半径为2.5公里，这里面我特地预留了充足的余量，其中也考虑到为了大容量接入的因素。为什么到了甲方变成了基站覆盖半径为5公里了？2017年8月14日，飞垦公司软件工程师殷伟发送邮件给许珍，主题是关于“北斗多卡设备调试进展”。2017年8月21日，飞垦公司技术人员殷伟发送给橙红公司周永明关于“与橙红目前调试完成工作和存在的问题”的文件，邮件中确认目前基站与橙红公司后台协议的调试工作已经基本完成（包含8项工作）。其中提出以下存在问题：1.Web还没有下发控制命令及设置基站鉴权的界面；2.本地的升级工具；3.后台重启后，不保留基站之前的鉴权信息；4.地图显示有问题，只能显示半边。2017年8月30日，周永明发送邮件给橙红公司相关人员对上述存在1、4问题回复已经解决，第2个问题为新需求，尚未确定；第3个问题，因甲方暂停，无法调试。2017年9月14日，飞垦公司员工发送邮件给周永明，要求将软件协议从V0.7版本恢复至V0.5版本。2018年3月8日，橙红公司向飞垦公司发送邮件，提出验收申请，称其已经按照合同要求在2017年9月完成了所有软件开发任务并实现了软件功能，要求飞垦公司验收。2018年5月11日，橙红公司向飞垦公司发出律师函，称其已按约履行合同义务，要求飞垦公司支付项目余款710000元。双方就此产生纠纷。庭审中，橙红公司认为其已完成里程碑计划表中第八阶段的工作。根据合同约定，我公司人力投入量为726天，人工单价为每天1500元，扣除飞垦公司已支付的项目款38万元，飞垦公司应赔偿我公司损失71万元。飞垦公司认为橙红公司的工作应处于里程碑计划表中第七阶段，对橙红公司的赔偿款计算方式不予认可。（三）其他与案件相关的事实2017年7、8月，飞垦公司与新疆喀纳斯景区项目的管理方产生纠纷，新疆喀纳斯景区电子围栏项目停止。飞垦公司于2018年10月24日向法院提出鉴定申请，要求对橙红公司于2017年7月8日至2017年7月10日期间提供的计算机软件现场测试版本的完成度、完成质量进行司法鉴定。后其考虑到鉴定费用、鉴定环境等因素，撤回了鉴定申请。本案原审期间争议焦点：1.橙红公司是否按约履行了合同义务；2.本案合同是否应予解除及解除后的责任承担。原审法院认为，（一）橙红公司依约履行了合同义务本案双方当事人在案涉合同签订后，均依约履行合同义务，飞垦公司支付了首期合同款，橙红公司按项目内容进行软件开发，双方及北斗公司共同去新疆喀纳斯景区实地进行了现场联调，但未形成测试结果的书面文件，飞垦公司亦未能提交证据证明现场测试失败系可归咎于橙红公司开发的软件不合格。后期，橙红公司于2017年8月11日将所开发的软件上线至飞垦公司阿里云服务器进行测试。本案中，根据现有证据，验收日前，2017年8月11日，橙红公司项目负责人周永明发送给飞垦公司首席技术官邮件，说明橙红公司和北斗公司联调LoRa基站控制指令下发协议存在的问题及北斗公司提出新要求，而飞垦公司对此邮件提出的问题未作及时回应亦未及时协调各方工作，造成联调测试延时，故涉案项目未按时交付验收的主要责任在飞垦公司。另，鉴于涉案喀纳斯电子围栏项目的建设已停止，涉案合同目的已无法实现。橙红公司要求解除其与飞垦公司软件开发合同并要求赔偿经济损失的请求，应予支持。橙红公司要求飞垦公司赔偿其损失710000元。根据已查明事实，涉案项目并未进入交付验收阶段，依然处于系统测试阶段，选取橙红公司、飞垦公司一致认可的完成工作量时间节点（应以里程碑计划表中第七阶段为截止日），依据橙红公司、飞垦公司所签订的软件开发合同及合同附件约定的涉案软件项目内容、投入人工、工作期限、合同价款等，确定合同完成工作量的计算方法为：①根据合同履行情况，项目所处的“里程碑”阶段为项目时间表中的“开发编码”与“系统测试”之间；②鉴于橙红公司持续配合解决问题，并主动将软件部署在飞垦公司的阿里云上，以“系统测试”的最后一日，即2017年7月21日作为结算日，与项目立项时间比对得出两者相差的工作日天数为32天，乘以项目成员数（14人），再乘以人力单价（1500元/人天），从而计算出涉案合同完成工作量对应的合同款约为672000元。扣除飞垦公司已支付的项目首付款38万元，以及橙红公司后续的工作情况，酌情确定飞垦公司赔偿橙红公司经济损失30万元。（二）飞垦公司主张解除合同缺乏事实及法律依据对于飞垦公司提出橙红公司未按约交付合格软件，致使合同目的无法实现，要求解除双方所签合同。原审法院认为，虽然双方未在约定的时间对软件进行验收确认，但根据双方往来邮件显示，2017年8月15日前，橙红公司开发的软件上线进行了测试，2017年8月21日飞垦公司技术人员对测试的情况也给予确认并指出存在的问题。2017年9月，双方就涉案项目履行仍有邮件沟通。由此，可以视为双方对验收延期的认可。验收是当事人双方的权利与义务。橙红公司作为合同乙方完成开发工作后有义务及时向对方申请验收，而作为合同甲方的飞垦公司亦有义务及时督促对方，并严格按计划负责项目推进，及时组织测试和验收，确认开发成果，共同签署验收报告。橙红公司未于2017年8月15日提出验收申请，并不必然导致合同目的无法实现。飞垦公司认为橙红公司未按约定交付合格软件成果构成根本违约，要求解除合同，缺乏事实和法律依据，原审法院不予支持。飞垦公司还要求橙红公司赔偿其经济损失2810000元及逾期利息。由于飞垦公司提交的证据并非履行合同造成的实际损失，相关证据未被法院采信，故此诉讼请求缺乏事实和法律依据，原审法院不予支持。原审法院判决：（一）解除橙红公司与飞垦公司签订的《南京飞垦智能科技有限公司喀纳斯电子围栏项目软件开发维护合同》（合同编号NCH-1206-203）；（二）飞垦公司于本判决生效之日起十日内给付橙红公司赔偿款300000元；（三）驳回橙红公司的其他诉讼请求；四、驳回飞垦公司的反诉请求。如果未按本判决指定的期间履行给付金钱义务，应当依照《中华人民共和国民事诉讼法》第二百五十三条之规定，加倍支付迟延履行期间的债务利息。本诉受理费10900元，由飞垦公司负担7000元，橙红公司负担3900元。反诉案件受理费14640元，由飞垦公司负担。本院二审期间，当事人未提交新证据。原审法院认定的事实基本属实，本院予以确认。二审另查明：（一）关于电子围栏项目飞垦公司陈述，新疆喀纳斯景区管理委员会向飞垦公司征求电子围栏项目技术需求，飞垦公司基于上述需求向案外人北斗公司和橙红公司进行了邀约，后续飞垦公司分别与北斗公司、橙红公司签订协议，飞垦公司是电子围栏项目总包方。（二）飞垦公司与案外人北斗公司合同约定项目建设内容：1.建设3个卡口与服务中心的数据信息交互在3个卡口配备北斗高频度终端设备，在服务中心配备北斗高频度调度控制台，完成卡口搜集的数据向服务中心上报。2.建设2个卡口的手机2G信号捕捉在2个卡口配备嗅探设备，将一定范围内的手机2G信号的IMEI号码捕捉并传送到服务中心平台显示。3.喀纳斯景区管理平台软件建立“新疆喀纳斯景区电子围栏项目”软件平台，形成基于GIS地图、北斗定位等的可视化安全监管系统。（1）平台服务器的架设；（2）与嗅探设备对接，将嗅探到的手机IMEI号码数据对接到平台，进行人员信息数据的分析。（三）软件开发合同附件《工作范围说明书》约定的内容：2.项目工作概述之项目组织组织架构：甲方成立项目小组，负责前期需求宣讲，需求澄清，问题回复等，后期对乙方成果物进行测试、验收。乙方成立项目开发小组，负责项目的整体开发、测试、配合甲方联调、验收、上线支持工作，保证项目质量，保证开发进度；人员配备乙方项目开发小组，由卓明琴担任项目经理，项目成员共14人。3.项目工作安排之项目实施方法采用敏捷开发模式，项目经理负责需求沟通、任务分解，做到与甲方对项目目标的理解保持高度一致。项目时间表（里程碑计划表）略主要交付物说明：1.《业务需求分析说明书》2.《项目开发计划》3.《系统概要设计说明书》4.《系统详细设计说明书》5.《数据库设计说明书以及建库脚本》6.《项目测试报告》7.《系统编码规范》8.《系统安装手册》9.《用户操作手册》。（四）履行中往来邮件内容：1.2017年6月15日，飞垦公司、橙红公司与北斗公司三方会议，形成：1.平台方案，采用主界面北斗应用平台和橙红数据平台单独登陆方式。2.设备数据同步方式，北斗提供设备新增，更改，删除接口给橙红。3.业务数据汇总方式，上行数据双方相互透传，各自解析。4.需要新增一个数据比对工具，北斗和橙红数据同步，以免出现丢包，信息丢失。5.下行指令，飞垦（殷暐）列出给北斗。明确设备对接调试的协作方及时间：1.LoRa协议透传对接，飞垦提供数据包（橙红、北斗、飞垦，6.16）；2.设备接口对接（橙红、北斗，6.16-6.21）；3.LoRa下发指令对接（橙红、北斗、飞垦，6.16-6.28）；4.手环NFC设备对接（北斗、飞垦，7.15）；5.UI样式调整（橙红、北斗、飞垦，6.23）；6.LoRa基站调试（橙红、飞垦，6.16-6.23）。当日，飞垦公司将会议内容以主题为“喀纳斯二期6月15会议内容”邮件发送各与会方。2.2017年8月7日，飞垦公司首席技术官许珍发送主题为“后台系统还需要完成的相关工作和建议”邮件，邮件确认：1.目前已经基本完成LoRa基站与橙红后台通信接口的联调；2.橙红这边还需要完成功能：1）橙红后台的下命令操作界面；2）手环上行包解析没有报警信息，只能在设备管理里看到上行信息，在终端监控里没有；3）由于我们需要在北斗的web界面上看到手环数据，因此需要橙红与北斗进行接口调试，把我们阿里云上的数据转发给北斗-麻烦橙红和北斗尽快沟通给出时间表。3.LoRa基站与北斗多卡终端之间的串口接口已经调通，计划明天会在飞垦楼顶架设进行长时间测试。北斗这边还有通过多卡的下行功能未明确联调时间。4.关于橙红后台界面需要改进的功能：1）不能查历史原始数据库；2）（手表）模块丢包率统计；3）附件（测试反馈-170807）为本人今天测试所发现的一些问题；另外，关于橙红后台本人还有一些进一步的想法，希望一起讨论：1）这个后台系统是综合管理系统，不应针对新疆项目来实现，新疆项目仅仅应该是本系统的一个项目子集；2）本后台系统应该有两个主要的功能：a）管理，侦测和测试LoRa基站和相关的应用终端（应用终端应有很多种，定位终端只是其中一种）；b）项目管理，例如新疆项目，即属于其中的一个项目。3）附件《项目需求说明书》是早些时候考虑进行LoRa测试的时候提出的早期需求，仅供参考。3.2017年8月8日，各方邮件往来修改校对“GI项目说明书文档确认20170805”，项目软件定名为“飞垦科技LoRa智能终端霞客行1.0版”。4.2017年8月8日，飞垦公司技术人员殷暐发送主题为“关于丢包率统计”邮件给橙红公司项目负责人周永明，邮件记载：1.略；2.略；原因：1）模块每次需要与基站同步成功才会发送数据包，所以LoRa通信不存在连续丢了很多的情况。卫星通讯成功率也很高，除了北斗多卡。2）丢包率只作为通信质量的一个参考值。3.考虑到北斗多卡的情况。…有两个办法，第一，就是不计算北斗多卡的丢包；第二，就是改手表的协议，让手表每次上行包里带上时间。第二种办法，时间上传手表目前是支持的，只是上次不想改630验收过的协议，就让他们加到协议文档后面，作为可选项。我比较建议用第二种解决办法。5.自2017年8月11日，橙红公司陆续提交其所开发软件至飞垦公司阿里云上线进行测试。当天中午11：31：23-11：31：43，创建终端、创建基站（下行）成功，基站状态上报（上行）失败。2017年8月14日下午，设备状态上报（上行）成功，8月15日20：11：57，基站状态上报（上行）成功。6.2017年8月13日，飞垦公司首席技术官许珍发送主题为“转发：布道长度”邮件给其公司总经理罗凤仪，内容是：“之前给出方案的时候是每隔五公里布置一台基站。基站之间相隔五公里，也就是单个基站的覆盖半径为2.5公里，这里面我特地预留了充足的余量，其中也考虑到为了大容量接入的因素。为什么到了甲方变成了基站覆盖半径为5公里了？”该邮件内含2017年4月30日许珍发送主题为“回复：布道长度”邮件给吴宇超，邮件内容：“今天上午回的邮件信息理解错误，重新布置：每隔五公里布一台基站，在不考虑运营商的情况下：1.贾登峪到禾木，五台LoRa基站，头尾各加一台VSAT（共两台）；2.那仁到双湖，三台LoRa，一台VSAT；3.喀纳斯到白哈巴，三台LoRa，一台VSAT”。2017年4月29日吴宇超原始邮件内容：“以下为景区现在需要布设LoRa基站的步道长度资料，请计算下需要多少基站，总共四条步道，互不相连，彼此相距较远，具体情况如下：贾登峪到禾木23公里，那仁经双湖到三道湾15公里，喀纳斯到白哈巴17公里，喀纳斯到黑湖32公里，四条步道总计87公里”。7.2017年8月14日，飞垦公司软件工程师殷暐发送主题为“北斗多卡设备调试进展”邮件给许珍，邮件记载：“目前北斗多卡终端已经与基站接口调试工作已经基本完成，可以把基站上行发送到北斗后台。不过剩下的调试工作无法进行下去，主要是由于北斗与橙红后台的多卡终端接口协议还没有做好，无法发送下行。我了解到的情况是，我们之间的协议还没有最终确定，以至于没法开展调试工作。”“原先计划是8月11日前，去A栋楼顶架设一台与北斗多卡通信的基站，测试的时间本来就很紧，希望他们尽快给出时间点，我们才能继续北斗多卡与基站调试工作。”8.2017年9月14日，飞垦公司员工李丹丹发送主题为“主站与物联网基站远程通讯协议V0.77-27.pdf”邮件给周永明，内容为：“目前我们的软件协议已经升级到V0.7版本，现在需要恢复到V0.5版本，请评估，今天是否可以完成恢复！如完成不了，则需要多长时间可以？”本院认为，本案二审争议焦点问题是合同未履行完毕的违约责任如何承担。根据合同法第一百零七条的规定，当事人一方不履行合同义务或者履行合同义务不符合约定的，应当承担违约责任。根据软件开发合同第十三条、第十九条的约定，需乙方提交的文档，须按甲方要求的文档模板编写，交付物清单详见附件一：《工作范围说明书》，验收的主要标准为：应满足业务需求，符合设计要求；2.应满足《工作范围说明书》要求；飞垦公司负责前期需求宣讲，需求澄清，问题回复等，后期对乙方成果物进行测试、验收，橙红公司负责项目的整体开发、测试、配合甲方联调等工作。在案证据表明，实际履行中，自2017年8月11日，橙红公司陆续提交其所开发软件至飞垦公司阿里云上线进行测试，至8月15日，创建终端、创建基站（下行）成功、设备状态上报（上行）成功、基站状态上报（上行）成功。后续调试工作无法进行的原因，存在后台多卡终端接口协议没有确定、基站布置数量产生的基站覆盖半径等问题，而根据2017年6月15日三方会议形成的方案和设备对接调试的协作方，LoRa协议透传对接、LoRa下发指令对接均涉及案外人等三方当事人。2017年8月11日，橙红公司给飞垦公司“关于橙红和北斗联调LoRa基站控制指令下发协议存在的问题”邮件介绍了原始方案关键点和变更协议由来，提出需要飞垦公司作为项目总包方对方案的合理性做进一步的审核，并协调各方的联调工作顺利开展，而基站布置数量产生的基站覆盖半径问题与橙红公司无关联，由此，橙红公司已经阶段性履行了软件开发义务，后续项目调试未成功不能归责于橙红公司，飞垦公司系项目总包方，橙红公司负有配合测试义务，并无证据表明项目最终无法完成测试系因橙红公司未合理履行配合义务所致。在项目测试无法进行、项目已经停止的情况下，原审判决支持橙红公司解除合同并要求赔偿损失的请求并无不当，飞垦公司关于橙红公司应承担合同违约责任、要求橙红公司赔偿经济损失的上诉理由缺乏事实依据不能成立，本院不予支持。综上所述，飞垦公司的上诉主张不成立，本院不予支持，原审判决认定事实清楚，适用法律正确，应予维持。依照《中华人民共和国民事诉讼法》第一百七十条第一款第一项规定，判决如下：驳回上诉，维持原判。二审案件受理费14640元，由南京飞垦智能科技有限公司负担。本判决为终审判决。审 判 长  焦 彦审 判 员  钱建国审 判 员  魏 磊二〇二〇年十二月二十八日法官助理  祁 帅书 记 员  韩 丰裁判要点案号（2020）最高法知民终657号案由计算机软件开发合同纠纷合议庭审判长：焦彦审判员：魏磊、钱建国法官助理：祁帅书记员：韩丰裁判日期2020年12月28日关键词计算机软件；违约责任当事人上诉人（原审被告、反诉原告）：南京飞垦智能科技有限公司；被上诉人（原审原告、反诉被告）：南京橙红科技股份有限公司。裁判结果驳回上诉，维持原判。原判主文：一、解除南京橙红科技股份有限公司与南京飞垦智能科技有限公司签订的《南京飞垦智能科技有限公司喀纳斯电子围栏项目软件开发维护合同》（合同编号NCH-1206-203）；二、南京飞垦智能科技有限公司于本判决生效之日起十日内给付南京橙红科技股份有限公司赔偿款300000元；三、驳回南京橙红科技股份有限公司的其他诉讼请求；四、驳回南京飞垦智能科技有限公司的反诉请求。涉案法条《中华人民共和国合同法》第一百零七条法律问题违约责任裁判观点当事人一方不履行合同义务或者履行合同义务不符合约定的，应当承担违约责任。注：本摘要并非裁判文书之组成部分，不具有法律效力。