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

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()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023年成为优秀自动化测试工程师的 7 个步骤!

“测试自动化测试工程师可以将你从充满代码的世界中拯救出来。”企业完全同意这一说法,这就是您在自动化测试行业中看到大量就业机会的原因。我在 Quora 上收到了很多与自动化测试中的职业选择相关的答案请求,以及人们如何在有或没有手动测试经验的情况下…

JVM源码剖析之软、弱、虚引用的处理细节

目录 写在前面: 源码剖析: Java层面: JVM层面: 使用危险点: 总结: 版本信息: jdk版本:jdk8u40 垃圾回收器:Serial new/old 写在前面: 不同的垃圾回收…

第23章(下)_索引原理剖析

文章目录 索引实现索引存储B树为什么 MySQL InnoDB 选择 B 树作为索引的数据结构?B 树层高问题关于自增id最左匹配原则覆盖索引索引下推innodb体系结构Buffer poolchange buffer 总结 索引实现 索引存储 innodb 由段、区、页组成。段分为数据段、索引段、回滚段等…

摊位展示预约小程序的作用有哪些

无论市场还是街边,小摊小贩往往很多,组成了丰富多彩的线下购物环境,而在实际发展中,摊位的需求度很高,但由于种种原因,导致在实际发展中,也有一定难题: 1、摊位预约难、信息查看难 …

js 求数组中的对象某个属性和

可以直接看下效果 代码&#xff1a; <script>let list [{num: 1,price: 10,},{num: 2,price: 10,},{num: 3,price: 10,},{num: 4,price: 10,},]// for循环 求总数和 num的和let num 0for (let i 0; i < list.length; i) {num list[i].num}console.log(第一种&am…

pytorch代码实现注意力机制之Flatten Attention

Flatten Attention 介绍&#xff1a;最新注意力Flatten Attention&#xff1a;聚焦的线性注意力机制构建视觉 Transformer 在将 Transformer 模型应用于视觉任务时&#xff0c;自注意力机制 (Self-Attention) 的计算复杂度随序列长度的大小呈二次方关系&#xff0c;给视觉任务…

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) {* …

局部路由守卫component守卫

局部路由守卫component守卫 component守卫&#xff08;beforeRouteEnter、beforeRouteLeave&#xff09; 代码位置&#xff1a;在路由组件中&#xff0c;代码是写在component当中的&#xff08;XXX.vue&#xff09;beforeRouteEnter、beforeRouteLeave都有三个参数&#xff1…

2023年加氢工艺证考试题库及加氢工艺试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年加氢工艺证考试题库及加氢工艺试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲随机出的加氢…

Linux操作系统使用及C高级编程-D2软件包管理

有两种类型的软件包&#xff1a;二进制软件包(deb)和源码包(deb-src) 二进制软件包(Binary Packages)&#xff1a;包含可执行文件、库文件、配置文件、main/info页面、版权声明和其他文档 源码包(Source Packages)&#xff1a;包含软件源代码、版本修改说明、构建指令及编译工…

科研检测机构服务预约小程序的效果如何

科研检测机构涵盖的业务比较广&#xff0c;比如水质检测、农产品检测、食品检测等&#xff0c;对相关从业者来说&#xff0c;可能需要频繁使用这些业务&#xff0c;或者个人偶尔需要一些东西检测。 对用户和检测机构来说&#xff0c;由于行业的特殊性&#xff0c;在实际发展中…

男科医院服务预约小程序的作用是什么

医院的需求度从来都很高&#xff0c;随着技术发展&#xff0c;不少科目随之衍生出新的医院的&#xff0c;比如男科医院、妇科医院等&#xff0c;这使得目标群体更加精准&#xff0c;同时也赋能用户可以快速享受到服务。 当然相应的男科医院在实际经营中也面临痛点&#xff1a;…

XC1010非隔离型、低成本的PWM功率开关、AC-DC 220V转5V 200mA小电流芯片

XC1010是一款非隔离型、高集成度且低成本的PWM功率开关&#xff0c;适用于降压型和升降压型电路。 XC1010采用高压单晶圆工艺&#xff0c;在同一片晶圆上集成有 500V 高压 MOSFET 和采用开关式峰值电流模式控制的控制器。在全电压输入的范围内可以保证高精度的 5V 默认…

MySQL---存储过程

存储过程的相关概念 是一组为了完成特定功能的sql语句的集合&#xff0c;类似于函数 写好了一个存储过程之后&#xff0c;我们可以像函数一样随时调用sql的集合。 复杂的&#xff0c;需要很多sql语句联合执行完成的任务 存储过程再执行上比sql语句的执行速度更快&#xff0c…

24 _ 二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?

上一节我们学习了树、二叉树以及二叉树的遍历,今天我们再来学习一种特殊的二叉树,二叉查找树。二叉查找树最大的特点就是,支持动态数据集合的快速插入、删除、查找操作。 我们之前说过,散列表也是支持这些操作的,并且散列表的这些操作比二叉查找树更高效,时间复杂度是O(…

玩转Linux基本指令

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;牢记Linux的基本指令。 > 毒鸡汤&#xff1a;挫…

ROS话题(Topic)通信:通信模型、Hello World与拓展

文章目录 一、话题通讯模型二、Topic Hello World2.1 创建并初始化功能包2.2 确定Topic名称及消息格式2.3 实现发布者与订阅者&#xff08;C版&#xff09;2.4 实现发布者与订阅者&#xff08;Python版&#xff09;2.5 关于Topic Hello World的注意 拓展1&#xff1a;devel下其…

深度学习 python opencv 火焰检测识别 火灾检测 计算机竞赛

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…

【Linux】Linux 中关于文件和文件夹的常用命令

Linux 中关于文件和文件夹的常用命令 讲解 Linux 常用命令的文章已经非常多了&#xff0c;而且有的文章也说的非常清楚详细。我们可能不会记住所有的命令&#xff0c;但对于工作中常用的命令应该熟记于心&#xff0c;最好的方式就是多多实践。 我们可以直接或者通过虚机的方式…

全网最细,Apipost接口自动化测试-关联配置,老鸟带你上高速...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 在接口自动化测试…