合同审查---财务条款、合同形式与生效审查

news2024/10/7 7:28:09

1.合同主体 1人 廖
2.财务条款、合同形式与生效 1人 黄
3.履行、验收、知识产权、不可抗力 1人 詹
4.违约责任、争议解决、保密、法律引用 1人 王

代码规范:
1.代码函数的层级
各审查点在json中分为3级层级,但用python写规则的时候,1级层级为py文件,2级为class类,3级为def函数。

2.代码书写
(1)py名、类、函数名按正规英语翻译(过长的可以简写)。 每个审查事项函数必须中文注明其审查的事项。
(2)每个审查事项函数传入参数均为已读取的docx文件内容,返回均为(ture或false)和审查事项的名称。False代表不存在此风险,ture代表存在此风险。
(3)每个类中除了每个审查事项函数外,还应该包括一个接收其他审查事项函数审查后的结果,并根据其他审查事项函数返回的是true的话,去审查点json文件里寻找此审查点的风险等级、风险提示、修改建议汇总成字典返回。最终把在最外圈写一个汇总全部类审查结果的函数。

时间截点: 12月1号前,每周一检查检查一次进度,一周至少完成7个及以上。(人均大概21-24个审查点)。

测试任务: 每周需要根据完成的审查点进行样本准确率测试,并和工程那边对接部署更新。


import json
big_class = "法律引用"
class Risk_of_misquoting_the_law:
    """
    法律引用有误风险提示
    """
    def __init__(self, doc):
        self.doc = doc
        self.type = "法律引用有误风险提示"
    def full_title_mis(self):
        #审查事项:法律全称引用有误
        doc = self.doc
        result = False
        review_type = "法律全称引用有误"
        """
        中间函数为寻找是否存在此风险项,随时改变result的真假,True表示存在此风险项
        """
        return [result, review_type]

    def abridge_title_mis(self):
        #审查事项:法律简称引用有误
        doc = self.doc
        review_type = "法律简称引用有误"
        result = False
        """
        中间函数为寻找是否存在此风险项,随时改变result的真假,True表示存在此风险项
        """
        return [result, review_type]

    def summary_result(self):
        """
        汇总其他审查点审查的结果,并返回并对此审查点的风险等级、风险提示、修改建议搜寻得到的字典,若无修改建议则填无
        find_info为搜寻函数,去json审查点库里搜寻并返回相应内容,返回格式为:
        {"审查事项":"法律简称引用有误",
        "风险等级": "高风险",
        "风险提示": "2021年1月1日民法典生效后,民法通则、合同法、担保法、物权法、民法总则等法律文件已经失效,建议将合同中引用的失效法律文件调整为《中华人民共和国民法典》。",
        "修改建议": "无"
        }
        修改建议若有的话,返回格式为:
        "修改建议": {"建议1": XXX, "建议2": XX}
        """

        result_dict = []
        if self.full_title_mis()[0]:
            result_dict.append(find_info(big_class, self.type,self.full_title_mis()[1]))
        if self.abridge_title_mis()[0]:
            result_dict.append(find_info(big_class, self.type,self.abridge_title_mis()[1]))
        return result_dict

def find_info(big_class, mid_class, small_class):
    with open('通用审查点.json', 'r', encoding='utf-8') as f:
        contents = json.load(f)
    result = contents[big_class][mid_class][small_class]
    result["审查点名称"] = small_class
    return result

#print(find_info("财务条款", "价款构成范围审查", "价款构成范围缺失"))
def summary_results_law_risk(doc):
    """
    汇总各个类的风险点审查结果,格式为列表
    """
    law_cit_risk = Risk_of_misquoting_the_law(doc)
    return law_cit_risk.summary_result()

import docx
#获取文档对象
file=docx.Document("E:\\研究生\\合同审查项目\\合同审查11.10\\test.docx")
#输出每一段的内容
document=""
for para in file.paragraphs:
    document=document+para.text
risk=Risk_of_misquoting_the_law(document)
risk.full_title_mis()

财务条款

其余审查:

'''
审查事项:大小写金额不一致
风险等级:高风险
风险提示:
该笔款大小写金额不一致,请确认金额是否有误
您配置的款项小写金额规范的要求:
1)小写数字前有币种“¥”,或有货币名称“人民币”/“RMB”/“CNY”和货币单位“元” 
2)不采用“万元” 
3)采用三位分节制 
4)数字明确至小数点后两位
'''

#对整个文本进行分句,根据个人统计和测试,只需要用逗号对文本分句足矣
content_split= re.split('。',document)
# print(content_split)
#如果一个句子中有“元”那么将该句子存放在一个临时变量temp_result_set中以供试用
temp_result_set = set()
str = '元'
for term in content_split:
    if str in term:
        temp_result_set.add(term)
# print(temp_result_set)
#将temp_result_set中含有数字的句子分离出来,最终结果为一个集合result_set 
result_set = set()
for term in temp_result_set:
    for ch in term:
        if ch.isdigit():
            result_set.add(term)
for text in result_set:
    print("正在判断",text)
    #判断:小写数字前有币种“¥”,或有货币名称“人民币”/“RMB”/“CNY”
    if '¥' or '人民币' or 'RMB' or 'CNY' in text:
        print('符合小写数字前有币种“¥”,或有货币名称“人民币”/“RMB”/“CNY”')
    else:
        print('不符合小写数字前有币种“¥”,或有货币名称“人民币”/“RMB”/“CNY”')
    #判断:不采用“万元” 
    
    if '万' in text:
        print('采用“万元”,不符合要求')
    else:
        print('不采用“万元,”,符合要求')
    
    #判断:数字明确至小数点后两位
    numbers = re.findall(r"[-+]?\d*\.\d+|\d+", text)
    for num in numbers:
        length=len(num.split('.'))
        if length== 2:
            print(f"{num} 保留了两位小数")
        else:
            print(f"{num} 没有保留两位小数")

价款大小写一致性审查

要求:
在这里插入图片描述
例子:
在这里插入图片描述
3.1 合同总额(含税):人民币(大写):【肆佰叁拾玖万捌仟陆佰元】 (小写Ұ4,398,700.00元)。

合同形式与生效

合同生效条件缺失审查

在这里插入图片描述


import json
big_class = "法律引用"
class Risk_of_misquoting_the_law:
    """
    法律引用有误风险提示
    """
    def __init__(self, doc):
        self.doc = doc
        self.type = "法律引用有误风险提示"
    def effective_condition_mis(self):
        #审查事项:合同生效条件缺失
        doc = self.doc
        review_type = "合同生效条件缺失"
        result = True
        sentence_list= re.split('。',document)
        for sentence in sentence_list:
            if '合同' in sentence and '生效' in sentence:
                result=False
                #print(sentence)#输出:合同生效条件
        return [result, review_type]
    
import docx
#获取文档对象
file=docx.Document("E:\\研究生\\合同审查项目\\合同审查11.10\\test.docx")
#输出每一段的内容
document=""
for para in file.paragraphs:
    document=document+para.text
risk=Risk_of_misquoting_the_law(document)
risk.effective_condition_mis()

在这里插入图片描述

合同编号未填写完整

合同编号缺失


import json
big_class = "法律引用"
class Risk_of_misquoting_the_law:
    """
    法律引用有误风险提示
    """
    def __init__(self, doc):
        self.doc = doc
        self.type = "法律引用有误风险提示"
    def effective_condition_mis(self):
        #审查事项:合同生效条件缺失
        doc = self.doc
        review_type = "合同生效条件缺失"
        result = True
        sentence_list= re.split('。',document)
        for sentence in sentence_list:
            if '合同' in sentence and '生效' in sentence:
                result=False
                #print(sentence)#输出:合同生效条件
        return [result, review_type]
    def identification_number_mis(self):
         #审查事项:合同编号缺失
        doc = self.doc
        review_type = "合同编号缺失"
        result = True
        sentence_list= re.split('。',document)
        for sentence in sentence_list:
            if '合同编号' in sentence:
                pattern = r'合同编号:[\w\-]+'
                match = re.search(pattern, sentence)
                if match:
                    contract_number = match.group(0).split(":")[1]
                    #print(f"提取的合同编号为:{contract_number}")
                    result=False
                    break
        return [result, review_type]
    #合同编号缺失
   
import docx
#获取文档对象
file=docx.Document("E:\\研究生\\合同审查项目\\合同审查11.10\\test.docx")
#输出每一段的内容
document=""
for para in file.paragraphs:
    document=document+para.text
risk=Risk_of_misquoting_the_law(document)
risk.Incomplete_identification_number()

签订日期确认

签订日期缺失


import json
big_class = "法律引用"
class Risk_of_misquoting_the_law:
    """
    法律引用有误风险提示
    """
    def __init__(self, doc):
        self.doc = doc
        self.type = "法律引用有误风险提示"
    def effective_condition_mis(self):
        #审查事项:合同生效条件缺失
        doc = self.doc
        review_type = "合同生效条件缺失"
        result = True
        sentence_list= re.split('。',document)
        for sentence in sentence_list:
            if '合同' in sentence and '生效' in sentence:
                result=False
                #print(sentence)#输出:合同生效条件
        return [result, review_type]
    def identification_number_mis(self):
         #审查事项:合同编号缺失
        doc = self.doc
        review_type = "合同编号缺失"
        result = True
        sentence_list= re.split('。',document)
        for sentence in sentence_list:
            if '合同编号' in sentence:
                pattern = r'合同编号:[\w\-]+'
                match = re.search(pattern, sentence)
                if match:
                    contract_number = match.group(0).split(":")[1]
                    #print(f"提取的合同编号为:{contract_number}")
                    result=False
                    break
        return [result, review_type]
    
    def signature_date_mis(self):
        #审查事项:合同签订日期缺失
        doc=self.doc
        review_type='合同签订日期'
        result = True
        sentence_list= re.split('。',document)
        for sentence in sentence_list:
            
            if '签订' in sentence and '合同' in sentence:
                pattern = r'\d{4}年\d{1,2}月\d{1,2}日'
                match = re.search(pattern, text)
                if match:
                    
                    date = match.group(0)
                    print(sentence)
                    print(f"提取的签订日期为:{date}")
                    break
                else:
                    print("未找到合同编号")
        return [result, review_type]
   
import docx
#获取文档对象
file=docx.Document("E:\\研究生\\合同审查项目\\合同审查11.10\\test.docx")
#输出每一段的内容
document=""
for para in file.paragraphs:
    document=document+para.text
risk=Risk_of_misquoting_the_law(document)
risk.signature_date_mis()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1196313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++那些事儿】类与对象(2)

君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,我之前看过一套书叫做《明朝那些事儿》,把本来枯燥的历史讲的生动有趣。而C作为一门接近底层的语言,无疑是抽象且难度颇…

LeetCode 面试题 16.20. T9键盘

文章目录 一、题目二、C# 题解 一、题目 在老式手机上,用户通过数字键盘输入,手机将提供与这些数字相匹配的单词列表。每个数字映射到0至4个字母。给定一个数字序列,实现一个算法来返回匹配单词的列表。你会得到一张含有有效单词的列表。映射…

图书销售数据大屏可视化【可视化项目案例-03】

🎉🎊🎉 你的技术旅程将在这里启航! 🚀🚀 本文选自专栏:可视化技术专栏100例 可视化技术专栏100例,包括但不限于大屏可视化、图表可视化等等。订阅专栏用户在文章底部可下载对应案例源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不…

Leetcode-144 二叉树的前序遍历

递归方法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

谈谈如何写作(一)

序言 没有什么比一套好理论更有用了。——库尔特勒温 谈谈如何写作? 这个题目就像一本书《如何阅读一本书》,听起来似乎很无趣,因为各位盆友直接的反应,可能是这根本无需理论。 实际情况呢?恰恰相反,往往你…

javax.management.InstanceNotFoundException: Catalina:type=Server错误的解决

软件: JDK 1.8 Tomcat 8.5.66 IDEA 2019.3.3 问题:启动IDEA新建一Web Application项目,设置好项目运行,结果发现提示: 提示:Application Server was not connected before run configuration stop, rea…

JavaSE 类与对象

前言 我们之前学的都是面向过程,面向过程研究的是对单个对象的一种方法实现过程,比如求一个数的阶乘,强调的是怎么实现这个方法的过程,但对我们以后来说,如果想要应用到更广的层面,不能只是学习一个方法的…

基于Qt Linux开发板USER-KEY按键实现

介绍如何在 Qt 应用上使用嵌入式 GET6818 Linux 开发板 上的按键。 工具:Qt Creator 5.14.2 平台:windows ## 资源简介 在GET6818 开发板,开发板板载资源上有两个用户按键。如下图原理图(下图开发板的按键原理图)。 ## 应用实例 想要监测这个 KEY0,首先出厂内核已经…

Linux是什么,Linux系统介绍

很多小伙伴都不是那么了解和知道Linux,到底Linux是什么? 像大家用到的安卓手机,生活中用到的各种智能设备,比如路由器,光猫,智能家具等,很多都是在Linux操作系统上。 Linux是什么?Li…

常见问题: (Windows/app/浏览器)总结及其研究———(不断更新中.....)

问题目录 手机电脑电脑qq如何多开分身电脑与手机无线传送数据的方法 浏览器下载如何利用技术下载网上图片 WindowsVMware Workstation1 无法创建11264MB的匿名分页文件:页面文件2 虚拟机安装Windows11时出现: tempting to start up from: EFI VMware Virtual N 百度…

Vuex:模块化Module :VCA模式

VCA中不支持辅助函数,因为辅助函数中是用this.$store,而VCA中没有绑定this的 由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。 这句话的意思是,…

开源Gimp动态压感笔刷设置方法

一、问题描述 开源绘画工具的Gimp的笔刷压感在哪里控制和开启呢? 二、解决方法 1、Gimp有专用的笔刷集:如下图。开启需要在主窗口window下拉菜单开启,或在右侧面板里的左箭头按钮里打开。一般绘画够用了。比用自定义特殊笔刷。 2、如果要调…

win11系统提示msvcp140.dll丢失的解决方法,3个有效的解决方法

Win11系统在运行photoshop或其他软件,游戏的时候,电脑提示“找不到msvcp140.dll”,“msvcp140.dll丢失”,“无法定位输入点msvcp140.dll”等问题,都是由于Windows11系统中的msvcp140.dll文件丢失或者损坏了。 一、问题…

【开源】基于Vue.js的大学兼职教师管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目详细录屏 二、研究内容三、界面展示3.1 登录注册3.2 学生教师管理3.3 课程管理模块3.4 授课管理模块3.5 课程考勤模块3.6 课程评价模块3.7 课程成绩模块3.8 可视化图表 四、免责说明 一、摘要 1.1 项目介绍 大学兼职教师管理系统&#xff0…

HTTP-FLV详解及分析

文章目录 前言一、HTTP-FLV 简介1、市场上使用 http-flv 的商家2、http-flv、rtmp 和 hls 直播的优缺点3、http-flv 技术实现 二、Nginx 配置 http-flv1、Windows 安装 nginx,已经集成 nginx-http-flv-module2、nginx.conf 配置文件3、运行 nginx 服务器4、ffmpeg 推…

Linux系统编程——文件操作原理

文件描述符 1.文件描述符是文件的索引: 对于内核而言,所有打开文件都由文件描述符引用。文件描述符是一个非负整数。当打开一个现存文件或者创建一个新文件时,内核向进程返回一个文件描述符。 int fd1 open("./file1",O_RDWR);…

【C++初阶】二、入门知识讲解(引用、内联函数、auto关键字、基于范围的for循环、指针空值nullptr)

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 【C初阶】一、入门知识讲解 (C关键字、命名空间、C输入&输出、缺省参数、函数重载)-CSDN博客 六 . 引用 (1). 引用的概念和特性…

内存管理

目录 C/C内存分布 引入 分析 说明 C语言内存管理方式:malloc calloc realloc free malloc realloc calloc 面试题 C内存管理方式 new/delete操作符 用法 new和delete操作自定义类型 operator new和operator delete函数 operator new ​编辑 operator…

什么是Ribbon的饥饿加载?有什么优势?

目录 一、什么是Ribbon 二、什么是饥饿加载 三、Ribbon饥饿加载的优势 四、Ribbon饥饿加载的劣势 一、什么是Ribbon Ribbon是一个开源的、基于HTTP和TCP的客户端负载均衡工具,它提供了一个简单的、基于配置的负载均衡策略,可以帮助开发人员更轻松地…

“护肤品销售策略:从“免费拼团”到“3人回本大放送”“

有一个销售护肤品的团队,他们家399块钱一套的护肤品,他们在小程序这一个渠道,只用了23天的时间,就卖出去了2000多万的营业额,你敢信吗? 那么23天的时间,他们是怎么卖出去2000多万的呢&#xff1…