航天信息河南有限公司

航天信息河南有限公司、河南云安溯源科技有限公司计算机软件开发合同纠纷民事二审民事判决书

来源:中国裁判文书网
中华人民共和国最高人民法院
民 事 判 决 书
(2021)最高法知民终2009号上诉人(原审被告):航天信息河南有限公司。住所地:河南省郑州经济技术开发区航海东路1776号中兴节能环保产业园38号楼。法定代表人:王涛,该公司董事长。委托诉讼代理人:马增辉,河南会盟律师事务所律师。委托诉讼代理人:荆宁,河南会盟律师事务所律师。被上诉人(原审原告):河南云安溯源科技有限公司。住所地:河南省郑州市二七区鼎盛大道绿地滨湖国际城1区2号楼1107室。法定代表人:肖春,该公司总经理。委托诉讼代理人:王梓淳,河南天基律师事务所律师。委托诉讼代理人:祁晓,河南臻哲律师事务所律师。上诉人航天信息河南有限公司(以下简称航天信息公司)因与被上诉人河南云安溯源科技有限公司(以下简称云安溯源公司)计算机软件开发合同纠纷一案,不服河南省郑州市中级人民法院于2021年7月26日作出的(2021)豫01知民初131号民事判决,向本院提起上诉。本院于2021年11月8日立案后,依法组成合议庭,并于2021年12月28日询问当事人,双方当事人的委托诉讼代理人均到庭参加询问。本案现已审理终结。航天信息公司上诉请求:撤销原审判决,改判驳回云安溯源公司的诉讼请求。事实和理由:(一)原审判决认定事实错误,本案不存在解除合同的情形。1.本案是计算机软件开发合同纠纷,首先需要确定需求及开发标准。涉案合同签订前,双方已在磋商并在云安溯源公司产品总监谢某的带领下开展实施涉案合同的前期工作,对项目需求进行多次沟通。2020年6月9日谢某通过微信向航天信息公司提供云安食链产品的原型图,航天信息公司进行开发。2020年7月8日、7月14日、7月15日,云安溯源公司提出对一期项目的部分需求进行变更,并新增一些需求,该项目需求变更表由谢某签字确认。后云安溯源公司又提出对7月14日、7月15日新增的需求不再进行开发。项目一期开发的标准即为原型图及2020年7月8日变更的需求。2.在2021年3月8日原审庭前会议,航天信息公司当庭对系统下单支付的流程进行了演示,证明航天信息公司根据云安溯源公司提供的原型图进行了开发且系统主流程可以跑通,航天信息公司完成了一期项目开发,并成功运行,合同目的能够实现。3.关于云安溯源公司所述的开发中应使用的相关组件,合同中虽约定开发时SpringCloud须至少使用Gateway、Eureka、Feign、Hystrix组件,但并非是在一期项目中必须使用,而是在全部流程中使用,一期项目也使用了这些软件,即便未使用,这些软件具有可替代性,可以随时使用。根据合同约定,软件有一年质保期,可以随时进行更改,因此航天信息公司没有违反合同约定。4.根据《最高人民法院关于技术调查官参与知识产权案件诉讼活动的若干规定》第十一条规定,技术调查官提出的技术调查意见可以作为合议庭认定技术事实的参考。技术调查官不同于鉴定专家,鉴定人所做的专业意见在性质上是证据,而技术调查官是就技术事项对法官所做的解释、说明和建议,出具的意见只是专家意见,非鉴定意见,不具备司法鉴定效力,不是诉讼证据的一种,不得作为认定案件事实的依据。而本案原审判决以技术调查官出具的技术鉴定意见作为唯一的证据来认定案件的事实,无其他证据相互佐证,以此认定航天信息公司交付的开发成果不符合合同约定,合同目的无法实现,不具有客观性、科学性。(二)原审判决适用法律错误。即使原审中技术调查官出具的技术鉴定意见具有客观性,可以作为认定案件事实的依据,航天信息公司开发的软件不符合合同约定,但是计算机软件和工具都是可以替代的,可以修改的。根据《中华人民共和国民法典》(以下简称民法典)第五百七十七条规定,当事人一方不履行合同义务或履行合同义务不符合约定的,应当承担继续履行、采取补救措施或者赔偿损失等违约责任。航天信息公司对计算机工具的运用以及架构的设置是可以修改的,可以采取补救措施的,并不影响合同目的的实现。原审判决适用《中华人民共和国合同法》(以下简称合同法)第九十四条之规定,属于适用法律错误。云安溯源公司辩称:(一)原审判决认定事实正确,航天信息公司没有开发能力,交付的代码从“业务需求层面”和“技术路径层面”都无法实现合同目的。1.“业务需求层面”的最底层需求是“餐超供应链”,而“下单支付”只是餐超供应链的一个组成部分,还有备货、上架、购买、供应、配送等多个流程,航天信息公司所谓的“下单支付流程完成”离系统主流程跑通相去甚远。在涉案合同中,技术开发目标有六项,航天信息公司连基础的“实现基本的餐超供应链,保证从采购到终端的业务畅通”都未完成。航天信息公司于2020年7月3日向云安溯源公司发送的《云安食链管理平台项目开发计划书》第5页图表显示,第一期开发目标包括“商城系统”的前台、后台、采购商、平台方,“供货系统”的供货商、平台方、配送商。做到这几个主体之间“从采购到终端的业务畅通”至少要实现上架货物、采购、支付、配送等多个流程。即使根据谢某在2020年8月4日发送的《项目一期系统功能列表0718.xlsx》文件规定的一期内容,航天信息公司也没有实现大部分功能要求。2.微服务架构模式是整体代码撰写思路,不按整体统一的思路撰写,无法实现。仅二期使用微服务架构,也无法实现随后再对一期代码逐步修改,逐步修改的工作量比重新撰写一遍一期代码的工作量还大。微服务架构的思路是将应用分解为小的、互相连接的微服务,而不是开发一个巨大的单体式应用。通过将这些服务相互连接,组合,从而完成特定的功能,基于微服务架构的应用,具有可快速拓展的特性。SpringCloud是一个实现微服务的工具箱,里面有各种组件工具(Eureka,Feign,Gateway,Hystrix等),通过这些组件工具可以实现微服务架构。基于SpringCloud这一个工具就可以完成微服务架构的开发。如果代码中不包含这些组件,会使系统后期的功能扩展,升级迭代投入的开发成本非常高。3.云安溯源公司要求微服务架构的技术路径是基于自身业务需要,并为此签署了80万元开发费用的涉案合同,航天信息公司应当发挥主观能动性实现云安溯源公司的核心需求。(二)原审法院适用法律正确,航天信息公司的违约行为导致合同目的无法实现,航天信息公司在合同明确技术路径的前提下依旧不使用微服务架构,等待其继续开发维护只会给云安溯源公司造成更大的损失。云安溯源公司应在2020年8月29日向自己的甲方交付代码,外包给航天信息公司撰写的代码是其重要组成部分,航天信息公司的违约行为已经给云安溯源公司造成重大损失。云安溯源公司基于合同目的无法实现,已于2020年9月29日向航天信息公司发送了《解除合同通知书》。为避免损失扩大,云安溯源公司另行委托了河南软邮信息技术有限公司进行软件开发,合同要求的“技术开发目标和内容”“技术方法和路径”与涉案合同完全相同。河南软邮信息技术有限公司已完成软件技术开发工作。综上所述,航天信息公司没有开发能力,严重违约,给云安溯源公司造成重大损失,请求依法驳回航天信息公司的全部诉讼请求。云安溯源公司向原审法院提起诉讼,原审法院于2021年1月25日立案受理,云安溯源公司请求判令:1.解除双方当事人签订的《云安食链管理平台项目软件服务外包合同》;2.航天信息公司返还合同款项240000元;3.航天信息公司支付违约金240000元(合同总价的30%);4.航天信息公司承担本案案件受理费、保全费等费用。航天信息公司辩称:(一)云安溯源公司要求解除合同无事实和法律依据。航天信息公司完成了第一期开发项目的合同交付,不存在违约行为;航天信息公司未按时交付系因云安溯源公司变更了合同内容。(二)云安溯源公司要求航天信息公司返还已支付的240000元合同款没有依据。(三)云安溯源公司诉请违约金240000元没有依据。原审法院认定事实:2020年5月18日,云安溯源公司(甲方)与航天信息公司(乙方)签订《云安食链管理平台项目软件服务外包合同》,约定的相关内容摘录如下:“技术开发目标:建立食链平台产品数据库,可监控平台价格走向;采用电子合同实现平台商户的法律约定的义务;具备接入供应链金融产品的条件;采用电子发票,采用申请的方式由上游开具;实现基本的餐超供应链,保证从采购到终端的业务畅通;实现基本分账系统,保证资金安全”“食链平台包括供货系统、商城系统、终端系统、综合管理系统”“后端服务系统需采用当前主流的微服务架构技术,以保证业务服务的高可用性,可扩展性,SpringCloud须至少使用Gateway、Eureka、Feign、Hystrix组件”“需兼容各大手机厂商(华为、vivo、oppo、小米、魅族、苹果等)机型”“第一期项目开发包括统一供货平台和商城分销系统,开发截止日期为2020年7月20日,第二期项目开发包括终端系统和综合管理系统,开发截止日期为2020年8月10日”“合同总价款80万元,合同生效之日起5天内,甲方向乙方支付合同总价的30%,即24万元;第一期项目软件产品安装调试完毕,进入试运行之日起5天内,甲方向乙方支付合同总价的15%,即12万元;第二期项目软件产品安装调试完毕,计入试运行之日起5天内,甲方向乙方支付合同总价的15%,即12万元……”“乙方需提供软件的全部源代码、使用说明、安装文件、技术文档等。源代码必须能在开发环境中进行编辑、编译和执行以及Debug等;源代码必须可为熟练的程序员理解和使用;乙方不得在源代码中提供对软件功能有限制的license进行各种限制”“乙方应按本合同规定的研究开发进程完成开发项目,每延期一天向甲方支付本合同开发研究报酬总额的0.05%违约金,违约金总额不超过本合同当期开发研究报酬总额的30%”“因乙方原因,使项目无法通过最终验收或超过15天仍未能完成开发任务,则乙方向甲方支付合同总价的30%的违约金,同时甲方有权解除合同”。该合同的甲方授权签字代表为谢某,乙方授权签字代表为王某。2020年5月22日,云安溯源公司向航天信息公司通过中国工商银行转账“开发费”240000元。《云安食链管理平台项目开发计划书》的相关内容:1.开发目标是建立食链平台产品数据库,可监控平台价格走向;采用电子合同实现平台商户的法律约定的义务;具备接入供应链金融产品的条件;采用电子发票,采用申请的方式由上游开具;实现基本的餐超供应链,保证从采购到终端的业务畅通;实现基本的分账系统;保证资金安全。2.一期项目开发统一供货系统、商城分销系统,二期项目开发终端系统、综合管理系统,开发时间90天;“统一供货平台”是指供货商依据电子合同加入平台,成为平台供货商,根据自身供货产品性质,录入对应的产品信息,建立平台统一的产品信息库;“商城分销系统”是指采购商通过调取供货平台提供的货品信息,把最优质的产品加入到自己的分销体系内,通过商城的形式向终端或者下游进行展示和销售,在此基础上获得分销利润。3.系统设计采用SpringBoot、SpringCloud做为基础架构,使用Springmvc实现RestAPI,使用Springsecurity做为安全机制,采用token式验权,使用Springcloud的configserver做为统一的配置中心,服务发现使用的Eureka,网关用的SpringGateway、服务调用使用Feign。4.从2020年5月18日合同签订起开始,对项目进行整体分析;从5月18日至5月30日,完成对一期项目的分析设计,对概念模型、存储模式、完整性控制、存取权限等进行定义,对系统功能各模块进行详细设计、定义数据库总体结构、编码命名规范;从5月30日至6月30日,完成一期项目程序设计和系统测试,完成数据库建立及程序的编制调试;从7月15日至7月20日,完成用户培训工作,编写各类文档,系统投入运行阶段;项目结束后一周左右,对项目研发、部署等开发过程中的问题、经验教训总结备案,以利于项目经验的积累和开发进度的缩短。2020年7月3日,××××@163.com收到××××@aision.com的电子邮件,主要内容为“肖总……云安食链管理平台项目开发计划书包含了项目组成员、项目一期的里程碑事件;项目一期系统功能列表中包括统一供货系统和商城分销系统(采购商城)的具体功能描述,有需求变更的记录”。该邮件包含附件《云安食链管理平台项目开发计划书.doc》和《项目一期系统功能列表.xls》文件各一份。《云安食链管理平台项目开发计划书.doc》载明项目一期里程碑事件包括:完成项目团队组建(2020.05.18)、完成项目需求讲解(2020.05.19)、项目开发环境搭建(2020.05.20)、完成供货系统数据库设计(2020.05.21)、完成供货系统UI设计(2020.05.29)、完成供货前端页面编写(2020.06.15)、完成供货商入驻添加商品流程(2020.06.20)、完成配送商入驻配送流程(2020.06.20)、完成商场系统数据库设计(2020.06.15)、完成商城系统UI设计(2020.06.10)、完成商城前台页面编写(2020.06.20)、完成门店从采购商城的购物流程(2020.06.28)。《项目一期系统功能列表.xls》文件显示:“统一供货平台”各模块均已完成;“商城分销系统(采购商城)”的“采购商模块”“系统管理”未完成;“需求变更记录”包括“电子合同流程”“注册流程”“产品库流程”“产品类别”“采购黑名单”五项内容,其中第一项内容完成情况为“供货商、配送商、采购商、门店入驻平台流程已修改,供货商可正常上架商品,电子合同等待三方接口”,第二项内容已完成,其余三项内容未完成。2020年8月4日,谢某通过微信发送《项目一期系统功能列表0718.xlsx》,该文件的“一期功能列表”标签载明:“统一供货系统”的“供货商”角色、“平台管理”角色、“物流商”角色基本完成,“品牌商(采购商)”角色大部分未完成,“平台管理”角色只完成了五项子功能;“新增功能”标签载明“统一供货系统”和“商城分销系统”于7月14日、15日新增了大量子功能。云安溯源公司员工束振威就航天信息公司开发的《统一供货平台》于2020年9月29日作出软件产品测试报告,该报告载明的测试硬件环境为WLAN局域网、PC电脑一台,软件环境为Windows10操作系统、Chrome85.0.4183.121浏览器,测试结果为“互操作性”“易用性”“易操作性”均不通过,测试评价为“测试结果表明该软件未完成《项目一期系统功能-需求说明书》中指定的功能;通过系统测试及内部评审,本系统在功能上未达到用户需求”。航天信息公司不认可该报告测试结果,认为该报告系云安溯源公司单方作出,并非第三方所作的检测结论,并且该报告的标准和合同约定以及变更的需求不一样,因此该报告不具有实用价值。2020年9月29日,云安溯源公司向航天信息公司寄送《解除合同通知书》,云安溯源公司以第一期项目未如约交付,至今也未合格交付,严重违反合同约定为由通知航天信息公司解除涉案合同。2020年5月29日、5月30日、6月5日、6月12日、6月19日、6月28日,宋某向肖某发送各时间段的《项目进度汇报》电子邮件和所需服务器配置要求电子邮件;7月3日、7月10日、7月17日,宋某向谢某发送各时间段的《项目进度汇报》电子邮件;8月7日、8月14日、8月22日,宋某向吴某发送各时间段的《项目开发进度》电子邮件。《云安项目会议纪要》显示会议时间为2020年7月22日,会议地点在“云安溯源公司会议室”,参会人员有吴某、谢某、王某、宋某、赵某,会议主要内容为:目前云安项目根据合同未能如期交付,以及未来履约情况能顺利实现……对当前项目推进中遇到的问题协商如下:1.合同内一期未按时交付,因云安溯源公司15号补充了需求以及现有项目需求仍缺失部分(支付、电子合同),现将一期交付时间延长,具体延长期限根据缺失需求评估后决定。在开发合同二期内暂停一期新增需求开发(支付和核心需求例外),如航天信息公司完成对应需求的开发,则向云安溯源交付对应的一期版本。吴某、谢某、宋某、赵某在该纪要上签名。2020年8月13日,航天信息公司向云安溯源公司交付项目一期开发成果,吴某在《统一供货系统交付清单》和《商城分销系统交付清单》接收人栏签名。该两份清单均载有“……后期补充需求以及与电子合同和支付相关的模块不用河南航信在继续开发,后期由云安溯源接手开发”的内容。航天信息公司提交的开发模板截图显示“仲记”“zhongji”等内容,与航天信息公司提交的微信聊天记录、照片显示的到仲记集团调研沟通的事实相互印证,证明航天信息公司着手进行了项目开发工作。航天信息公司提供的统一供货系统和商城分销系统《软件产品测试报告》载明除“电子合同”“支付”模块未通过外,其他均通过测试。云安溯源公司认为该报告系航天信息公司单方制作的,对此报告不予认可。云安溯源公司当庭对航天信息公司交付的涉案一期项目软件进行了演示,云安溯源公司陈述演示过程如下:(一)餐超食链商户分销系统,商品信息无法显示,无法完成后续的订单添加、配送流程。该界面是用户最终使用的界面,类似于淘宝、京东电子商城的界面,应该有广告位、商品类别、价位、多层级的商品展示、支付信息、支付链接以及下单后反馈到卖家的相关信息。历史订单、我的订货单均无数据,无法进行下单结算操作,无商品信息无法进行搜索,无法添加我的收藏和显示收藏信息,首页无法跳转。(二)商城分销管理系统,在新用户注册界面输入手机号“186××××****”,等待一分钟未收到验证码,商户无法完成注册。使用航天信息公司提供的“152××××****”账号输入密码123456进行登录,因手机号码是航天信息公司提供的,无法收到验证码,无法进行更改密码。该账号可以登录进入系统,该系统中供应商商品栏提示“内部系统错误”,无法显示商品信息,商品分类无法展示,检索查询供货商商品提示“内部系统错误”。采购商商品板块,搜索商品名称在采购商名称栏会同步更改,呈现完全一致状态,搜索查询采购商商品无响应,由于无商品无法完成批量上架,批量下架,门店管理板块提示“内部系统错误”,搜索门店分类在所属地区栏会同步更改,呈现一致状态。查询无反应,无法检测是否具有检索功能。在订单查询板块所出现的订单信息全部一样,无法修改,也无新的订单产生。已结算板块,结算列表全部一样,无法修改,无论如何设置查询起止时间,均显示固定内容。未结算和已结算的界面一致。结算操作无法进行。账户信息板块提示“内部系统错误”,无法编辑;修改密码板块,进行密码修改操作,出现“内部系统错误”;点击银行卡绑定板块出现“内部系统错误”;点击提现板块出现“内部系统错误”;平台管理板块和用户管理、采购商审核,出现“内部系统错误”;订单查询板块,根据查询条件检索查询内容固定无变化;账户信息板块,账户名称手机号内容栏同步更改,新增账户电话栏和邮箱栏同步更改内容一致,无法上传头像,新增账户后无反应;勾选商品后无法修改、无法删除;角色信息、权限信息查询内容无法查询、新增、修改、删除。(三)统一供货系统,物流商管理系统,输入“186××××****”注册账号,验证码显示服务错误,无法完成用户注册。使用航天信息公司提供的用户信息进行登录,配送流水板块,查询出的数据与查询条件不相符;账户钱包板块,配送费率及分拣费率提示错误;账号管理板块,无法修改密码、手机号、交易密码和忘记密码,修改银行卡无法完成;仓配管理板块出现错误代码报错。(四)统一供货商管理系统,无验证码无法注册;平台业务流程无法完成,在后台无法看到订单变化,在销商品、采购黑名单提示服务错误,供货合同管理点击按钮无反应;订单中心板块、供货流水板块报错;账户钱包内容锁死;账户管理无法修改密码、手机号、交易密码和忘记密码,修改银行卡无法完成。航天信息公司对云安溯源公司的演示过程发表意见:统一供货系统、商城分销系统、综合管理系统、终端系统是串行的关系,全部流程跑通需要所有的系统开发完成,例如商品信息、后续订单、搜索商品无反应、商品批量处理等;并且,云安溯源公司提出了新增需求,后期还没有进行开发;短信验证码收不到的原因是云安溯源公司提供的阿里云平台的短信接口已关闭;关于支付的问题,云安溯源公司从始至终都没有提供三方接口,所以支付宝、绑定银行卡、提现操作根本无法完成;提示“内部系统错误”可能是服务器部署不正确导致的。原审法院委托的技术调查官对涉案合同中所涉及的五个方面的技术问题作出了如下鉴定意见:(一)关于“基础组件库应采用基于vue的elementui或antdesign”的问题,鉴定意见为在模块yunan、shop、storeadmin、shopadmin中,使用的element-ui的版本号为2.13.2,符合合同中关于基础组件库应采用基于vue的elementui的约定;(二)关于“Springboot(版本不低于2.1.7RELEASE)”的问题,鉴定意见为在模块supplyshop中,使用的SpringBoot的版本号为1.5.14.RELEASE,低于2.1.7.RELEASE,不符合合同中关于springboot版本的约定;(三)关于“SpringCloud(版本不低于Greenwich.SR2)”的问题,鉴定意见为,1.模块foodchain和模块Shopparent中,SpringCloud的版本号为Hoxton.SR6,高于Greenwich.SR2。模块foodchain和模块Shopparent的开发符合合同中关于SpringCloud版本的约定。2.模块supplyshop和模块buyershop中,未发现使用了SpringCloud相关组件;(四)关于“SpringCloud须至少使用以下组件(Gateway,Eureka,Feign,Hystrix)”的问题,鉴定意见为所有模块均未使用SpringCloud的Feign组件,未使用SpringCloud的Gateway和Hystrix组件实现业务相关功能,不符合合同第二条中的1.2后台服务技术要求的相关规定;(五)关于“源代码必须可为熟练的程序员理解和使用”的问题,鉴定意见为代码虽然细看能够为熟练的程序员理解和使用,但是存在不易于被程序员理解,且使用起来较为容易混淆、出错。另查明:云安溯源公司与案外人河南软邮信息技术有限公司于2020年10月2日签订了《云安食链管理平台项目软件服务外包合同》,该份合同与本案当事人之间签订的涉案合同在“技术开发目标和内容”“技术方法和路线”方面完全相同。谢某与云安溯源公司的劳动争议,谢某向郑州市二七区劳动人事争议仲裁委员会诉称其于2020年4月6日到云安溯源公司工作,岗位是产品总监,于2020年8月21日提出离职,当日完成交接手续。原审法院认为,双方当事人于2020年5月18日签订软件开发合同,双方约定“第一期项目开发包括统一供货平台和商城分销系统,开发截止日期为2020年7月20日”,云安溯源公司依约向航天信息公司支付了合同款240000元,后根据开发进度,双方协商第一期交付时间延长,具体时间未作约定。同年8月13日,航天信息公司向云安溯源公司交付了第一期开发成果,云安溯源公司的副总经理吴某在交付清单上签名确认。首先,云安溯源公司认为航天信息公司交付的第一期软件不能正常使用,航天信息公司辩称是由于全部系统尚未开发完成、云安溯源公司增加新需求、部署源代码不正确、未提供相应接口等原因导致的。其次,双方合同约定,“后端服务系统需采用当前主流的微服务架构技术,以保证业务服务的高可用性,可扩展性,SpringCloud须至少使用Gateway、Eureka、Feign、Hystrix组件”“源代码必须可为熟练的程序员理解和使用”,双方对开发工具所作出的明确约定是为了便于云安溯源公司后期的功能扩展和运营维护。根据技术调查官出具的技术鉴定意见,所有模块均未使用SpringCloud的Feign组件,未使用SpringCloud的Gateway和Hystrix组件实现业务相关功能,并且还存在源代码不易于被程序员理解,使用起来较为容易混淆、出错的问题,航天信息公司交付的开发成果不符合双方的合同约定。合同法第九十四条规定,当事人一方有其他违约行为致使不能实现合同目的的,当事人可以解除合同。航天信息公司交付的软件即使能够实现相关功能,但仍然无法满足云安溯源公司后期维护、扩展的需求,截止云安溯源公司向航天信息公司送达解除合同通知时,航天信息公司仍未向云安溯源公司交付满足合同约定的开发成果,故云安溯源公司有权解除合同。合同法第九十六条规定,当事人一方主张解除合同的,应当通知对方。合同自通知到达对方时解除。对方有异议的,可以请求人民法院或者仲裁机构确认解除合同的效力。航天信息公司在收到云安溯源公司的解除合同通知后未提出异议,故涉案软件外包合同已依法解除。航天信息公司交付的开发成果不能实现云安溯源公司的合同目的,云安溯源公司已向航天信息公司支付合同款240000元,航天信息公司应当依法返还该款项。关于云安溯源公司要求航天信息公司支付违约金的诉讼请求,双方约定“因乙方(航天信息公司)原因,使项目无法通过最终验收或超过15天仍未能完成开发任务,则乙方向甲方支付合同总价的30%的违约金,同时甲方有权解除合同”。航天信息公司因自身原因,未在合理期限内完成符合双方约定的软件开发工作,致使云安溯源公司订立该合同的目的无法实现,根据双方的约定应当承担赔偿违约金的责任,但违约金的计算应以实际损失为基础。云安溯源公司未提供证据证明其损失数额,原审法院结合合同的履行情况、航天信息公司的过错程度等因素,酌定航天信息公司应承担的违约金为70000元。综上,原审法院依照《中华人民共和国合同法》第八条、第六十条、第九十四条第四项、第一百零七条、第一百一十三条,《中华人民共和国民事诉讼法》(2017年修正)第六十四条之规定,判决:一、确认解除云安溯源公司与航天信息公司签订的《云安食链管理平台项目软件服务外包合同》;二、航天信息公司应于判决生效之日起十日内返还云安溯源公司240000元;三、航天信息公司应于判决生效之日起十日内向云安溯源公司支付违约金70000元;四、驳回云安溯源公司的其他诉讼请求。如果未按判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》(2017年修正)第二百五十三条之规定,加倍支付迟延履行期间的债务利息。案件受理费8500元,由云安溯源公司负担2500元,航天信息公司负担6000元。
本院二审期间,当事人没有提交新的证据。
原审法院查明的事实属实,本院予以确认。本院认为,本案系计算机软件开发合同纠纷案件,民法典已于2021年1月1日起实施,合同法同时废止。根据《最高人民法院关于适用时间效力的若干规定》第一条第二款的规定:“民法典施行前的法律事实引起的民事纠纷案件,适用当时的法律、司法解释的规定,但是法律、司法解释另有规定的除外”,因本案合同订立、履行等相关法律事实发生于民法典施行前,故本案应适用合同法。本案二审争议焦点为:航天信息公司是否存在违约行为,涉案合同应否予以解除,航天信息公司应否返还合同款并支付违约金。本案中,根据已查明的事实,2020年7月22日《云安项目会议纪要》载明,双方当事人协商项目一期交付时间延长,具体延长期限根据缺失需求评估后决定;2020年8月13日,云安溯源公司接收航天信息公司交付的项目一期开发成果(源代码),并确认统一供货系统和商城分销系统的后期补充需求以及与电子合同和支付相关的模块不用航天信息公司继续开发,后期由云安溯源公司接手开发,云安溯源公司未签收航天信息公司交付的《软件产品测试报告》;2020年9月29日,云安溯源公司向航天信息公司寄送《解除合同通知书》,以航天信息公司“截至第一期项目截止时间,未如约交付,至今也未合格交付,严重违反了合同约定”为由提出解除合同。原审中,技术调查官出具意见认为,航天信息公司交付的项目一期软件源代码未依约使用SpringCloud的Feign组件,未使用SpringCloud的Gateway和Hystrix组件实现业务相关功能。航天信息公司对此没有异议。航天信息公司上诉主张其不构成违约、涉案合同不应解除的主要理由为:云安溯源公司原审提交的7月3日《云安食链管理平台项目开发计划书》虽然为航天信息公司发送的邮件,但因云安溯源公司未作确认,故不能作为项目开发的依据,本案应根据谢某于2020年6月9日提供的云安食链产品的原型图和谢某于2020年7月8日签字确认的项目需求变更表确认开发需求;虽然航天信息公司未完全依约使用软件开发工具,但这些软件具有可替代性,后期随时可以进行更改,故不影响合同目的的实现。本院认为,首先,关于软件开发需求问题。根据已查明的事实,双方当事人在合同履行过程中对软件开发需求进行过多次确认,航天信息公司主张以原型图和2020年7月8日项目需求变更表作为软件开发需求并无事实依据,而根据其于2020年8月13日交付给云安溯源公司的《软件产品测试报告》,可以认定航天信息公司确认其应完成的软件开发需求并不限于其主张的原型图和2020年7月8日项目需求变更表。航天信息公司上述主张与事实不符,不能成立。其次,关于航天信息公司交付软件时间是否超期问题。涉案合同第三条约定第一期项目开发包括统一供货平台和商城分销系统,开发截止日期为2020年7月20日;2020年7月22日《云安项目会议纪要》载明双方当事人商定延长项目一期交付时间,但具体延长期限未作确认。在此情形下,航天信息公司于2020年8月13日交付项目一期开发成果(源代码)不存在超期交付问题。最后,关于航天信息公司交付软件是否合格问题。涉案合同第二条“技术方法和路线”中明确约定了技术架构要求,包括前端页面技术、后台服务技术要求、终端APP服务技术要求。航天信息公司交付的项目一期软件源代码未依约使用SpringCloud的Feign组件,未使用SpringCloud的Gateway和Hystrix组件实现业务相关功能,无法实现合同第二条1.2约定的“保证业务服务的高可用性和可扩展性”的后台服务技术要求,已影响合同目的的实现。并且,根据原审法院现场勘验,航天信息公司已交付软件流程存在多项功能缺失,也无法正常使用。航天信息公司对此虽解释称因全部系统尚未开发完成,但该解释与其2020年8月13日交付的《软件产品测试报告》确认的测试标准不一致,不能成立。综上,航天信息公司交付软件不合格。故原审法院认定航天信息公司交付的软件开发成果不符合合同约定,构成根本违约,导致合同目的不能实现,并无不当,本院予以确认。根据合同法第九十四条第四项的相关规定,云安溯源公司有权解除涉案合同,航天信息公司应返还240000元合同款并依约支付违约金。原审法院根据本案具体案情,综合合同的履行情况、航天信息公司的过错程度等因素,酌定航天信息公司承担70000元违约金,并无不当,本院予以确认。此外,原审法院将技术调查官出具的意见表述为鉴定意见有误,本院予以纠正。技术调查官作为审判辅助人员提出的技术调查意见虽不属于证据,但经其辅助查明的技术事实可以作为认定案件事实的依据。本案中,航天信息公司已确认其交付的项目一期软件源代码未依约使用SpringCloud的Feign组件,未使用SpringCloud的Gateway和Hystrix组件实现业务相关功能,故其关于技术调查官出具的意见并非鉴定意见的主张不影响本案事实认定。综上所述,航天信息公司的上诉请求不能成立,应予驳回;原审判决认定事实清楚,适用法律正确,予以维持。依照《中华人民共和国民事诉讼法》第一百七十七条第一款第一项之规定,判决如下:驳回上诉,维持原判。二审案件受理费5950元,由航天信息河南有限公司负担。本判决为终审判决。
审 判 长 徐燕如
审 判 员 刘晓梅
审 判 员 庞 敏
二〇二二年六月十四日
法官助理 王 亮
书 记 员 翟雨晶