中华人民共和国最高人民法院民 事 判 决 书（2020）最高法知民终1691号上诉人（原审原告、反诉被告）：在线金融服务有限公司（OnlineFinanceServicesLimited）。地址：8BarbadosDrive，UnsworthHeights，Auckland，NewZealand.（新西兰奥克兰市安斯沃思岭巴巴多斯街8号）。代表人：李清。委托诉讼代理人：韩钰，广东金桥百信律师事务所律师。被上诉人（原审被告、反诉原告）：王智慧，男，1982年11月30日出生，汉族，住中华人民共和国广东省深圳市宝安区。委托诉讼代理人：赵廷凯，北京海润天睿律师事务所律师。上诉人在线金融服务有限公司（OnlineFinanceServicesLimited，以下简称在线金融公司）因与被上诉人王智慧计算机软件开发合同纠纷一案，不服中华人民共和国广东省深圳市中级人民法院于2020年6月28日作出的（2019）粤03民初2835号民事判决，向本院提起上诉。本院于2020年10月26日立案后，依法组成合议庭审理了本案。本案现已审理终结。在线金融公司上诉请求：1.撤销原审判决，依法改判或发回重审；2.本案的一、二审诉讼费均由王智慧承担。事实和理由：（一）原审判决对于王智慧的开发团队是否构成延期履行的事实认定错误。1.原审判决将“提交验收”与“通过验收”的概念混同使用，强行替换，曲解违约条款原意。原审法院根据在线金融公司所述“我只认可宽限两周，请（2018年）12月5日之前提交验收”即将验收日认定为在线金融公司与王智慧对原违约条款作出了变更，并达成了合意，将该概念直接替换成“未按期提交验收逾期超过40天的”，“提交验收”和“通过验收”是两个概念，原审法院在混同这两个概念后，据此认为违约条款已达成合意发生变更，应当以验收提交日（而非验收通过日）为基数来计算根本违约逾期期间，是错误的。假设原审法院认为应当重新起算违约逾期期间这个前提是正确的，按照《云泰保险平台软件开发合同》（以下简称《开发合同》）第11.1条约定原意，在线金融公司在其确定的提交验收宽限日期（2018年12月5日）逾期超过40天（2019年1月13日）后，仍旧无权与王智慧解约并清算违约责任，因为双方并未补充约定通过验收的日期，既然约定不明、措辞不清，王智慧可以继续无限期地违约。涉案项目本应于2018年10月16日完成开发，直至2018年12月5日仍未能提交验收，原审法院认定至2018年12月10日才提交项目成果验收申请的王智慧仅为瑕疵履行、在线金融公司无权解约，对该事实认定存在矛盾和错误。2.在线金融公司与王智慧对于开发周期的变更并未达成补充协议，也未达成合意，原审法院的认定有违在线金融公司的真实意思表示。在线金融公司提出最后宽限日期是基于如下事实：在线金融公司为项目可以顺利完工，被迫宽限王智慧最迟可以于2018年12月5日提交验收。在线金融公司与王智慧并未签订任何补充协议，在线金融公司仅宽限王智慧延期提交项目申请的最晚时间为12月5日，只要王智慧在12月5日提交全部项目验收申请即保留追究王智慧违约责任的权利，并未对《开发合同》的项目周期和开发时间作出任何补充变更，也未对违约条款作出任何补充变更。（二）原审法院对双方的责任承担事实认定错误、适用法律错误。1.开发合同并不存在约定不明、措辞不清之处。所有功能模块和功能点都有作进一步细化，且双方都提交了对于“云泰”十月新增改动点是否超出合同约定范围的数据对比分析，并不存在约定不明的情况。原审法院未明确指出开发合同约定不明的具体条款及措辞不清处，以概括性、总结性语句认定开发合同“约定不明、措辞不清”，实质上是对合同条款及其效力的否定，是不妥当的。《中华人民共和国合同法》中有明确的条文规定在合同条款“约定不明”时应如何处理，却未有规定涉及因合同“约定不明”应当判定合同双方当事人都承担履约过错，原审法院因为开发合同“约定不明、措辞不清”判定双方对合同解除都存在过错，是缺乏法律依据的。2.项目无法如期完成并非由争议引起，开发团队在开发过程中并未有中断，开发中断是发生于项目周期外，原审法院对该事实认定错误。截至2018年10月16日，王智慧都未能提起任何项目验收申请，无任何完工迹象，其开发进度远滞后于项目要求，而涉案项目本应于2018年10月16日完成开发，王智慧并未能在项目周期内完成项目验收。2018年10月20日，王智慧恶意单方停止项目开发，并强迫在线金融公司进行协商，一系列行为都是有预谋的，都系为掩盖其已违约的事实。项目的中断发生在项目周期外，涉案项目在开发中断前已然逾期，王智慧在2018年10月16日已经构成违约，因此，即使双方存在争议，也未导致开发团队在开发周期内的中断。3.在线金融公司对合同解除的后果并不负有责任，也无过错。在线金融公司在项目开发过程中对功能模块提出修改意见是其合法权利，在线金融公司也有权要求王智慧返工，这些行为都是合理合法合约的行为，在线金融公司并不存在过错。4.王智慧在已构成违约事实后，又单方擅自停工，存在过错，理应承担违约责任。（三）原审法院忽略了王智慧诸多违约的事实，原审判决的论述存在矛盾之处。1.原审法院忽略了王智慧已根本违约的事实。原审法院认为在线金融公司在2018年12月11日无单方解除权，当时王智慧仅为瑕疵履行。原审法院判决认定截止2019年4月7日双方的合同才解除，即便如此，截止双方合同解除之日，王智慧也只是完成了部分开发工作，并未实现全部技术成果验收合格，最终也没有实现开发合同的目的，已经构成根本违约，王智慧理应承担相应的违约责任。2.原审法院忽略了王智慧存在的其他违约事实。王智慧存在以下违约行为：王智慧在项目到期时并未完成验收，在合同周期内未能完成开发任务，已经构成违约。在在线金融公司提出项目修改意见后，在无合同约定依据也无相关法律规定的情况下，在开发项目已经超出合同周期的前提下，王智慧单方擅自停工，恶意磋商，强迫在线金融公司接受其提出的各项无理要求。王智慧未遵守验收的流程和规定，拒绝测试联调（用户测试），直接强行要求在线金融公司验收。王智慧提交的测试报告系伪造，在线金融公司已经提交测试报告详细分析，该测试报告连最基本的测试数据和测试用例都没有展示，详细对比几份测试报告，就可知后两份测试报告完全是复制粘贴产生的，原审法院认为无直接证据支持，对该违约事实认定错误。项目开发严重逾期，截至2018年12月10日，项目逾期已达55天，原审法院认为这仅是瑕疵履行，在线金融公司无权解约，也无权追究王智慧的违约责任，应当在项目已逾期50天的时候，再另行计算逾期周期40天，在线金融公司方有权追究王智慧的根本违约责任，该逾期计算方式有失公平公正。王智慧辩称：原审判决认定事实清楚，适用法律正确，请求驳回上诉，维持原判。在线金融公司于2019年4月28日向原审法院起诉请求：1.《云泰保险平台软件开发合同》已于2018年12月11日正式解除；2.王智慧退还已经收取的全部费用共70000元给在线金融公司；3.王智慧赔偿在线金融公司蒙受的损失，截至2019年3月12日止，包括律师费2万元、授权委托公证费57.50美元（折合人民币约386元）、使领馆认证费80新西兰元（折合人民币约367元）、国际邮费34.07新西兰元（折合人民币约156元），以上共计20909元；4.请求判令王智慧移交与《云泰保险平台软件开发合同》相关的所有材料，包括但不限于已开发（包括已开发未完成）的软件、程序、文档、相关图像。事实和理由：2018年6月13日，在线金融公司与深圳CloudStone软件开发团队（以下简称“开发团队”）签订《云泰保险平台软件开发合同》，在线金融公司为甲方，开发团队为乙方，开发团队的联系人为王智慧。因开发团队为未登记的组织，根据相关法律规定和合同约定《开发合同》纠纷所涉的民事责任承担主体为王智慧。2018年6月18日，在线金融公司向王智慧支付了首期款共7万元。2018年10月17日，开发团队并未如约按期完成开发项目的验收及移交，拒绝接受在线金融公司提出的项目修改意见，并无理要求增加原项目开发的费用。2018年11月，在线金融公司与开发团队多次协商，未果。开发团队以各种理由和借口推卸违约责任。2018年12月2日，开发团队省略了一系列项目验收流程，从开发团队单独内部测试完毕直接过渡至向在线金融公司申请验收，且仅申请整套保险软件系统平台的部分验收。2018年12月10日，开发团队向在线金融公司提起AndroidAPP软件功能交付申请，交付申请中，开发团队以操作手册翻版代替测试用例，拒绝提交源程序、文档、测试用例及测试结果等文档。在线金融公司根本无法开展正常的验收。2018年12月11日，在线金融公司向开发团队发出了解除《开发合同》的通知，并要求王智慧承担违约责任，赔偿实际经济损失，王智慧无任何回应。2018年12月24日，在线金融公司向王智慧发出律师函，再次要求王智慧承担违约责任。2019年2月14日，王智慧委托广东开野律师事务所发送律师函给在线金融公司，作出回应，拒绝承担其违约责任。王智慧在原审辩称：1.关于双方签订的《云泰保险平台软件开发合同》《云泰保险平台需求说明书》（以下简称需求说明书）明确约定了项目内容和范围，该约定是项目实施的依据。2.《开发合同》《需求说明书》所载明的项目内容和范围，是直接与项目报价和项目交付时间相关联的。3.在线金融公司在项目约定之外新增大量无关以及超范围需求是项目逾期的根本原因。4.王智慧不构成根本违约，《开发合同》应该继续履行。5.在线金融公司一直对王智慧的项目成果（含阶段性成功）的质量表示认可，王智慧也提供了完整的交付成果。6.在线金融公司拒绝验收王智慧交付的项目成果，缺少正当理由。7.在线金融公司的诉讼主张和行为缺少逻辑自洽。王智慧提出反诉请求：1.《云泰保险平台软件开发合同》继续履行；2.在线金融公司向王智慧支付项目价款人民币280,000元；3.在线金融公司向王智慧支付违约金（计算方法为：以人民币280,000元为基数，按照每周万分之五的标准自2018年12月25日计算至判决之日）；4.在线金融公司承担本案全部诉讼费用（包括但不限于案件受理费、保全费、执行费、鉴定费及评估费）；5.判令在线金融公司向王智慧赔偿因本案维权所产生的律师费用20000元。事实和理由：2018年6月13日，王智慧与在线金融公司签订《云泰保险平台软件开发合同》，由在线金融公司承揽云泰保险平台项目开发工作。项目价款为人民币350,000元，在线金融公司应分四期支付完成。2018年6月18日，王智慧收到在线金融公司支付的首期款人民币70,000元后，项目按照合同约定正式启动。2018年6月20日，在线金融公司要求王智慧提供demo，王智慧花费大量时间、精力、金钱为在线金融公司制作demo，因此影响项目正常开展。2018年9月下旬起至10月初，就在王智慧即将完成整个项目成果的前夕，在线金融公司在《云泰保险平台项目需求说明书》之外新增和变更了大量的项目需求。王智慧花了大量时间和精力配合整理在线金融公司需求，后经王智慧评估，该新增需求所需完成时间在五个月以上。项目收尾和交付不得不因此暂停。2018年10月底至2018年11月，王智慧与在线金融公司双方进行多次沟通谈判。王智慧明确告知合同之外新增和变更需求需要另外付费，在线金融公司则要求原价完成。2018年12月3日，在线金融公司同意在2018年12月5日接受王智慧提交验收申请。当月5日，王智慧向在线金融公司发出PC端软件和IOSAPP软件验收申请并提交相关文档。当月10日，王智慧向在线金融公司发出AndroidAPP验收申请并提请在线金融公司开始全面的用户测试和出具验收意见书。而就在同一日，在线金融公司向王智慧发出终止合同声明。项目开展以来，在线金融公司多次在合同之外变更和新增需求，客观上干扰了项目进度。且在线金融公司在项目即将收尾时搞突然袭击，要求王智慧免费完成工作量为五个月以上的新项目需求，最终导致项目逾期。后又佯装验收项目，骗取王智慧最终的项目成果后企图撕毁协议，拒绝支付项目报酬。在线金融公司在原审辩称：1.王智慧侵犯了在线金融公司的权益；2.王智慧已构成根本违约；3.王智慧逾期的免责理由不成立；4.王智慧伪造测试报告；5.王智慧的演示文档无法证明其实际交付了项目成果；6.王智慧故意利用合同漏洞推卸违约责任。王智慧逾期54天后仍无法实际交付项目成果，已构成根本违约。原审法院认定事实：2018年6月13日，在线金融公司（OnlineFinanceServicesLimited）与深圳CloudStone软件开发团队（王智慧）签订《云泰保险平台软件开发合同》，OnlineFinanceServicesLimited为甲方，CloudStone开发团队为乙方，其联系人为王智慧，地址为广东省深圳市宝安区卡罗社区3C708，即王智慧的身份证住址。李清代表合同甲方，王智慧代表合同乙方在《开发合同》上签字。《开发合同》第2.1.1条约定：为保证甲方“云泰保险平台软件开发项目”按时保质完成，乙方将根据甲方确认的需求分析报告完成该项目的全部软件开发任务，乙方知悉甲方的最终软件需求依据是甲方提交的需求分析报告，并为满足甲方对该软件的需求而承担并完成此软件的开发任务。《开发合同》第2.1.2条约定：甲方对软件的需求、软件的各项功能、性能需求详见2.2.2“项目内容”。《开发合同》第2.2.2.1条约定：开发云泰保险平台软件系统（乙方为甲方开发PCweb前端与后台，AndroidAPP，IOSAPP整套保险软件系统平台）。2.2.2.2软件功能要求：要求实现功能No终端功能模块详细技术参数1网站门户iosandroid基础功能用户能够注册账号，邮件激活账号，登录系统，能重置密码，登录进去后能看到个人信息2网站门户iosandroid报价申请用户输入个人信息，保额，险种和公司，生成报价，根据对比生成的报价，进行保单申请3网站门户iosandroid保单保全改单对于管理员已发送邮件到保险公司的保单，用户可以通过保单保全改单操作更改保单申请中的地址/卡号/电话/policyowner/保额等信息，用户可查阅申请的状态、申请明细，及修改前的保单信息4网站门户iosandroid退保申请用户填写退保信息，提交申请。能查阅退保申请的状态、申请明细，及相关联的保单信息5网站门户iosandroid理赔用户可以在网站进行保险理赔申请，查阅申请状态、申请明细及相关联的保单信息6网站门户iosandroid促销活动用户可以查阅保险公司、本公司以及第三方合作商家的促销信息7网站门户iosandroidRefund申请系统根据相关促销信息实现对客户的refund金额进行自动计算，可查阅、调整状态及查阅明细。8网站门户iosandroidReferral结算系统根据相关转介绍政策实现对客户的referral金额进行自动计算，可查阅、调整状态及查阅明细9网站门户iosandroid合作伙伴展现合作保险合作伙伴及非保险合作伙伴，展示合作伙伴基本信息、优惠信息等10网站门户界面功能包含联系我们，关于我们，设计春节、圣诞节、日常三个配色版本。春节和圣诞节配色上，除了颜色外，增加一些特定元素，比如灯笼、圣诞老人等,用户能切换中英文两种语言查看网站信息11后台运营管理基础功能用户登录进入系统，进行密码重置，个人信息修改。管理员能添加系统账号，并给账号分配角色12后台运营管理客户管理能看到网站注册的客户信息，能将客户加到黑名单，加到黑名单的邮箱和手机无法登录和再次注册13后台运营管理险种管理除了管理险种增删改查以外，还能为险种添加保险公司，以及添加对应的保单，退保，理赔申请的邮件模板14后台运营管理保单申请能查看用户申请的保单，能将用户保单发送给保险公司，更改保单状态，以及退回，作废保单的功能15后台运营管理保单题库能配置不同险种下不同保险公司保单申请的题库信息，以及答题之间的依赖关系16后台运营管理保单相关业务能查看并管理用户提交的保单保全改单申请，退保申请，理赔申请17后台运营管理Refund提现申请能管理用户的Refund提现申请18后台运营管理Referral结算申请能管理用户的Referral结算申请19后台运营管理合作伙伴管理展现在用户界面的合作伙伴信息20后台运营管理促销活动对不同公司不同险种进行促销活动配置管理21后台运营管理报表管理清单及统计报表，包含保费统计，佣金统计和退保统计22后台运营管理系统配置增加系统变量，对全局的一些参数进行配置，减少开发部署成本23后台自动运行任务后台调度自动向客户发送节日关怀邮件，生日邮件，refund提现提醒，Referral结算提醒，welcomeletter邮件等24后台运营管理待办事项对各类待办事项进行提醒赠送功能1后台运营管理APP版本管理管理ios，android的app版本，能在用户打开app时控制用户强制升级或非强制升级app版本2后台运营管理权限管理系统管理员可以给用户配置角色，可以配置角色相应的权限3后台运营管理邮件配置管理系统管理员可以配置邮件模板，可以手工指定邮件发送第3.1条约定：全部项目的开发周期为4个月。本条规定的开发周期是指从合同签订乙方收到首付款之日起直至本合同9.4条规定的“验收合格后，双方签署验收报告正式移交”之日止。第4.1条约定：“甲方有权监督乙方按计划完成开发任务，接收乙方开发进度报告；甲方有责任及时书面解答乙方关于需求说明的质疑，如果因为甲方没能及时解答导致相关功能点逾期交付，不视为乙方违约，双方协商并制定书面的功能点验收时间及变更方案。甲乙双方共同参加测试与验收。”第7.1条约定：开发费总额为350000元整（人民币叁拾伍万元整）。包括PCweb前端与后台（300000人民币）、AndroidAPP（20000人民币）及IOSAPP（30000人民币）三部分。第7.2.1条约定：本合同签订，双方确定开发计划之日起七日内支付本合同总金额的20%，即70,000元整（人民币柒万元整）。第7.2.2条约定：按照需求文档，在乙方所有的软件功能开发完成，联调&测试通过甲方验收，乙方收到款项，提供app和PCweb前端所有源代码给甲方。软件正式验收合格之日起七日内支付本合同总金额的另40%，即140,000.00元整（人民币壹拾肆万元整）。第7.2.3条约定：APP和PCweb成功部署上线，各项功能通过甲方验收，乙方收到款项，提供PCweb后台所有源代码。软件正式验收合格之日起七日内支付本合同总金额的另30%，即105,000元整（人民币壹拾万伍仟元整）。第7.2.4条约定：本软件正式整体验收合格之日起，进入产品维护期，乙方维护6个月，甲方向乙方支付本合同总金额的5%，即17,500元整（人民币壹万柒仟伍佰元整）；乙方维护满1年，甲方向乙方支付本合同总金额的5%，即17,500元整（人民币壹万柒仟伍佰元整）。第7.4条约定：甲方将以现金或银行转帐的形式支付给乙方开发费用。乙方代表人：王智慧开户银行：招商银行深圳高新园支行帐号：62×××87第9.1条约定：乙方软件开发完成，应首先在乙方内部进行软件功能测试及压力测试。内部测试完成后，提交源程序、文档、测试用例及测试结果给甲方，确定用户测试开始日。用户测试中甲方提出新要求不得与软件需求分析报告、软件功能要求书相悖，双方协商提出修改方案进行修改，乙方提交定制开发程序的源程序和文档给甲方。第9.2条约定：联机安装调试完成后，乙方向甲方提交项目验收申请报告，由甲方组织项目验收。乙方提出验收请求15日内甲方无正当理由仍未组织验收视为验收合格。甲方组织验收时的标准为：乙方开发的软件能否实现本合同2.2.2中项目内容描述以及本合同签订后的一切补充协议和本合同或补充协议软件开发功能范围内通知中对项目内容及功能的修改和补充（以下统称“验收标准”）。第9.3条约定：验收应当按照验收标准的功能描述分项进行，验收中出现问题时，应当注明问题所在。对验收中发现的问题，在双方协商认证之后，乙方在15日内解决出现的问题确保验收合格。如果由于乙方的原因，乙方在本合同3.1条规定的开发周期届满时仍然无法验收合格的，则视为乙方不能完成工作，按照本合同11.1的规定处理。由于甲方的系统需要上线运营，如果由于当地法律法规，或者是AndroidAPP发行渠道、IOSAPP发行渠道的上线发行规则影响甲方的系统正常上线的，乙方会尽最大努力整改技术领域的问题，如果是软件开发技术原因导致的，乙方需要承担责任，软件开发技术以外的原因导致的无法上线，乙方不需要承担责任。第9.4条约定：验收过程应当详细记载。验收合格后，双方签署验收报告正式移交开发程序的源程序和文档。《开发合同》第十一章“违约责任及合同的变更和解除”中第11.1条约定：乙方逾期未全部完成开发工作，每周按照本合同总金额的万分之五向甲方承担违约责任。逾期超过40天的，或虽开发完成但未按期通过甲方验收逾期超过40天的（软件开发技术以外的原因导致的延期不在此情况包含的范围内），甲方有权解除合同，并要求乙方退还相关资料，乙方应当退还已经收取的全部费用并赔偿甲方蒙受的损失，乙方已开发（包括已开发未完成）的软件、程序、文档、相关图像及涉及的任何内容的全部知识产权归甲方所有，乙方应在退还材料时将程序移交甲方，并同时移交所有相关材料。如果只是很少部分的功能还不够完善，甲方也可以选择让乙方在项目维护期不断完善方式处理。在项目开发周期内，若甲方或乙方单方因故需要调整开发周期，双方应进行协商，达成的一致意见以书面签署的补充协议确定。第11.2条约定：甲方未按时付款，每周按照逾期未付款项的万分之五承担逾期付款的违约责任，逾期超过40天，乙方有权解除合同，甲方应支付已完成工作进度的相应费用并赔偿乙方蒙受的损失，在乙方收到甲方应支付的相应费用的情况下，所有开发（包括已开发未完成）的软件、程序、文档、相关图像及涉及的任何内容的全部知识产权归甲方所有。第11.3条约定：因乙方的原因造成项目未通过甲方验收，视为乙方无法完成开发工作，按本合同11.1条的规定处理。如果只是很少的部分功能不够完善导致验收无法通过，甲方也可以选择让乙方在项目维护期来逐步完善相关功能的方式来处理。第11.4条约定：如果乙方无法做到本合同2.3.1条的规定，乙方需要在甲方敦促下按照2.3.1条的相关规定和标准进行整改，如果乙方拒绝整改，甲方有权跟乙方确认赔偿事宜，以甲方已经支付给乙方的总金额为限。第11.5条约定：如果乙方由于不遵守此合同的约定出现违约，发生赔偿责任事项，甲方有权向乙方代表全额追索。第11.6条约定：如果甲方在超过本合同约定开发周期结束后1个月内，依然不能提供本合同软件功能要求中部分功能开发所需的数据和信息，乙方可以先将在甲方已经提供了相关数据和信息的功能开发并上线并交付给甲方并进入项目维护期，而不是无限期等待甲方去获取开发必须的相关数据和信息。软件功能要求中剩下的(未提供开发必须的数据和信息的)功能，乙方在维护期继续为甲方开发设计并上线交付，直到维护期结束。第11.7条约定：当前合同开发周期内，除非甲乙双方对软件功能需求做书面变更产生的补充协议或者条款，只做人身险和健康险两大险类。2018年6月13日，在线金融公司与深圳CloudStone软件开发团队（王智慧）同时签订了《保密协议》。2018年6月17日，李清向王智慧个人账户转账人民币70000元整，作为项目首期经费。2018年6月18日，王智慧出具收款收据，表示收到在线金融公司李清交付的合同首期开发费用人民币70000元整。从双方当事人提交的往来微信聊天显示，双方自2018年5月份至2018年11月份，由王智慧、喻高咏代表软件开发团队，由李清代表在线金融公司在微信群“云泰项目PCWEB讨论组”对云泰保险平台软件开发的相关问题进行沟通和磋商，11月份，双方发生纠纷后，又新建立了名为“云泰项目群”，进行沟通和磋商。双方自2018年5月10日开始沟通至2018年6月13日正式签订涉案合同，对开发周期、合同金额、开发需求进行了反复磋商。2018年6月20日，王智慧在微信中称：“在产品真正成型之前，都会有阶段性的demo，这在新西兰叫敏捷开发”，李清表示“demo出来以后，我想拿给某些保险公司看”。2018年8月29日，李清称“demo我需要实际页面，PPT不合适，团队先集中精力把demo弄下，之前说7月底就能出现，现在8月底还没弄好，有点说不过去”，王智慧回复称“喻高永请按照布总的要求发布一个demo版本给布总使用，近期其他开发工作暂停，把布总的这个需求先满足了，再按原计划继续开发”，李清回复“最新好几个保险约我开会，看看进度我快拖不下去了”。2018年9月25日，喻高咏表示“今晚会把进度发出来，计划国庆节完成所有端的开发”，李清称“国庆节把PC和APP都做完？”“我目前的感觉，除了页面设计外，业务上还很不成熟。实话说，我感觉离测试远着呢…”。2018年10月16日，喻高咏表示“看到昨天的反馈，主要很多是之前都没有提到过的，我们是按照之前沟通的来定义进度的”，李清回复“大家都没提，我以为是在开发过程中沟通细节”，喻高咏回复“是啊，10月份以前提的，我们应该都改了”，李清回复“APP先停下吧，全力搞PC端，PC端搞完了，再弄APP。PC除了界面，主要就是把accuro和sovereign搞通…”。2018年11月3日，王智慧表示“根据我们的合同，我们是开发完合同上的各个功能模块就要提交功能验收申请的，目前你提出的这些具体的需求，对于可行的能实现的功能和效果，我们会逐步按照你的要求实现，但是无法在功能验收阶段全部实现”，李清回复“有些主要功能必须得含在里面，不能含在里面的上线也没有任何意义”。2018年11月7日，李清向王智慧的开发团队微信发送《关于云泰保险项目开发争议的书面意见》，表示“若贵方认可我方意见，我方同意只要贵方在2018年底前将PC平台交付验收，我方放弃追索贵方开发延期的一切责任”。2018年11月14日，开发团队的喻高咏在微信群发送《关于云泰保险项目开发争议乙方复函的回复》，表示“如果从2018年11月15日起的两周内，甲乙双方依然无法达成共识，原《合同》自动作废，双方协商合同终止以及后续收尾事宜”。2018年11月15日，开发团队的喻高咏在微信群发送了《云泰10月新增改动点》，李清邮件发送了《关于云泰保险项目开发争议乙方复函的回复》，表示：“我方认可贵方自（2018年）11月8日开始暂停项目，但以2周为限”“我方愿意将暂停项目的两周考虑在内，请贵方按原计划最晚于（2018年）12月5日提交验收”。2018年11月17日，王智慧在微信群称：“目前是喻工负责谈判，以他的意见为主。我是乙方谈判观察者，主要是对谈判过程知情，主要谈判工作由喻工执行”。2018年11月21日，喻高咏微信发送了《关于甲方2018年11月15日回复的回复函》，表示“在目前这个阶段我方不接受任何双方已经签订合同以外的以其他形式提出来的大规模新增改动点开发任务”“我方正在按照原合同的内容准备向贵公司提交功能交付版本”。2018年11月22日，李清发送邮件称：“因双方无法于（2018年）11月8日之后的两周内就争议部分达成协议，故我方决定终止本次关于争议部分的协商。请贵方按照已确定的方案，不晚于（2018年）12月5日提交验收”。2018年11月26日，李清微信称：“我只认可宽限两周，请（2018年）12月5日之前提交验收”。2018年12月2日，开发团队的喻高咏发出提出《云泰保险平台PC端软件系统功能交付申请》（不含AndroidAPP、IOSAPP），称已经完成PC端软件系统功能开发与自测工作，提出功能交付申请，请甲方在接下来的15个工作日内完成功能验收。2018年12月3日，在线金融公司李清向王智慧的开发团队发出《云泰保险平台PC端软件系统功能交付申请的回函》，表示“一、提交用户测试，未完成用户测试工作之前，无法组织验收；二、贵方应于12月5日完成第9章第9.4款之工作移交，但我方同意贵方自12月5日提交验收”。2018年12月5日，王智慧的开发团队发出《乙方软件系统功能交付申请2018年12月5日补充说明》，表示对于乙方提出的文档要求，已于2018年12月5日提交；AndroidAPP软件功能验收申请也将于近期提交，请甲方先验收PC端软件和IOSAPP软件；关于用户测试并非要由乙方完成，也不是申请功能验收之前必须完成的。2018年12月8日，在线金融公司李清微信称“因为我已经打定主意解约了”“说实话，我现在没法同意验收就是一旦我同意，我以后就不可以再以你们超期作为解约的理由。我就要以验收不通过作为理由，从目前的情况看，对我限制太大。除非达成补充协议，否则我不能说这个话”“验收肯定是没有办法的，如果能达成进一步的补充协议，就等补充协议的内容都做好之后再一步一步，用户测试、验收、上线移交”。2018年12月10日，王智慧的开发团队发出《乙方AndroidAPP软件功能交付申请》。2018年12月11日在线金融公司李清向王智慧的开发团队发出《关于解除〈云泰保险平台软件开发合同〉的通知》，表示正式通知解除合同，并要求退还所付合同款70000元，并移交已开发完成的所有材料，解除通知的落款时间为2018年12月7日。2018年12月24日，在线金融公司李清向王智慧发出《关于解除〈云泰保险平台软件开发合同〉并要求王智慧承担违约责任的通知》的律师函。2019年2月14日，王智慧向在线金融公司李清发出《律师函》。2019年3月6日，王智慧回复李清邮件称：“我方不接受你单方面提出的解约通知及其条款，请你继续履行双方签订的合同”。2019年4月28日，在线金融公司提起诉讼，请求解除涉案合同，双方进入诉前调解程序，因调解不成，于2019年7月16日立案。原审法院认为，虽然合同约定全部项目的开发周期为4个月，自2018年6月18日起算，但在实际履行过程中，因双方对开发内容发生分歧，导致开发搁置，后双方已经达成合意，开发团队最晚于2018年12月5日前提交验收，但对开发成果须满足何种需求标准双方仍未达成合意。根据查明事实，2018年12月2日，开发团队提出PC端项目验收申请，2018年12月5日，开发团队交付IOS端和PC端项目成果，2018年12月10日，开发团队交付Android端项目成果，在线金融公司以材料不齐为由，拒绝验收，并于2018年12月11日提出解除合同。关于在线金融公司所提开发团队内部测试报告造假以及开发团队拒绝测试联调的说法，并无直接证据支持，该说法不予采纳，相反在线金融公司李清在12月8日明确表示：“我现在没法同意验收就是一旦我同意，我以后就不可以再以你们超期作为解约的理由，我就要以验收不通过作为理由。”开发团队交付Android端项目成果确实逾期了5天，属于瑕疵履行，但根据合同约定，只有在逾期超过40天的情况下，甲方才有权解除合同，故在没有达到约定解除事由的情形下，在线金融公司不享有单方解除权，只能合理选择减少第一期开发费用等要求，不能以瑕疵履行为由在（2018年）12月11日或24日通知解除涉案《开发合同》。关于合同是否解除，首先，在双方11月份因“10月新增改动点”是否属于涉案合同的“项目内容”发生矛盾时，王智慧的开发团队就表示“如果从2018年11月15日起的两周内，甲乙双方依然无法达成共识，原《合同》自动作废，双方协商合同终止以及后续收尾事宜。”李清亦在12月11日通过邮件正式通知解除合同，虽然王智慧在收到在线金融公司通知解除合同后，又请求继续履行合同，但此时双方仍未就“10月新增改动点”是否属于涉案合同的“项目内容”达成协商一致，涉案合同已无实际履行的可能性，合同目的已无法实现，又考虑到双方在发生纠纷后的协商中，均表示过解除合同的意愿，故判决涉案《开发合同》自在线金融公司向原审法院提起诉讼之日起解除。关于在线金融公司请求判令王智慧退还已经收取的合同款人民币70000元，根据查明事实，王智慧虽然没有在合同约定的时间内实现全部技术成果验收合格，但其确实已经完成了部分开发工作，且在开发过程中在线金融公司对开发团队的部分工作亦予以认可，故综合考虑技术开发已实际完成的工作量、双方在履约过程中的实际付出情况等事实，根据公平原则和诚实信用原则，对于在线金融公司请求返还已支付的首期开发经费的主张，不予支持。关于王智慧请求在线金融公司支付剩余合同款人民币280,000元及违约金的主张。经查，剩余合同款项由一期开发款人民币140,000元、二期开发款人民币105,000元以及第三期产品维护款人民币35，000元三部分组成，根据双方签订的《开发合同》的约定，第一期开发为：软件功能开发完成，在联调&测试通过甲方验收，软件正式验收合格之日起七日内甲方支付本合同总金额的另40%，即人民币140,000元整。乙方收到款项，提供app和PCweb前端所有源代码给甲方；第二期开发为：APP和PCweb成功部署上线，各项功能通过甲方验收，软件正式验收合格之日起七日内支付本合同总金额的另30%，即人民币105,000元整，乙方收到款项，提供PCweb后台所有源代码；第三期为产品维护期，乙方维护6个月，甲方向乙方支付本合同总金额的5%，满1年后，再支付本合同总金额的5%。原审庭审中，双方确认在第一期开发时，双方即发生纠纷，项目延期，双方虽然对最晚交付时间达成了合意，但对开发成果须满足何种需求标准仍未达成合意。因现有证据无法证明涉案软件通过甲方的正式验收合格，亦没有证据证明涉案软件已经上线正式运营，且无软件功能技术问题，故按照双方合同约定支付剩余80%尾款的条件尚未成就，王智慧请求在线金融公司支付剩余三部分的合同尾款的主张，没有事实和合同依据，不予支持。因双方在签订合同时约定不明、措辞不清，导致双方对“乙方开发的软件能否实现本合同2.2.2条中项目内容描述以及本合同签订后的一切补充协议和本合同或补充协议软件开发功能范围内通知中对项目内容及功能的修改和补充”存在争议，这就导致了开发团队在开发过程中的中断和延迟，也导致在线金融公司就开发成果是否实现合同目的无法进行验收，双方对最终导致合同解除的后果都负有一定的责任，且如前述，按照双方合同约定支付剩余尾款人民币280,000元的条件尚未成就，故王智慧要求在线金融公司以人民币280,000元为基数，按照每周万分之五的标准支付违约金的诉讼请求，既无合同依据，也无法律依据，不予支持。关于在线金融公司请求判令王智慧移交与《云泰保险平台软件开发合同》相关的所有材料，包括但不限于已开发（包括已开发未完成）的软件、程序、文档等的诉讼主张，根据已查明的事实，下载地址、登录密码、用户手册和测试报告等相关材料，开发团队已经通过邮件交付给在线金融公司，至于涉案软件的app、PCweb前端、后台的源代码等资料，根据合同约定，只有在验收合格、在线金融公司支付完对应的合同款项后，王智慧才能移交，故在在线金融公司未支付第一期、第二期合同款的前提下，在线金融公司就要求王智慧移交相关源代码等诉请，缺乏合同依据，不予支持。关于双方互诉对方承担律师费、公证费等诉讼支出的诉请，本案为合同纠纷，双方该诉讼请求缺乏合同和法律依据，不予支持。原审法院判决：一、《云泰保险平台软件开发合同》于2019年4月28日解除；二、驳回在线金融服务有限公司（OnlineFinanceServicesLimited）的其他诉讼请求；三、驳回王智慧的诉讼请求。本诉案件受理费人民币2072.72元，由在线金融服务有限公司承担，反诉案件受理费人民币5508.18元，由王智慧承担。本院二审期间，在线金融公司未向本院提交证据。王智慧为证明其主张，向本院提交了五份证据。在线金融公司的质证意见为：王智慧提交的五份证据均为一审证据。本院的认证意见为：王智慧提交的五份证据均为一审证据，不属于二审中的新证据。原审查明的事实基本属实，本院予以确认。本院认为，本案的争议焦点问题是：（一）王智慧的开发团队是否构成延期履行；（二）本案民事责任应当如何承担。（一）关于王智慧的开发团队是否构成延期履行《中华人民共和国合同法》第六十条规定：“当事人应当按照约定全面履行自己的义务。当事人应当遵循诚实信用原则，根据合同的性质、目的和交易习惯履行通知、协助、保密等义务。”在线金融公司上诉提出，王智慧的开发团队构成延期履行，对此，本院分述如下：第一，关于《开发合同》是否存在约定不明、措辞不清之处的问题。《中华人民共和国合同法》第十二条第一款规定：“合同的内容由当事人约定，一般包括以下条款：（一）当事人的名称或者姓名和住所；（二）标的；（三）数量；（四）质量；（五）价款或者报酬；（六）履行期限、地点和方式；（七）违约责任；（八）解决争议的方法。”涉案《开发合同》的内容没有违反法律、行政法规的强制性规定，合法有效，对当事人具有法律约束力，当事人应当按照合同约定履行自己的义务。本案中，在线金融公司主张，《开发合同》只是功能的细化以及对于项目BUG的更正，基本可以涵盖在合同约定的24项内容之内，双方对于所有功能模块和功能点都有作进一步细化；王智慧辩称，在线金融公司对于合同约定的软件功能有大量新增需求和变更，合计达到137项之多，《开发合同》确实存在约定不清的问题。对此，本院认为，从《开发合同》约定的具体内容来看，《开发合同》“2.2.2.2软件功能要求”约定的“详细技术参数”均是以一句话或一个短语的形式概括描述功能要求，其约定的技术参数存在约定不详细、不具体、不明确的地方，由此导致的结果是，双方当事人对于开发内容产生重大分歧，在线金融公司主张王智慧应当开发出符合实际需求的软件，王智慧则认为其应当严格按照合同约定的内容开发软件。第二，关于开发中断是否发生于项目周期外的问题。在线金融公司诉称，项目无法如期完成并非由争议引起，开发团队在开发过程中并未有中断，开发中断是发生于项目周期外；王智慧辩称，在线金融公司不断增加和调整软件功能，导致项目开发延期，并且，在线金融公司要求王智慧6次提交demo，影响了项目开发进度。本院认为，《开发合同》确实存在约定不明、措辞不清之处，双方当事人在合同履行过程中进行了一系列的沟通和协商，在此情况下，本案不能认定开发中断发生于合同约定的项目周期之外。第三，关于原审判决是否混淆“提交验收”与“通过验收”概念的问题。本院认为，《开发合同》并未约定“提交验收”或“通过验收”的概念，2018年11月15日，在线金融公司代表人李清发送邮件表示：“我方认可贵方自（2018年）11月8日开始暂停项目，但以2周为限”“我方愿意将暂停项目的两周考虑在内，请贵方按原计划最晚于（2018年）12月5日提交验收”，在此情况下，原审判决认定“双方已经达成合意，开发团队最晚于2018年12月5日前提交验收”，并无不当。更何况，在线金融公司代表人李清在12月8日明确表示：“我现在没法同意验收就是一旦我同意，我以后就不可以再以你们超期作为解约的理由，我就要以验收不通过作为理由。”由此可见，在线金融公司不同意验收的原因在于该公司为了争取对己更加有利的局面，而并非是由于王智慧的开发团队构成延期履行。据此，在线金融公司关于王智慧开发的项目逾期已达55天以及王智慧构成根本违约的上诉理由均不能成立。第四，关于王智慧的开发团队是否构成延期履行的问题。《开发合同》第十一章“违约责任及合同的变更和解除”第11.1条约定：王智慧逾期未全部完成开发工作，逾期超过40天的，或虽开发完成但未按期通过甲方验收逾期超过40天的（软件开发技术以外的原因导致的延期不在此情况包含的范围内），在线金融公司有权解除合同。本案中，王智慧的开发团队交付Android端项目成果确实逾期了5天，但逾期交付软件成果5天属于瑕疵履行，并不构成根本违约。另外，在线金融公司诉称开发团队内部测试报告造假，因该公司提交的证据无法证明其主张，本院不予采纳。至于在线金融公司诉称开发团队拒绝测试联调（用户测试）的说法，本院认为，《开发合同》并未约定“用户测试”，并且，根据本案查明的事实，涉案项目未进行验收的原因在于在线金融公司代表人李清不同意验收，并非王智慧的开发团队拒绝用户测试。综上，王智慧的开发团队构成延期履行5天，该行为属于瑕疵履行，并不构成根本违约。（二）关于本案民事责任应当如何承担的问题关于解除合同。承前所述，根据合同约定，只有在逾期超过40天的情况下，在线金融公司才有权解除合同，在没有达到合同约定解除事由的情形下，在线金融公司无权单方解除合同，不能以瑕疵履行为由在2018年12月11日或24日通知解除涉案《开发合同》。双方当事人在发生纠纷后的协商中，均表示过解除合同的意愿，原审判决涉案《开发合同》自在线金融公司向原审法院提起诉讼之日起解除，并无不当。关于民事责任。《中华人民共和国合同法》第九十七条规定：“合同解除后，尚未履行的，终止履行；已经履行的，根据履行情况和合同性质，当事人可以要求恢复原状、采取其他补救措施，并有权要求赔偿损失。”本案中，双方当事人因发生纠纷致使涉案合同无法继续履行，双方当事人签订的涉案合同存在约定不明、措辞不清的问题，由此导致软件开发过程的中断和延迟，也导致开发成果是否符合合同约定难以进行验收。本院认为，双方当事人上述问题均有过错，双方对《开发合同》解除的后果都负有责任，应根据各自的过错程度合理分担合同未履行完毕造成的损失，在此情况下，原审判决驳回在线金融公司的其他诉讼请求以及王智慧的诉讼请求，符合上述法律规定，本院依法予以维持。综上所述，在线金融公司的上诉请求不能成立，应予驳回；原审判决认定事实基本清楚，适用法律正确，应予维持。依照《中华人民共和国民事诉讼法》第一百七十条第一款第一项规定，判决如下：驳回上诉，维持原判。二审案件受理费人民币2072.72元，由在线金融服务有限公司（OnlineFinanceServicesLimited）负担。本判决为终审判决。审 判 长 童海超审 判 员 崔 宁审 判 员 于志涛二〇二〇年十二月十五日法官助理 张 楠书 记 员 宋子怡裁判要点案号（2020）最高法知民终1691号案由计算机软件开发合同纠纷合议庭审判长：童海超审判员：崔宁、于志涛法官助理：张楠书记员：宋子怡裁判日期2020年12月15日关键词计算机软件；开发合同；交付；验收；举证责任当事人上诉人（原审原告、反诉被告）：在线金融服务有限公司（OnlineFinanceServicesLimited）；被上诉人（原审被告、反诉原告）：王智慧。裁判结果驳回上诉，维持原判。原判主文：一、《云泰保险平台软件开发合同》于2019年4月28日解除；二、驳回在线金融服务有限公司的其他诉讼请求；三、驳回王智慧的诉讼请求。涉案法条《中华人民共和国合同法》第十二条第一款、第六十条、第九十七条；《中华人民共和国民事诉讼法》第一百七十条第一款第一项。法律问题计算机软件开发合同内容约定不明、措辞不清的责任认定裁判观点当事人签订的涉案合同存在约定不明、措辞不清的问题，由此导致软件开发过程的中断和延迟，也导致开发成果是否符合合同约定难以进行验收，在此情况下，当事人上述问题均有过错，对开发合同解除的后果都负有责任，应根据各自的过错程度合理分担涉案合同未履行完毕造成的损失。注：本摘要并非判决书之组成部分，不具有法律效力。