diff --git a/project-docs/phase13-legal-knowledge-template-library/README.md b/project-docs/phase13-legal-knowledge-template-library/README.md index dfaa8221..82b03fbd 100644 --- a/project-docs/phase13-legal-knowledge-template-library/README.md +++ b/project-docs/phase13-legal-knowledge-template-library/README.md @@ -29,5 +29,6 @@ 3. 阶段 13.2 第一批中文法律知识卡已建立,共 10 张,全部保持 `LEGAL_REVIEW`。 4. 阶段 13.3 第一批合同审核风险规则已建立,共 8 条,全部保持 `LEGAL_REVIEW`。 5. 阶段 13.4 第一批标准条款已建立,共 8 个,全部保持 `LEGAL_REVIEW` 且 `production_ready=false`。 -6. 阶段 13.7 一键导入脚本已建立,默认 `Validate` 模式不改系统,`Review` 模式可导入待法务复核知识库和审核规则,`Production` 模式只导入已复核且生产就绪资料。 -7. 生产发布仍需等待法务复核和业务复核完成。 +6. 阶段 13.5 第一批黄金样本已建立,包括 8 个合同审核样本、8 个合同生成样本和 10 个知识库问答样本。 +7. 阶段 13.7 一键导入脚本已建立,默认 `Validate` 模式不改系统,`Review` 模式可导入待法务复核知识库和审核规则,`Production` 模式只导入已复核且生产就绪资料。 +8. 生产发布仍需等待法务复核和业务复核完成。 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 45f0498c..32d1573a 100644 --- a/project-docs/phase13-legal-knowledge-template-library/field-dictionary.md +++ b/project-docs/phase13-legal-knowledge-template-library/field-dictionary.md @@ -67,6 +67,21 @@ | risk_notes_path | 风险说明文件路径 | | clause_path | 条款正文文件路径 | +## 黄金样本字段 + +| 字段 | 含义 | +|---|---| +| sample_id | 唯一样本编号 | +| input_sample_path | 合同审核样本的输入合同片段路径 | +| expected_findings_path | 合同审核样本的期望发现路径 | +| expected_severity | 期望风险等级:low、medium、high | +| variable_payload_path | 合同生成样本的变量输入路径 | +| expected_document_path | 合同生成样本的期望输出路径 | +| expected_review_rule_ids | 期望触发或绑定的审核规则编号 | +| expected_source_citations | 期望引用的法源编号 | +| expected_answer_boundary | 知识库问答样本的回答边界 | +| expected_refusal_required | 是否期望拒答或提示转人工 | + ## 使用说明 字段名保留英文是为了让自动化门禁和后续导入脚本稳定识别;字段内容、业务说明、法源说明、条款说明和模板正文必须使用中文,并且必须以中国大陆现行法律资料为依据。 diff --git a/project-docs/phase13-legal-knowledge-template-library/inventories/generation-golden-sample-inventory.csv b/project-docs/phase13-legal-knowledge-template-library/inventories/generation-golden-sample-inventory.csv index f4f29ec8..99f9d635 100644 --- a/project-docs/phase13-legal-knowledge-template-library/inventories/generation-golden-sample-inventory.csv +++ b/project-docs/phase13-legal-knowledge-template-library/inventories/generation-golden-sample-inventory.csv @@ -1 +1,9 @@ sample_id,template_id,contract_type,variable_payload_path,expected_document_path,expected_review_rule_ids,expected_source_citations,status,owner,legal_reviewer,business_reviewer,review_required,production_ready,notes +GEN-SAMPLE-CLAUSE-COMMON-FORMAT-001,CLAUSE-COMMON-FORMAT-001,common,qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-FORMAT-001-variables.json,qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-FORMAT-001-expected.md,RULE-FORMAT-CLAUSE-001,LAW-CIVIL-001;LAW-CONTRACT-001,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,阶段13.5条款生成样本使用标准条款编号作为被测资产 +GEN-SAMPLE-CLAUSE-COMMON-BREACH-001,CLAUSE-COMMON-BREACH-001,common,qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-BREACH-001-variables.json,qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-BREACH-001-expected.md,RULE-BREACH-LIQUIDATED-DAMAGES-001,LAW-CIVIL-001;LAW-CONTRACT-001,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,阶段13.5条款生成样本使用标准条款编号作为被测资产 +GEN-SAMPLE-CLAUSE-COMMON-RESCISSION-NOTICE-001,CLAUSE-COMMON-RESCISSION-NOTICE-001,common,qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-RESCISSION-NOTICE-001-variables.json,qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-RESCISSION-NOTICE-001-expected.md,RULE-RESCISSION-NOTICE-001,LAW-CIVIL-001;LAW-CONTRACT-001,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,阶段13.5条款生成样本使用标准条款编号作为被测资产 +GEN-SAMPLE-CLAUSE-COMMON-AUTHORIZATION-001,CLAUSE-COMMON-AUTHORIZATION-001,common,qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-AUTHORIZATION-001-variables.json,qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-AUTHORIZATION-001-expected.md,RULE-AUTHORIZATION-SUBJECT-001,LAW-COMPANY-001;LAW-CIVIL-001,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,阶段13.5条款生成样本使用标准条款编号作为被测资产 +GEN-SAMPLE-CLAUSE-DATA-PI-PROCESSING-001,CLAUSE-DATA-PI-PROCESSING-001,software-saas,qa-samples/generation/GEN-SAMPLE-CLAUSE-DATA-PI-PROCESSING-001-variables.json,qa-samples/generation/GEN-SAMPLE-CLAUSE-DATA-PI-PROCESSING-001-expected.md,RULE-DATA-PI-PROCESSING-001,LAW-DATA-001;LAW-DATA-002;LAW-DATA-003,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,阶段13.5条款生成样本使用标准条款编号作为被测资产 +GEN-SAMPLE-CLAUSE-COMMON-DISPUTE-001,CLAUSE-COMMON-DISPUTE-001,common,qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-DISPUTE-001-variables.json,qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-DISPUTE-001-expected.md,RULE-DISPUTE-RESOLUTION-001,LAW-ARBITRATION-001;LAW-CIVIL-PROCEDURE-001;LAW-CIVIL-001,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,阶段13.5条款生成样本使用标准条款编号作为被测资产 +GEN-SAMPLE-CLAUSE-COMMON-E-SIGN-EVIDENCE-001,CLAUSE-COMMON-E-SIGN-EVIDENCE-001,common,qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-E-SIGN-EVIDENCE-001-variables.json,qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-E-SIGN-EVIDENCE-001-expected.md,RULE-E-SIGN-EVIDENCE-001,LAW-E-SIGN-001;LAW-CIVIL-001;LAW-CIVIL-PROCEDURE-001,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,阶段13.5条款生成样本使用标准条款编号作为被测资产 +GEN-SAMPLE-CLAUSE-TECH-IP-OWNERSHIP-001,CLAUSE-TECH-IP-OWNERSHIP-001,technology-development,qa-samples/generation/GEN-SAMPLE-CLAUSE-TECH-IP-OWNERSHIP-001-variables.json,qa-samples/generation/GEN-SAMPLE-CLAUSE-TECH-IP-OWNERSHIP-001-expected.md,RULE-IP-SOFTWARE-OWNERSHIP-001,LAW-IP-001;LAW-CIVIL-001;LAW-TECH-001,LEGAL_REVIEW,法律资料运营,待法务复核,待业务复核,true,false,阶段13.5条款生成样本使用标准条款编号作为被测资产 diff --git a/project-docs/phase13-legal-knowledge-template-library/inventories/kb-qa-golden-sample-inventory.csv b/project-docs/phase13-legal-knowledge-template-library/inventories/kb-qa-golden-sample-inventory.csv index 62dba7ea..34edf9e3 100644 --- a/project-docs/phase13-legal-knowledge-template-library/inventories/kb-qa-golden-sample-inventory.csv +++ b/project-docs/phase13-legal-knowledge-template-library/inventories/kb-qa-golden-sample-inventory.csv @@ -1 +1,11 @@ sample_id,question,expected_answer_boundary,expected_source_ids,expected_citation_required,expected_refusal_required,status,owner,legal_reviewer,review_required,production_ready,notes +KBQA-KC-CIVIL-CONTRACT-FORM-001,电子邮件确认的订单能否作为合同和履约证据,应回答数据电文和电子签署的一般审核方向;提示特殊形式合同和跨境签署需人工复核,LAW-CIVIL-001;LAW-E-SIGN-001,true,false,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,绑定知识卡 KC-CIVIL-CONTRACT-FORM-001 +KBQA-KC-CIVIL-STANDARD-CLAUSES-001,平台服务条款中的免责内容需要怎样提示说明,应回答格式条款提示说明和单独确认要求;不得直接判断单个条款必然有效,LAW-CIVIL-001;LAW-CONTRACT-001,true,false,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,绑定知识卡 KC-CIVIL-STANDARD-CLAUSES-001 +KBQA-KC-CIVIL-BREACH-LIQUIDATED-DAMAGES-001,合同违约金比例是否可以直接写成合同总价百分之五十,应提示违约金触发条件和计算口径需复核;具体比例不能自动给结论,LAW-CIVIL-001;LAW-CONTRACT-001,true,true,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,绑定知识卡 KC-CIVIL-BREACH-LIQUIDATED-DAMAGES-001 +KBQA-KC-CIVIL-RESCISSION-NOTICE-001,解除合同时只发微信群消息是否足够,应提示解除条件和通知留痕要求;具体解除效力必须结合证据人工复核,LAW-CIVIL-001;LAW-CONTRACT-001,true,true,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,绑定知识卡 KC-CIVIL-RESCISSION-NOTICE-001 +KBQA-KC-LABOR-CONTRACT-TERM-PROBATION-001,劳动合同试用期和期限应该如何约定,应回答劳动合同期限和试用期的一般边界;不得直接计算解除补偿或认定劳动关系,LAW-LABOR-001;LAW-LABOR-002,true,false,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,绑定知识卡 KC-LABOR-CONTRACT-TERM-PROBATION-001 +KBQA-KC-DATA-PI-PROCESSING-001,SaaS合同涉及用户手机号和日志时应补哪些个人信息处理条款,应回答处理目的范围期限安全措施转委托返还删除等条款;数据出境和重要数据需专项复核,LAW-DATA-001;LAW-DATA-002;LAW-DATA-003,true,false,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,绑定知识卡 KC-DATA-PI-PROCESSING-001 +KBQA-KC-IP-SOFTWARE-COPYRIGHT-OWNERSHIP-001,软件委托开发的著作权可以直接判定归甲方吗,应提示区分既有成果定制成果和许可范围;不能直接判断具体成果权属,LAW-IP-001;LAW-CIVIL-001;LAW-TECH-001,true,true,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,绑定知识卡 KC-IP-SOFTWARE-COPYRIGHT-OWNERSHIP-001 +KBQA-KC-COMPANY-AUTHORIZATION-001,签约人只有名片没有授权书能否代表公司签合同,应提示主体资格授权委托印章和电子签权限核验;表见代理和越权代表需人工复核,LAW-COMPANY-001;LAW-CIVIL-001,true,true,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,绑定知识卡 KC-COMPANY-AUTHORIZATION-001 +KBQA-KC-DISPUTE-ARBITRATION-LITIGATION-001,合同里同时写仲裁和法院管辖是否可以,应提示仲裁和诉讼通常应择一并明确机构或法院;最终效力需法务复核,LAW-ARBITRATION-001;LAW-CIVIL-PROCEDURE-001;LAW-CIVIL-001,true,false,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,绑定知识卡 KC-DISPUTE-ARBITRATION-LITIGATION-001 +KBQA-KC-E-SIGN-EVIDENCE-RETENTION-001,电子签合同签完后应该保存哪些证据,应回答身份认证签署意愿时间戳文件哈希日志和履约记录;可靠电子签名认定需技术和法务复核,LAW-E-SIGN-001;LAW-CIVIL-001;LAW-CIVIL-PROCEDURE-001,true,false,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,绑定知识卡 KC-E-SIGN-EVIDENCE-RETENTION-001 diff --git a/project-docs/phase13-legal-knowledge-template-library/inventories/review-golden-sample-inventory.csv b/project-docs/phase13-legal-knowledge-template-library/inventories/review-golden-sample-inventory.csv index 9fad9848..d566d680 100644 --- a/project-docs/phase13-legal-knowledge-template-library/inventories/review-golden-sample-inventory.csv +++ b/project-docs/phase13-legal-knowledge-template-library/inventories/review-golden-sample-inventory.csv @@ -1 +1,9 @@ sample_id,contract_type,risk_categories,source_ids,input_sample_path,expected_findings_path,expected_severity,expected_source_citations,status,owner,legal_reviewer,review_required,production_ready,notes +REVIEW-SAMPLE-FORMAT-CLAUSE-001,common,格式条款,LAW-CIVIL-001;LAW-CONTRACT-001,qa-samples/review/REVIEW-SAMPLE-FORMAT-CLAUSE-001-input.md,qa-samples/review/REVIEW-SAMPLE-FORMAT-CLAUSE-001-expected.md,high,LAW-CIVIL-001;LAW-CONTRACT-001,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,覆盖 RULE-FORMAT-CLAUSE-001 +REVIEW-SAMPLE-BREACH-LIQUIDATED-DAMAGES-001,common,违约责任,LAW-CIVIL-001;LAW-CONTRACT-001,qa-samples/review/REVIEW-SAMPLE-BREACH-LIQUIDATED-DAMAGES-001-input.md,qa-samples/review/REVIEW-SAMPLE-BREACH-LIQUIDATED-DAMAGES-001-expected.md,medium,LAW-CIVIL-001;LAW-CONTRACT-001,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,覆盖 RULE-BREACH-LIQUIDATED-DAMAGES-001 +REVIEW-SAMPLE-RESCISSION-NOTICE-001,common,解除通知,LAW-CIVIL-001;LAW-CONTRACT-001,qa-samples/review/REVIEW-SAMPLE-RESCISSION-NOTICE-001-input.md,qa-samples/review/REVIEW-SAMPLE-RESCISSION-NOTICE-001-expected.md,medium,LAW-CIVIL-001;LAW-CONTRACT-001,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,覆盖 RULE-RESCISSION-NOTICE-001 +REVIEW-SAMPLE-AUTHORIZATION-SUBJECT-001,common,主体资格,LAW-COMPANY-001;LAW-CIVIL-001,qa-samples/review/REVIEW-SAMPLE-AUTHORIZATION-SUBJECT-001-input.md,qa-samples/review/REVIEW-SAMPLE-AUTHORIZATION-SUBJECT-001-expected.md,high,LAW-COMPANY-001;LAW-CIVIL-001,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,覆盖 RULE-AUTHORIZATION-SUBJECT-001 +REVIEW-SAMPLE-DATA-PI-PROCESSING-001,software-saas,个人信息与数据安全,LAW-DATA-001;LAW-DATA-002;LAW-DATA-003,qa-samples/review/REVIEW-SAMPLE-DATA-PI-PROCESSING-001-input.md,qa-samples/review/REVIEW-SAMPLE-DATA-PI-PROCESSING-001-expected.md,high,LAW-DATA-001;LAW-DATA-002;LAW-DATA-003,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,覆盖 RULE-DATA-PI-PROCESSING-001 +REVIEW-SAMPLE-DISPUTE-RESOLUTION-001,common,争议解决,LAW-ARBITRATION-001;LAW-CIVIL-PROCEDURE-001;LAW-CIVIL-001,qa-samples/review/REVIEW-SAMPLE-DISPUTE-RESOLUTION-001-input.md,qa-samples/review/REVIEW-SAMPLE-DISPUTE-RESOLUTION-001-expected.md,medium,LAW-ARBITRATION-001;LAW-CIVIL-PROCEDURE-001;LAW-CIVIL-001,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,覆盖 RULE-DISPUTE-RESOLUTION-001 +REVIEW-SAMPLE-E-SIGN-EVIDENCE-001,common,电子签署与证据,LAW-E-SIGN-001;LAW-CIVIL-001;LAW-CIVIL-PROCEDURE-001,qa-samples/review/REVIEW-SAMPLE-E-SIGN-EVIDENCE-001-input.md,qa-samples/review/REVIEW-SAMPLE-E-SIGN-EVIDENCE-001-expected.md,medium,LAW-E-SIGN-001;LAW-CIVIL-001;LAW-CIVIL-PROCEDURE-001,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,覆盖 RULE-E-SIGN-EVIDENCE-001 +REVIEW-SAMPLE-IP-SOFTWARE-OWNERSHIP-001,technology-development,知识产权,LAW-IP-001;LAW-CIVIL-001;LAW-TECH-001,qa-samples/review/REVIEW-SAMPLE-IP-SOFTWARE-OWNERSHIP-001-input.md,qa-samples/review/REVIEW-SAMPLE-IP-SOFTWARE-OWNERSHIP-001-expected.md,high,LAW-IP-001;LAW-CIVIL-001;LAW-TECH-001,LEGAL_REVIEW,法律资料运营,待法务复核,true,false,覆盖 RULE-IP-SOFTWARE-OWNERSHIP-001 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 b780a4c5..72d460e4 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,9 +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;开源合规和专利问题必须专项复核 +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,法律资料运营,待法务复核,REVIEW-SAMPLE-FORMAT-CLAUSE-001,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,法律资料运营,待法务复核,REVIEW-SAMPLE-BREACH-LIQUIDATED-DAMAGES-001,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,法律资料运营,待法务复核,REVIEW-SAMPLE-RESCISSION-NOTICE-001,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,法律资料运营,待法务复核,REVIEW-SAMPLE-AUTHORIZATION-SUBJECT-001,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,法律资料运营,待法务复核,REVIEW-SAMPLE-DATA-PI-PROCESSING-001,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,法律资料运营,待法务复核,REVIEW-SAMPLE-DISPUTE-RESOLUTION-001,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,法律资料运营,待法务复核,REVIEW-SAMPLE-E-SIGN-EVIDENCE-001,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,法律资料运营,待法务复核,REVIEW-SAMPLE-IP-SOFTWARE-OWNERSHIP-001,false,绑定知识卡 KC-IP-SOFTWARE-COPYRIGHT-OWNERSHIP-001;开源合规和专利问题必须专项复核 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/README.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/README.md index c3de8511..cda14e44 100644 --- a/project-docs/phase13-legal-knowledge-template-library/qa-samples/README.md +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/README.md @@ -8,3 +8,10 @@ 2. 样本不得包含真实客户合同全文或未脱敏敏感信息。 3. 每个样本必须绑定预期依据、预期风险等级或预期拒答边界。 4. 样本清单位于 `../inventories/`。 + +当前状态: + +1. `review` 已覆盖 8 条第一批审核规则。 +2. `generation` 已覆盖 8 个第一批标准条款。 +3. `kb-qa` 已覆盖 10 张第一批法律知识卡。 +4. 所有样本均保持 `LEGAL_REVIEW`,用于内部验收和法务复核。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-AUTHORIZATION-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-AUTHORIZATION-001-expected.md new file mode 100644 index 00000000..08f7343b --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-AUTHORIZATION-001-expected.md @@ -0,0 +1,11 @@ +# 期望生成片段:签约主体与授权确认 + +应生成主体资格和授权确认条款,包含依法设立、有效存续、内部授权、签署权限、营业执照、授权委托书和电子签章审计记录。 + +必须引用: + +- CLAUSE-COMMON-AUTHORIZATION-001 +- LAW-COMPANY-001 +- LAW-CIVIL-001 + +遇到项目部、分支机构或个人经办签署,应提示人工复核。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-AUTHORIZATION-001-variables.json b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-AUTHORIZATION-001-variables.json new file mode 100644 index 00000000..d7b8ebb8 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-AUTHORIZATION-001-variables.json @@ -0,0 +1,9 @@ +{ + "asset_under_test": "CLAUSE-COMMON-AUTHORIZATION-001", + "contract_type": "common", + "clause_name": "签约主体与授权确认", + "scenario": "企业间技术服务合同由授权代表签署", + "required_evidence": ["营业执照", "授权委托书", "签章权限证明"], + "source_ids": ["LAW-COMPANY-001", "LAW-CIVIL-001"], + "review_required": true +} diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-BREACH-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-BREACH-001-expected.md new file mode 100644 index 00000000..63b64a45 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-BREACH-001-expected.md @@ -0,0 +1,11 @@ +# 期望生成片段:违约责任与违约金 + +应生成违约责任条款,包含继续履行、补救措施、赔偿损失、违约金计算方式、一般责任上限和例外责任。 + +必须引用: + +- CLAUSE-COMMON-BREACH-001 +- LAW-CIVIL-001 +- LAW-CONTRACT-001 + +不得自动给出固定违约金比例,应要求业务和法务填写。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-BREACH-001-variables.json b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-BREACH-001-variables.json new file mode 100644 index 00000000..9ea097cf --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-BREACH-001-variables.json @@ -0,0 +1,10 @@ +{ + "asset_under_test": "CLAUSE-COMMON-BREACH-001", + "contract_type": "common", + "clause_name": "违约责任与违约金", + "scenario": "软件服务合同存在逾期交付和逾期付款风险", + "contract_amount": "待业务填写", + "liability_cap": "待业务填写", + "source_ids": ["LAW-CIVIL-001", "LAW-CONTRACT-001"], + "review_required": true +} diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-DISPUTE-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-DISPUTE-001-expected.md new file mode 100644 index 00000000..55df59a9 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-DISPUTE-001-expected.md @@ -0,0 +1,12 @@ +# 期望生成片段:争议解决与送达 + +应生成争议解决和送达条款,包含友好协商、仲裁或诉讼择一、机构或法院明确、送达地址、电子邮箱和地址变更通知。 + +必须引用: + +- CLAUSE-COMMON-DISPUTE-001 +- LAW-ARBITRATION-001 +- LAW-CIVIL-PROCEDURE-001 +- LAW-CIVIL-001 + +不得同时保留仲裁和诉讼作为最终争议解决路径。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-DISPUTE-001-variables.json b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-DISPUTE-001-variables.json new file mode 100644 index 00000000..bb79d753 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-DISPUTE-001-variables.json @@ -0,0 +1,10 @@ +{ + "asset_under_test": "CLAUSE-COMMON-DISPUTE-001", + "contract_type": "common", + "clause_name": "争议解决与送达", + "scenario": "企业间采购合同需要选择争议解决方式", + "dispute_method": "待业务和法务择一填写", + "service_address": "合同载明地址和电子邮箱", + "source_ids": ["LAW-ARBITRATION-001", "LAW-CIVIL-PROCEDURE-001", "LAW-CIVIL-001"], + "review_required": true +} diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-E-SIGN-EVIDENCE-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-E-SIGN-EVIDENCE-001-expected.md new file mode 100644 index 00000000..05fdb0f8 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-E-SIGN-EVIDENCE-001-expected.md @@ -0,0 +1,12 @@ +# 期望生成片段:电子签署与证据留存 + +应生成电子签署和证据留存条款,包含电子签名效力认可、身份认证、签署意愿、时间戳、文件哈希、平台日志、IP、设备和证据导出。 + +必须引用: + +- CLAUSE-COMMON-E-SIGN-EVIDENCE-001 +- LAW-E-SIGN-001 +- LAW-CIVIL-001 +- LAW-CIVIL-PROCEDURE-001 + +不得直接认定某个电子签名一定可靠。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-E-SIGN-EVIDENCE-001-variables.json b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-E-SIGN-EVIDENCE-001-variables.json new file mode 100644 index 00000000..48d50705 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-E-SIGN-EVIDENCE-001-variables.json @@ -0,0 +1,9 @@ +{ + "asset_under_test": "CLAUSE-COMMON-E-SIGN-EVIDENCE-001", + "contract_type": "common", + "clause_name": "电子签署与证据留存", + "scenario": "合同通过电子签平台和业务系统完成签署与验收", + "evidence_items": ["身份认证", "签署时间", "文件哈希", "平台日志", "履约记录"], + "source_ids": ["LAW-E-SIGN-001", "LAW-CIVIL-001", "LAW-CIVIL-PROCEDURE-001"], + "review_required": true +} diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-FORMAT-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-FORMAT-001-expected.md new file mode 100644 index 00000000..eb160b0f --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-FORMAT-001-expected.md @@ -0,0 +1,11 @@ +# 期望生成片段:格式条款提示与特别说明 + +应生成独立的格式条款提示说明文本,包含醒目提示、特别说明、双方已充分阅读理解并协商确认等要素。 + +必须引用: + +- CLAUSE-COMMON-FORMAT-001 +- LAW-CIVIL-001 +- LAW-CONTRACT-001 + +不得直接声明该格式条款必然有效,应保留法务复核提示。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-FORMAT-001-variables.json b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-FORMAT-001-variables.json new file mode 100644 index 00000000..3f6346d7 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-FORMAT-001-variables.json @@ -0,0 +1,10 @@ +{ + "asset_under_test": "CLAUSE-COMMON-FORMAT-001", + "contract_type": "common", + "clause_name": "格式条款提示与特别说明", + "scenario": "平台服务条款中含有限制责任内容", + "party_a": "服务提供方", + "party_b": "客户", + "source_ids": ["LAW-CIVIL-001", "LAW-CONTRACT-001"], + "review_required": true +} diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-RESCISSION-NOTICE-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-RESCISSION-NOTICE-001-expected.md new file mode 100644 index 00000000..be5ceb6e --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-RESCISSION-NOTICE-001-expected.md @@ -0,0 +1,11 @@ +# 期望生成片段:合同解除通知与送达 + +应生成解除通知条款,包含严重违约、合理整改期、书面或电子通知、视为送达、费用结算、资料返还和持续义务。 + +必须引用: + +- CLAUSE-COMMON-RESCISSION-NOTICE-001 +- LAW-CIVIL-001 +- LAW-CONTRACT-001 + +不得直接判断某次解除已经有效。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-RESCISSION-NOTICE-001-variables.json b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-RESCISSION-NOTICE-001-variables.json new file mode 100644 index 00000000..23acee5f --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-COMMON-RESCISSION-NOTICE-001-variables.json @@ -0,0 +1,10 @@ +{ + "asset_under_test": "CLAUSE-COMMON-RESCISSION-NOTICE-001", + "contract_type": "common", + "clause_name": "合同解除通知与送达", + "scenario": "服务合同需要约定违约整改期和电子通知", + "notice_channel": "书面地址和电子邮箱", + "cure_period": "待业务填写", + "source_ids": ["LAW-CIVIL-001", "LAW-CONTRACT-001"], + "review_required": true +} diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-DATA-PI-PROCESSING-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-DATA-PI-PROCESSING-001-expected.md new file mode 100644 index 00000000..eda4069e --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-DATA-PI-PROCESSING-001-expected.md @@ -0,0 +1,12 @@ +# 期望生成片段:个人信息与数据处理 + +应生成个人信息和数据处理条款,包含处理目的、范围、期限、安全措施、转委托限制、安全事件通知、返还删除和证明义务。 + +必须引用: + +- CLAUSE-DATA-PI-PROCESSING-001 +- LAW-DATA-001 +- LAW-DATA-002 +- LAW-DATA-003 + +涉及数据出境、重要数据或敏感个人信息时必须提示专项复核。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-DATA-PI-PROCESSING-001-variables.json b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-DATA-PI-PROCESSING-001-variables.json new file mode 100644 index 00000000..cbc050b6 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-DATA-PI-PROCESSING-001-variables.json @@ -0,0 +1,9 @@ +{ + "asset_under_test": "CLAUSE-DATA-PI-PROCESSING-001", + "contract_type": "software-saas", + "clause_name": "个人信息与数据处理", + "scenario": "SaaS服务商接触客户联系人和系统日志", + "personal_info_types": ["姓名", "手机号", "登录日志", "工单记录"], + "source_ids": ["LAW-DATA-001", "LAW-DATA-002", "LAW-DATA-003"], + "review_required": true +} diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-TECH-IP-OWNERSHIP-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-TECH-IP-OWNERSHIP-001-expected.md new file mode 100644 index 00000000..e4f198ab --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-TECH-IP-OWNERSHIP-001-expected.md @@ -0,0 +1,12 @@ +# 期望生成片段:软件成果权属与许可 + +应生成软件成果权属和许可条款,包含交付物清单、既有成果、定制成果、源代码、许可范围、第三方组件、开源披露和侵权责任。 + +必须引用: + +- CLAUSE-TECH-IP-OWNERSHIP-001 +- LAW-IP-001 +- LAW-CIVIL-001 +- LAW-TECH-001 + +不得直接判断具体成果权属,开源、专利和商业秘密必须专项复核。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-TECH-IP-OWNERSHIP-001-variables.json b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-TECH-IP-OWNERSHIP-001-variables.json new file mode 100644 index 00000000..b6cea7a8 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/GEN-SAMPLE-CLAUSE-TECH-IP-OWNERSHIP-001-variables.json @@ -0,0 +1,9 @@ +{ + "asset_under_test": "CLAUSE-TECH-IP-OWNERSHIP-001", + "contract_type": "technology-development", + "clause_name": "软件成果权属与许可", + "scenario": "软件定制开发合同需要列明成果归属和许可范围", + "deliverables": ["源代码", "接口文档", "部署脚本", "测试报告", "用户文档"], + "source_ids": ["LAW-IP-001", "LAW-CIVIL-001", "LAW-TECH-001"], + "review_required": true +} diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/README.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/README.md index ce7ffc79..e21ed66c 100644 --- a/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/README.md +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/generation/README.md @@ -1,3 +1,5 @@ # 合同生成样本 -合同生成样本将在第一批中文合同模板完成后补充。样本必须包含中文变量、预期合同文本和生成后审核要求。 +本目录保存合同生成黄金样本。样本必须包含中文变量、预期合同文本和生成后审核要求。 + +阶段 13.5 尚未建立完整合同模板,因此本目录先以标准条款编号作为被测资产,验证单条款生成是否能引用正确法源、保留复核边界并避免自动填入高风险业务变量。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/kb-qa/README.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/kb-qa/README.md index 5ae27a7c..a62b74bb 100644 --- a/project-docs/phase13-legal-knowledge-template-library/qa-samples/kb-qa/README.md +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/kb-qa/README.md @@ -1,3 +1,5 @@ # 知识库问答样本 知识库问答样本用于验证中文回答、法源引用、拒答边界和人工复核提示。依据不足时必须提示不确定或要求人工复核。 + +阶段 13.5 的问答样本直接记录在 `inventories/kb-qa-golden-sample-inventory.csv`,每条样本通过 `notes` 绑定一张知识卡。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/README.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/README.md index a085ef12..50856498 100644 --- a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/README.md +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/README.md @@ -1,3 +1,8 @@ # 合同审核样本 -合同审核样本将在审核风险规则完成后补充。样本必须为中文,并绑定预期风险点、法源依据和修改建议。 +本目录保存合同审核黄金样本。样本必须为中文,并绑定预期风险点、法源依据和修改建议。 + +每个样本由两个文件组成: + +1. `*-input.md`:待审核合同片段。 +2. `*-expected.md`:期望风险等级、规则编号、法源引用和修改建议。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-AUTHORIZATION-SUBJECT-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-AUTHORIZATION-SUBJECT-001-expected.md new file mode 100644 index 00000000..1c0bc39e --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-AUTHORIZATION-SUBJECT-001-expected.md @@ -0,0 +1,7 @@ +# 期望审核发现:签约主体和授权代表核验不足 + +- 期望规则:RULE-AUTHORIZATION-SUBJECT-001 +- 期望风险等级:high +- 期望法源引用:LAW-COMPANY-001;LAW-CIVIL-001 + +应识别“授权”触发词,提示主体名称、统一社会信用代码、代表权限、印章和授权文件缺失。期望建议包括补充营业执照、授权委托书、签章权限证明,并转人工复核越权代表或表见代理风险。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-AUTHORIZATION-SUBJECT-001-input.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-AUTHORIZATION-SUBJECT-001-input.md new file mode 100644 index 00000000..6eb387a0 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-AUTHORIZATION-SUBJECT-001-input.md @@ -0,0 +1,3 @@ +# 审核输入样本:签约主体和授权代表核验不足 + +合同首页写明乙方为某项目部,签字页由“张三”作为授权代表签字,但未列明乙方统一社会信用代码,也没有营业执照、授权委托书、公司盖章或电子签章权限记录。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-BREACH-LIQUIDATED-DAMAGES-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-BREACH-LIQUIDATED-DAMAGES-001-expected.md new file mode 100644 index 00000000..17bddeaa --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-BREACH-LIQUIDATED-DAMAGES-001-expected.md @@ -0,0 +1,7 @@ +# 期望审核发现:违约金和赔偿边界不清 + +- 期望规则:RULE-BREACH-LIQUIDATED-DAMAGES-001 +- 期望风险等级:medium +- 期望法源引用:LAW-CIVIL-001;LAW-CONTRACT-001 + +应识别“违约金”触发词,提示违约情形、计算口径、赔偿范围和责任上限不清。期望建议包括补充触发事件、补救期限、计算方式、一般责任上限和例外责任。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-BREACH-LIQUIDATED-DAMAGES-001-input.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-BREACH-LIQUIDATED-DAMAGES-001-input.md new file mode 100644 index 00000000..4711c031 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-BREACH-LIQUIDATED-DAMAGES-001-input.md @@ -0,0 +1,3 @@ +# 审核输入样本:违约金和赔偿边界不清 + +合同约定:任一方违约,应向守约方支付合同总价百分之三十的违约金。若违约造成其他损失,违约方还应继续赔偿全部损失。合同未说明违约触发条件、宽限期、损失范围和累计责任上限。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-DATA-PI-PROCESSING-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-DATA-PI-PROCESSING-001-expected.md new file mode 100644 index 00000000..def1a94f --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-DATA-PI-PROCESSING-001-expected.md @@ -0,0 +1,7 @@ +# 期望审核发现:个人信息处理条款缺失 + +- 期望规则:RULE-DATA-PI-PROCESSING-001 +- 期望风险等级:high +- 期望法源引用:LAW-DATA-001;LAW-DATA-002;LAW-DATA-003 + +应识别“个人信息”触发词,提示处理目的、范围、期限、安全措施、返还删除和转委托限制缺失。期望建议包括补充委托处理边界、安全事件通知、日志留存和终止后处理义务。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-DATA-PI-PROCESSING-001-input.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-DATA-PI-PROCESSING-001-input.md new file mode 100644 index 00000000..8d3d42b9 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-DATA-PI-PROCESSING-001-input.md @@ -0,0 +1,3 @@ +# 审核输入样本:个人信息处理条款缺失 + +SaaS服务合同约定乙方可接触甲方用户手机号、姓名、登录日志和工单记录,用于系统运维和客户支持。合同未约定个人信息处理目的、范围、期限、安全措施、转委托限制和合同终止后的删除或返还。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-DISPUTE-RESOLUTION-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-DISPUTE-RESOLUTION-001-expected.md new file mode 100644 index 00000000..5de669cc --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-DISPUTE-RESOLUTION-001-expected.md @@ -0,0 +1,7 @@ +# 期望审核发现:仲裁诉讼和送达冲突 + +- 期望规则:RULE-DISPUTE-RESOLUTION-001 +- 期望风险等级:medium +- 期望法源引用:LAW-ARBITRATION-001;LAW-CIVIL-PROCEDURE-001;LAW-CIVIL-001 + +应识别“管辖”或争议解决语义,提示仲裁和诉讼路径冲突、仲裁机构不明确、送达规则缺失。期望建议包括择一配置争议解决方式、明确机构或法院,并补充送达地址和电子送达规则。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-DISPUTE-RESOLUTION-001-input.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-DISPUTE-RESOLUTION-001-input.md new file mode 100644 index 00000000..a7aba663 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-DISPUTE-RESOLUTION-001-input.md @@ -0,0 +1,3 @@ +# 审核输入样本:仲裁诉讼和送达冲突 + +争议解决条款约定:发生争议时,双方可向甲方所在地人民法院起诉,也可提交北京仲裁解决。合同未写明具体仲裁委员会名称,也未约定送达地址、电子邮箱或地址变更通知规则。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-E-SIGN-EVIDENCE-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-E-SIGN-EVIDENCE-001-expected.md new file mode 100644 index 00000000..b64a24c2 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-E-SIGN-EVIDENCE-001-expected.md @@ -0,0 +1,7 @@ +# 期望审核发现:电子签署证据链不足 + +- 期望规则:RULE-E-SIGN-EVIDENCE-001 +- 期望风险等级:medium +- 期望法源引用:LAW-E-SIGN-001;LAW-CIVIL-001;LAW-CIVIL-PROCEDURE-001 + +应识别“电子签名”触发词,提示电子签署证据链不足。期望建议包括保存身份认证、签署意愿、时间戳、文件哈希、平台日志、IP、设备和履约记录,并提示技术和法务复核可靠电子签名。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-E-SIGN-EVIDENCE-001-input.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-E-SIGN-EVIDENCE-001-input.md new file mode 100644 index 00000000..51087c96 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-E-SIGN-EVIDENCE-001-input.md @@ -0,0 +1,3 @@ +# 审核输入样本:电子签署证据链不足 + +合同约定双方通过线上系统完成电子签名,系统确认即视为合同成立。合同未说明签署人身份认证、签署意愿确认、时间戳、文件哈希、平台日志、IP地址、设备信息和证据导出方式。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-FORMAT-CLAUSE-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-FORMAT-CLAUSE-001-expected.md new file mode 100644 index 00000000..4b98eaf4 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-FORMAT-CLAUSE-001-expected.md @@ -0,0 +1,7 @@ +# 期望审核发现:格式条款提示说明不足 + +- 期望规则:RULE-FORMAT-CLAUSE-001 +- 期望风险等级:high +- 期望法源引用:LAW-CIVIL-001;LAW-CONTRACT-001 + +应识别“免责”触发词,提示该条款可能属于免除或减轻己方责任的格式条款。期望建议包括独立列明、醒目提示、特别说明、单独确认,并要求法务复核条款效力。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-FORMAT-CLAUSE-001-input.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-FORMAT-CLAUSE-001-input.md new file mode 100644 index 00000000..ccf3006d --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-FORMAT-CLAUSE-001-input.md @@ -0,0 +1,3 @@ +# 审核输入样本:格式条款提示说明不足 + +乙方使用甲方提供的标准服务合同。合同正文约定:甲方对服务中断、数据丢失、间接损失和任何第三方索赔均免责,乙方不得以任何理由要求甲方承担赔偿责任。本条未加粗、未单独签署,也未看到甲方向乙方作出特别说明。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-IP-SOFTWARE-OWNERSHIP-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-IP-SOFTWARE-OWNERSHIP-001-expected.md new file mode 100644 index 00000000..afb10c23 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-IP-SOFTWARE-OWNERSHIP-001-expected.md @@ -0,0 +1,7 @@ +# 期望审核发现:软件成果权属和许可边界不清 + +- 期望规则:RULE-IP-SOFTWARE-OWNERSHIP-001 +- 期望风险等级:high +- 期望法源引用:LAW-IP-001;LAW-CIVIL-001;LAW-TECH-001 + +应识别“著作权”或软件成果语义,提示成果归属、源代码交付、许可范围、第三方组件和开源限制不清。期望建议包括区分既有成果和定制成果,列明交付物和权利范围,并转专项复核开源和专利问题。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-IP-SOFTWARE-OWNERSHIP-001-input.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-IP-SOFTWARE-OWNERSHIP-001-input.md new file mode 100644 index 00000000..db833dec --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-IP-SOFTWARE-OWNERSHIP-001-input.md @@ -0,0 +1,3 @@ +# 审核输入样本:软件成果权属和许可边界不清 + +技术开发合同约定乙方向甲方交付软件系统,甲方支付开发费用后可永久使用。合同未明确软件著作权归属、源代码是否交付、第三方组件和开源软件披露、许可范围、再许可和侵权责任。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-RESCISSION-NOTICE-001-expected.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-RESCISSION-NOTICE-001-expected.md new file mode 100644 index 00000000..3946e910 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-RESCISSION-NOTICE-001-expected.md @@ -0,0 +1,7 @@ +# 期望审核发现:解除条件和通知留痕不足 + +- 期望规则:RULE-RESCISSION-NOTICE-001 +- 期望风险等级:medium +- 期望法源引用:LAW-CIVIL-001;LAW-CONTRACT-001 + +应识别“解除”触发词,提示解除条件、通知方式、送达规则和解除后处理缺失。期望建议包括区分解除类型、设置整改期、补充书面或电子通知留痕,以及明确结算和持续义务。 diff --git a/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-RESCISSION-NOTICE-001-input.md b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-RESCISSION-NOTICE-001-input.md new file mode 100644 index 00000000..7a7098a7 --- /dev/null +++ b/project-docs/phase13-legal-knowledge-template-library/qa-samples/review/REVIEW-SAMPLE-RESCISSION-NOTICE-001-input.md @@ -0,0 +1,3 @@ +# 审核输入样本:解除条件和通知留痕不足 + +合同约定:甲方可根据业务需要随时解除本合同,乙方应立即停止服务并自行承担全部后果。合同未约定解除前通知方式、整改期限、视为送达规则、费用结算和资料返还。 diff --git a/project-docs/阶段13-法律知识库与合同模板库建设闭环第四批执行记录-2026-05-01.md b/project-docs/阶段13-法律知识库与合同模板库建设闭环第四批执行记录-2026-05-01.md new file mode 100644 index 00000000..5cfa2bf2 --- /dev/null +++ b/project-docs/阶段13-法律知识库与合同模板库建设闭环第四批执行记录-2026-05-01.md @@ -0,0 +1,122 @@ +# AI合同平台 阶段 13 法律知识库与合同模板库建设闭环第四批执行记录(2026-05-01) + +## 一、阶段结论 + +本批次进入 `13.5 黄金样本与验收问题集`,当前状态为 `PASS_WITH_LEGAL_REVIEW_REQUIRED`。 + +本批次把前面已经建立的法源、知识卡、审核规则和标准条款进一步转化为可测试的推理题库。当前已经形成“法源、知识卡、审核规则、标准条款、黄金样本”五层闭环,但所有资料仍保持 `LEGAL_REVIEW`,不得作为生产定稿法律意见。 + +## 二、本批次交付 + +新增资料: + +1. `qa-samples/review/*-input.md` +2. `qa-samples/review/*-expected.md` +3. `qa-samples/generation/*-variables.json` +4. `qa-samples/generation/*-expected.md` + +更新资料: + +1. `inventories/review-golden-sample-inventory.csv` +2. `inventories/generation-golden-sample-inventory.csv` +3. `inventories/kb-qa-golden-sample-inventory.csv` +4. `inventories/review-risk-rule-inventory.csv` +5. `qa-samples/README.md` +6. `field-dictionary.md` +7. `scripts/import-phase13-library.ps1` +8. `scripts/run-legal-knowledge-library-gate.ps1` + +## 三、样本覆盖范围 + +合同审核黄金样本: + +1. 格式条款提示说明不足。 +2. 违约金和赔偿边界不清。 +3. 解除条件和通知留痕不足。 +4. 签约主体和授权代表核验不足。 +5. 个人信息处理条款缺失或边界不清。 +6. 仲裁诉讼和送达条款冲突或不完整。 +7. 电子签署证据链留存不足。 +8. 软件成果权属和许可边界不清。 + +合同生成黄金样本: + +1. 格式条款提示与特别说明。 +2. 违约责任与违约金。 +3. 合同解除通知与送达。 +4. 签约主体与授权确认。 +5. 个人信息与数据处理。 +6. 争议解决与送达。 +7. 电子签署与证据留存。 +8. 软件成果权属与许可。 + +知识库问答黄金样本: + +1. 合同形式与电子数据形式。 +2. 格式条款提示说明与效力边界。 +3. 违约责任与违约金调整边界。 +4. 合同解除条件与通知留痕。 +5. 劳动合同订立、期限与试用期边界。 +6. 个人信息处理与委托处理条款边界。 +7. 软件成果著作权归属与许可边界。 +8. 签约主体资格与授权代表核验。 +9. 仲裁与诉讼争议解决条款选择。 +10. 电子签名与电子合同证据留存。 + +## 四、门禁增强 + +阶段 13 门禁新增样本层校验: + +1. 审核样本编号唯一性、必填字段、输入文件、期望文件、法源追溯、风险等级、状态值和生产就绪限制。 +2. 每条审核规则必须绑定至少一个存在的审核黄金样本。 +3. 生成样本编号唯一性、必填字段、变量文件、期望文档、被测资产、期望规则、期望法源、状态值和生产就绪限制。 +4. 每个标准条款必须绑定至少一个生成黄金样本。 +5. 知识库问答样本编号唯一性、必填字段、期望法源、状态值、生产就绪限制和知识卡覆盖。 +6. 每张知识卡必须绑定至少一个知识库问答样本。 + +## 五、自动化门禁结果 + +导入脚本离线校验: + +```text +PHASE13_IMPORT_PASS D:\ai-contract-platform\project-docs\qa-artifacts\phase13-import\2026-05-01T22-15-20-712 +``` + +阶段 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-01T22-15-35-376 +``` + +门禁统计: + +| 指标 | 结果 | +|---|---:| +| 合同审核黄金样本 | 8 | +| 合同生成黄金样本 | 8 | +| 知识库问答黄金样本 | 10 | +| 缺少审核样本的规则 | 0 | +| 缺少生成样本的标准条款 | 0 | +| 缺少问答样本的知识卡 | 0 | +| 必需项失败 | 0 | +| 导入脚本校验失败 | 0 | + +## 六、当前保留项 + +| 保留项 | 状态 | 说明 | +|---|---|---| +| 法源有效状态 | LEGAL_REVIEW | 仍需法务确认官方详情页、施行日期和现行有效状态 | +| 样本期望结论 | LEGAL_REVIEW | 期望发现和回答边界需法务复核 | +| 生成样本业务变量 | BUSINESS_REVIEW_PENDING | 比例、期限、机构、地点、责任上限等仍需业务填写 | +| 生产导入 | BLOCKED_BY_REVIEW | 未复核资料不得导入生产确定性知识库或生产模板库 | + +## 七、下一步 + +下一批建议进入 `13.6 法务复核工作台资料包`: + +1. 生成法务复核清单,按法源、知识卡、规则、条款、样本分组。 +2. 为每个资料资产生成复核意见模板。 +3. 建立 `expert-review-register.csv` 的第一批待复核任务。 +4. 门禁增加“复核任务必须覆盖所有 LEGAL_REVIEW 资产”的检查。 + +阶段 13 第四批当前状态:`PASS_WITH_LEGAL_REVIEW_REQUIRED`。 diff --git a/scripts/import-phase13-library.ps1 b/scripts/import-phase13-library.ps1 index c869d89f..18061e82 100644 --- a/scripts/import-phase13-library.ps1 +++ b/scripts/import-phase13-library.ps1 @@ -445,6 +445,9 @@ $knowledgeCardInventoryPath = Join-Path $LibraryRoot "inventories\legal-knowledg $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" +$reviewSampleInventoryPath = Join-Path $LibraryRoot "inventories\review-golden-sample-inventory.csv" +$generationSampleInventoryPath = Join-Path $LibraryRoot "inventories\generation-golden-sample-inventory.csv" +$kbQaSampleInventoryPath = Join-Path $LibraryRoot "inventories\kb-qa-golden-sample-inventory.csv" $sourceRows = Import-CsvRows -Path $legalSourceInventoryPath $sourceIdSet = @{} @@ -458,6 +461,9 @@ $knowledgeCards = Import-CsvRows -Path $knowledgeCardInventoryPath $templates = Import-CsvRows -Path $templateInventoryPath $reviewRules = Import-CsvRows -Path $reviewRuleInventoryPath $clauses = Import-CsvRows -Path $clauseInventoryPath +$reviewSamples = Import-CsvRows -Path $reviewSampleInventoryPath +$generationSamples = Import-CsvRows -Path $generationSampleInventoryPath +$kbQaSamples = Import-CsvRows -Path $kbQaSampleInventoryPath if ($knowledgeCards.Count -gt 0) { Add-Check -Key "knowledge_card_inventory" -Label "法律知识卡清单" -Status "pass" -Detail "知识卡数量=$($knowledgeCards.Count)" @@ -626,6 +632,9 @@ $summary = [ordered]@{ clauses = $clauses.Count templates = $templates.Count review_rules = $reviewRules.Count + review_samples = $reviewSamples.Count + generation_samples = $generationSamples.Count + kb_qa_samples = $kbQaSamples.Count validation_failures = $validationFailures import_failures = $importFailures blocked_by_review = $blockedByReview @@ -656,6 +665,9 @@ $md.Add("| 当前模式可导入知识卡 | $($eligibleKnowledgeCards.Count) |") $md.Add("| 标准条款 | $($clauses.Count) |") | Out-Null $md.Add("| 合同模板 | $($templates.Count) |") | Out-Null $md.Add("| 审核规则 | $($reviewRules.Count) |") | Out-Null +$md.Add("| 合同审核黄金样本 | $($reviewSamples.Count) |") | Out-Null +$md.Add("| 合同生成黄金样本 | $($generationSamples.Count) |") | Out-Null +$md.Add("| 知识库问答黄金样本 | $($kbQaSamples.Count) |") | Out-Null $md.Add("| 校验失败 | $validationFailures |") | Out-Null $md.Add("| 导入失败 | $importFailures |") | Out-Null $md.Add("| 当前模式阻塞资料 | $blockedByReview |") | Out-Null diff --git a/scripts/run-legal-knowledge-library-gate.ps1 b/scripts/run-legal-knowledge-library-gate.ps1 index a469a3e8..d0c05a21 100644 --- a/scripts/run-legal-knowledge-library-gate.ps1 +++ b/scripts/run-legal-knowledge-library-gate.ps1 @@ -173,6 +173,14 @@ function Test-RequiredFlag { return @("true", "yes", "1", "required") -contains $Value.ToLowerInvariant() } +function Test-BooleanText { + param([string]$Value) + if ([string]::IsNullOrWhiteSpace($Value)) { + return $false + } + return @("true", "false", "yes", "no", "1", "0", "required") -contains $Value.ToLowerInvariant() +} + function Test-PendingReviewer { param([string]$Value) if ([string]::IsNullOrWhiteSpace($Value)) { @@ -358,10 +366,10 @@ $legalSourceRows = Add-RequiredFileCheck -Key "inventory_legal_sources" -Label " $knowledgeCardRows = Add-RequiredFileCheck -Key "inventory_knowledge_cards" -Label "法律知识卡清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\legal-knowledge-card-inventory.csv" -Columns $knowledgeCardColumns $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 -Add-RequiredFileCheck -Key "inventory_kb_qa_samples" -Label "知识库问答黄金样本清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\kb-qa-golden-sample-inventory.csv" -Columns $kbQaSampleColumns | Out-Null +$templateRows = Add-RequiredFileCheck -Key "inventory_templates" -Label "合同模板清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\contract-template-inventory.csv" -Columns $templateColumns +$reviewSampleRows = Add-RequiredFileCheck -Key "inventory_review_samples" -Label "合同审核黄金样本清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\review-golden-sample-inventory.csv" -Columns $reviewSampleColumns +$generationSampleRows = Add-RequiredFileCheck -Key "inventory_generation_samples" -Label "合同生成黄金样本清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\generation-golden-sample-inventory.csv" -Columns $generationSampleColumns +$kbQaSampleRows = Add-RequiredFileCheck -Key "inventory_kb_qa_samples" -Label "知识库问答黄金样本清单" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\kb-qa-golden-sample-inventory.csv" -Columns $kbQaSampleColumns Add-RequiredFileCheck -Key "inventory_expert_reviews" -Label "专家复核登记表" -RelativePath "project-docs\phase13-legal-knowledge-template-library\inventories\expert-review-register.csv" -Columns $expertReviewColumns | Out-Null if ($legalSourceRows.Count -ge $MinLegalSources) { @@ -680,6 +688,287 @@ if ($reviewRulesNeedingReview.Count -gt 0) { Add-Check -Key "review_rule_review_required" -Label "审核规则法务复核要求" -Status "pass" -Detail "审核规则已完成复核" } +$templateIdMap = @{} +foreach ($templateRow in $templateRows) { + if (-not [string]::IsNullOrWhiteSpace($templateRow.template_id)) { + $templateIdMap[$templateRow.template_id] = $true + } +} + +$reviewRuleIdMap = @{} +foreach ($ruleRow in $reviewRuleRows) { + if (-not [string]::IsNullOrWhiteSpace($ruleRow.rule_id)) { + $reviewRuleIdMap[$ruleRow.rule_id] = $true + } +} + +$reviewSampleIdMap = @{} +foreach ($sampleRow in $reviewSampleRows) { + if (-not [string]::IsNullOrWhiteSpace($sampleRow.sample_id)) { + $reviewSampleIdMap[$sampleRow.sample_id] = $true + } +} + +$duplicateReviewSampleIds = @($reviewSampleRows | Where-Object { -not [string]::IsNullOrWhiteSpace($_.sample_id) } | Group-Object sample_id | Where-Object { $_.Count -gt 1 } | Select-Object -ExpandProperty Name) +if ($duplicateReviewSampleIds.Count -eq 0) { + Add-Check -Key "review_sample_ids_unique" -Label "审核黄金样本编号唯一性" -Status "pass" -Detail "未发现重复审核黄金样本编号" +} else { + Add-Check -Key "review_sample_ids_unique" -Label "审核黄金样本编号唯一性" -Status "fail" -Detail "重复编号:$($duplicateReviewSampleIds -join ',')" -Meta @{ duplicates = $duplicateReviewSampleIds } +} + +$reviewSampleMissingFields = @($reviewSampleRows | Where-Object { + [string]::IsNullOrWhiteSpace($_.sample_id) -or + [string]::IsNullOrWhiteSpace($_.contract_type) -or + [string]::IsNullOrWhiteSpace($_.risk_categories) -or + [string]::IsNullOrWhiteSpace($_.source_ids) -or + [string]::IsNullOrWhiteSpace($_.input_sample_path) -or + [string]::IsNullOrWhiteSpace($_.expected_findings_path) -or + [string]::IsNullOrWhiteSpace($_.expected_severity) -or + [string]::IsNullOrWhiteSpace($_.expected_source_citations) -or + [string]::IsNullOrWhiteSpace($_.status) -or + [string]::IsNullOrWhiteSpace($_.owner) -or + [string]::IsNullOrWhiteSpace($_.legal_reviewer) +} | Select-Object -ExpandProperty sample_id) +if ($reviewSampleMissingFields.Count -eq 0) { + Add-Check -Key "review_sample_required_fields" -Label "审核黄金样本必填字段" -Status "pass" -Detail "必填字段均已填写" +} else { + Add-Check -Key "review_sample_required_fields" -Label "审核黄金样本必填字段" -Status "fail" -Detail "以下审核样本缺少必填字段:$($reviewSampleMissingFields -join ',')" -Meta @{ rows = $reviewSampleMissingFields } +} + +$reviewSampleMissingFiles = @($reviewSampleRows | Where-Object { + -not (Test-LibraryFilePath -RelativePath $_.input_sample_path) -or + -not (Test-LibraryFilePath -RelativePath $_.expected_findings_path) +} | Select-Object -ExpandProperty sample_id) +if ($reviewSampleMissingFiles.Count -eq 0) { + Add-Check -Key "review_sample_files" -Label "审核黄金样本文件" -Status "pass" -Detail "审核样本输入和期望发现文件均存在" +} else { + Add-Check -Key "review_sample_files" -Label "审核黄金样本文件" -Status "fail" -Detail "以下审核样本缺少文件:$($reviewSampleMissingFiles -join ',')" -Meta @{ rows = $reviewSampleMissingFiles } +} + +$reviewSampleUnknownSources = @() +foreach ($sampleRow in $reviewSampleRows) { + foreach ($sourceId in (Split-SemicolonValues -Value $sampleRow.source_ids)) { + if (-not $legalSourceIdMap.ContainsKey($sourceId)) { + $reviewSampleUnknownSources += "$($sampleRow.sample_id):$sourceId" + } + } + foreach ($sourceId in (Split-SemicolonValues -Value $sampleRow.expected_source_citations)) { + if (-not $legalSourceIdMap.ContainsKey($sourceId)) { + $reviewSampleUnknownSources += "$($sampleRow.sample_id):$sourceId" + } + } +} +if ($reviewSampleUnknownSources.Count -eq 0) { + Add-Check -Key "review_sample_source_traceability" -Label "审核黄金样本法源可追溯" -Status "pass" -Detail "审核样本绑定和期望引用法源均存在于法源清单" +} else { + Add-Check -Key "review_sample_source_traceability" -Label "审核黄金样本法源可追溯" -Status "fail" -Detail "以下审核样本绑定了未知法源:$($reviewSampleUnknownSources -join ',')" -Meta @{ rows = $reviewSampleUnknownSources } +} + +$invalidReviewSampleSeverities = @($reviewSampleRows | Where-Object { $allowedSeverities -notcontains $_.expected_severity.ToLowerInvariant() } | Select-Object -ExpandProperty sample_id) +if ($invalidReviewSampleSeverities.Count -eq 0) { + Add-Check -Key "review_sample_severity_values" -Label "审核黄金样本风险等级" -Status "pass" -Detail "审核样本期望风险等级均在允许范围内" +} else { + Add-Check -Key "review_sample_severity_values" -Label "审核黄金样本风险等级" -Status "fail" -Detail "以下审核样本风险等级无效:$($invalidReviewSampleSeverities -join ',')" -Meta @{ rows = $invalidReviewSampleSeverities; allowed = $allowedSeverities } +} + +$invalidReviewSampleStatuses = @($reviewSampleRows | Where-Object { $statusValues -notcontains $_.status } | Select-Object -ExpandProperty sample_id) +if ($invalidReviewSampleStatuses.Count -eq 0) { + Add-Check -Key "review_sample_status_values" -Label "审核黄金样本状态值" -Status "pass" -Detail "审核样本状态均在允许范围内" +} else { + Add-Check -Key "review_sample_status_values" -Label "审核黄金样本状态值" -Status "fail" -Detail "以下审核样本状态无效:$($invalidReviewSampleStatuses -join ',')" -Meta @{ rows = $invalidReviewSampleStatuses; allowed = $statusValues } +} + +$reviewSamplesReadyWithoutReview = @($reviewSampleRows | Where-Object { + (Test-RequiredFlag -Value $_.production_ready) -and + ((Test-PendingReviewer -Value $_.legal_reviewer) -or @("APPROVED", "PUBLISHED") -notcontains $_.status) +} | Select-Object -ExpandProperty sample_id) +if ($reviewSamplesReadyWithoutReview.Count -eq 0) { + Add-Check -Key "review_sample_no_unreviewed_production" -Label "未复核审核样本禁止生产就绪" -Status "pass" -Detail "未发现未经复核即标记生产就绪的审核样本" +} else { + Add-Check -Key "review_sample_no_unreviewed_production" -Label "未复核审核样本禁止生产就绪" -Status "fail" -Detail "以下审核样本未完成复核却标记生产就绪:$($reviewSamplesReadyWithoutReview -join ',')" -Meta @{ rows = $reviewSamplesReadyWithoutReview } +} + +$reviewRuleSampleCoverageMissing = @() +$reviewRuleUnknownSamples = @() +foreach ($ruleRow in $reviewRuleRows) { + $sampleIds = Split-SemicolonValues -Value $ruleRow.review_sample_ids + if ($sampleIds.Count -eq 0) { + $reviewRuleSampleCoverageMissing += $ruleRow.rule_id + continue + } + foreach ($sampleId in $sampleIds) { + if (-not $reviewSampleIdMap.ContainsKey($sampleId)) { + $reviewRuleUnknownSamples += "$($ruleRow.rule_id):$sampleId" + } + } +} +if ($reviewRuleSampleCoverageMissing.Count -eq 0 -and $reviewRuleUnknownSamples.Count -eq 0) { + Add-Check -Key "review_rule_sample_coverage" -Label "审核规则样本覆盖" -Status "pass" -Detail "每条审核规则均绑定至少一个存在的审核黄金样本" +} else { + Add-Check -Key "review_rule_sample_coverage" -Label "审核规则样本覆盖" -Status "fail" -Detail "缺少样本覆盖:$($reviewRuleSampleCoverageMissing -join ',');未知样本:$($reviewRuleUnknownSamples -join ',')" -Meta @{ missing = $reviewRuleSampleCoverageMissing; unknown = $reviewRuleUnknownSamples } +} + +$duplicateGenerationSampleIds = @($generationSampleRows | Where-Object { -not [string]::IsNullOrWhiteSpace($_.sample_id) } | Group-Object sample_id | Where-Object { $_.Count -gt 1 } | Select-Object -ExpandProperty Name) +if ($duplicateGenerationSampleIds.Count -eq 0) { + Add-Check -Key "generation_sample_ids_unique" -Label "生成黄金样本编号唯一性" -Status "pass" -Detail "未发现重复生成黄金样本编号" +} else { + Add-Check -Key "generation_sample_ids_unique" -Label "生成黄金样本编号唯一性" -Status "fail" -Detail "重复编号:$($duplicateGenerationSampleIds -join ',')" -Meta @{ duplicates = $duplicateGenerationSampleIds } +} + +$generationSampleMissingFields = @($generationSampleRows | Where-Object { + [string]::IsNullOrWhiteSpace($_.sample_id) -or + [string]::IsNullOrWhiteSpace($_.template_id) -or + [string]::IsNullOrWhiteSpace($_.contract_type) -or + [string]::IsNullOrWhiteSpace($_.variable_payload_path) -or + [string]::IsNullOrWhiteSpace($_.expected_document_path) -or + [string]::IsNullOrWhiteSpace($_.expected_review_rule_ids) -or + [string]::IsNullOrWhiteSpace($_.expected_source_citations) -or + [string]::IsNullOrWhiteSpace($_.status) -or + [string]::IsNullOrWhiteSpace($_.owner) -or + [string]::IsNullOrWhiteSpace($_.legal_reviewer) -or + [string]::IsNullOrWhiteSpace($_.business_reviewer) +} | Select-Object -ExpandProperty sample_id) +if ($generationSampleMissingFields.Count -eq 0) { + Add-Check -Key "generation_sample_required_fields" -Label "生成黄金样本必填字段" -Status "pass" -Detail "必填字段均已填写" +} else { + Add-Check -Key "generation_sample_required_fields" -Label "生成黄金样本必填字段" -Status "fail" -Detail "以下生成样本缺少必填字段:$($generationSampleMissingFields -join ',')" -Meta @{ rows = $generationSampleMissingFields } +} + +$generationSampleMissingFiles = @($generationSampleRows | Where-Object { + -not (Test-LibraryFilePath -RelativePath $_.variable_payload_path) -or + -not (Test-LibraryFilePath -RelativePath $_.expected_document_path) +} | Select-Object -ExpandProperty sample_id) +if ($generationSampleMissingFiles.Count -eq 0) { + Add-Check -Key "generation_sample_files" -Label "生成黄金样本文件" -Status "pass" -Detail "生成样本变量和期望文档文件均存在" +} else { + Add-Check -Key "generation_sample_files" -Label "生成黄金样本文件" -Status "fail" -Detail "以下生成样本缺少文件:$($generationSampleMissingFiles -join ',')" -Meta @{ rows = $generationSampleMissingFiles } +} + +$generationSampleUnknownAssets = @() +$generationSampleUnknownRules = @() +$generationSampleUnknownSources = @() +foreach ($sampleRow in $generationSampleRows) { + if (-not ($templateIdMap.ContainsKey($sampleRow.template_id) -or $clauseIdMap.ContainsKey($sampleRow.template_id))) { + $generationSampleUnknownAssets += "$($sampleRow.sample_id):$($sampleRow.template_id)" + } + foreach ($ruleId in (Split-SemicolonValues -Value $sampleRow.expected_review_rule_ids)) { + if (-not $reviewRuleIdMap.ContainsKey($ruleId)) { + $generationSampleUnknownRules += "$($sampleRow.sample_id):$ruleId" + } + } + foreach ($sourceId in (Split-SemicolonValues -Value $sampleRow.expected_source_citations)) { + if (-not $legalSourceIdMap.ContainsKey($sourceId)) { + $generationSampleUnknownSources += "$($sampleRow.sample_id):$sourceId" + } + } +} +if ($generationSampleUnknownAssets.Count -eq 0) { + Add-Check -Key "generation_sample_asset_traceability" -Label "生成黄金样本被测资产可追溯" -Status "pass" -Detail "生成样本均绑定存在的合同模板或标准条款" +} else { + Add-Check -Key "generation_sample_asset_traceability" -Label "生成黄金样本被测资产可追溯" -Status "fail" -Detail "以下生成样本绑定了未知模板或条款:$($generationSampleUnknownAssets -join ',')" -Meta @{ rows = $generationSampleUnknownAssets } +} +if ($generationSampleUnknownRules.Count -eq 0 -and $generationSampleUnknownSources.Count -eq 0) { + Add-Check -Key "generation_sample_rule_source_traceability" -Label "生成黄金样本规则和法源可追溯" -Status "pass" -Detail "生成样本期望规则和期望法源均可追溯" +} else { + Add-Check -Key "generation_sample_rule_source_traceability" -Label "生成黄金样本规则和法源可追溯" -Status "fail" -Detail "未知规则:$($generationSampleUnknownRules -join ',');未知法源:$($generationSampleUnknownSources -join ',')" -Meta @{ unknown_rules = $generationSampleUnknownRules; unknown_sources = $generationSampleUnknownSources } +} + +$invalidGenerationSampleStatuses = @($generationSampleRows | Where-Object { $statusValues -notcontains $_.status } | Select-Object -ExpandProperty sample_id) +if ($invalidGenerationSampleStatuses.Count -eq 0) { + Add-Check -Key "generation_sample_status_values" -Label "生成黄金样本状态值" -Status "pass" -Detail "生成样本状态均在允许范围内" +} else { + Add-Check -Key "generation_sample_status_values" -Label "生成黄金样本状态值" -Status "fail" -Detail "以下生成样本状态无效:$($invalidGenerationSampleStatuses -join ',')" -Meta @{ rows = $invalidGenerationSampleStatuses; allowed = $statusValues } +} + +$generationSamplesReadyWithoutReview = @($generationSampleRows | 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 sample_id) +if ($generationSamplesReadyWithoutReview.Count -eq 0) { + Add-Check -Key "generation_sample_no_unreviewed_production" -Label "未复核生成样本禁止生产就绪" -Status "pass" -Detail "未发现未经复核即标记生产就绪的生成样本" +} else { + Add-Check -Key "generation_sample_no_unreviewed_production" -Label "未复核生成样本禁止生产就绪" -Status "fail" -Detail "以下生成样本未完成复核却标记生产就绪:$($generationSamplesReadyWithoutReview -join ',')" -Meta @{ rows = $generationSamplesReadyWithoutReview } +} + +$clauseGenerationCoverageMissing = @($clauseRows | Where-Object { + $clauseId = $_.clause_id + -not (@($generationSampleRows | Where-Object { $_.template_id -eq $clauseId }).Count -gt 0) +} | Select-Object -ExpandProperty clause_id) +if ($clauseGenerationCoverageMissing.Count -eq 0) { + Add-Check -Key "clause_generation_sample_coverage" -Label "标准条款生成样本覆盖" -Status "pass" -Detail "每个标准条款均有至少一个生成黄金样本" +} else { + Add-Check -Key "clause_generation_sample_coverage" -Label "标准条款生成样本覆盖" -Status "fail" -Detail "以下标准条款缺少生成样本:$($clauseGenerationCoverageMissing -join ',')" -Meta @{ rows = $clauseGenerationCoverageMissing } +} + +$duplicateKbQaSampleIds = @($kbQaSampleRows | Where-Object { -not [string]::IsNullOrWhiteSpace($_.sample_id) } | Group-Object sample_id | Where-Object { $_.Count -gt 1 } | Select-Object -ExpandProperty Name) +if ($duplicateKbQaSampleIds.Count -eq 0) { + Add-Check -Key "kb_qa_sample_ids_unique" -Label "知识库问答样本编号唯一性" -Status "pass" -Detail "未发现重复知识库问答样本编号" +} else { + Add-Check -Key "kb_qa_sample_ids_unique" -Label "知识库问答样本编号唯一性" -Status "fail" -Detail "重复编号:$($duplicateKbQaSampleIds -join ',')" -Meta @{ duplicates = $duplicateKbQaSampleIds } +} + +$kbQaSampleMissingFields = @($kbQaSampleRows | Where-Object { + [string]::IsNullOrWhiteSpace($_.sample_id) -or + [string]::IsNullOrWhiteSpace($_.question) -or + [string]::IsNullOrWhiteSpace($_.expected_answer_boundary) -or + [string]::IsNullOrWhiteSpace($_.expected_source_ids) -or + -not (Test-BooleanText -Value $_.expected_citation_required) -or + -not (Test-BooleanText -Value $_.expected_refusal_required) -or + [string]::IsNullOrWhiteSpace($_.status) -or + [string]::IsNullOrWhiteSpace($_.owner) -or + [string]::IsNullOrWhiteSpace($_.legal_reviewer) +} | Select-Object -ExpandProperty sample_id) +if ($kbQaSampleMissingFields.Count -eq 0) { + Add-Check -Key "kb_qa_sample_required_fields" -Label "知识库问答样本必填字段" -Status "pass" -Detail "必填字段均已填写" +} else { + Add-Check -Key "kb_qa_sample_required_fields" -Label "知识库问答样本必填字段" -Status "fail" -Detail "以下知识库问答样本缺少必填字段:$($kbQaSampleMissingFields -join ',')" -Meta @{ rows = $kbQaSampleMissingFields } +} + +$kbQaSampleUnknownSources = @() +foreach ($sampleRow in $kbQaSampleRows) { + foreach ($sourceId in (Split-SemicolonValues -Value $sampleRow.expected_source_ids)) { + if (-not $legalSourceIdMap.ContainsKey($sourceId)) { + $kbQaSampleUnknownSources += "$($sampleRow.sample_id):$sourceId" + } + } +} +if ($kbQaSampleUnknownSources.Count -eq 0) { + Add-Check -Key "kb_qa_sample_source_traceability" -Label "知识库问答样本法源可追溯" -Status "pass" -Detail "知识库问答样本期望法源均存在于法源清单" +} else { + Add-Check -Key "kb_qa_sample_source_traceability" -Label "知识库问答样本法源可追溯" -Status "fail" -Detail "以下知识库问答样本绑定了未知法源:$($kbQaSampleUnknownSources -join ',')" -Meta @{ rows = $kbQaSampleUnknownSources } +} + +$invalidKbQaSampleStatuses = @($kbQaSampleRows | Where-Object { $statusValues -notcontains $_.status } | Select-Object -ExpandProperty sample_id) +if ($invalidKbQaSampleStatuses.Count -eq 0) { + Add-Check -Key "kb_qa_sample_status_values" -Label "知识库问答样本状态值" -Status "pass" -Detail "知识库问答样本状态均在允许范围内" +} else { + Add-Check -Key "kb_qa_sample_status_values" -Label "知识库问答样本状态值" -Status "fail" -Detail "以下知识库问答样本状态无效:$($invalidKbQaSampleStatuses -join ',')" -Meta @{ rows = $invalidKbQaSampleStatuses; allowed = $statusValues } +} + +$kbQaSamplesReadyWithoutReview = @($kbQaSampleRows | Where-Object { + (Test-RequiredFlag -Value $_.production_ready) -and + ((Test-PendingReviewer -Value $_.legal_reviewer) -or @("APPROVED", "PUBLISHED") -notcontains $_.status) +} | Select-Object -ExpandProperty sample_id) +if ($kbQaSamplesReadyWithoutReview.Count -eq 0) { + Add-Check -Key "kb_qa_sample_no_unreviewed_production" -Label "未复核知识库问答样本禁止生产就绪" -Status "pass" -Detail "未发现未经复核即标记生产就绪的知识库问答样本" +} else { + Add-Check -Key "kb_qa_sample_no_unreviewed_production" -Label "未复核知识库问答样本禁止生产就绪" -Status "fail" -Detail "以下知识库问答样本未完成复核却标记生产就绪:$($kbQaSamplesReadyWithoutReview -join ',')" -Meta @{ rows = $kbQaSamplesReadyWithoutReview } +} + +$kbQaKnowledgeCardCoverageMissing = @() +foreach ($cardRow in $knowledgeCardRows) { + $cardId = $cardRow.knowledge_card_id + $covered = @($kbQaSampleRows | Where-Object { $_.notes -match [regex]::Escape($cardId) }).Count -gt 0 + if (-not $covered) { + $kbQaKnowledgeCardCoverageMissing += $cardId + } +} +if ($kbQaKnowledgeCardCoverageMissing.Count -eq 0) { + Add-Check -Key "kb_qa_knowledge_card_coverage" -Label "知识卡问答样本覆盖" -Status "pass" -Detail "每张知识卡均有至少一个知识库问答样本" +} else { + Add-Check -Key "kb_qa_knowledge_card_coverage" -Label "知识卡问答样本覆盖" -Status "fail" -Detail "以下知识卡缺少问答样本:$($kbQaKnowledgeCardCoverageMissing -join ',')" -Meta @{ rows = $kbQaKnowledgeCardCoverageMissing } +} + $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 $_ }) @@ -742,12 +1031,18 @@ $summary = [ordered]@{ knowledge_cards = $knowledgeCardRows.Count review_rules = $reviewRuleRows.Count clauses = $clauseRows.Count + review_samples = $reviewSampleRows.Count + generation_samples = $generationSampleRows.Count + kb_qa_samples = $kbQaSampleRows.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 + review_rules_missing_samples = $reviewRuleSampleCoverageMissing.Count + clauses_missing_generation_samples = $clauseGenerationCoverageMissing.Count + knowledge_cards_missing_kb_qa_samples = $kbQaKnowledgeCardCoverageMissing.Count inventory_files = $inventoryReport.Count } artifacts = [ordered]@{ @@ -784,6 +1079,9 @@ $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("| 合同审核黄金样本 | $($reviewSampleRows.Count) |") | Out-Null +$md.Add("| 合同生成黄金样本 | $($generationSampleRows.Count) |") | Out-Null +$md.Add("| 知识库问答黄金样本 | $($kbQaSampleRows.Count) |") | Out-Null $md.Add("| 允许的官方域名 | $($allowedDomains.Count) |") | Out-Null $md.Add("| 知识领域 | $($domainsCovered.Count) |") | Out-Null $md.Add("| 清单文件 | $($inventoryReport.Count) |") | Out-Null @@ -791,6 +1089,9 @@ $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("| 缺少审核样本的规则 | $($reviewRuleSampleCoverageMissing.Count) |") | Out-Null +$md.Add("| 缺少生成样本的标准条款 | $($clauseGenerationCoverageMissing.Count) |") | Out-Null +$md.Add("| 缺少问答样本的知识卡 | $($kbQaKnowledgeCardCoverageMissing.Count) |") | Out-Null $md.Add("") | Out-Null $md.Add("## 检查项") | Out-Null $md.Add("") | Out-Null