上诉人(原审被告):李某,男,1995年12月13日出生,汉族,住湖南省邵东市。
委托诉讼代理人:甘某,某某律师事务所1律师。
被上诉人(原审原告):刘某,男,1993年1月3日出生,汉族,住安徽省濉溪县。
上诉人李某因与被上诉人刘某计算机软件开发合同纠纷一案,不服上海知识产权法院(2022)沪73知民初691号民事判决,向本院提起上诉。本院于2023年10月25日立案后,依法组成合议庭进行了审理。本案现已审理终结。
李某上诉请求:1.撤销一审判决,依法改判驳回被上诉人的一审全部诉讼请求;2.本案一、二审诉讼费用由被上诉人承担。事实与理由:一审法院认定事实不清,适用法律错误。1.被上诉人于2020年5月12日发出的《Bug汇总-5月12日(1).docx》文件,上诉人在2020年5月13日回复修改针对的是该文件内容,且对于期限使用了“预估”“尽快”等不确定字眼,一审法院就此认定上诉人承诺于2020年5月28日完成验收,与事实不符。2.2020年5月31日,上诉人向被上诉人发送《bug汇总-5月12日(问题反馈).docx》文件后,被上诉人又向上诉人多次发出调整功能和布局的文档,上诉人均按照要求进行修改和调整。正因被上诉人的不断修改要求才导致了上诉人迟迟无法完成交付,上诉人的开发成本也因此不断增加,一审法院却将延迟交付的责任全部归咎于上诉人,显失公允。3.开发过程中,被上诉人并未向上诉人主张过迟延交付的违约责任,最终在双方合意的基础上完成了验收。验收完毕后,被上诉人基于其他商业因素的考虑要求上诉人承担迟延交付的责任,显然不利于商事交易的稳定。4.一审法院认定的违约金过高,未全面考虑上诉人在开发过程中的工作量、成本承担,以及延期交付系被上诉人原因等因素。
刘某辩称,《Bug汇总-5月12日(1).docx》文件非新增功能修改内容,bug是软件使用过程中出现的导致软件无法正常操作的问题,而后续经上诉人修改后又不断出现新的问题,被上诉人提出的修改需求文件都明确表示是bug,故5月28日是整个完整软件的交付日期,而非仅针对该bug,请求二审法院依法维持原判。
原告刘某向一审法院提出诉讼请求:1.依法判令被告支付原告逾期违约金人民币66,268.8元(以下币种相同,自2020年2月4日起至2020年5月14日,以94,400元为基数,按每日3‰计算;自2020年5月15日起至2020年6月16日,以100,300元为基数,按每日3‰计算;自2020年6月17日起至2020年9月17日,以106,200元为基数,按每日3‰计算);2.依法判令被告支付原告律师费6,000元。事实与理由:2019年9月4日,原告与被告签订《小程序+app开发合同》(以下简称涉案合同),约定原告委托被告开发小程序和app,开发费用合计118,000元,第一周期小程序开发应支付94,400元,第二周期app开发应支付尾款23,600元;小程序开发周期共计90天,app开发工期共计35天,自小程序Master版上线之后开始计算;由于被告原因未能在约定期限内完成约定开发内容,则应按照超过合同周期每日承担原告已付金额3‰的比例向原告支付逾期违约金,赔偿金额不超过原告已支付合同金额;违约方除向守约方赔偿外,还需承担另一方为取得此等赔偿而支出的诉讼费、律师费、差旅费等所有费用。2019年9月4日至2019年12月8日期间,原告向被告支付第一期小程序的所有服务进度款94,400元。按照涉案合同约定,第二期app项目工期35天,且被告明确表示自2019年12月12日开始开发app,但由于被告原因迟迟不能交付,致使原告项目上线受阻,经原告反复催促,双方于2020年9月17日完成项目的验收交付。原告已完全履行了支付开发费用的义务,被告却因自身原因迟延交付开发成果,已经构成了严重违约,故原告诉至法院,请求支持其上述诉讼请求。
被告李某辩称,1.原告对涉案app和小程序都进行了验收并付清了尾款。2.涉案合同履行过程中被告根据原告的要求进行过多次修改和调整,无形中提高了被告的开发成本,但被告始终满足原告的各种要求。按照涉案合同第8条违约责任的相关约定,任何一方违反合同开发功能附件列表及图片素材之约定均违约,故原告要求被告不按照合同约定的功能进行开发,原告违约在先,且因原告增加或调整功能需求而导致开发周期延长,被告有权顺延约定的交付时间。3.在软件验收中,原告并未就迟延交付提出过异议,并按照约定支付了软件开发费用,应视为原告以实际行动接受了软件开发方的迟延交付。综上,被告不存在违约行为,且原告主张的违约金过高,故请求法院驳回原告的诉讼请求。
一审法院依据确认和采纳的证据以及当事人的陈述等查明如下事实:
一、涉案合同的签订情况
2019年9月4日,原告刘某(甲方)与被告李某(乙方)签订涉案合同,该合同与本案有关的主要内容为:三、乙方的权利和义务1.按约定为甲方开发小程序[详细内容见“房消消功能清单列表(确认版).xls”]。2.按照本合同规定收取费用。……4.本合同小程序、app项目建设完成并且甲方支付完毕全部款项后,甲方享有委托乙方创作的全部网页(包含文字、图画及其组合)的版权;小程序、app项目中相关程序、文件源码的使用权属甲方所有。四、应达到的技术指标和参数:本项目委托项目开发的平台及系统运行环境要求如下:1.【Android】Android系统:4.4以上,未经修改的安卓手机系统;显示方式:竖屏显示……2.【iPhone】iOS系统:9.0以上;显示方式:竖屏显示……。五、委托项目的研究开发工期:小程序开发工期(时间周期):共计:90天,2019年9月6日至2019年12月6日,应完工并交付给甲方。app开发工期(时间周期):共计35天,小程序Master版上线之后开始计算。维保时间:交付日起一年。六、研究开发计划:第一阶段——墨刀原型图设计:乙方应在合同签订之日起的5个工作日内把墨刀原型图提交给甲方验收确认。第二阶段——UI设计:若甲方对UI有特殊要求,甲方应在合同签订之日起3个工作日内把UI制作的要求书面提交给乙方,乙方在收到该制作要求之日起的预计10个工作日内按照甲方要求完成UI设计并提交给甲方。第三阶段——Beta版:功能完成版。本版本的验收目标是将本项目委托范围内UI工作全部完成,本版本的验收允许非致命性BUG的存在,同时不允许致命性BUG的存在。致命性BUG指软件内部逻辑错误或引发软件崩溃的程序错误;乙方需向甲方提供云端控制平台账号,供甲方使用;Beta版提交后的甲方测试期内,乙方将冻结任何数据、功能的添加、更新,仅根据甲方的反馈进行修改。第四阶段——Master版:最终完善版。本版本作为本项目验收交付的最终版,在Beta版本的基础上不存在全部已知的BUG。验收流程:乙方应提供相关版本测试环境,以保证能够顺利完成对交付版本的测试验证。配合、确认及验收约定:1.双方应按照本合同明确约定的确认或验收期限对对方提交的资料、阶段成果、最终成果等提交物的接收、内容、质量等进行确认或验收;2.如甲方在上述时间内未提出相关版本的修改意见或要求或验收,视为各版本在该约定期限届满时通过甲方测试;甲方签署附件三《委托项目验收单》,Master版本的提交视为最终验收,委托项目进入质保期;3.双方在履行合同时,所有书面的沟通、修改意见及要求按附件四《项目沟通记录表》的形式进行项目的沟通和反馈;4.乙方向甲方提供项目阶段确认后,甲方应在1个工作日内回复确认,如因甲方确认时间延迟,项目开发周期顺延。七、费用和结算方式(每阶段费用确认之后1个工作日内付款)小程序和app开发费用合计:118,000元,由于开发周期分为两个阶段,故采用分期付款的形式。一期小程序开发总额:94,400元(相当于总款80%),二期APP开发总额:23,600元(相当于总款20%)。一期小程序94,400元付款明细如下:1.签合同后,付定金18,880元(小程序开发总额的20%)(包含确认前端费用10%);2.墨刀原型图验收确认后,付18,880元(小程序开发总额的20%);3.UI设计验收确认后,付18,880元(小程序开发总额的20%);4.Bate版本测试验收确认后,付18,880元(小程序开发总额的20%);5.Master版本验收确认后最终完善版,付18,880元(小程序开发总额的20%)。二期app23,600元付款明细如下:在完成原有墨刀原型、UI基础上1.Bate版本测试验收确认后,付11,800元(APP开发总额的50%);2.Master最终完善版本验收确认后,付11,800元(APP开发总额的50%)。八、违约责任……4.违约责任:①由于乙方原因未能在约定期限内完成约定内容(包括所有功能列表及附件)的,则应按超过合同周期每日承担甲方已付金额3‰的比例向甲方支付逾期违约金,赔偿金不超过甲方已支付合同金额。若因乙方原因导致累计延期超过10个工作日的,甲方有权利单方面解除合同;乙方应退还已付全部费用,违约方应支付合同总金额的30%给守约方作为违约金。若还不能赔偿守约方损失的,守约方有权按照实际损失追偿。②由于乙方原因未能在约定完成约定的功能内容(包括所有功能列表及附件),乙方应退还已付全部费用,违约方应支付合同总金额的30%给守约方作为违约金。若还不能赔偿守约方损失的,守约方有权按照实际损失追偿。③双方在执行本合同过程中,任何一方违反“本合同及开发功能附件列表及图片素材”之约定,均为违约。违约方除向守约方赔偿外,还须承担另一方为取得此等赔偿而支出的所有费用,包括但不限于仲裁费、诉讼费、律师费、差旅费等。十、售后服务(一)关于质保服务:委托项目经甲方验收合格并签署乙方出具的附件三《委托项目验收单》之日起,乙方免费为软件提供一年的质保期,质保期过后,如甲方委托乙方继续维护,再经协商另付服务费;(二)关于质保服务具体内容如下:1.乙方将向甲方提供软件技术指导和远程维护服务;2.乙方负责解答甲方提出的疑难问题和对甲方的工作人员进行技术指导;3.乙方负责修复软件运行中出现的BUG。
二、涉案合同的履行等情况
涉案合同签订同日,原告向被告支付一期小程序定金18,880元。2019年9月11日,原告向被告支付一期小程序原型图验收确认后的款项18,880元。2019年9月25日,原告向被告支付一期小程序UI设计验收确认后的款项18,880元。2019年12月1日,原告向被告支付一期小程序Bate版本测试验收确认后的款项18,880元。2019年12月8日,原告向被告支付一期小程序Master版本验收确认后的款项18,900元。
2019年12月12日,被告向原告发送微信消息“那我这边就开始做app了”,原告回复“嗯,我这边跟进流程中苹果开发”。同年12月29日,被告向原告发送微信消息“修改的工作量有点大,我让她们在抓紧改,这几天改完再发布一次看看”“app的做了90%左右了”。
2020年1月2日,被告向原告发送微信消息“刘总,下面这几个新增的功能修改工作量太大实在没办法再免费加了,如果要加的话我们是按1天800-1,000元收取费用,你考虑看看。未认证用户:点击功能键自动跳转认证3天,开发商收到报备短信提醒1天,独立经纪人改成可以查看佣金和报备2天”,原告回复“1.从新增两个字来说,我没想到开发商收到报备提醒,成为今天新增议价的一条。你可以自己想想11.8万的单子,短信提了,但是没在你们做的范围。我也是百思不得其解。2.未跳转用户认证,大框架还是原来大框架,只是做了个人平行权限的调整。”同年1月5日,被告回复“嗯,我肯定是想尽力帮你做好的毋庸置疑,其他的问题我们下周也会全部改好,昨天我跟同事协调好了,大家合作这么久了能帮就帮了吧,这次修改就按你说的3,000做了先”,原告回复“好的”。同年1月12日,被告向原告发送名为“修改文档2020-01-12.docx”的文档,原告回复“上次没修改完的先给我们修完,钱都给付给你了”,被告回复“之前的问题都改完了啊,没改完的也都在这个文档里”。同年1月13日,被告再次向原告发送上述文档,并发送消息“我同事这边评估好了,你看看有没有理解错误的地方”“尤其是增加修改的那些功能请仔细确认下,这关系到你们的费用增加”。同年1月14日,原告回复“关于【增加功能的修改周期】,我们通过跟其他技术的沟通,仔细斟酌,重新做了评估……”被告回复“我这边跟同事协商好了,就按照你说的第6条隐藏删除功能,然后9,000元做吧”“你看看没问题的话,我就把修改文档发你邮箱,你邮件回复确认一下”,原告回复“我们现在是先隐藏,但是第六条的功能你们不能不做了”。同日,被告向原告发送包含附件“修改文档2020-01-14.docx”的电子邮件,要求原告进行确认。该邮件附件中载明,修改功能共计23项,增加功能的修改周期:2条+12条+21条=1天4条0.5天5条1天7条7天17条3天,增加功能的修改费用共计:9,000元。
2020年2月5日,原告向被告发送微信消息“新房,变更发布者问题,什么时候能修改好。注:变更对接人后,公司名称未同步修改已经积累几十个项目等待变更了”“刚开始都可以的,怎么后面又不行了”,被告回复“要等元宵节后,现在大家都在老家还没去上海”,原告回复“节后让他们把问题都排查下,不能老出现问题”,被告回复“好的”。同年2月23日、2月24日,原告先后向被告提出“楼市头条页:文字大小及布局微调”“新增上架内容调整”的修改意见。同年2月25日、2月27日,原告两次询问被告软件修改进展,2月27日被告回复“不好意思刘总,同事前几天都在忙,他昨晚说今天答复我,我这边确定好了马上联系你”“前端能改的部分我让另外的同事已经在改了”,原告回复“嗯,尽快推动起来,时间不等人。我们得利用功能抢占市场”。同年2月29日,原告又询问被告修改进度,被告向原告发送名为“房消消统一修改记录答复202…2-28.docx”的文档,并回复“你看看有没有遗漏的问题”。同年3月3日至3月10日,原告多次询问被告修改进展及什么时候能够上线,被告于3月10日回复“后台更新好了,还在改前端样式,改好了以后测试一下再提交上线”。同年3月21日,被告向原告发送消息“这次的修改时间确实拖的久了非常抱歉,唉……也怪我之前对你提的修改要求都答应了下来,从11月份初版提交到现在还在一直改,当初就该先按照最初谈好的功能做完上线,现在落的里外不讨好,这个项目我们是真的尽力了,别的我也不多说了,这两天我督促他们把剩下的问题先提交上线吧”,原告回复“确实有几个功能做了微调,我们做了文字方面的,你们能帮忙我们看在眼里,放在心里。非常感谢。因为我们是分阶段上线,里面很多功能没有实际使用和操作过,发现问题给予修改也是理……”同年3月23日,被告回复“同事那边反馈了,1.年前的修改文档明天会发布更新。2.名片扫描认证的功能开发评估下来需要22天,不过还是建议这个功能现在先不要开发。3.app等小程序发布以后30天内完成给到测试版本。”原告回复“收到”。
2020年4月13日,被告向原告发送微信消息“app测试版大概需要1个月时间做好,也就是5.13号,这中间不能再做其他修改了”,原告回复“好的”。同年4月28日,原告询问被告“5月13号app测试版能按期上线吗?”被告回复“可以”。同年5月1日,被告向原告发送了Android和iOS两个版本app的链接和密码,并发送消息“app测试版好了你们看看,小程序的问题我让同事看下”,原告回复“好的。这几天放假了,等节后团队人员都回来,让他们都体验一下”。同年5月9日,原告向被告发送名为“BUG-5月9日(未完待续)(1).docx”的文档,并于同年5月10日发送消息“我们提交的你们要尽快修改,我们要加快上线速度”,被告回复“好的,明天安排修改,app测试阶段的费用明天也请付一下”,原告回复“我们还没测试完”“你们先修改已知问题”。同年5月12日,原告向被告发送名为“BUG汇总-5月12日(1).docx”的文档(该文档中列明了共计131项BUG),被告回复“好的,收到,我们尽快修改好”。同年5月13日,被告向原告发送消息“这些修改全部改好预估需要15天左右,我这边抓紧尽快改好”,原告回复“这么久啊,一周不行吗?”“这太耗时间了”,被告回复“没这么快,东西蛮多的”“我这边反正尽量抓紧改,改好了就发给你们验收”,原告回复“这次问题这么多,改完以后不会出现这种情况了吧”,被告回复“嗯”。同年5月14日,原告向被告支付了二期app款项5,900元。
2020年5月21日,原告向被告发送微信消息“在吗,出现紧急问题”“全部空白”“无法展现和使用”。同年5月28日,被告向原告发送消息“还在改,今天晚上会再出来一版,我测试一遍没问题就发给你看哈”,原告回复“1.之前提交的所有问题你们要对照着测试,确保解决;2.是否有新问题出来,解决完善”。同年5月29日至5月31日,原告多次询问被告“修改好了吗”“什么时候能好”,被告于5月31日向原告发送名为“BUG汇总-5月12日(问题反馈).docx”的文档。同年6月3日,原告向被告发送名为“房消消-BUG汇总-6月3日(2)(1).docx”的文档(该文档中列明了“BUG汇总-5月12日(1).docx”文档所列BUG中仍存在的20余项BUG,以及新增加的app和小程序BUG共计93项),并发送消息“我们把测试之前的BUG解决情况,和刚刚测的BUG,汇总到一起了。你们看一下多久能解决好”,被告于同年6月5日回复“下周末左右”。同年6月16日,被告向原告发送消息“改好了”,原告回复“收到,我们看一下,昨天发的小程序BUG你看一下”,被告回复“app测试阶段没付的那一半款项,请付一下”,原告于某向被告支付5,900元。同年6月18日,原告向被告发送名为“APP测试bug(6.16-6.18).docx”的文档(该文档中列明了app存在的BUG共计60项),并发送消息“这版本app测试的BUG总结”。同年6月21日,原告询问被告“测试出来的BUG什么时候能修改好”,被告回复“周三左右”。
2020年6月26日,原告向被告发送微信消息“这是后台在使用及测试过程中存在的问题,还有部分功能列表里未做的”,并向被告发送名为“房消消-后台B**(6.26)(1).docx”的文档,被告回复“收到,我安排一下”“app的修改周三出了一版,我测试了几遍有几个问题不行,我让同事再改下,节后一两天可以好”。同年7月2日,原告向被告发送名为“房消消APP-BUG(2020-0701)(2)(1).docx”的文档(该文档列明了app存在的BUG共计37项),被告于7月3日回复“这周末跟后台一起都会改完,到时候我测试一下没问题就发给你”,原告回复“好的,都改好,别再遗留问题了,我们这都是第三次了”,被告回复“好的”。同年7月5日,原告向被告发送名为“房消消APP-BUG(2020-07-05)在原有基础上发现新B**(1).docx”的文档(该文档列明了7月2日发送文档中所列的37项BUG,以及新增加的2项BUG),被告于7月8日回复“其他改好了,蓝色的那三个接口问题遇到技术问题了,技术还在想办法解决”。同年7月11日,原告询问被告“BUG修改了2个月,还存在问题,什么时候能彻底修改好”,被告回复“已经安排在改了,技术反馈文档里的问题周二左右可以改好”。同年7月14日,被告向原告反馈修改情况,并发送消息“技术反馈了,不过我还没时间测,要不你们先看看”。同年7月15日,原告询问被告“什么时候能全部修好”,被告于7月16日回复“这周可以,争取这周把app上线吧”,原告回复“这周必须上线了,BUG已经修改两个月了”“还有后台和小程序的问题没修改”“很多问题从第一次修改BUG就提交问题了,至今没有解决”,被告回复“好的,我也想尽快做好上线,这周给同事定的目标是不睡觉也要改好了,到时候我们多拿几个手机多测试几遍,整体再跑几遍没问题后就发给你”。同年7月19日,原告向被告发送名为“房消消bug-上一次遗留问题+新问题(2020-7-9)(2)(1).docx”的文档,被告于7月20日回复“这几天她们先改你发的这些问题,然后周末你们测,有啥问题当场改掉”,原告询问“后台的内容什么时候修改好”,被告于7月22日回复“这周一起”。
2020年8月2日,原告在微信群“房消消开发沟通专用群”中发送消息“app和小程序修改好了吗”,被告方开发人员回复“还没”。同年8月5日,原告在微信群中@被告并发送消息“APP+小程序+后台,已经连续修改了3个月了。什么时候能够完全修改好,完成第四阶段的验收及交付。注:第四阶段——Master版:最终完善版。本版本作为本项目验收交付的最终版,在Beta版本的基础上不存在全部已知的BUG。”被告回复“这周会把你群里发的文档里的问题改好”。同年8月10日至8月14日,原告多次在微信群中询问“修改好了吗”,被告方开发人员回复“还有几个小问题没改,有点麻烦,还没改掉,明天看看,周日打包吧”。之后,原告又多次在该微信群中提出app和小程序存在的问题,被告开发人员对问题进行了修改。同年9月11日,原告在微信群中发送消息“我们测试好了,我都急死了,拖了几个月终于也算结束了,不然年初就该上线的……你这边赶紧安排上线,同时我们按照合同做好源代码的确认和交接。”同年9月17日,原、被告双方签订《委托项目验收单》,验收结论为被告受原告委托,进行“房消消小程序和App项目”的研发,现已将该委托项目合同中的“小程序和App”所有功能开发完成,符合原告验收要求,原告验收合格。同年9月21日,原告向被告支付5,900元,被告通过微信向原告发送了小程序和app的前端代码,并发送消息“后台程序文件和数据库文件我们本地电脑没有,直接在你们服务器线上做的,你让技术上服务器看就行了”。同年9月27日,原告向被告发送消息“根据签署的委托项目验收单的验收内容,已完成验收,符合验收标准。根据约定,今日支付剩余的最后尾款5,900元。(本次支付后,合同总金额118,000元所有款项全部支付完成)你确认一下,我把尾款转给你”,被告回复“对”。同日,原告向被告支付尾款5,900元。
三、其他
原告(甲方)与某某律师事务所2(乙方)签订聘请律师合同,约定甲方与李某因合同纠纷一案,聘请乙方出庭代理。乙方接受甲方委托,指派曾欣、赵鹏两名承办律师作为甲方与李某合同纠纷一案一审阶段的代理人,双方协商一致就委托事项采用固定收费方式计收律师服务费,固定收费为6,000元,在合同签订之日支付。某某律师事务所2向原告开具了金额为6,000元的诉讼代理费发票。
一审法院认为,根据《最高人民法院关于适用〈中华人民共和国民法典〉时间效力的若干规定》第一条第二款的规定,民法典施行前的法律事实引起的民事纠纷案件,适用当时的法律、司法解释的规定,但是法律、司法解释另有规定的除外。本案双方当事人所争议的法律事实发生于民法典施行前,且不存法律、司法解释另有规定的情形,故本案仍应适用《中华人民共和国合同法》(以下简称合同法)的相关规定。
本案中,原、被告签订的涉案合同系双方当事人真实意思表示,依法成立,合法有效,对双方当事人具有法律约束力。当事人应当按照合同约定全面履行自己的义务。根据双方当事人的诉辩意见,本案一审的主要争议焦点在于:被告是否存在迟延交付开发成果的违约行为,以及原告要求被告支付逾期违约金和律师费的诉讼请求能否获得支持。
原告认为,二期app项目工期35天,被告于2019年12月12日开始开发app,因增加功能另行增加工期18.5天,被告应于2020年2月4日交付开发成果,但双方于2020年9月17日才完成项目的验收交付,故被告迟延交付开发成果构成违约。被告则认为,涉案合同履行过程中原告要求被告不按照合同约定的功能开发,违约在先,被告根据原告的要求进行过多次功能修改和调整,导致开发周期延长,被告有权顺延约定的交付时间,被告不存在违约行为。一审法院认为,首先,根据一审法院查明的事实,涉案合同签订后,原告按约支付了一期小程序开发费用,被告亦按约进行了小程序的开发。2019年12月12日,被告开始进行app开发。因原告要求增加软件功能,双方于2020年1月14日确认了需要增加的功能、修改周期以及修改费用。因此,双方在涉案合同履行过程中系通过合意变更了原合同约定的软件功能,被告关于原告违约在先的辩称意见,一审法院不予采纳。其次,双方于2020年1月14日确认软件需要增加的功能,并就增加功能所需工期进行了约定,虽然当时被告表示“app的做了90%左右了”,但小程序功能的增加,app的相应功能也需要调整和修改,必然会对app的开发进度产生影响。按照涉案合同的相关约定,app开发工期共计35天,自小程序Master版上线之后开始计算。2020年3月23日,被告表示“app等小程序发布以后30天内完成给到测试版本”。同年4月13日,被告表示“app测试版大概需要1个月时间做好,也就是5.13号,这中间不能再做其他修改了”,原告回复“好的”。根据上述微信聊天内容可以认定,双方就app测试版的交付时间进行了重新约定。原告主张被告应于2020年2月4日交付开发成果,一审法院不予采纳。再次,被告于2020年5月1日向原告提交app测试版后,原告多次向被告提出app和小程序(包括后台)存在的多项BUG,被告于同年5月13日表示,“全部改好预估需要15天左右,我这边抓紧尽快改好”“我这边反正尽量抓紧改,改好了就发给你们验收”。但被告承诺的上述修改及提交验收期限届满后,app和小程序仍存在未修改完成的BUG和新增加的BUG,后经被告多次修改,双方于同年9月17日签订《委托项目验收单》,确认小程序和app所有功能开发完成,验收合格。因此,原告关于被告迟延交付开发成果构成违约的主张成立。
关于原告要求被告支付违约金的诉讼请求,按照涉案合同第八条的约定,由于被告原因未能在约定期限内完成约定内容的,则应按超过合同周期每日承担原告已付金额3‰的比例向原告支付逾期违约金,赔偿金不超过原告已支付合同金额。如前所述,本案双方就app测试版的交付时间重新约定为2020年5月13日,被告于5月1日提交app测试版后,于5月13日承诺修改及提交验收版本的期限为15天左右,该期间对于app测试版本的测试、BUG反馈、修改、提交验收版本的过程尚属合理,故一审法院认定被告最迟应于2020年5月28日完成软件开发并向原告提交验收版本。被告未在该期限内完成软件开发,应某次日起向原告支付逾期违约金。被告主张涉案合同约定的违约金过高,应当对违约金是否过高承担举证责任,现被告并未就此予以举证,故一审法院对被告的该主张不予采纳,被告应某2020年5月29日起至2020年9月17日止,按照上述涉案合同的约定向原告支付违约金。原告关于该日期之前的违约金主张,一审法院不予支持。
关于原告要求被告支付律师费的诉讼请求,按照涉案合同第八条的约定,违约方还须承担另一方为取得赔偿而支出的所有费用,包括但不限于仲裁费、诉讼费、律师费、差旅费等。本案中,被告存在迟延交付开发成果的违约行为,原告据此要求被告按照上述涉案合同的约定支付律师费,具有合同依据,且原告主张的律师费金额亦在合理范围之内,故一审法院对原告的该项诉讼请求予以支持。
据此,一审法院依照《中华人民共和国合同法》第八条、第六十条第一款、第一百一十四条第一款,《中华人民共和国民事诉讼法》第六十七条第一款,《最高人民法院关于适用〈中华人民共和国民法典〉时间效力的若干规定》第一条第二款,《最高人民法院关于适用〈中华人民共和国民事诉讼法〉的解释》第九十条规定,判决:一、被告李某应于本判决生效之日起十日内支付原告刘某逾期违约金人民币33,753.9元;二、被告李某应于本判决生效之日起十日内支付原告刘某律师费某人民币6,000元;三、驳回原告刘某的其余诉讼请求。一审案件受理费人民币1,606元,由原告刘某负担人民币723元,被告李某负担人民币883元。
二审中,双方当事人均未向本院提交新的证据材料。
本院经审理查明,一审法院查明的事实属实,本院依法予以确认。
本院认为,本案二审争议焦点为:一、上诉人是否存在逾期交付的违约行为;二、如上诉人存在逾期交付行为,一审法院确定的逾期违约金是否适当。
关于争议焦点一,本院认为,本案中,双方当事人签订的涉案合同系双方真实意思表示,且未违反法律、行政法规的强制性规定,合法有效,对双方当事人具有法律约束力,双方应当按照约定行使权利并履行义务。根据一审查明的事实,2020年4月13日,上诉人表示5月13日做好app测试版,被上诉人对此予以确认。这表明双方就app测试版的交付时间进行了重新约定。上诉人于2020年5月1日提交app测试版后,被上诉人陆续反馈了bug(程序故障),上诉人于5月13日承诺全部修改及提交验收版本的期限为15天左右,并承诺不会再出现问题。一审考虑到15天对于app测试版本的测试、程序故障反馈、修改、提交验收版本的过程尚属合理,故认定上诉人最迟应于2020年5月28日完成软件开发并向原告提交验收版本。一审法院基于本案查明的事实认定交付时间,于法有据,本院予以确认。上诉人承诺的期限届满后,涉案软件仍存在原先未解决的程序故障和新增若干程序故障,经多次修改,最后于同年9月17日完成验收,故上诉人存在逾期交付的违约行为。上诉人主张因被上诉人多次发出调整功能和布局的要求导致其无法按时交付,被上诉人对此陈述其反馈的内容均系软件测试中产生的程序故障,本身就属于软件项目合同需求范围,而非上诉人所称新增功能需求。本院认为,上诉人的该项主张缺乏依据,本院不予采信。
关于争议焦点二,本院认为,依据涉案合同约定,因上诉人存在逾期交付的违约行为,上诉人应按照超过合同周期每日承担被上诉人已付金额3‰的比例向被上诉人支付逾期违约金,还需承担被上诉人为取得赔偿而支出的诉讼费、律师费、差旅费等所有费用。因上诉人未在2020年5月28日完成涉案软件的开发及提交验收交付,在上诉人违约的情形下,一审法院据此认定上诉人应根据合同约定支付自2020年5月29日起至2020年9月17日止的违约金33,759.9元,并无不当,本院予以确认。
综上,李某的上诉请求不能成立,应予驳回;一审判决认定事实清楚,适用法律正确,应予维持。依照《中华人民共和国民事诉讼法》第一百七十七条第一款第一项之规定,判决如下:
驳回上诉,维持原判。
二审案件受理费人民币793.85元,由上诉人李某负担。
本判决为终审判决。
审 判 长 徐 俊
审 判 员 马剑峰
审 判 员 张 莹
二〇二四年一月十六日
法官助理 孟 嘉
书 记 员 孟 嘉