feat(regulatory): 对齐附件4目录核查规则
This commit is contained in:
@@ -8,12 +8,17 @@ def run_completeness_check(batch: FileSummaryBatch, rule_set: dict) -> list[Find
|
||||
items = list(batch.items.order_by("file_index"))
|
||||
findings: list[Finding] = []
|
||||
for requirement in rule_set.get("requirements", []):
|
||||
if requirement.get("type") not in {"required", "conditional", "recommended"}:
|
||||
if requirement.get("type") not in {"required", "conditional", "recommended", "chapter", "directory"}:
|
||||
continue
|
||||
matched = [
|
||||
item
|
||||
for item in items
|
||||
if _matches_item(item.file_name, item.relative_path, requirement.get("file_keywords", []))
|
||||
if _matches_item(
|
||||
item.file_name,
|
||||
item.relative_path,
|
||||
item.directory_level,
|
||||
[*requirement.get("file_keywords", []), *requirement.get("aliases", [])],
|
||||
)
|
||||
]
|
||||
if matched:
|
||||
continue
|
||||
@@ -29,12 +34,13 @@ def run_completeness_check(batch: FileSummaryBatch, rule_set: dict) -> list[Find
|
||||
"requirement_type": requirement.get("type"),
|
||||
"matched_files": [],
|
||||
"searched_keywords": requirement.get("file_keywords", []),
|
||||
"searched_fields": ["file_name", "relative_path", "directory_level"],
|
||||
},
|
||||
)
|
||||
)
|
||||
return findings
|
||||
|
||||
|
||||
def _matches_item(file_name: str, relative_path: str, keywords: list[str]) -> bool:
|
||||
haystack = f"{file_name} {relative_path}".lower()
|
||||
def _matches_item(file_name: str, relative_path: str, directory_level: str, keywords: list[str]) -> bool:
|
||||
haystack = f"{file_name} {relative_path} {directory_level}".lower()
|
||||
return any(str(keyword).lower() in haystack for keyword in keywords)
|
||||
|
||||
Reference in New Issue
Block a user