diff --git a/project-docs/phase13-legal-knowledge-template-library/README.md b/project-docs/phase13-legal-knowledge-template-library/README.md index d04f4f42..dfaa8221 100644 --- a/project-docs/phase13-legal-knowledge-template-library/README.md +++ b/project-docs/phase13-legal-knowledge-template-library/README.md @@ -27,5 +27,7 @@ 1. 阶段 13.0 资料结构和字段规范已建立。 2. 阶段 13.1 第一批官方法源采集任务已建立。 3. 阶段 13.2 第一批中文法律知识卡已建立,共 10 张,全部保持 `LEGAL_REVIEW`。 -4. 阶段 13.7 第一版一键导入脚本已建立,默认 `Validate` 模式不改系统,`Review` 模式可导入待法务复核知识库,`Production` 模式只导入已复核且生产就绪资料。 -5. 生产发布仍需等待法务复核和业务复核完成。 +4. 阶段 13.3 第一批合同审核风险规则已建立,共 8 条,全部保持 `LEGAL_REVIEW`。 +5. 阶段 13.4 第一批标准条款已建立,共 8 个,全部保持 `LEGAL_REVIEW` 且 `production_ready=false`。 +6. 阶段 13.7 一键导入脚本已建立,默认 `Validate` 模式不改系统,`Review` 模式可导入待法务复核知识库和审核规则,`Production` 模式只导入已复核且生产就绪资料。 +7. 生产发布仍需等待法务复核和业务复核完成。 diff --git a/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-AUTHORIZATION-001.md b/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-AUTHORIZATION-001.md new file mode 100644 index 00000000..6ffd340c --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-AUTHORIZATION-001.md @@ -0,0 +1,29 @@ +# CLAUSE-COMMON-AUTHORIZATION-001 签约主体与授权确认 + +## 绑定法源 + +LAW-COMPANY-001;LAW-CIVIL-001 + +## 适用条件 + +适用于企业间采购、服务、技术、保密和软件服务合同的签署前主体核验。 + +## 不适用条件 + +境外主体、国资交易、上市公司重大交易、金融监管交易和重大资产交易应使用专项条款。 + +## 推荐条款文本 + +双方确认,其为依法设立并有效存续的主体,具备签署和履行本合同所需的主体资格、内部授权和业务资质。代表双方签署本合同的人员已取得合法、有效、充分的授权。任何一方因主体资格、授权瑕疵、印章或电子签章权限问题导致合同履行障碍或对方损失的,应承担相应责任。双方应在签署前或对方合理要求时提供营业执照、授权委托书、签章权限证明或电子签署审计记录。 + +## 使用提示 + +签约主体信息应与营业执照、电子签平台认证主体、发票主体和收付款主体保持一致。 + +## 风险提示 + +分支机构、项目部、个人经办人签署和越权代表属于高风险事项,应要求公司盖章确认或补充授权文件。 + +## 复核状态 + +LEGAL_REVIEW。需法务确认不同主体类型下的授权材料清单。 diff --git a/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-BREACH-001.md b/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-BREACH-001.md new file mode 100644 index 00000000..3c81eaf3 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-BREACH-001.md @@ -0,0 +1,29 @@ +# CLAUSE-COMMON-BREACH-001 违约责任与违约金 + +## 绑定法源 + +LAW-CIVIL-001;LAW-CONTRACT-001 + +## 适用条件 + +适用于采购、服务、软件服务、技术服务、保密和交付验收场景中的一般违约责任。 + +## 不适用条件 + +劳动合同、消费者格式条款、行政处罚责任或已经进入诉讼仲裁程序的损失计算不适用本通用条款。 + +## 推荐条款文本 + +任何一方违反本合同约定,给守约方造成损失的,应承担继续履行、采取补救措施、赔偿损失或支付违约金等违约责任。双方可根据违约事项约定违约金计算方式;如违约金不足以弥补守约方实际损失的,守约方有权就不足部分继续主张赔偿。除本合同另有明确约定外,一方对一般违约责任的累计赔偿金额以本合同已支付或应支付金额的一定比例为上限;但因故意、重大过失、保密义务、知识产权侵权、个人信息或数据安全责任产生的责任不受该上限限制。 + +## 使用提示 + +“一定比例”必须由业务和法务结合合同金额、履约难度、行业惯例和风险承受能力填写,不得由模型自动决定。 + +## 风险提示 + +违约金过高或过低都可能产生争议。建议同步约定补救期限、违约通知、证据材料和损失范围。 + +## 复核状态 + +LEGAL_REVIEW。需法务确认违约金调整边界和责任上限表达。 diff --git a/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-DISPUTE-001.md b/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-DISPUTE-001.md new file mode 100644 index 00000000..89d5aa76 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-DISPUTE-001.md @@ -0,0 +1,29 @@ +# CLAUSE-COMMON-DISPUTE-001 争议解决与送达 + +## 绑定法源 + +LAW-ARBITRATION-001;LAW-CIVIL-PROCEDURE-001;LAW-CIVIL-001 + +## 适用条件 + +适用于采购、服务、保密、技术、软件服务等企业民商事合同。 + +## 不适用条件 + +涉外争议、劳动争议、消费者争议、专属管辖事项和已经发生争议的案件不适用本通用条款。 + +## 推荐条款文本 + +因本合同引起或与本合同有关的任何争议,双方应先友好协商解决。协商不成的,双方选择以下一种方式解决:提交双方约定的仲裁委员会仲裁,或向有管辖权的人民法院提起诉讼。双方确认本合同载明的住所、联系人、电子邮箱、电子签约平台账户和其他通知渠道均可作为争议解决中的送达地址;任何一方变更送达信息的,应提前书面通知对方,否则按原信息送达产生的不利后果由未通知方承担。 + +## 使用提示 + +仲裁和诉讼应择一配置,不得同时保留两个最终解决路径。具体仲裁机构、仲裁地或管辖法院应由业务和法务确认后填写。 + +## 风险提示 + +机构名称不准确、管辖地点不清或同时约定仲裁和诉讼,可能导致争议解决条款执行困难。 + +## 复核状态 + +LEGAL_REVIEW。需法务确认争议解决方式和送达规则。 diff --git a/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-E-SIGN-EVIDENCE-001.md b/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-E-SIGN-EVIDENCE-001.md new file mode 100644 index 00000000..6d5f6bc8 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-E-SIGN-EVIDENCE-001.md @@ -0,0 +1,29 @@ +# CLAUSE-COMMON-E-SIGN-EVIDENCE-001 电子签署与证据留存 + +## 绑定法源 + +LAW-E-SIGN-001;LAW-CIVIL-001;LAW-CIVIL-PROCEDURE-001 + +## 适用条件 + +适用于电子签约、线上订单、系统确认、邮件确认和电子履约记录作为合同证据的场景。 + +## 不适用条件 + +法律法规要求不得适用电子文书或必须采用特定纸质形式、公证认证形式的场景不适用。 + +## 推荐条款文本 + +双方认可通过双方确认的电子签约平台、业务系统、电子邮件或其他可验证方式形成的数据电文、电子签名、电子印章、订单、验收记录、通知和履约记录的法律效力。双方应妥善保存签署人身份认证记录、签署时间、签署意愿确认、文件哈希或防篡改信息、平台日志、IP、设备信息、证书信息和合同履行过程中的关键记录。发生争议时,任一方有权调取、导出或提交上述电子证据。 + +## 使用提示 + +应结合实际电子签平台能力补充证据包字段、保存期限、调取流程和平台服务商配合义务。 + +## 风险提示 + +电子签名是否可靠、电子数据是否真实完整,需要结合平台技术能力、认证方式和日志证据判断。 + +## 复核状态 + +LEGAL_REVIEW。需法务和技术负责人共同确认。 diff --git a/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-FORMAT-001.md b/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-FORMAT-001.md new file mode 100644 index 00000000..98a68007 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-FORMAT-001.md @@ -0,0 +1,29 @@ +# CLAUSE-COMMON-FORMAT-001 格式条款提示与特别说明 + +## 绑定法源 + +LAW-CIVIL-001;LAW-CONTRACT-001 + +## 适用条件 + +适用于标准合同、采购模板、服务模板、平台条款和一方预先拟定并重复使用的条款文本。 + +## 不适用条件 + +逐条充分协商并有完整协商证据的个性化条款,应由法务按具体文本复核。 + +## 推荐条款文本 + +双方确认,本合同中涉及免除或减轻一方责任、加重对方责任、限制对方主要权利或与对方有重大利害关系的条款,已采用加粗、下划线、单独列明或其他足以引起注意的方式进行提示。应对方要求,提供该条款的一方已就相关内容、法律后果和履行影响作出合理说明。双方确认已充分阅读、理解并协商确认上述条款。 + +## 使用提示 + +该条款不得替代具体责任条款本身的公平性审查。若存在排除主要义务、排除故意或重大过失责任、限制法定权利等内容,应删除或重写。 + +## 风险提示 + +仅有概括性确认可能不足以证明已完成充分提示说明。高风险免责内容建议独立签署、单独勾选或保留线上确认日志。 + +## 复核状态 + +LEGAL_REVIEW。需法务确认具体适用边界和提示方式要求。 diff --git a/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-RESCISSION-NOTICE-001.md b/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-RESCISSION-NOTICE-001.md new file mode 100644 index 00000000..a26f398d --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-COMMON-RESCISSION-NOTICE-001.md @@ -0,0 +1,29 @@ +# CLAUSE-COMMON-RESCISSION-NOTICE-001 合同解除通知与送达 + +## 绑定法源 + +LAW-CIVIL-001;LAW-CONTRACT-001 + +## 适用条件 + +适用于采购、服务、软件服务、技术服务等需要约定解除条件、整改期和通知留痕的合同。 + +## 不适用条件 + +劳动合同解除、消费者合同特殊解除、法定审批或登记生效合同解除不适用本通用条款。 + +## 推荐条款文本 + +一方发生严重违约并在收到守约方书面通知后合理期限内仍未补救的,守约方有权解除本合同。解除通知应以本合同约定的书面地址、电子邮箱、电子签约平台或双方确认的其他可留痕方式发送。通知到达对方系统、指定邮箱、签约平台账户或按约定视为送达之日,解除通知发生效力。合同解除后,双方应按本合同约定完成费用结算、资料返还、数据删除或返还、保密义务延续、知识产权和已交付成果处理。 + +## 使用提示 + +应在业务条款中补充“合理期限”的具体天数、解除后费用结算口径和未完成事项处理方式。 + +## 风险提示 + +解除权是否已经产生、通知是否有效送达、解除后损失如何承担,都需要结合证据判断。 + +## 复核状态 + +LEGAL_REVIEW。需法务确认通知方式和视为送达规则。 diff --git a/project-docs/phase13-legal-knowledge-template-library/clause-library/software-saas/CLAUSE-DATA-PI-PROCESSING-001.md b/project-docs/phase13-legal-knowledge-template-library/clause-library/software-saas/CLAUSE-DATA-PI-PROCESSING-001.md new file mode 100644 index 00000000..2bd09aa5 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/clause-library/software-saas/CLAUSE-DATA-PI-PROCESSING-001.md @@ -0,0 +1,29 @@ +# CLAUSE-DATA-PI-PROCESSING-001 个人信息与数据处理 + +## 绑定法源 + +LAW-DATA-001;LAW-DATA-002;LAW-DATA-003 + +## 适用条件 + +适用于软件即服务、外包服务、平台服务、客户支持、系统运维和其他可能接触个人信息或业务数据的合同。 + +## 不适用条件 + +数据出境、重要数据、敏感个人信息大规模处理、关键信息基础设施和行业强监管数据场景必须专项复核。 + +## 推荐条款文本 + +受托方仅可为履行本合同之目的,在委托方授权范围内处理相关个人信息和数据,不得超出约定目的、范围和期限处理,不得擅自留存、使用、披露、转让或提供给第三方。受托方应采取必要的技术和管理措施保障个人信息和数据安全,包括访问控制、权限管理、日志留存、加密或脱敏、人员保密和安全事件应急处理。未经委托方书面同意,受托方不得转委托处理个人信息。合同终止或处理目的实现后,受托方应按委托方要求返还、删除或匿名化处理相关个人信息和数据,并提供合理证明。 + +## 使用提示 + +应补充个人信息类型、数据字段、处理目的、处理方式、保存期限、系统权限、接口范围和安全联系人。 + +## 风险提示 + +涉及敏感个人信息、未成年人信息、数据出境或监管行业数据时,应暂停自动适用本条款并转专项合规复核。 + +## 复核状态 + +LEGAL_REVIEW。需法务和数据合规负责人共同确认。 diff --git a/project-docs/phase13-legal-knowledge-template-library/clause-library/technology-development/CLAUSE-TECH-IP-OWNERSHIP-001.md b/project-docs/phase13-legal-knowledge-template-library/clause-library/technology-development/CLAUSE-TECH-IP-OWNERSHIP-001.md new file mode 100644 index 00000000..bea3a41e --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/clause-library/technology-development/CLAUSE-TECH-IP-OWNERSHIP-001.md @@ -0,0 +1,29 @@ +# CLAUSE-TECH-IP-OWNERSHIP-001 软件成果权属与许可 + +## 绑定法源 + +LAW-IP-001;LAW-CIVIL-001;LAW-TECH-001 + +## 适用条件 + +适用于技术开发、软件开发、系统实施、软件定制、接口开发和技术服务合同。 + +## 不适用条件 + +开源合规专项、专利申请权、商业秘密争议、职务作品和合作开发成果复杂归属应专项复核。 + +## 推荐条款文本 + +双方应在附件中列明本合同项下的交付物,包括源代码、目标代码、接口文档、部署脚本、配置文件、数据库结构、测试报告、用户文档和其他技术资料。除双方另有明确约定外,乙方在履约前已经拥有的既有技术、工具、组件和通用能力仍归乙方或原权利人所有;乙方为甲方定制开发并经甲方支付相应费用的特定交付成果,其权属或许可使用范围按合同专门约定执行。任何一方使用第三方组件或开源软件的,应提前披露并保证其使用方式不影响对方按合同目的使用交付成果。 + +## 使用提示 + +权属归甲方、乙方保留权属并授权甲方使用、双方共有或按模块区分权属,必须在业务条款中选择一种并写清。 + +## 风险提示 + +缺少成果清单、源代码交付标准、许可范围和开源披露,容易导致交付验收和后续商业化使用争议。 + +## 复核状态 + +LEGAL_REVIEW。需法务、技术负责人和业务负责人共同确认。 diff --git a/project-docs/phase13-legal-knowledge-template-library/field-dictionary.md b/project-docs/phase13-legal-knowledge-template-library/field-dictionary.md index e15b61f2..45f0498c 100644 --- a/project-docs/phase13-legal-knowledge-template-library/field-dictionary.md +++ b/project-docs/phase13-legal-knowledge-template-library/field-dictionary.md @@ -40,6 +40,33 @@ | generation_sample_ids | 绑定的合同生成黄金样本编号 | | review_rule_ids | 绑定的合同审核规则编号 | +## 合同审核规则字段 + +| 字段 | 含义 | +|---|---| +| rule_id | 唯一审核规则编号 | +| risk_category | 风险分类,例如格式条款、违约责任、数据安全 | +| risk_name | 面向审核报告展示的风险名称 | +| severity | 风险等级:low、medium、high | +| trigger_condition | 审核引擎使用的触发词或触发短语 | +| review_output_template | 触发后展示给用户的审核提示 | +| modification_suggestion_path | 规则说明和修改建议正文路径 | +| human_review_required | 是否必须转人工复核 | + +## 标准条款字段 + +| 字段 | 含义 | +|---|---| +| clause_id | 唯一标准条款编号 | +| clause_name | 标准条款名称 | +| contract_type | 适用合同类型 | +| clause_category | 条款分类 | +| applicable_conditions | 适用条件 | +| excluded_conditions | 不适用条件 | +| variant_group | 条款变体组 | +| risk_notes_path | 风险说明文件路径 | +| clause_path | 条款正文文件路径 | + ## 使用说明 字段名保留英文是为了让自动化门禁和后续导入脚本稳定识别;字段内容、业务说明、法源说明、条款说明和模板正文必须使用中文,并且必须以中国大陆现行法律资料为依据。 diff --git a/project-docs/phase13-legal-knowledge-template-library/inventories/clause-library-inventory.csv b/project-docs/phase13-legal-knowledge-template-library/inventories/clause-library-inventory.csv index ae720c87..6b674d94 100644 --- a/project-docs/phase13-legal-knowledge-template-library/inventories/clause-library-inventory.csv +++ b/project-docs/phase13-legal-knowledge-template-library/inventories/clause-library-inventory.csv @@ -1 +1,9 @@ clause_id,clause_name,contract_type,clause_category,source_ids,applicable_conditions,excluded_conditions,variant_group,risk_notes_path,clause_path,status,owner,legal_reviewer,business_reviewer,review_required,production_ready,notes +CLAUSE-COMMON-FORMAT-001,格式条款提示与特别说明,common,格式条款,LAW-CIVIL-001;LAW-CONTRACT-001,标准合同;平台条款;采购或服务通用模板,逐条充分协商条款;法务已另行定制条款,common-format,clause-library/common/CLAUSE-COMMON-FORMAT-001.md,clause-library/common/CLAUSE-COMMON-FORMAT-001.md,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,用于提示说明和单独确认机制;暂不作为定稿条款 +CLAUSE-COMMON-BREACH-001,违约责任与违约金,common,违约责任,LAW-CIVIL-001;LAW-CONTRACT-001,付款;交付;验收;质量;保密;服务可用性,劳动合同;消费者格式条款;行政处罚责任,common-breach,clause-library/common/CLAUSE-COMMON-BREACH-001.md,clause-library/common/CLAUSE-COMMON-BREACH-001.md,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,需按业务交易金额和风险承受能力调整 +CLAUSE-COMMON-RESCISSION-NOTICE-001,合同解除通知与送达,common,解除与通知,LAW-CIVIL-001;LAW-CONTRACT-001,服务合同;采购合同;软件服务;技术服务,劳动合同解除;法定特殊解除程序,common-rescission,clause-library/common/CLAUSE-COMMON-RESCISSION-NOTICE-001.md,clause-library/common/CLAUSE-COMMON-RESCISSION-NOTICE-001.md,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,需与通知送达和终止后处理条款联动 +CLAUSE-COMMON-AUTHORIZATION-001,签约主体与授权确认,common,主体资格,LAW-COMPANY-001;LAW-CIVIL-001,企业间采购;服务;技术;保密协议,境外主体;国资交易;重大资产交易,common-authorization,clause-library/common/CLAUSE-COMMON-AUTHORIZATION-001.md,clause-library/common/CLAUSE-COMMON-AUTHORIZATION-001.md,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,用于签署前主体和授权核验 +CLAUSE-DATA-PI-PROCESSING-001,个人信息与数据处理,software-saas,个人信息与数据安全,LAW-DATA-001;LAW-DATA-002;LAW-DATA-003,软件即服务;外包服务;数据处理;平台服务,数据出境;重要数据;关键信息基础设施,software-saas-data,clause-library/software-saas/CLAUSE-DATA-PI-PROCESSING-001.md,clause-library/software-saas/CLAUSE-DATA-PI-PROCESSING-001.md,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,高风险数据场景需合规专项复核 +CLAUSE-COMMON-DISPUTE-001,争议解决与送达,common,争议解决,LAW-ARBITRATION-001;LAW-CIVIL-PROCEDURE-001;LAW-CIVIL-001,采购合同;服务合同;保密协议;技术合同,劳动争议;消费者争议;涉外争议;专属管辖事项,common-dispute,clause-library/common/CLAUSE-COMMON-DISPUTE-001.md,clause-library/common/CLAUSE-COMMON-DISPUTE-001.md,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,仲裁或诉讼只能择一配置;需业务确定机构和地点 +CLAUSE-COMMON-E-SIGN-EVIDENCE-001,电子签署与证据留存,common,电子签署,LAW-E-SIGN-001;LAW-CIVIL-001;LAW-CIVIL-PROCEDURE-001,电子签约;线上订单;系统确认;邮件确认,不得适用电子签名的法定场景;需公证或认证场景,common-esign,clause-library/common/CLAUSE-COMMON-E-SIGN-EVIDENCE-001.md,clause-library/common/CLAUSE-COMMON-E-SIGN-EVIDENCE-001.md,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,需结合实际电子签平台和日志能力调整 +CLAUSE-TECH-IP-OWNERSHIP-001,软件成果权属与许可,technology-development,知识产权,LAW-IP-001;LAW-CIVIL-001;LAW-TECH-001,技术开发;软件开发;系统实施;软件服务,开源合规专项;专利申请权;商业秘密争议,technology-ip,clause-library/technology-development/CLAUSE-TECH-IP-OWNERSHIP-001.md,clause-library/technology-development/CLAUSE-TECH-IP-OWNERSHIP-001.md,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,需按委托开发和合作开发模式分别复核 diff --git a/project-docs/phase13-legal-knowledge-template-library/inventories/legal-source-inventory.csv b/project-docs/phase13-legal-knowledge-template-library/inventories/legal-source-inventory.csv index 09e9ba86..b82bf996 100644 --- a/project-docs/phase13-legal-knowledge-template-library/inventories/legal-source-inventory.csv +++ b/project-docs/phase13-legal-knowledge-template-library/inventories/legal-source-inventory.csv @@ -13,7 +13,7 @@ LAW-IP-001,中华人民共和国著作权法,法律,全国人民代表大会,flk LAW-IP-002,中华人民共和国专利法,法律,全国人民代表大会,flk.npc.gov.cn,https://flk.npc.gov.cn/,国家法律法规数据库检索:中华人民共和国专利法,VERIFY_REQUIRED,VERIFY_REQUIRED,知识产权;技术成果,intellectual-property,true,LEGAL_REVIEW,法律资料运营,待法务复核,2026-05-01,用于技术开发成果归属 LAW-IP-003,中华人民共和国商标法,法律,全国人民代表大会,flk.npc.gov.cn,https://flk.npc.gov.cn/,国家法律法规数据库检索:中华人民共和国商标法,VERIFY_REQUIRED,VERIFY_REQUIRED,品牌授权;商标使用,intellectual-property,true,LEGAL_REVIEW,法律资料运营,待法务复核,2026-05-01,用于品牌和商标授权条款 LAW-COMMERCIAL-001,中华人民共和国反不正当竞争法,法律,全国人民代表大会,flk.npc.gov.cn,https://flk.npc.gov.cn/,国家法律法规数据库检索:中华人民共和国反不正当竞争法,VERIFY_REQUIRED,VERIFY_REQUIRED,商业秘密;竞争限制,company-commercial,true,LEGAL_REVIEW,法律资料运营,待法务复核,2026-05-01,用于保密和竞争相关条款 -LAW-ARBITRATION-001,中华人民共和国仲裁法,法律,全国人民代表大会,flk.npc.gov.cn,https://flk.npc.gov.cn/,国家法律法规数据库检索:中华人民共和国仲裁法,VERIFY_REQUIRED,VERIFY_REQUIRED,争议解决;仲裁,company-commercial,true,LEGAL_REVIEW,法律资料运营,待法务复核,2026-05-01,用于争议解决条款 +LAW-ARBITRATION-001,中华人民共和国仲裁法,法律,全国人民代表大会,flk.npc.gov.cn,https://flk.npc.gov.cn/,国家法律法规数据库检索:中华人民共和国仲裁法,2026-03-01,VERIFY_REQUIRED,争议解决;仲裁,company-commercial,true,LEGAL_REVIEW,法律资料运营,待法务复核,2026-05-01,用于争议解决条款;公开资料显示新修订仲裁法已于2026-03-01施行;需法务确认官方详情页和现行文本 LAW-CIVIL-PROCEDURE-001,中华人民共和国民事诉讼法,法律,全国人民代表大会,flk.npc.gov.cn,https://flk.npc.gov.cn/,国家法律法规数据库检索:中华人民共和国民事诉讼法,VERIFY_REQUIRED,VERIFY_REQUIRED,争议解决;管辖,company-commercial,true,LEGAL_REVIEW,法律资料运营,待法务复核,2026-05-01,用于管辖和诉讼条款 LAW-E-SIGN-001,中华人民共和国电子签名法,法律,全国人民代表大会,flk.npc.gov.cn,https://flk.npc.gov.cn/,国家法律法规数据库检索:中华人民共和国电子签名法,VERIFY_REQUIRED,VERIFY_REQUIRED,电子签约;电子数据,company-commercial,true,LEGAL_REVIEW,法律资料运营,待法务复核,2026-05-01,用于电子合同签署场景 LAW-E-COMMERCE-001,中华人民共和国电子商务法,法律,全国人民代表大会,flk.npc.gov.cn,https://flk.npc.gov.cn/,国家法律法规数据库检索:中华人民共和国电子商务法,VERIFY_REQUIRED,VERIFY_REQUIRED,软件即服务;平台服务;线上交易,company-commercial,true,LEGAL_REVIEW,法律资料运营,待法务复核,2026-05-01,用于线上服务合同边界 diff --git a/project-docs/phase13-legal-knowledge-template-library/inventories/review-risk-rule-inventory.csv b/project-docs/phase13-legal-knowledge-template-library/inventories/review-risk-rule-inventory.csv index 921db345..b780a4c5 100644 --- a/project-docs/phase13-legal-knowledge-template-library/inventories/review-risk-rule-inventory.csv +++ b/project-docs/phase13-legal-knowledge-template-library/inventories/review-risk-rule-inventory.csv @@ -1 +1,9 @@ rule_id,risk_category,risk_name,severity,source_ids,clause_ids,trigger_condition,review_output_template,modification_suggestion_path,human_review_required,status,owner,legal_reviewer,review_sample_ids,production_ready,notes +RULE-FORMAT-CLAUSE-001,格式条款,格式条款提示说明不足,high,LAW-CIVIL-001;LAW-CONTRACT-001,CLAUSE-COMMON-FORMAT-001,免责,识别到可能免除或减轻己方责任的格式条款;应检查是否已用醒目方式提示并按对方要求说明,review-rules/civil-code/RULE-FORMAT-CLAUSE-001.md,true,LEGAL_REVIEW,法律资料运营,待法务复核,,false,绑定知识卡 KC-CIVIL-STANDARD-CLAUSES-001;需法务确认条款号和提示标准 +RULE-BREACH-LIQUIDATED-DAMAGES-001,违约责任,违约金和赔偿边界不清,medium,LAW-CIVIL-001;LAW-CONTRACT-001,CLAUSE-COMMON-BREACH-001,违约金,识别到违约金或赔偿安排;应检查触发条件、计算口径、损失范围、上限和调整边界是否清晰,review-rules/civil-code/RULE-BREACH-LIQUIDATED-DAMAGES-001.md,true,LEGAL_REVIEW,法律资料运营,待法务复核,,false,绑定知识卡 KC-CIVIL-BREACH-LIQUIDATED-DAMAGES-001;金额比例需业务和法务共同复核 +RULE-RESCISSION-NOTICE-001,解除通知,解除条件和通知留痕不足,medium,LAW-CIVIL-001;LAW-CONTRACT-001,CLAUSE-COMMON-RESCISSION-NOTICE-001,解除,识别到单方解除、违约解除或服务暂停解除安排;应检查解除条件、通知方式、送达规则和解除后处理,review-rules/civil-code/RULE-RESCISSION-NOTICE-001.md,true,LEGAL_REVIEW,法律资料运营,待法务复核,,false,绑定知识卡 KC-CIVIL-RESCISSION-NOTICE-001;不能替代具体解除效力判断 +RULE-AUTHORIZATION-SUBJECT-001,主体资格,签约主体和授权代表核验不足,high,LAW-COMPANY-001;LAW-CIVIL-001,CLAUSE-COMMON-AUTHORIZATION-001,授权,识别到授权代表、代理、盖章或主体资格表述;应检查主体名称、统一社会信用代码、代表权限、印章和授权文件,review-rules/company-commercial/RULE-AUTHORIZATION-SUBJECT-001.md,true,LEGAL_REVIEW,法律资料运营,待法务复核,,false,绑定知识卡 KC-COMPANY-AUTHORIZATION-001;越权代理和表见代理必须人工复核 +RULE-DATA-PI-PROCESSING-001,个人信息与数据安全,个人信息处理条款缺失或边界不清,high,LAW-DATA-001;LAW-DATA-002;LAW-DATA-003,CLAUSE-DATA-PI-PROCESSING-001,个人信息,识别到个人信息、用户数据、账号、日志或委托处理安排;应检查处理目的、范围、期限、安全措施、返还删除和转委托限制,review-rules/data-privacy/RULE-DATA-PI-PROCESSING-001.md,true,LEGAL_REVIEW,法律资料运营,待法务复核,,false,绑定知识卡 KC-DATA-PI-PROCESSING-001;数据出境和重要数据必须专项复核 +RULE-DISPUTE-RESOLUTION-001,争议解决,仲裁诉讼和送达条款冲突或不完整,medium,LAW-ARBITRATION-001;LAW-CIVIL-PROCEDURE-001;LAW-CIVIL-001,CLAUSE-COMMON-DISPUTE-001,管辖,识别到仲裁、诉讼、管辖或送达安排;应检查是否同时约定仲裁和诉讼、机构名称是否明确、管辖地点和送达地址是否清晰,review-rules/company-commercial/RULE-DISPUTE-RESOLUTION-001.md,true,LEGAL_REVIEW,法律资料运营,待法务复核,,false,绑定知识卡 KC-DISPUTE-ARBITRATION-LITIGATION-001;涉外和专属管辖事项必须人工复核 +RULE-E-SIGN-EVIDENCE-001,电子签署与证据,电子签署证据链留存不足,medium,LAW-E-SIGN-001;LAW-CIVIL-001;LAW-CIVIL-PROCEDURE-001,CLAUSE-COMMON-E-SIGN-EVIDENCE-001,电子签名,识别到电子签名、电子合同、系统确认或线上订单;应检查身份认证、签署意愿、时间戳、文件哈希、日志和履约记录留存,review-rules/company-commercial/RULE-E-SIGN-EVIDENCE-001.md,true,LEGAL_REVIEW,法律资料运营,待法务复核,,false,绑定知识卡 KC-E-SIGN-EVIDENCE-RETENTION-001;可靠电子签名认定需技术和法务复核 +RULE-IP-SOFTWARE-OWNERSHIP-001,知识产权,软件成果权属和许可边界不清,high,LAW-IP-001;LAW-CIVIL-001;LAW-TECH-001,CLAUSE-TECH-IP-OWNERSHIP-001,著作权,识别到软件成果、源代码、著作权、许可或技术成果交付;应检查权属归属、许可范围、交付物、开源限制和第三方权利保证,review-rules/intellectual-property/RULE-IP-SOFTWARE-OWNERSHIP-001.md,true,LEGAL_REVIEW,法律资料运营,待法务复核,,false,绑定知识卡 KC-IP-SOFTWARE-COPYRIGHT-OWNERSHIP-001;开源合规和专利问题必须专项复核 diff --git a/project-docs/phase13-legal-knowledge-template-library/review-rules/README.md b/project-docs/phase13-legal-knowledge-template-library/review-rules/README.md new file mode 100644 index 00000000..0fccea5e --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/review-rules/README.md @@ -0,0 +1,13 @@ +# 合同审核风险规则库 + +本目录保存阶段 13.3 的合同审核风险规则说明。规则用于把法律知识卡转化为可被审核引擎识别的风险提示、修改建议和人工复核边界。 + +当前规则全部为中文资料,默认适用中国大陆企业民商事合同场景。所有规则均保持 `LEGAL_REVIEW`,仅用于内部复核、试点校验和规则训练,不得直接作为已复核的生产法律意见。 + +使用原则: + +1. 每条规则必须绑定官方法源编号和标准条款编号。 +2. 触发关键词只用于初筛,不等于最终法律判断。 +3. 高风险规则必须输出人工复核要求。 +4. 数据出境、涉外争议、劳动争议、消费者争议、开源合规、专利和商业秘密等专项问题必须转人工。 +5. 规则正式启用前必须补齐法务复核记录、业务复核记录和黄金样本。 diff --git a/project-docs/phase13-legal-knowledge-template-library/review-rules/civil-code/RULE-BREACH-LIQUIDATED-DAMAGES-001.md b/project-docs/phase13-legal-knowledge-template-library/review-rules/civil-code/RULE-BREACH-LIQUIDATED-DAMAGES-001.md new file mode 100644 index 00000000..478760af --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/review-rules/civil-code/RULE-BREACH-LIQUIDATED-DAMAGES-001.md @@ -0,0 +1,29 @@ +# RULE-BREACH-LIQUIDATED-DAMAGES-001 违约金和赔偿边界不清 + +## 绑定资料 + +- 规则分类:违约责任 +- 风险等级:中 +- 绑定法源:LAW-CIVIL-001;LAW-CONTRACT-001 +- 绑定知识卡:KC-CIVIL-BREACH-LIQUIDATED-DAMAGES-001 +- 绑定条款:CLAUSE-COMMON-BREACH-001 +- 当前状态:LEGAL_REVIEW + +## 触发条件 + +合同中出现“违约金”“赔偿”“逾期付款”“逾期交付”“责任上限”“损失赔偿”等表述,但缺少触发事件、计算口径、宽限期、赔偿范围或责任上限时,应触发本规则。 + +## 审核输出模板 + +合同已约定违约责任或违约金。请核查违约情形是否具体、计算方式是否可执行、损失范围是否清晰、违约金是否具有可调整空间,并确认是否需要设置责任上限或例外责任。 + +## 修改建议 + +1. 明确违约事件、通知和补救期限。 +2. 明确违约金按日、按笔、按合同总价或按实际损失计算。 +3. 设置一般赔偿责任上限,并列明故意、重大过失、保密、知识产权、个人信息等例外。 +4. 避免只有高额违约金而没有履约补救机制。 + +## 人工复核边界 + +具体违约金比例、赔偿上限和实际损失证明标准需要结合法务、财务和业务风险承受能力复核。 diff --git a/project-docs/phase13-legal-knowledge-template-library/review-rules/civil-code/RULE-FORMAT-CLAUSE-001.md b/project-docs/phase13-legal-knowledge-template-library/review-rules/civil-code/RULE-FORMAT-CLAUSE-001.md new file mode 100644 index 00000000..fb42660a --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/review-rules/civil-code/RULE-FORMAT-CLAUSE-001.md @@ -0,0 +1,29 @@ +# RULE-FORMAT-CLAUSE-001 格式条款提示说明不足 + +## 绑定资料 + +- 规则分类:格式条款 +- 风险等级:高 +- 绑定法源:LAW-CIVIL-001;LAW-CONTRACT-001 +- 绑定知识卡:KC-CIVIL-STANDARD-CLAUSES-001 +- 绑定条款:CLAUSE-COMMON-FORMAT-001 +- 当前状态:LEGAL_REVIEW + +## 触发条件 + +合同中出现“免责”“免除责任”“减轻责任”“限制权利”“最终解释权”“概不负责”等标准化表述,并且没有看到醒目提示、特别说明、单独确认或协商记录时,应触发本规则。 + +## 审核输出模板 + +该条款可能属于格式条款或具有格式条款特征。请核查提供条款一方是否已采取合理方式提示对方注意免除或减轻责任、加重对方责任、限制对方主要权利的内容,并在对方要求时完成说明。 + +## 修改建议 + +1. 将免除或限制责任的内容拆成独立条款。 +2. 在条款标题和正文中增加明确提示。 +3. 增加“双方已充分阅读、理解并协商确认”的确认机制。 +4. 对明显排除主要义务、重大过失责任或法定责任的表述进行删除或限缩。 + +## 人工复核边界 + +是否构成无效格式条款、是否已充分提示说明、是否存在显失公平或责任明显失衡,需要结合交易背景和证据人工复核。 diff --git a/project-docs/phase13-legal-knowledge-template-library/review-rules/civil-code/RULE-RESCISSION-NOTICE-001.md b/project-docs/phase13-legal-knowledge-template-library/review-rules/civil-code/RULE-RESCISSION-NOTICE-001.md new file mode 100644 index 00000000..3486c438 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/review-rules/civil-code/RULE-RESCISSION-NOTICE-001.md @@ -0,0 +1,29 @@ +# RULE-RESCISSION-NOTICE-001 解除条件和通知留痕不足 + +## 绑定资料 + +- 规则分类:解除通知 +- 风险等级:中 +- 绑定法源:LAW-CIVIL-001;LAW-CONTRACT-001 +- 绑定知识卡:KC-CIVIL-RESCISSION-NOTICE-001 +- 绑定条款:CLAUSE-COMMON-RESCISSION-NOTICE-001 +- 当前状态:LEGAL_REVIEW + +## 触发条件 + +合同中出现“解除”“终止”“暂停服务”“立即终止”“提前终止”等表述,但没有明确解除条件、整改期限、通知方式、送达规则、费用结算和资料返还时,应触发本规则。 + +## 审核输出模板 + +合同存在解除或终止安排。请核查解除触发条件是否明确,通知是否可留痕,解除后付款、交付、保密、数据返还、知识产权和未完成事项处理是否完整。 + +## 修改建议 + +1. 区分任意解除、约定解除、违约解除和法定解除提示。 +2. 增加书面通知、电子通知和视为送达规则。 +3. 对可补救违约设置合理整改期。 +4. 约定解除后的结算、资料返还、持续义务和争议处理。 + +## 人工复核边界 + +某一次解除是否有效、通知是否实际送达、解除后的损失承担,需要结合证据和争议事实人工复核。 diff --git a/project-docs/phase13-legal-knowledge-template-library/review-rules/company-commercial/RULE-AUTHORIZATION-SUBJECT-001.md b/project-docs/phase13-legal-knowledge-template-library/review-rules/company-commercial/RULE-AUTHORIZATION-SUBJECT-001.md new file mode 100644 index 00000000..fa71abb3 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/review-rules/company-commercial/RULE-AUTHORIZATION-SUBJECT-001.md @@ -0,0 +1,29 @@ +# RULE-AUTHORIZATION-SUBJECT-001 签约主体和授权代表核验不足 + +## 绑定资料 + +- 规则分类:主体资格 +- 风险等级:高 +- 绑定法源:LAW-COMPANY-001;LAW-CIVIL-001 +- 绑定知识卡:KC-COMPANY-AUTHORIZATION-001 +- 绑定条款:CLAUSE-COMMON-AUTHORIZATION-001 +- 当前状态:LEGAL_REVIEW + +## 触发条件 + +合同出现“授权代表”“代理人”“经办人”“项目部”“分公司”“盖章”“电子签章”等表述,但主体名称、统一社会信用代码、法定代表人或授权文件缺失、不一致时,应触发本规则。 + +## 审核输出模板 + +合同存在主体资格或授权代表核验事项。请核查合同主体、营业执照信息、签署权限、授权委托书、印章类型和电子签章权限是否一致。 + +## 修改建议 + +1. 在合同首页列明主体全称、统一社会信用代码、住所和联系人。 +2. 要求授权代表签署时同步提供授权委托书或系统授权记录。 +3. 对分支机构、项目部、个人经办签署增加公司盖章确认。 +4. 签署前留存营业执照、授权文件、印章样式或电子签章审计记录。 + +## 人工复核边界 + +越权代表、表见代理、分支机构签约效力和重大交易授权属于高风险事项,必须由法务结合证据复核。 diff --git a/project-docs/phase13-legal-knowledge-template-library/review-rules/company-commercial/RULE-DISPUTE-RESOLUTION-001.md b/project-docs/phase13-legal-knowledge-template-library/review-rules/company-commercial/RULE-DISPUTE-RESOLUTION-001.md new file mode 100644 index 00000000..07fd6ae0 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/review-rules/company-commercial/RULE-DISPUTE-RESOLUTION-001.md @@ -0,0 +1,29 @@ +# RULE-DISPUTE-RESOLUTION-001 仲裁诉讼和送达条款冲突或不完整 + +## 绑定资料 + +- 规则分类:争议解决 +- 风险等级:中 +- 绑定法源:LAW-ARBITRATION-001;LAW-CIVIL-PROCEDURE-001;LAW-CIVIL-001 +- 绑定知识卡:KC-DISPUTE-ARBITRATION-LITIGATION-001 +- 绑定条款:CLAUSE-COMMON-DISPUTE-001 +- 当前状态:LEGAL_REVIEW + +## 触发条件 + +合同中出现“仲裁”“诉讼”“管辖”“法院”“仲裁委员会”“送达地址”等表述,但同时约定仲裁和诉讼、机构名称不明确、管辖地点不清或缺少送达规则时,应触发本规则。 + +## 审核输出模板 + +争议解决条款需要核查是否清晰且可执行。请确认仲裁或诉讼是否择一,仲裁机构或管辖法院是否明确,送达地址、电子送达和地址变更通知规则是否完整。 + +## 修改建议 + +1. 在同一合同中避免同时约定仲裁和诉讼作为最终争议解决方式。 +2. 如选择仲裁,应写明具体仲裁委员会名称和仲裁地。 +3. 如选择诉讼,应写明与合同有实际联系的管辖法院或地点。 +4. 增加送达地址、电子邮箱、地址变更通知和视为送达规则。 + +## 人工复核边界 + +涉外合同、专属管辖、消费者争议、劳动争议和已经发生争议的案件必须由法务或律师人工复核。 diff --git a/project-docs/phase13-legal-knowledge-template-library/review-rules/company-commercial/RULE-E-SIGN-EVIDENCE-001.md b/project-docs/phase13-legal-knowledge-template-library/review-rules/company-commercial/RULE-E-SIGN-EVIDENCE-001.md new file mode 100644 index 00000000..ce3eb0cf --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/review-rules/company-commercial/RULE-E-SIGN-EVIDENCE-001.md @@ -0,0 +1,29 @@ +# RULE-E-SIGN-EVIDENCE-001 电子签署证据链留存不足 + +## 绑定资料 + +- 规则分类:电子签署与证据 +- 风险等级:中 +- 绑定法源:LAW-E-SIGN-001;LAW-CIVIL-001;LAW-CIVIL-PROCEDURE-001 +- 绑定知识卡:KC-E-SIGN-EVIDENCE-RETENTION-001 +- 绑定条款:CLAUSE-COMMON-E-SIGN-EVIDENCE-001 +- 当前状态:LEGAL_REVIEW + +## 触发条件 + +合同中出现“电子签名”“电子合同”“线上订单”“系统确认”“邮件确认”“时间戳”等表述,但缺少身份认证、签署意愿确认、文件防篡改、日志留存和证据导出安排时,应触发本规则。 + +## 审核输出模板 + +合同涉及电子签署或电子数据证据。请核查签署人身份认证、签署意愿确认、文件哈希或防篡改机制、时间戳、签署日志、操作记录和履约证据留存是否完整。 + +## 修改建议 + +1. 明确双方认可电子签署、电子印章、系统确认和线上订单的效力。 +2. 约定签署平台应保存身份认证、签署时间、IP、设备、文件哈希和证书信息。 +3. 约定合同、订单、验收、发票、沟通和履约记录的保存期限。 +4. 允许一方在争议发生时导出或调取完整证据包。 + +## 人工复核边界 + +可靠电子签名认定、电子数据真实性、平台技术能力和特定合同是否允许电子签署,需要技术和法务共同复核。 diff --git a/project-docs/phase13-legal-knowledge-template-library/review-rules/data-privacy/RULE-DATA-PI-PROCESSING-001.md b/project-docs/phase13-legal-knowledge-template-library/review-rules/data-privacy/RULE-DATA-PI-PROCESSING-001.md new file mode 100644 index 00000000..41e8b8ed --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/review-rules/data-privacy/RULE-DATA-PI-PROCESSING-001.md @@ -0,0 +1,30 @@ +# RULE-DATA-PI-PROCESSING-001 个人信息处理条款缺失或边界不清 + +## 绑定资料 + +- 规则分类:个人信息与数据安全 +- 风险等级:高 +- 绑定法源:LAW-DATA-001;LAW-DATA-002;LAW-DATA-003 +- 绑定知识卡:KC-DATA-PI-PROCESSING-001 +- 绑定条款:CLAUSE-DATA-PI-PROCESSING-001 +- 当前状态:LEGAL_REVIEW + +## 触发条件 + +合同涉及“个人信息”“用户数据”“账号”“日志”“联系人”“委托处理”“数据处理”“数据删除”等表述,但缺少处理目的、范围、期限、安全措施、转委托、返还删除或泄露通知时,应触发本规则。 + +## 审核输出模板 + +合同涉及个人信息或数据处理安排。请核查处理目的、处理方式、信息类别、保存期限、安全措施、转委托限制、数据返还删除、泄露通知和协助响应个人权利请求是否明确。 + +## 修改建议 + +1. 增加个人信息处理目的、范围、类型、方式和期限。 +2. 明确受托方只能按委托方书面指示处理个人信息。 +3. 约定安全措施、访问控制、日志留存和安全事件通知。 +4. 约定合同终止后的返还、删除、匿名化和证明义务。 +5. 涉及数据出境、重要数据或敏感个人信息时暂停自动结论并转专项合规复核。 + +## 人工复核边界 + +数据出境、重要数据、敏感个人信息、关键信息基础设施和行业监管数据必须由合规人员或法务专项复核。 diff --git a/project-docs/phase13-legal-knowledge-template-library/review-rules/intellectual-property/RULE-IP-SOFTWARE-OWNERSHIP-001.md b/project-docs/phase13-legal-knowledge-template-library/review-rules/intellectual-property/RULE-IP-SOFTWARE-OWNERSHIP-001.md new file mode 100644 index 00000000..b43e55df --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/review-rules/intellectual-property/RULE-IP-SOFTWARE-OWNERSHIP-001.md @@ -0,0 +1,29 @@ +# RULE-IP-SOFTWARE-OWNERSHIP-001 软件成果权属和许可边界不清 + +## 绑定资料 + +- 规则分类:知识产权 +- 风险等级:高 +- 绑定法源:LAW-IP-001;LAW-CIVIL-001;LAW-TECH-001 +- 绑定知识卡:KC-IP-SOFTWARE-COPYRIGHT-OWNERSHIP-001 +- 绑定条款:CLAUSE-TECH-IP-OWNERSHIP-001 +- 当前状态:LEGAL_REVIEW + +## 触发条件 + +合同中出现“著作权”“软件成果”“源代码”“交付物”“技术成果”“许可使用”“开源软件”“第三方组件”等表述,但权属归属、许可范围、交付标准、第三方权利和开源限制不清时,应触发本规则。 + +## 审核输出模板 + +软件或技术成果条款需要核查权属和许可边界。请确认成果归属、源代码交付、许可范围、使用期限、地域、再许可、第三方组件、开源义务和侵权责任是否明确。 + +## 修改建议 + +1. 区分既有成果、委托开发成果、衍生成果和第三方组件。 +2. 明确著作权归属或许可使用范围、期限、地域和是否可再许可。 +3. 对源代码、部署脚本、文档、接口、模型配置等交付物列清单。 +4. 增加第三方权利不侵权保证和开源组件披露义务。 + +## 人工复核边界 + +开源许可证合规、专利申请权、商业秘密、职务作品和合作开发成果归属必须专项复核。 diff --git a/project-docs/阶段13-法律知识库与合同模板库建设闭环第三批执行记录-2026-05-01.md b/project-docs/阶段13-法律知识库与合同模板库建设闭环第三批执行记录-2026-05-01.md new file mode 100644 index 00000000..d09cbc9a --- /dev/null +++ b/project-docs/阶段13-法律知识库与合同模板库建设闭环第三批执行记录-2026-05-01.md @@ -0,0 +1,127 @@ +# AI合同平台 阶段 13 法律知识库与合同模板库建设闭环第三批执行记录(2026-05-01) + +## 一、阶段结论 + +本批次进入 `13.3 合同审核规则库` 和 `13.4 标准条款库` 的组合建设,当前状态为 `PASS_WITH_LEGAL_REVIEW_REQUIRED`。 + +本批次完成第一批中文审核规则和标准条款,使前一批法律知识卡开始具备可被审核引擎、模板生成和人工复核共同使用的结构化内容。所有新增资料仍保持 `LEGAL_REVIEW`,不得直接作为已复核生产法律意见。 + +## 二、本批次交付 + +新增资料: + +1. `project-docs/phase13-legal-knowledge-template-library/review-rules/README.md` +2. `project-docs/phase13-legal-knowledge-template-library/review-rules/civil-code/*.md` +3. `project-docs/phase13-legal-knowledge-template-library/review-rules/company-commercial/*.md` +4. `project-docs/phase13-legal-knowledge-template-library/review-rules/data-privacy/*.md` +5. `project-docs/phase13-legal-knowledge-template-library/review-rules/intellectual-property/*.md` +6. `project-docs/phase13-legal-knowledge-template-library/clause-library/common/CLAUSE-*.md` +7. `project-docs/phase13-legal-knowledge-template-library/clause-library/software-saas/CLAUSE-DATA-PI-PROCESSING-001.md` +8. `project-docs/phase13-legal-knowledge-template-library/clause-library/technology-development/CLAUSE-TECH-IP-OWNERSHIP-001.md` + +更新资料: + +1. `inventories/review-risk-rule-inventory.csv` +2. `inventories/clause-library-inventory.csv` +3. `field-dictionary.md` +4. `README.md` +5. `scripts/import-phase13-library.ps1` +6. `scripts/run-legal-knowledge-library-gate.ps1` + +## 三、第一批审核规则范围 + +本批次新增 8 条中文审核规则: + +1. 格式条款提示说明不足。 +2. 违约金和赔偿边界不清。 +3. 解除条件和通知留痕不足。 +4. 签约主体和授权代表核验不足。 +5. 个人信息处理条款缺失或边界不清。 +6. 仲裁诉讼和送达条款冲突或不完整。 +7. 电子签署证据链留存不足。 +8. 软件成果权属和许可边界不清。 + +这些规则均绑定中国法源编号、标准条款编号和对应知识卡语义边界。触发词被控制在审核规则接口限制内,避免导入后因字段长度阻塞。 + +## 四、第一批标准条款范围 + +本批次新增 8 个中文标准条款: + +1. 格式条款提示与特别说明。 +2. 违约责任与违约金。 +3. 合同解除通知与送达。 +4. 签约主体与授权确认。 +5. 个人信息与数据处理。 +6. 争议解决与送达。 +7. 电子签署与证据留存。 +8. 软件成果权属与许可。 + +每个条款均包含绑定法源、适用条件、不适用条件、推荐条款文本、使用提示、风险提示和复核状态。条款初稿可用于内部法务和业务复核,但不得直接标记为生产就绪。 + +## 五、自动化能力增强 + +一键导入脚本增强: + +1. `Validate` 模式统计标准条款和审核规则数量。 +2. `Review` 模式可识别 `LEGAL_REVIEW`、`BUSINESS_REVIEW`、`APPROVED` 和 `PUBLISHED` 资料。 +3. 审核规则导入时会读取规则说明正文,将修改建议和依据内容写入审核规则字段。 +4. `Production` 模式仍只允许导入已复核且 `production_ready=true` 的资料。 + +阶段 13 门禁增强: + +1. 校验标准条款编号唯一性、必填字段、正文路径、风险说明路径、法源追溯、状态值和生产就绪限制。 +2. 校验审核规则编号唯一性、必填字段、说明文件路径、法源追溯、条款追溯、风险等级、触发词长度、状态值和生产就绪限制。 +3. 统计仍需法务复核的审核规则,以及仍需法务和业务复核的标准条款。 + +## 六、自动化门禁结果 + +导入脚本离线校验: + +```text +PHASE13_IMPORT_PASS D:\ai-contract-platform\project-docs\qa-artifacts\phase13-import\2026-05-01T21-52-21-612 +``` + +阶段 13 资料门禁: + +```text +PHASE13_LEGAL_KNOWLEDGE_LIBRARY_GATE_PASS_WITH_LEGAL_REVIEW_REQUIRED D:\ai-contract-platform\project-docs\qa-artifacts\phase13-legal-knowledge-library-gate\2026-05-01T21-52-12-181 +``` + +门禁统计: + +| 指标 | 结果 | +|---|---:| +| 法源 | 20 | +| 法律知识卡 | 10 | +| 审核规则 | 8 | +| 标准条款 | 8 | +| 清单文件 | 9 | +| 规则字段、路径、法源追溯、条款追溯 | 通过 | +| 条款字段、路径、法源追溯 | 通过 | +| 未复核规则禁止生产就绪 | 通过 | +| 未复核条款禁止生产就绪 | 通过 | +| 仍需法务复核的法源 | 20 | +| 仍需法务复核的知识卡 | 10 | +| 仍需法务复核的审核规则 | 8 | +| 仍需法务和业务复核的标准条款 | 8 | + +## 七、当前保留项 + +| 保留项 | 状态 | 说明 | +|---|---|---| +| 法源详情页和有效状态 | LEGAL_REVIEW | 仍需法务确认官方详情页、施行日期和现行有效状态 | +| 审核规则法务定稿 | LEGAL_REVIEW | 规则触发词和输出模板需法律专业人员复核 | +| 标准条款业务适配 | BUSINESS_REVIEW_PENDING | 条款中的比例、期限、机构、地点、平台能力和责任上限需业务填写 | +| 黄金样本 | NOT_STARTED | 下一批需要补合同审核、合同生成和知识库问答黄金样本 | +| 生产导入 | BLOCKED_BY_REVIEW | 未复核资料不得导入生产确定性知识库或生产模板库 | + +## 八、下一步 + +下一批建议进入 `13.5 黄金样本与验收问题集`: + +1. 为 8 条审核规则各建立至少 1 个中文审核黄金样本。 +2. 为 8 个标准条款建立合同生成变量样本和期望输出片段。 +3. 为 10 张知识卡建立知识库问答样本,覆盖正确回答、拒答和转人工边界。 +4. 将样本纳入阶段 13 门禁,形成“法源、知识卡、规则、条款、样本”五层闭环。 + +阶段 13 第三批当前状态:`PASS_WITH_LEGAL_REVIEW_REQUIRED`。 diff --git a/scripts/import-phase13-library.ps1 b/scripts/import-phase13-library.ps1 index a69eedfb..c869d89f 100644 --- a/scripts/import-phase13-library.ps1 +++ b/scripts/import-phase13-library.ps1 @@ -111,11 +111,28 @@ function Test-ProductionReadyAsset { return ($statusAllowed -and $ready -and $reviewed) } +function Test-ReviewImportEligibleAsset { + param([object]$Row) + return @("LEGAL_REVIEW", "BUSINESS_REVIEW", "APPROVED", "PUBLISHED") -contains $Row.status +} + function Resolve-LibraryPath { param([string]$RelativePath) return Join-Path $LibraryRoot ($RelativePath -replace "/", "\") } +function Read-LibraryTextIfExists { + param([string]$RelativePath) + if ([string]::IsNullOrWhiteSpace($RelativePath)) { + return "" + } + $absolutePath = Resolve-LibraryPath -RelativePath $RelativePath + if (-not (Test-Path -LiteralPath $absolutePath -PathType Leaf)) { + return "" + } + return Get-Content -LiteralPath $absolutePath -Raw -Encoding UTF8 +} + function Get-ResponseData { param([object]$Response) if ($null -eq $Response) { @@ -375,15 +392,30 @@ function Import-TemplateAsset { function Import-ReviewRuleAsset { param([hashtable]$Headers, [object]$Rule, [object[]]$ExistingRules) + $ruleBody = Read-LibraryTextIfExists -RelativePath $Rule.modification_suggestion_path + $description = $Rule.review_output_template + if (-not [string]::IsNullOrWhiteSpace($ruleBody)) { + $description = "$description`n`n$ruleBody" + } + $suggestion = if (-not [string]::IsNullOrWhiteSpace($ruleBody)) { + $ruleBody + } else { + $Rule.modification_suggestion_path + } + $isActive = if ($Mode -eq "Production") { + Test-ProductionReadyAsset -Row $Rule + } else { + Test-ReviewImportEligibleAsset -Row $Rule + } $fields = @{ name = $Rule.risk_name keyword = $Rule.trigger_condition contract_type = "all" risk_level = $Rule.severity.ToLowerInvariant() - description = $Rule.review_output_template - suggestion = $Rule.modification_suggestion_path + description = $description + suggestion = $suggestion legal_basis = $Rule.source_ids - is_active = "true" + is_active = ([string]$isActive).ToLowerInvariant() } $existing = @($ExistingRules | Where-Object { $_.name -eq $Rule.risk_name -or $_.keyword -eq $Rule.trigger_condition }) | Select-Object -First 1 if ($existing) { @@ -412,6 +444,7 @@ $legalSourceInventoryPath = Join-Path $LibraryRoot "inventories\legal-source-inv $knowledgeCardInventoryPath = Join-Path $LibraryRoot "inventories\legal-knowledge-card-inventory.csv" $templateInventoryPath = Join-Path $LibraryRoot "inventories\contract-template-inventory.csv" $reviewRuleInventoryPath = Join-Path $LibraryRoot "inventories\review-risk-rule-inventory.csv" +$clauseInventoryPath = Join-Path $LibraryRoot "inventories\clause-library-inventory.csv" $sourceRows = Import-CsvRows -Path $legalSourceInventoryPath $sourceIdSet = @{} @@ -424,6 +457,7 @@ foreach ($source in $sourceRows) { $knowledgeCards = Import-CsvRows -Path $knowledgeCardInventoryPath $templates = Import-CsvRows -Path $templateInventoryPath $reviewRules = Import-CsvRows -Path $reviewRuleInventoryPath +$clauses = Import-CsvRows -Path $clauseInventoryPath if ($knowledgeCards.Count -gt 0) { Add-Check -Key "knowledge_card_inventory" -Label "法律知识卡清单" -Status "pass" -Detail "知识卡数量=$($knowledgeCards.Count)" @@ -519,7 +553,8 @@ if ($Mode -ne "Validate" -and $validationFailures -eq 0) { if (-not $SkipTemplates -and $templates.Count -gt 0) { $existingTemplates = Get-PagedApiItems -Url "$ApiBaseUrl/templates" -Headers $headers foreach ($template in $templates) { - if (-not (Test-ProductionReadyAsset -Row $template)) { + $templateEligible = if ($Mode -eq "Production") { Test-ProductionReadyAsset -Row $template } else { Test-ReviewImportEligibleAsset -Row $template } + if (-not $templateEligible) { continue } try { @@ -533,7 +568,8 @@ if ($Mode -ne "Validate" -and $validationFailures -eq 0) { if (-not $SkipReviewRules -and $reviewRules.Count -gt 0) { $existingRules = Get-PagedApiItems -Url "$ApiBaseUrl/review-rules" -Headers $headers foreach ($rule in $reviewRules) { - if (-not (Test-ProductionReadyAsset -Row $rule)) { + $ruleEligible = if ($Mode -eq "Production") { Test-ProductionReadyAsset -Row $rule } else { Test-ReviewImportEligibleAsset -Row $rule } + if (-not $ruleEligible) { continue } try { @@ -587,6 +623,7 @@ $summary = [ordered]@{ legal_sources = $sourceRows.Count knowledge_cards = $knowledgeCards.Count eligible_knowledge_cards = $eligibleKnowledgeCards.Count + clauses = $clauses.Count templates = $templates.Count review_rules = $reviewRules.Count validation_failures = $validationFailures @@ -616,6 +653,7 @@ $md.Add("|---|---:|") | Out-Null $md.Add("| 法源 | $($sourceRows.Count) |") | Out-Null $md.Add("| 知识卡 | $($knowledgeCards.Count) |") | Out-Null $md.Add("| 当前模式可导入知识卡 | $($eligibleKnowledgeCards.Count) |") | Out-Null +$md.Add("| 标准条款 | $($clauses.Count) |") | Out-Null $md.Add("| 合同模板 | $($templates.Count) |") | Out-Null $md.Add("| 审核规则 | $($reviewRules.Count) |") | Out-Null $md.Add("| 校验失败 | $validationFailures |") | Out-Null diff --git a/scripts/run-legal-knowledge-library-gate.ps1 b/scripts/run-legal-knowledge-library-gate.ps1 index d5cb65c9..a469a3e8 100644 --- a/scripts/run-legal-knowledge-library-gate.ps1 +++ b/scripts/run-legal-knowledge-library-gate.ps1 @@ -173,6 +173,30 @@ function Test-RequiredFlag { return @("true", "yes", "1", "required") -contains $Value.ToLowerInvariant() } +function Test-PendingReviewer { + param([string]$Value) + if ([string]::IsNullOrWhiteSpace($Value)) { + return $true + } + return @("pending", "待法务复核", "待业务复核", "待复核") -contains $Value.Trim() +} + +function Split-SemicolonValues { + param([string]$Value) + if ([string]::IsNullOrWhiteSpace($Value)) { + return @() + } + return @($Value -split ";" | ForEach-Object { $_.Trim() } | Where-Object { $_ }) +} + +function Test-LibraryFilePath { + param([string]$RelativePath) + if ([string]::IsNullOrWhiteSpace($RelativePath)) { + return $false + } + return Test-Path -LiteralPath (Join-Path $LibraryRoot ($RelativePath -replace "/", "\")) -PathType Leaf +} + function Test-AllowedOfficialUrl { param([string]$Url) if ([string]::IsNullOrWhiteSpace($Url)) { @@ -290,6 +314,7 @@ $requiredDirs = @( "project-docs\phase13-legal-knowledge-template-library\legal-sources\intellectual-property", "project-docs\phase13-legal-knowledge-template-library\legal-sources\procurement-tendering", "project-docs\phase13-legal-knowledge-template-library\clause-library\common", + "project-docs\phase13-legal-knowledge-template-library\review-rules", "project-docs\phase13-legal-knowledge-template-library\contract-templates\purchase", "project-docs\phase13-legal-knowledge-template-library\qa-samples\review", "project-docs\phase13-legal-knowledge-template-library\knowledge-cards", @@ -331,8 +356,8 @@ $expertReviewColumns = @("review_id", "asset_type", "asset_id", "reviewer", "rev $legalSourceRows = Add-RequiredFileCheck -Key "inventory_legal_sources" -Label "法源清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\legal-source-inventory.csv" -Columns $legalSourceColumns $knowledgeCardRows = Add-RequiredFileCheck -Key "inventory_knowledge_cards" -Label "法律知识卡清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\legal-knowledge-card-inventory.csv" -Columns $knowledgeCardColumns -Add-RequiredFileCheck -Key "inventory_risk_rules" -Label "审核风险规则清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\review-risk-rule-inventory.csv" -Columns $riskRuleColumns | Out-Null -Add-RequiredFileCheck -Key "inventory_clauses" -Label "标准条款库清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\clause-library-inventory.csv" -Columns $clauseColumns | Out-Null +$reviewRuleRows = Add-RequiredFileCheck -Key "inventory_risk_rules" -Label "审核风险规则清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\review-risk-rule-inventory.csv" -Columns $riskRuleColumns +$clauseRows = Add-RequiredFileCheck -Key "inventory_clauses" -Label "标准条款库清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\clause-library-inventory.csv" -Columns $clauseColumns Add-RequiredFileCheck -Key "inventory_templates" -Label "合同模板清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\contract-template-inventory.csv" -Columns $templateColumns | Out-Null Add-RequiredFileCheck -Key "inventory_review_samples" -Label "合同审核黄金样本清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\review-golden-sample-inventory.csv" -Columns $reviewSampleColumns | Out-Null Add-RequiredFileCheck -Key "inventory_generation_samples" -Label "合同生成黄金样本清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\generation-golden-sample-inventory.csv" -Columns $generationSampleColumns | Out-Null @@ -476,6 +501,185 @@ if ($knowledgeCardsNeedingReview.Count -gt 0) { Add-Check -Key "knowledge_card_review_required" -Label "知识卡法务复核要求" -Status "pass" -Detail "知识卡已完成复核" } +$clauseIdMap = @{} +foreach ($clauseRow in $clauseRows) { + if (-not [string]::IsNullOrWhiteSpace($clauseRow.clause_id)) { + $clauseIdMap[$clauseRow.clause_id] = $true + } +} + +$duplicateClauseIds = @($clauseRows | Where-Object { -not [string]::IsNullOrWhiteSpace($_.clause_id) } | Group-Object clause_id | Where-Object { $_.Count -gt 1 } | Select-Object -ExpandProperty Name) +if ($duplicateClauseIds.Count -eq 0) { + Add-Check -Key "clause_ids_unique" -Label "标准条款编号唯一性" -Status "pass" -Detail "未发现重复标准条款编号" +} else { + Add-Check -Key "clause_ids_unique" -Label "标准条款编号唯一性" -Status "fail" -Detail "重复编号:$($duplicateClauseIds -join ',')" -Meta @{ duplicates = $duplicateClauseIds } +} + +$clauseMissingFields = @($clauseRows | Where-Object { + [string]::IsNullOrWhiteSpace($_.clause_id) -or + [string]::IsNullOrWhiteSpace($_.clause_name) -or + [string]::IsNullOrWhiteSpace($_.contract_type) -or + [string]::IsNullOrWhiteSpace($_.clause_category) -or + [string]::IsNullOrWhiteSpace($_.source_ids) -or + [string]::IsNullOrWhiteSpace($_.risk_notes_path) -or + [string]::IsNullOrWhiteSpace($_.clause_path) -or + [string]::IsNullOrWhiteSpace($_.status) -or + [string]::IsNullOrWhiteSpace($_.owner) -or + [string]::IsNullOrWhiteSpace($_.legal_reviewer) -or + [string]::IsNullOrWhiteSpace($_.business_reviewer) +} | Select-Object -ExpandProperty clause_id) +if ($clauseMissingFields.Count -eq 0) { + Add-Check -Key "clause_required_fields" -Label "标准条款必填字段" -Status "pass" -Detail "必填字段均已填写" +} else { + Add-Check -Key "clause_required_fields" -Label "标准条款必填字段" -Status "fail" -Detail "以下标准条款缺少必填字段:$($clauseMissingFields -join ',')" -Meta @{ rows = $clauseMissingFields } +} + +$clauseMissingFiles = @($clauseRows | Where-Object { + -not (Test-LibraryFilePath -RelativePath $_.clause_path) -or + -not (Test-LibraryFilePath -RelativePath $_.risk_notes_path) +} | Select-Object -ExpandProperty clause_id) +if ($clauseMissingFiles.Count -eq 0) { + Add-Check -Key "clause_files" -Label "标准条款文件" -Status "pass" -Detail "标准条款正文和风险说明文件均存在" +} else { + Add-Check -Key "clause_files" -Label "标准条款文件" -Status "fail" -Detail "以下标准条款缺少文件:$($clauseMissingFiles -join ',')" -Meta @{ rows = $clauseMissingFiles } +} + +$clauseUnknownSources = @() +foreach ($clauseRow in $clauseRows) { + foreach ($sourceId in (Split-SemicolonValues -Value $clauseRow.source_ids)) { + if (-not $legalSourceIdMap.ContainsKey($sourceId)) { + $clauseUnknownSources += "$($clauseRow.clause_id):$sourceId" + } + } +} +if ($clauseUnknownSources.Count -eq 0) { + Add-Check -Key "clause_source_traceability" -Label "标准条款法源可追溯" -Status "pass" -Detail "标准条款绑定法源均存在于法源清单" +} else { + Add-Check -Key "clause_source_traceability" -Label "标准条款法源可追溯" -Status "fail" -Detail "以下标准条款绑定了未知法源:$($clauseUnknownSources -join ',')" -Meta @{ rows = $clauseUnknownSources } +} + +$invalidClauseStatuses = @($clauseRows | Where-Object { $statusValues -notcontains $_.status } | Select-Object -ExpandProperty clause_id) +if ($invalidClauseStatuses.Count -eq 0) { + Add-Check -Key "clause_status_values" -Label "标准条款状态值" -Status "pass" -Detail "标准条款状态均在允许范围内" +} else { + Add-Check -Key "clause_status_values" -Label "标准条款状态值" -Status "fail" -Detail "以下标准条款状态无效:$($invalidClauseStatuses -join ',')" -Meta @{ rows = $invalidClauseStatuses; allowed = $statusValues } +} + +$clausesReadyWithoutReview = @($clauseRows | Where-Object { + (Test-RequiredFlag -Value $_.production_ready) -and + ((Test-PendingReviewer -Value $_.legal_reviewer) -or (Test-PendingReviewer -Value $_.business_reviewer) -or @("APPROVED", "PUBLISHED") -notcontains $_.status) +} | Select-Object -ExpandProperty clause_id) +if ($clausesReadyWithoutReview.Count -eq 0) { + Add-Check -Key "clause_no_unreviewed_production" -Label "未复核标准条款禁止生产就绪" -Status "pass" -Detail "未发现未经复核即标记生产就绪的标准条款" +} else { + Add-Check -Key "clause_no_unreviewed_production" -Label "未复核标准条款禁止生产就绪" -Status "fail" -Detail "以下标准条款未完成复核却标记生产就绪:$($clausesReadyWithoutReview -join ',')" -Meta @{ rows = $clausesReadyWithoutReview } +} + +$clausesNeedingReview = @($clauseRows | Where-Object { $_.status -eq "LEGAL_REVIEW" -or (Test-RequiredFlag -Value $_.review_required) } | Select-Object -ExpandProperty clause_id) +if ($clausesNeedingReview.Count -gt 0) { + Add-Check -Key "clause_review_required" -Label "标准条款复核要求" -Status "warn" -Required $false -Detail "仍有 $($clausesNeedingReview.Count) 个标准条款需要法务和业务复核" -Meta @{ rows = $clausesNeedingReview } +} else { + Add-Check -Key "clause_review_required" -Label "标准条款复核要求" -Status "pass" -Detail "标准条款已完成复核" +} + +$duplicateReviewRuleIds = @($reviewRuleRows | Where-Object { -not [string]::IsNullOrWhiteSpace($_.rule_id) } | Group-Object rule_id | Where-Object { $_.Count -gt 1 } | Select-Object -ExpandProperty Name) +if ($duplicateReviewRuleIds.Count -eq 0) { + Add-Check -Key "review_rule_ids_unique" -Label "审核规则编号唯一性" -Status "pass" -Detail "未发现重复审核规则编号" +} else { + Add-Check -Key "review_rule_ids_unique" -Label "审核规则编号唯一性" -Status "fail" -Detail "重复编号:$($duplicateReviewRuleIds -join ',')" -Meta @{ duplicates = $duplicateReviewRuleIds } +} + +$reviewRuleMissingFields = @($reviewRuleRows | Where-Object { + [string]::IsNullOrWhiteSpace($_.rule_id) -or + [string]::IsNullOrWhiteSpace($_.risk_category) -or + [string]::IsNullOrWhiteSpace($_.risk_name) -or + [string]::IsNullOrWhiteSpace($_.severity) -or + [string]::IsNullOrWhiteSpace($_.source_ids) -or + [string]::IsNullOrWhiteSpace($_.clause_ids) -or + [string]::IsNullOrWhiteSpace($_.trigger_condition) -or + [string]::IsNullOrWhiteSpace($_.review_output_template) -or + [string]::IsNullOrWhiteSpace($_.modification_suggestion_path) -or + [string]::IsNullOrWhiteSpace($_.status) -or + [string]::IsNullOrWhiteSpace($_.owner) -or + [string]::IsNullOrWhiteSpace($_.legal_reviewer) +} | Select-Object -ExpandProperty rule_id) +if ($reviewRuleMissingFields.Count -eq 0) { + Add-Check -Key "review_rule_required_fields" -Label "审核规则必填字段" -Status "pass" -Detail "必填字段均已填写" +} else { + Add-Check -Key "review_rule_required_fields" -Label "审核规则必填字段" -Status "fail" -Detail "以下审核规则缺少必填字段:$($reviewRuleMissingFields -join ',')" -Meta @{ rows = $reviewRuleMissingFields } +} + +$reviewRuleMissingFiles = @($reviewRuleRows | Where-Object { -not (Test-LibraryFilePath -RelativePath $_.modification_suggestion_path) } | Select-Object -ExpandProperty rule_id) +if ($reviewRuleMissingFiles.Count -eq 0) { + Add-Check -Key "review_rule_files" -Label "审核规则说明文件" -Status "pass" -Detail "审核规则说明和修改建议文件均存在" +} else { + Add-Check -Key "review_rule_files" -Label "审核规则说明文件" -Status "fail" -Detail "以下审核规则缺少说明文件:$($reviewRuleMissingFiles -join ',')" -Meta @{ rows = $reviewRuleMissingFiles } +} + +$reviewRuleUnknownSources = @() +$reviewRuleUnknownClauses = @() +foreach ($ruleRow in $reviewRuleRows) { + foreach ($sourceId in (Split-SemicolonValues -Value $ruleRow.source_ids)) { + if (-not $legalSourceIdMap.ContainsKey($sourceId)) { + $reviewRuleUnknownSources += "$($ruleRow.rule_id):$sourceId" + } + } + foreach ($clauseId in (Split-SemicolonValues -Value $ruleRow.clause_ids)) { + if (-not $clauseIdMap.ContainsKey($clauseId)) { + $reviewRuleUnknownClauses += "$($ruleRow.rule_id):$clauseId" + } + } +} +if ($reviewRuleUnknownSources.Count -eq 0) { + Add-Check -Key "review_rule_source_traceability" -Label "审核规则法源可追溯" -Status "pass" -Detail "审核规则绑定法源均存在于法源清单" +} else { + Add-Check -Key "review_rule_source_traceability" -Label "审核规则法源可追溯" -Status "fail" -Detail "以下审核规则绑定了未知法源:$($reviewRuleUnknownSources -join ',')" -Meta @{ rows = $reviewRuleUnknownSources } +} +if ($reviewRuleUnknownClauses.Count -eq 0) { + Add-Check -Key "review_rule_clause_traceability" -Label "审核规则条款可追溯" -Status "pass" -Detail "审核规则绑定标准条款均存在于条款清单" +} else { + Add-Check -Key "review_rule_clause_traceability" -Label "审核规则条款可追溯" -Status "fail" -Detail "以下审核规则绑定了未知标准条款:$($reviewRuleUnknownClauses -join ',')" -Meta @{ rows = $reviewRuleUnknownClauses } +} + +$allowedSeverities = @("low", "medium", "high") +$invalidReviewRuleSeverities = @($reviewRuleRows | Where-Object { $allowedSeverities -notcontains $_.severity.ToLowerInvariant() } | Select-Object -ExpandProperty rule_id) +if ($invalidReviewRuleSeverities.Count -eq 0) { + Add-Check -Key "review_rule_severity_values" -Label "审核规则风险等级" -Status "pass" -Detail "审核规则风险等级均在允许范围内" +} else { + Add-Check -Key "review_rule_severity_values" -Label "审核规则风险等级" -Status "fail" -Detail "以下审核规则风险等级无效:$($invalidReviewRuleSeverities -join ',')" -Meta @{ rows = $invalidReviewRuleSeverities; allowed = $allowedSeverities } +} + +$reviewRuleKeywordTooLong = @($reviewRuleRows | Where-Object { -not [string]::IsNullOrWhiteSpace($_.trigger_condition) -and $_.trigger_condition.Length -gt 100 } | Select-Object -ExpandProperty rule_id) +if ($reviewRuleKeywordTooLong.Count -eq 0) { + Add-Check -Key "review_rule_keyword_length" -Label "审核规则触发词长度" -Status "pass" -Detail "触发词长度符合审核规则接口限制" +} else { + Add-Check -Key "review_rule_keyword_length" -Label "审核规则触发词长度" -Status "fail" -Detail "以下审核规则触发词超过 100 字:$($reviewRuleKeywordTooLong -join ',')" -Meta @{ rows = $reviewRuleKeywordTooLong } +} + +$invalidReviewRuleStatuses = @($reviewRuleRows | Where-Object { $statusValues -notcontains $_.status } | Select-Object -ExpandProperty rule_id) +if ($invalidReviewRuleStatuses.Count -eq 0) { + Add-Check -Key "review_rule_status_values" -Label "审核规则状态值" -Status "pass" -Detail "审核规则状态均在允许范围内" +} else { + Add-Check -Key "review_rule_status_values" -Label "审核规则状态值" -Status "fail" -Detail "以下审核规则状态无效:$($invalidReviewRuleStatuses -join ',')" -Meta @{ rows = $invalidReviewRuleStatuses; allowed = $statusValues } +} + +$reviewRulesReadyWithoutReview = @($reviewRuleRows | Where-Object { + (Test-RequiredFlag -Value $_.production_ready) -and + ((Test-PendingReviewer -Value $_.legal_reviewer) -or @("APPROVED", "PUBLISHED") -notcontains $_.status) +} | Select-Object -ExpandProperty rule_id) +if ($reviewRulesReadyWithoutReview.Count -eq 0) { + Add-Check -Key "review_rule_no_unreviewed_production" -Label "未复核审核规则禁止生产就绪" -Status "pass" -Detail "未发现未经复核即标记生产就绪的审核规则" +} else { + Add-Check -Key "review_rule_no_unreviewed_production" -Label "未复核审核规则禁止生产就绪" -Status "fail" -Detail "以下审核规则未完成复核却标记生产就绪:$($reviewRulesReadyWithoutReview -join ',')" -Meta @{ rows = $reviewRulesReadyWithoutReview } +} + +$reviewRulesNeedingReview = @($reviewRuleRows | Where-Object { $_.status -eq "LEGAL_REVIEW" -or (Test-RequiredFlag -Value $_.human_review_required) } | Select-Object -ExpandProperty rule_id) +if ($reviewRulesNeedingReview.Count -gt 0) { + Add-Check -Key "review_rule_review_required" -Label "审核规则法务复核要求" -Status "warn" -Required $false -Detail "仍有 $($reviewRulesNeedingReview.Count) 条审核规则需要法务复核" -Meta @{ rows = $reviewRulesNeedingReview } +} else { + Add-Check -Key "review_rule_review_required" -Label "审核规则法务复核要求" -Status "pass" -Detail "审核规则已完成复核" +} + $domainsCovered = @($legalSourceRows | Select-Object -ExpandProperty knowledge_domain -Unique) $requiredDomains = @("civil-code", "judicial-interpretations", "company-commercial", "labor-employment", "data-privacy", "intellectual-property", "procurement-tendering") $missingKnowledgeDomains = @($requiredDomains | Where-Object { $domainsCovered -notcontains $_ }) @@ -536,10 +740,14 @@ $summary = [ordered]@{ metrics = [ordered]@{ legal_sources = $legalSourceRows.Count knowledge_cards = $knowledgeCardRows.Count + review_rules = $reviewRuleRows.Count + clauses = $clauseRows.Count allowed_domains = $allowedDomains.Count knowledge_domains = $domainsCovered.Count legal_review_required = $legalReviewRequired knowledge_cards_review_required = $knowledgeCardsNeedingReview.Count + review_rules_review_required = $reviewRulesNeedingReview.Count + clauses_review_required = $clausesNeedingReview.Count inventory_files = $inventoryReport.Count } artifacts = [ordered]@{ @@ -574,11 +782,15 @@ $md.Add("| 指标 | 数量 |") | Out-Null $md.Add("|---|---:|") | Out-Null $md.Add("| 官方法源 | $($legalSourceRows.Count) |") | Out-Null $md.Add("| 法律知识卡 | $($knowledgeCardRows.Count) |") | Out-Null +$md.Add("| 审核规则 | $($reviewRuleRows.Count) |") | Out-Null +$md.Add("| 标准条款 | $($clauseRows.Count) |") | Out-Null $md.Add("| 允许的官方域名 | $($allowedDomains.Count) |") | Out-Null $md.Add("| 知识领域 | $($domainsCovered.Count) |") | Out-Null $md.Add("| 清单文件 | $($inventoryReport.Count) |") | Out-Null $md.Add("| 仍需法务复核的法源 | $legalReviewRequired |") | Out-Null $md.Add("| 仍需法务复核的知识卡 | $($knowledgeCardsNeedingReview.Count) |") | Out-Null +$md.Add("| 仍需法务复核的审核规则 | $($reviewRulesNeedingReview.Count) |") | Out-Null +$md.Add("| 仍需法务和业务复核的标准条款 | $($clausesNeedingReview.Count) |") | Out-Null $md.Add("") | Out-Null $md.Add("## 检查项") | Out-Null $md.Add("") | Out-Null