江苏省苏州市中级人民法院
民事判决书
(2019)苏05知初507号
原告(反诉被告):上海数聚软件系统股份有限公司,住所地上海市虹桥路333号1幢227室。
法定代表人:李×,总经理。
委托诉讼代理人:韩×,德恒上海律师事务所律师。
委托诉讼代理人:张×,德恒上海律师事务所律师。
被告(反诉原告):鹰普(中国)有限公司,住所地江苏省无锡市锡山经济开发区芙蓉五路18号。
法定代表人:余××,董事长。
委托诉讼代理人:邱××,国浩律师(南京)事务所律师。
委托诉讼代理人:王×,国浩律师(南京)事务所实习律师。
原告上海数聚软件系统股份有限公司(以下简称数聚公司)与被告鹰普(中国)有限公司(以下简称鹰普公司)软件许可及技术服务合同纠纷一案,本院于2019年6月5日立案。诉讼中,鹰普公司提起反诉,本院依法受理合并审理。本院适用普通程序,经三次庭前会议,于2020年8月24日公开开庭审理了本案,数聚公司法定代表人李×、委托诉讼代理人韩×、张×,鹰普公司委托诉讼代理人邱××、王×到庭参加诉讼。本案现已审理终结。
原告数聚公司向本院提出诉讼请求:1、判令鹰普公司立即支付原告开发费用846564元,并承担逾期付款的违约金100201元(按合同总额2004020元*5%)。2、判令鹰普公司立即支付原告运维费用14000元,并承担该款的利息损失(自2017年6月12日起至给付之日止按银行同期贷款利息计算)。3、诉讼费用由鹰普公司承担。事实和理由:2014年5月8日,双方订立软件及实施合同,由原告将数聚智慧决策平台软件出售给鹰普公司并提供维护服务,合同总金额为1446820元。2016年6月30日,双方订立补充协议,增加费用340100元及271100元,上述合计2004020元。现原告已经完成所有的合同约定及增加内容,并且向鹰普公司开具1302138元的发票,鹰普公司已经支付1157456元款项,尚欠846564元未支付。另,鹰普公司结欠原告运维费用14000元。两项总计结欠860564元。在原告完成所有约定内容后,鹰普公司拒不支付款项为违约行为,应当按照合同的约定支付违约金。
被告鹰普公司辩称,数聚公司并未依约完成BI项目开发,经测试发现系统底层数据模型和处理链设计存在BI严重缺陷,导致报表数据错误频发,系统功能极不稳定,根本无法使用。数聚公司已经构成根本违约,其诉讼请求不能成立,应当驳回。一、数聚公司并未依约完成项目开发,经测试发现BI系统底层数据模型和处理链设计存在严重缺陷,且一直未能得到解决,从而导致报表数据错误频发,系统功能极不稳定,无法通过项目验收。二、案涉合同为固定闭口金额合同,合同履行期间项目实施业务范围均未发生变更,原告无权要求鹰普公司承担变更单增加的工作量。三、截止鹰普公司向数聚公司发送BI项目停止告知函时,案涉BI系统一直处于开发测试状态,未进入运维阶段,双方也未签订运维合同。因此,数聚公司主张运维费用无事实和法律依据。
鹰普公司提出反诉请求:1、判令解除双方签订的《鹰普(中国)有限公司BI项目软件及实施合同》、《鹰普(中国)有限公司BI项目软件及实施合同补充协议》、《鹰普(中国)有限公司智慧采集平台购买合同》和《鹰普(中国)有限公司BI项目结项补充协议》;2、判令数聚公司返还已支付价款1255736元;3、判令数聚公司赔偿损失932190.12元;4、判令数聚公司承担本案全部诉讼费用。事实和理由:2014年5月8日,鹰普公司与数聚公司签订《鹰普(中国)有限公司项目软件及实施合同》,约定由数聚公司为鹰普公司提供“数聚智慧决策平台软件V3.O”和“SAP BO OEM”产品,并在此基础上为鹰普公司开发BI系统项目,项目开发范围包括财务、销售、生产、KPI指标四大主题,开发目的是通过整合数据实现管理驾驶舱,固定报表以及多维分析。在合同履行中,由于BI系统项目未能按照约定时间上线,双方于2015年1月30日签订《鹰普(中国)有限公司BI项目软件及实施合同补充协议》调整项目上线计划。为配合BI项目的实施,2015年3月16日双方还签订了《鹰普(中国)有限公司智慧采集平台购买合同》,购买数聚公司开发的数聚智慧采集平台,目的是将excel形式的源数据上传到BI系统,便于报表和驾驶舱功能的开发。然而,直到2016年6月30日,BI系统仍未开发完成,存在大量问题没有解决。为了能够完成该项目,双方又签订了《鹰普(中国)有限公司项目结项补充协议》,约定在2016年9月30日前完成BI项目并进行结项。但是,截止到2017年7月25日鹰普公司发出项目终止函时,数聚公司仍未能解决BI系统报表分析数据和底层处理链错误频发,核心功能极不稳定等严重问题。经数聚公司自己委派的技术专家核查,BI系统报表数据错误频发的原因是:1)系统底层BW处理链设计存在系统性缺陷,没有考虑各处理链之间的先后顺序性和数据间的相关性,处理链不能稳定正确地运行,从而导数据模型和处理链的整体架构设致数据抽取错误;2)后台BW数据模型和处理链的整体架构设计存在系统性缺陷和问题,未考虑对大数据量的应对处理,数据量大了后,系统直接会报错并终止,无法再继续运行。如果想彻底解决问题,需要将底层的BW所有的数据模型和处理链全部重新设计和开发。BI系统是通过抽取ERP等业务系统的源数据进行分析从而实现报表驾驶舱功能的,开发过程分为前台报表设计和后台数据建模,前台报表只是一个展示层,而后台底层BW数据模型严谨可靠是其得以完整展示的前提。若底层模型或处理链设计不合理或存有重大漏洞,会直接导致抽取到BI系统中的数据和业务系统的源数据不一致,以此为基础的报表展示和驾驶舱分析也将无从谈起。对于这一软件底层设计缺陷,数聚公司一直未能正确面对并加以解决,导致BI系统错误频发,无法正常使用。在此情况下,鹰普公司整合数据实现管理驾驶舱、固定报表以及多维分析的合同目的根本无法实现。而且BI目已经一再延期,比预定上线时间延误了近三年时间。综合以上因素,为了避免损失的进一步扩大,鹰普公司于2017年7月25日向数聚公司发送项目停止告知函。综上,数聚公司的行为已构成根本违约,涉案所有协议应予解除,数聚公司应当返还鹰普公司为涉案BI项目支付的全部费用,并赔偿因此给鹰普公司造成的购买相关设备以及大量人力方面的损失。
数聚公司就反诉请求辩称,数聚公司履行合同没有任何的瑕疵,请求驳回鹰普公司的所有诉讼请求。
当事人围绕诉讼请求依法提交了证据,本院组织当事人进行了证据交换和质证。当事人对证据真实性均无异议,本院予以确认并在卷佐证,认定事实如下:
一、双方签约及履约的基本过程
2014年5月8日,鹰普公司(甲方)与数聚公司(乙方)签订《鹰普(中国)有限公司BI项目软件及实施合同》(以下简称《BI合同》),约定由数聚公司为鹰普公司提供“数聚智慧决策平台软件V3.O”和“SAP BO OEM”(BusinessObjects BI,Edge edition with data integration V4.0”)产品,1套安装于鹰普公司,所管辖的数据范围适用于现有13家公司及其业务关联拓展的鹰普关联公司。《BI合同》主要条款内容如下:
第一条价格组成及说明。1、软件产品价格(含税17%)326430元。2、年维护支持服务(含SAP BO OEM产品,含税6%)14310元;2.1数聚智慧决策平台软件V3.0产品年度维护费自本项目上线验收合格之日起计算,1年后缴纳第1次维保费用38923.20元,甲方可自行选择是否缴纳该费用;2.2SAP BO OEM产品年度维护费自下单之日起计算,缴纳年维保费用为14310元。3、数聚公司实施服务费用价格(含税6%)1106080元;3.1项目实施人天收费状况详见附件一:现场服务详情;3.2本次项目业务范围实施主要范围内容包括:财务主题,销售主题,生产主题,KPI指标(OGSM)四大主题,通过数据整合实现管理驾驶舱,固定报表以及多维分析,详见鹰普BI项目一期工作说明书(SOW)。说明:1)本合同是固定闭口金额的合同,即在项目实施的组织机构范围和BI业务范围不发生变更的前提下,即使乙方实际服务人天数多于合同约定的人天数,超出部分由乙方自行承担,不向甲方追加任何付要。如果实际发生总人天低于合同约定的总人天,则甲方有权对多出的人天进行支配,或者還款,或者用于后期系统的维护及项目范围以外的其他需求的开发或者服务;若由于项目实施的组织机构范围或者BI业务范围的变更导致实际确认的服务人天数高于本合同约定的服务人天数,且误差超过5%,则超额部分由甲方向乙方追加付费(顾问人天单价不变);2)本合同金额中包含了项目中上海数聚提供的产品接口和二次开发工作,同时也包含了乙方顾问实施期间在江苏省内的差旅费用和住宿费用。
第二条合同金额和付款方式。合同总金额1446820元,分五期支付。第一期,合同签订后,甲方支付合同金额30%计434046元,甲方收到乙方开具的发票5个工作日内支付;第二期,乙方提供的《需求分析报告》和《系统架构设计说明书》以及双方确认阶段交付物,经甲方验收通过,甲方收到乙方开具的发票后5个工作日内支付合同总金额的15%计217023元;第三期,乙方完成固定报表开发试运行上线后提交《固定报表上线报告》和《UAT测试报告》以及双方确认阶段交付物提供,经甲方确认签字,甲方收到乙方开具的发票后5个工作日内支付合同总金额的15%计217023元;第四期,乙方完成KPI指标和分析报表开发部署上线试运行2周后,提交《上线试运行测试报告》和《UAT测试报告》以及双方确认阶段交付物,经甲方验收通过,甲方收到乙方开具的发票后5个工作日内支付合同总金额的30%计434046元;第五期,系统验收后6个月,甲方收到乙方开具的发票后5个工作日内支付合同总金额的10%计144682元。
第三条产品质量、交付与服务。乙方提供的产品为自主知识产权产品及SAP OEM产品,拥有合法的权利,乙方必须于合同签订生效后十五工作日内交付产品。软件产品交付后,甲方向乙方出具产品签收单以证明收到乙方交付的合格产品。甲方将通过乙方享受原厂商BO产品维护服务。实施服务验收标准为附件四鹰普BI项目工作任务书(SOW)及后期产生的经双方项目经理签字认可的补充协议,所涵盖的工作内容。
第五条违约责任。甲乙双方应全面实际地履行合同,一方迟延暖行合同或履行合同不符合的定视为违约。违约方应向对方支付合同总价款的5%的连约金,造成对方经济损失的,应当赔偿损失。乙方末按合同规定的产品交货日期交货或因产品验收不合格及其它乙方原因而影响正常交货,每延迟一天需按合同总额的0.1%向甲方交纳违约金。连约金总额不超过合同总金额的5%。甲方末按合同规定的付款条件付款,每延迟一天需按合同总金额的0.1%向乙方支付连约金,违约金总额不超过合同总金额的5%。
《BI合同》附件四《鹰普BI项目工作说明书》具体就“工作范围”约定包括:项目准备、蓝图设计、开发测试、上线运维、项目验收五个部分,其中,“上线运维”具体内容为“系统配置和管理手册、用户操作手册、系统运维和日常运维检查手册、上线测试报告、UAT测试报告”;就“项目验收标准”约定:以双方确认的《需求分析报告》所定义的功能为验收内容,参考乙方提供的测试计划及本章中“验收准则”实施、若有验收不合格项目,甲方应于2个工作日内书面通知乙方,逾期视为验收通过,针对不合格的项目,乙方负责改正,并再次对该改正项目提出复验申请,甲方应于5个工作日内完成复验。在该文件中,双方同时就项目验收标准进定步明确了验收测试缺陷分类表以及验收合格标准。
《BI合同》附件八《鹰普BI项目资源计划》排列了自2014年4月至10月的开发周期各阶段安排。
其后,双方进入合同履行。数聚公司于2014年5月13日开具出增值税发票计434046元,鹰普公司及其关联公司向数聚公司全额支付第一期合同款。
2014年9月,数聚公司向鹰普公司提交《鹰普公司BI项目系统架构设计书》,其中,3.7.4系统硬件信息之3.7.4.1BW服务器要求“BW服务器(DEVQAS)硬盘278G;BW服务器(PRD)硬盘2.7T”。当月,数聚公司又向鹰普公司提交《BW系统安装手册》,其中,1.1.2硬件环境为“RAM:64GB;CPU:8 Cores;存储:3TB”.
数聚公司于2014年10月10日向鹰普公司及其关联公司开具出增值税发票计217023元,鹰普公司及其关联公司向数聚公司全额支付第二期合同款。
2015年1月30日,双方签订《鹰普(中国)有限公司BI项目软件及实施合同补充协议》(以下简称《补充协议》),约定因各种原因导致项目未能按照合同约定及时上线,故双方经过友好协商,达成如下补充协议。一、项目计划重新调整后确定新的上线计划如下:a)销售、中国区财务和海外财务,以及相关管理驾驶舱将于2015年2月6日上线(详细清单见附件一):b)生产将于2015年4月15日上线(以蓝图范围为准);c)KPL、财务考核报表、剩余驾驶舱将于2015年5月15日上线(以蓝图范围为准);二、乙方不能按照以上每一项的规定国期完成BI项目上线,则每一项延期7天乙方承担主合同金额1%的违约金,不足7日按照7日计算,违约金最多了超过合同总价款的5%;三、若本补充协议第一条中的任何一项由于乙方的原因导致斑期超过30天(包括30天)或各项延期案计超过30天(包括30天),则乙方除支付前述违约金外,还需赔偿甲方因此产生的全部损失。总赔偿金额不超过主合同总价款30%,前述赔偿金额的支付并不妨碍台同的继续履行且在剩余合问款项相应打除。《补充协议》明确,本协议作为《BI合同》不可分割的一部分,具有同等法律效力。
合同履行中,因涉及鹰普BI项目履行中的数据采集,在数聚公司建议下,双方又于2015年3月16日签订了《鹰普(中国)有限公司智慧采集平台购买合同》(以下简称《采集平台购买合同》),鹰普公司购买数聚公司开发的“智慧采集平台”(4.3.3版本),该“智慧采集平台”拥有数据采集、权限管控、数据审批及校验等功能。软件产品价格98280元,付款方式为合同签订且软件产品交付,并经甲方验收通过后,甲方收到乙方开具的发票5个工作日内支付合同总金额90%的费用计88452元;甲方验收通过45日后乙方开具发票,甲方收到乙方开具的发票5个工作日内支付合同总金额10%的费用计9828元。鹰普公司按约支付相关价款,数聚公司交付“智慧采集平台”(4.3.3版本)。
2015年4月至9月间,鹰普公司及其关联公司陆续向数聚公司全额支付第三期合同款217023元。
2016年6月30日,双方签订了《鹰普(中国)有限公司项目结项补充协议》(以下简称《结项补充协议》),为解决《BI合同》项目的遗留问题,双方约定:一、甲方同意部分工作变动并愿意承担费用(见列表);二、付款方式为本协议签订后,甲方在2016年6月30号之前支付原主合同20%的费用计289364元。经甲方代表签字确认修改完本协议中涉及的所有的报表后并完成了主合司项下所有项目的验收后(签署验收合格表),支付主合同剩余款项20%计289364元及本协议新增所有款项340100元的50%计170050元,合计459414元。在上述付款完成后3个月,经甲方确认本协议涉及的名项修改无遗留问题后,甲方支付本协议新增所有款项340100元剩余的50%计170050元;三、如果因为乙方自身原因(包括但不限于人员变动:开发时间长于预期,技术闲难等)乙方未能在2016年9月30日完成本协议内容的,每延迟一天乙方需要向甲方支付合同总金额的0.2%作为违约金。若违约金超过本协议新增所有款项的10%,甲方有权单方终止本协议,并要求乙方返还甲方就本协议支付的所有款项:同时甲方有权就其实际损失向乙方进行索赔;四、如甲方在2016年7月31日前确定升级SAP ERP到SAP HANA S/4平台,上述范围中缓效考核相关报表(本协议第一部分第大项)将不在本协设中实施,本协议中涉及的所有款项由340100元改为80100元(已扣除260,000元考核报表相关费用)。本协议第一条中b)条款的付款与c)条款的付款合并执行,即经甲方代表签字确认修改完本协议中涉及的所有的报表后并完成了主合同项下所有项目的验收(签署验收合格表)且经甲方确认本协议涉及的各项修改无遗留问题后,甲方支付乙方主合同剩余款项20%计289364元及本协议新增所有款项80100元的100%,合计369464元。《结项补充协议》亦明确约定本协议作为《BI合同》不可分割的一部分,具有同等法律效力。
2016年7月,鹰普公司向数聚公司支付了上述约定的原主合同20%的费用计289364元。
2016年8月28日,数聚公司李×向鹰普公司秦×、吴××等人发送《鹰普BI补充协议项目驾驶舱需求变更》邮件,提出更新28人天的费用及支付方式。2016年10月11日,双方共同签署鹰普BI项目补充协议《变更申请表》,涉及申请变更内容、申请变更原因、对本项止的影响评估、变更意见等方面,鹰普公司对变更内容无异议,对UI变更工作量人天存在异议,标注至少有11个人天的差异。
2016年12月29日,鹰普公司分别在两份鹰普BI项目补充协议《变更申请表》上签字确认,分别涉及申请变更工作量,对应增加工作量13.5人天和29人天。
同日,鹰普公司向数聚公司签发《完工比例确认函》,明确《结项补充协议》合同总金额340100元,截至2016年12月31日技术开发工作完工比例已经达到90%。
2017年1月17日,陈××向李×、黄×发送“鹰普BI项目补充协议_F009_变更申请表_驾驶舱”邮件,涉及工作量增加10人天。次日,李×向薛××发送“烦请签核变更单”的邮件。2月3日,薛××回复李ד变更单会稍后签字给你们”。该份变更单未签字。
2017年1月18日,数聚公司项目经理黄×向鹰普公司薛××发出邮件,提出“经过近半年的开发测试,‘无锡鹰普BI项目结项补充协议’中涉及的报表已经完成开发和UAT签字,相应的验收工作也请提上日程。附件是验收说明,如还有什么遗留问题请列入附件清单,作为验收说明的组成部分。如对‘无锡鹰普BI项目结项补充协议’验收说明还有什么意见和建议,也请提出”。
2017年3月23日至5月26日间,数聚公司李×、陈×与鹰普公司薛××、秦×等人之间相互发送“数聚BI项目付款明细”主题的邮件,确认变更单(二期合同外报表的修改费用)为217100元。
2017年3月24日,李×向薛××、秦×发送主题为“【请最终确认没有问题我这边就先盖章】鹰普BI运维合同”的邮件。3月29日,薛××向杜×发送邮件并抄送李×,内容为“针对BI的后续3个月的运维合同,请帮忙走商务合同流程,OA申请表单已起”,邮件附件为《付款备忘录》、《鹰普BI运维服务购买合同》。上述《鹰普BI运维服务购买合同》主要条款包括:2.服务的内容包含但不限于现有BI驾驶舱和报表的新增或改善需求、BW底层优化、BI的运维服务、BI系统的培训等;3.现有BI系统在之前开发过程中由于数据开发人员疏忽导致的BUG问题涵盖在之前项目范围应应由数聚继续完成,不在本合同范围;4.本合同的人选优先是张××,在张××无法提供甲方所需的BI服务内容时,乙方负责协调相应人员解决;BW工程师人天单价2800元,每月工作日15天,服务期限2017年3月13日至2017年6月12日,金额126000元;付款方式为合同签订后乙方开具50%(63000元)增值税6%发票给甲方,甲方在收到发票后5个工作日内支付此费用。服务完成后乙方开具50%(63000元)增值税6%发票给甲方,甲方在收到发票后5个工作日内支付此费用。《鹰普BI运维服务购买合同》最终未盖章。
2017年6月9日,李×向张××发送邮件并抄送薛××、陈×,内容为“请统计在鹰普没有运维合同的情况下您在鹰普服务的人天数量,请附上薛总签订的技术服务单”。当日,张××向薛××发送主题为“还未确认的工作量”的邮件,附“运维工作记录”。6月12日,薛××向张××等人发送主题为“转发:还未确认的工作量”的邮件并抄送张××,内容为“请服务代表先确认签字”。同日,张××向张××发送“请查收附件签字确认版”的邮件并抄送薛××等人,附件为薛××签字的两份“周工作记录”,工作时间共计5天。
2017年7月25日,鹰普公司薛××向数聚公司发送《BI项目停止告知函》,内容为“我代表鹰普公司,现正式告知你们,鉴于目前BI的问题,无法通过验收,鹰普决定停止整个BI项目,同时停止BI系统的任何使用。原因主要有但不止如下几点:1.项目本身仍然存在大量问题没有根本解决,比如底层的BW、数据链的运维不稳定报错、报表本身的数据不稳定,无法满足使用的要求。2.项目的知识转移不完全,文档不完整或文档跟程序不符,无法支撑后续的持续改进和运维。3.因BI系统本身数据稳定性和准确性等问题,给用户带来了很多误导,如销售统计报表,数据连续出现问题,误导了管理层的判断,同样在财务等其他报表部分也存在类似问题。正是BI本身的问题,直接导致整个BI系统95%以上的报表实际上一直处于无人使用的状态。”
二、合同履行中关于BW处理报错问题的相关过程
1、问题总体情况
鹰普方于2019年8月13日提出BI系统报错问题34个,于2020年7月提出BI系统报错问题14个,其中,重复问题9个,即鹰普方共提出BI系统报错问题39个,包括非处理链相关的问题28个,处理链相关问题11个。
2、BI系统报错问题分析
非处理链相关的问题28个均已解决,其主要原因包括数据抽取问题、报表逻辑变化或需求变更、数据源提供有误、BI系统未刷新等。
与处理链相关问题11个,分别为:(1)2016年9月7日提出2016年6-9月财务、销售和生产报表错误频出;(2)2016年10月8日提出“物料-消耗汇总表-日报”因处理链问题频发;(3)2016年10月11日反应10月8日出现的问题是相关处理链没有正确运行;(4)2016年12月17日提出集团内领料报表因BW问题,数据不正确;(5)2017年3月15日提出考核报表存在BI bug;(6)2017年5月26提出销售统计明细报表从5月中旬开始,销售额一直未变化;(7)2017年6月3日提出“增加交货工程&5月份销售报表”数据发生重大差异;(8)2017年6月8日提出BI中销售数据与SAP中数据差异较大;(9)2017年6月9日提出“销售统计-客服”数据不变化;(10)2017年6月15日提出销售报表不稳定;(11)2017年7月4日提出数据加载从2017年6月26日开始每天出错。
从双方提交的证据可以看出,问题(1)-(9)数聚公司已解决,上述问题出现的原因主要包括:(1)BI填报方案问题;(2)数据源抽取问题;(3)数据过滤不当;(4)主数据加载设计未考虑周全(应修改相关处理链);(5)服务器空间不足;(6)BI老模型的设计没有考虑数据相关性;(7)双方在报表逻辑上的理解偏差和报表逻辑更新。
对于问题(10)-(11),数聚公司的外聘人员张××提出需要修改模型和处理链(24人/天工作量),但由于双方未达成一致,该方案并未实施。
三、其它事实
鹰普公司提交与数聚公司往来邮件,证明鹰普公司基于数聚公司提出的硬件建议配置方案,与无锡派博科技有限公司签订的采购IBM硬件《销售合同》,总价279800元。
鹰普公司提交《劳动合同》4份,主张系为履行与数聚公司间合同安排4名专职人员参与,产生人力成本631852.12元。
鹰普公司又提交各式《会议签到表》、《培训出席表》、《会议出席表》共计30份,主张其在2014年10月10日至2016年8月23日间为完成BI项目安排大量人员开展需求调研、报表问题收集,合计569小时,按第人每天300天计算,耗费21338元。
本院认为:数聚公司与鹰普公司所签订的《BI合同》、《补充协议》、《结项补充协议》以及《采集平台购买合同》均系双方真实意思表示,内容合法有效,双方应按约履行。其中,《补充协议》系对《BI合同》项目计划重新调整后确定新的上线计划;《结项补充协议》系为解决《BI合同》项目的遗留问题,双方约定部分工作变动并就费用承担和支付方式作出调整,《补充协议》、《结项补充协议》均明确约定系作为《BI合同》不可分割的一部分,具有同等法律效力。而《采集平台购买合同》系双方另行签订,合同目的虽关联于《BI合同》项目履行中的数据采集,但《采集平台购买合同》的履行内容并不完全依附于《BI合同》,并非《BI合同》的组成部分。《采集平台购买合同》已实际交付合同标的并支付价款,已履行完毕,现鹰普公司基于双方间《BI合同》履行的争议而主张解除《采集平台购买合同》,不符合该合同的约定,也无法律依据,不能成立。
关于《BI合同》的履行。《BI合同》就合同履行约定为五个分段并相应的付款,即第一期,合同签订后,甲方支付合同金额30%计434046元;第二期,乙方提供的《需求分析报告》和《系统架构设计说明书》以及双方确认阶段交付物,经甲方验收通过,甲方支付合同总金额的15%计217023元;第三期,乙方完成固定报表开发试运行上线后提交《固定报表上线报告》和《UAT测试报告》以及双方确认阶段交付物提供,经甲方确认签字支付合同总金额的15%计217023元;第四期,乙方完成KPI指标和分析报表开发部署上线试运行2周后,提交《上线试运行测试报告》和《UAT测试报告》以及双方确认阶段交付物,经甲方验收通过,甲方支付合同总金额的30%计434046元;第五期,系统验收后6个月,甲方支付合同总金额的10%计144682元。后《结项补充协议》作出部分工作变动并调整付款方式为甲方在2016年6月30号之前支付原主合同20%的费用计289364元,经甲方代表签字确认修改完本协议中涉及的所有的报表后并完成了主合司项下所有项目的验收后(签署验收合格表),支付主合同剩余款项20%计289364元及本协议新增所有款项340100元的50%计170050元,合计459414元。在上述付款完成后3个月,经甲方确认本协议涉及的名项修改无遗留问题后,甲方支付本协议新增所有款项340100元剩余的50%计170050元。
合同签订后,双方履约内容实际经过了数聚公司提供的《需求分析报告》和《系统架构设计说明书》以及双方确认;数聚公司完成固定报表开发试运行上线后提交《固定报表上线报告》和《UAT测试报告》以及双方确认,鹰普公司按约先后支付相对应的第一、二、三期价款无异议。其后履行中,数聚公司完成KPI指标和分析报表开发部署上线试运行,数聚公司提交《上线试运行测试报告》和《UAT测试报告》并于2017年1月18日提出验收,并在2016年7月按《结项补充协议》支付第四期中的原主合同20%费用计289364元。就其后《BI合同》是否履行至第四期所约定的甲方验收通过,双方存在争议,数聚公司主张其在2017年1月18日明确提出验收,根据《BI合同》附件约定甲方未在2个工作日内书面通知乙方有验收不合格项目,逾期视同验收通过;鹰普公司则主张《BI合同》约定履约过程为用户测试、上线、运维,最后才是项目验收,至2017年1月合同履行仅处于测试阶段。
本院就此认为,《BI合同》就合同履行所约定五个分段,在第四、五分段中只有一个验收,即第四期中在乙方提交《上线试运行测试报告》和《UAT测试报告》以及双方确认阶段交付物,甲方的验收通过;第五期所约定是系统验收后6个月甲方支付合同剩余款项。鹰普公司根据《BI合同》附件四《鹰普BI项目工作说明书》中约定“工作范围”包括项目准备、蓝图设计、开发测试、上线运维、项目验收,主张合同履行顺序为先开发测试、上线运维,再项目验收。首先,关于“测试”,广义概念上在项目开发、验收、运行中均存在测试。本案双方开发过程中众多的测试内容和报告均反映了“开发测试”具体工作。从诉讼争议来看,鹰普公司实质是强调于在验收前需要有一个专门的测试环节,该主张难以成立。一是《BI合同》及其附件中并没有任何关于验收前一个专门的“测试”阶段和时间的约定。二是《BI合同》关于“项目验收标准”的约定“乙方提交《上线试运行测试报告》和《UAT测试报告》以及双方确认阶段交付物,经甲方验收通过”,就合同文义并结合行业惯例来理解,应当是数聚公司提交验收所需要的材料并提出验收申请,双方依合同约定进行验收。而如鹰普公司的主张,则表示其在合同履行中可以获得一个不受时间限制的“测试”权利,否定了数聚公司提出验收申请的权利,该种主张既不符合前述合同约定及行业惯例,实际上也排斥了“若有验收不合格项目,甲方应于2个工作日内书面通知乙方,逾期视问验收通过”的验收方法,该主张不能成立。其次,关于“运维”,依行业惯例,运维通常是指在系统开发完成验收交付后的运行维护。除非合同双方另有特别的约定。鹰普公司主张运维系项目验收前的履约内容所依据的是《BI合同》附件四《鹰普BI项目工作说明书》中约定“工作范围”包括项目准备、蓝图设计、开发测试、上线运维、项目验收。根据《鹰普BI项目工作说明书》的内容来看,该“上线运维”内容明确为“系统配置和管理手册、用户操作手册、系统运维和日常运维检查手册、上线测试报告、UAT测试报告”,对照前述事实认定,数聚公司已经实际完成该些合同内容。而2017年3月至6月间双方所商议签订的《鹰普BI运维服务购买合同》以及鹰普公司实际签字确认的相关运维工作记录服务内容为“现有BI驾驶舱和报表的新增或改善需求、BW底层优化、BI的运维服务、BI系统的培训等”。可以判断,《鹰普BI项目工作说明书》中的“上线运维”与《鹰普BI运维服务购买合同》显然具有完全不同的内容。鹰普公司将双方在2017年3月始实际履行并拟签定的《鹰普BI运维服务购买合同》及相关运维工作主张为《BI合同》履行中的“上线运维”,既不符合合同约定,也不符合事实。从逻辑上讲,如果是《BI合同》履行中的“上线运维”工作,则在BI项目没有验收和交付,根本不需要产生收取运维费用的问题。故,数聚公司主张双方已实际进入《BI合同》系统验收后运维工作,更为合理。再次,关于是否进入验收环节的问题上还可以注意到的是,双方履约进度及对应的付款均表明已实际进入到验收环节,即《结项补充协议》所约定的经甲方代表签字确认修改完本协议中涉及的所有的报表后并完成了主合同项下所有项目的验收后(签署验收合格表),支付主合同剩余款项20%及本协议新增所有款项340100元的50%合计459414元。数聚公司(仅)在2017年1月18日明确提出验收,鹰普公司主张还有未履行环节,与合同不相符。鹰普公司不认可该验收申请,与其在2017年7月向数聚公司发送《BI项目停止告知函》中又明确提出“鉴于目前BI的问题,无法通过验收”的内容表述也是相矛盾的。
综上,根据双方具体履约情况判断,数聚公司实际交付《需求分析报告》、《上线试运行测试报告》、《UAT测试报告》等验收所需材料,并提交验收说明以及提出验收申请,应判断双方履约进入验收环节。鹰普公司未在合理期限内书面通知乙方有验收不合格项目,根据《BI合同》约定,应视同验收通过。
关于本案争议的系统报错根本原因是否是处理链本身的设计错误。鹰普公司共计提出BI系统报错问题39个,包括非处理链相关的问题28个,处理链相关问题11个。其中,非处理链相关的问题28个均已解决,其主要原因包括数据抽取问题、报表逻辑变化或需求变更、数据源提供有误、BI系统未刷新等。与处理链相关问题11个,问题1-9数聚公司已解决,问题出现的原因主要包括:(1)BI填报方案问题;(2)数据源抽取问题;(3)数据过滤不当;(4)主数据加载设计未考虑周全(应修改相关处理链);(5)服务器空间不足;(6)BI老模型的设计没有考虑数据相关性;(7)双方在报表逻辑上的理解偏差和报表逻辑更新。问题10.2017年6月15日提出销售报表不稳定以及问题11.2017年7月4日提出数据加载从2017年6月26日开始每天出错,数聚公司的外聘人员张××提出需要修改模型和处理链(24人/天工作量)的建议,但双方未达成一致,该方案并未实施。
同时根据数聚公司举证反映,在整个开发过程中,自2014年12月8日始至2017年5月27日多次出现的BW处理链报错,经数聚公司分析原因,均是以向鹰普公司提出“空间已不足,请扩展”,在鹰普公司扩容表空间后,系统恢复运行。另有部分数据错误,经分析产生于统计口径和逻辑,由数聚公司与鹰普公司间就了解和应用甲方习惯及需求不断沟通加以调整。
综合上述证据,并不能给出鹰普公司所主张的处理链本身是否存在技术错误的结论。对照合同约定的验收标准,无论是鹰普公司处理链相关问题还是非处理链相关问题,其表现主要为部分报表数据出错,也均没有达到验收标准中所限定的1级(整个系统处于瘫痪状态,不能正常运行)或2级(系统应用功能严重下降,使客户业务不能正常运作)程度。
从另一层面来分析,鹰普公司主张BW处理链报错是由于处理链底层逻辑问题,其主要依据为张××在部分邮件中的表述。就张××所发邮件中的表述来看,提及“模型是老模型,本身没考虑数据相关性,造成模型需要的数据不在一个处理链中,导致了问题发生”、“从项目角度说,以以前的模型设计确实存在一些瑕疵,重新抽取数据时会造成顺序问题,导致了数据有问题”、“之前的模型设计确实从非常严谨的角度看,是有些问题的”。张金友同时提及“之前的模型加载设计,如果不是服务器空间满导致停止运行,数据不稳定的问题是不会出现的”、“上次因为服务器空间不足导致了大部分处理链终止,被读取的模型数据停止了”、“销售报表不稳定是有二个大原因:1.前段时间报表的逻辑有过几次调整;2.有过几次服务器空间满,重新抽取数据造成的数据问题”、“上次数据不正确的本质原因是数据加载时,服务器空间满了,导致处理链全部中止;重新加载数据时,因为处理链的运行顺序导致了数据的读取逻辑发生时间差问题”、“事实来说,是数据量和服务器二方面造成的。我们的数据库性能是我做过的项目中最差的了。而且没有一家公司的BW上完之后是一直完美运行不出错误。除非上项目的暑假,都用高价钱招专家级顾问。基本上我做过的其他项目后期都要有优化,包括业务变更、增加、BW性能优化等”。
张××就此出庭作证陈述“这个项目在需求层面有点中高难度。第一是沟通上面有点难度,因为需求本身难度就比较高,沟通上会有一些没有同步。第二是这边有一些,用户也在换人,会对需求造成一些困扰。技术层面,也是相对复杂一些”、“数据进来之后会不断增长需求量,造成磁盘空间都用完,系统就会挂掉”、“(处理链的设计)两种方式。一种是通过多个处理链一起跑,然后用并发的方式来提升系统的响应速度,另外一种是为了确保在加载的过程里考虑数据的依赖关系。一种是通过时间来控制相关性,一种是用技术上来处理依赖关系,这两种方式就是各有优缺点。在我们这边,因为之前处理链停了好多次,我们每次手工处理数据的话,这个工程量考虑到工作量上面。如果是用时间线来并行的话,这种方式就是处理数据,过程是比较长的,然后花费的工作量比较大。如果要是说用技术调整的方式就保证它是依赖的,而不是用时间去保证依赖的。这种方式,再出现问题之后,对这个数据做恢复工作量相对来小一些。所以基于当时的情况,因为经常会由于磁盘空间不足,导致处理链挂掉,我要处理数据,所以当时为了说处理数据上比较容易处理,而且能够保证处理后的数据正确率比较高,所以就提出来说我要重新设计处理链,让它在技术上面产生这种依赖性,这样的话就后续处理好处理一些”。
全面浏览上述张××表述内容,并不存在鹰普公司所主张的张××承认或判断系统报错根本原因是处理链本身的设计错误的事实。张××如上所提及应当是归属于《鹰普BI运维服务购买合同》中现有BI驾驶舱和报表的新增或改善需求、BW底层优化、BI的运维服务的内容。
最后,如双方所述的鹰普公司根据数聚公司对BW的功能优缺点的分析建议选定使用BW,双方应当是意识到系统开发本身具有的优缺点。在实际开发中,需要双方共同配合和努力去解决问题,不断优化系统。本案中,鹰普公司主张2016年9月至2017年7月间发生系统报错为底层设计错误及数据链错误,依据不足。数聚公司主张的已交付并应视为通过验收有事实依据,符合合同约定,对其诉讼请求予以支持。鹰普公司的反诉请求与事实不符,缺乏法律依据,本院不予支持。依照《中华人民共和国合同法》第六十条、第一百零七条、第一百零九条、第一百一十四条、第三百五十六条、《中华人民共和国著作权法》第二十四条之规定,判决如下:
一、鹰普(中国)有限公司于本判决生效之日起十日内支付上海数聚软件系统股份有限公司合同款846564元,支付逾期付款违约金100201元;
二、鹰普(中国)有限公司于本判决生效之日起十日内支付上海数聚软件系统股份有限公司运维费用14000元,并支付逾期付款利息(自2017年6月12日起计算至实际支付日止,按照全国银行间同业拆借中心公布的贷款市场报价利率计算);
三、驳回鹰普(中国)有限公司的反诉请求。
如果未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百五十三条之规定,加倍支付迟延履行期间的债务利息。
本诉案件受理费14483元,财产保全申请费5000元,由鹰普(中国)有限公司负担;反诉案件受理费12151.5元,财产保全申请费5000元,由鹰普(中国)有限公司负担。
如不服本判决,可在判决书送达之日起十五日内,向本院递交上诉状,并按对方当事人的人数提出副本,上诉于最高人民法院。
审判长 管祖彦
审判员 林银勇
审判员 任小明
二〇二〇年九月九日
法官助理 严常海
技术调查官 高天铎
技术调查官 吴瑶裔
书记员 贺磊