中国专利.skill:专利点挖掘与交底书(发明/实用/外观)编写,通俗解读专利,嗅探政策动向,辅助审查答复。
This report presents the forensic synthetic code analysis of handsomestWei/patent-disclosure-skill, a Python project with 5,470 GitHub stars. SynthScan v2.0 examined 41,988 lines of code across 220 source files, recording 511 pattern matches distributed across 9 syntactic categories. The overall adjusted score of 12.7 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 511 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/shared/md_to_docx.py | 193 | def _parse_hidden_image_comment(line: str) -> tuple[str, str] | None: | CODE |
| LOW | tools/shared/md_to_docx.py | 200 | def _try_embed_hidden_comment_line( | CODE |
| LOW | tools/shared/md_to_docx.py | 276 | def _fit_image_display_inches( | CODE |
| LOW | tools/shared/md_to_docx.py | 481 | def _iter_inline_paren_math_with_img( | CODE |
| LOW | tools/shared/md_to_docx.py | 519 | def _iter_inline_paren_math_bare(text: str) -> list[tuple[int, int, str]]: | CODE |
| LOW | tools/shared/md_to_docx.py | 548 | def _add_rich_content_to_paragraph( | CODE |
| LOW | tools/shared/md_to_docx.py | 1005 | def _line_has_embeddable_images(line: str) -> bool: | CODE |
| LOW | tools/shared/md_to_docx.py | 1018 | def _add_paragraph_with_inline_images( | CODE |
| LOW | tools/shared/mermaid_render.py | 187 | def ensure_step_ids_in_visible_labels(src: str) -> tuple[str, int]: | CODE |
| LOW | tools/shared/mermaid_render.py | 219 | def _is_mermaid_figure_comment(alt: str, src: str) -> bool: | CODE |
| LOW | tools/shared/docx_to_md.py | 33 | def _extension_for_content_type(content_type: str) -> str: | CODE |
| LOW | tools/shared/design_lineart_gate.py | 104 | def collect_source_images_from_plan(plan: dict[str, Any], case_dir: Path) -> list[str]: | CODE |
| LOW | tools/shared/image_gen.py | 94 | def is_qualified_existing_lineart(fig: dict[str, Any], case_dir: Path) -> bool: | CODE |
| LOW | tools/shared/image_gen.py | 115 | def is_design_photo_for_disclosure(fig: dict[str, Any], case_dir: Path) -> bool: | CODE |
| LOW | tools/shared/structure_lineart_gate.py | 160 | def collect_source_images_from_plan(plan: dict[str, Any], case_dir: Path) -> list[str]: | CODE |
| LOW | tools/shared/math_render.py | 90 | def normalize_latex_for_mathtext(body: str) -> str: | STRING |
| LOW | tools/shared/patent_type.py | 117 | def infer_patent_type_from_pub(pub: str | None) -> str | None: | CODE |
| LOW | tools/shared/patent_type.py | 132 | def infer_patent_type_from_biblio(text: str | None) -> str | None: | CODE |
| LOW | tools/shared/patent_type.py | 146 | def resolve_reader_patent_type( | CODE |
| LOW | tools/shared/patent_type.py | 211 | def google_patents_websearch_query( | CODE |
| LOW | tools/crawl/cnipa_epub_parse.py | 61 | def extract_class_codes_from_html(html: str) -> tuple[list[str], list[str]]: | CODE |
| LOW | tools/crawl/cnipa_epub_parse.py | 116 | def select_hits_for_disclosure( | CODE |
| LOW | tools/crawl/cnipa_epub_parse.py | 160 | def backfill_hits_for_disclosure( | CODE |
| LOW | tools/crawl/cnipa_epub_parse.py | 217 | def _extract_abstract_from_item_html(item_html: str) -> str | None: | CODE |
| LOW | tools/crawl/cnipa_epub_parse.py | 299 | def _parse_overview_card_layout(html: str) -> list[EpubSearchHit]: | CODE |
| LOW | tools/crawl/cnipa_epub_parse.py | 379 | def _parse_search_result_fallback_links(html: str) -> list[EpubSearchHit]: | CODE |
| LOW | tools/crawl/cnipa_epub_crawler.py | 188 | def apply_epub_advanced_type_filter(page: Page, patent_type: str = TYPE_ALL) -> None: | CODE |
| LOW | tools/crawl/cnipa_epub_crawler.py | 216 | def wait_for_epub_advanced_ready(page: Page, *, max_wait_sec: float | None = None) -> None: | CODE |
| LOW | tools/crawl/cnipa_epub_crawler.py | 357 | def search_epub_keyword_with_page( | CODE |
| LOW | tools/patent_reader/shared/common.py | 33 | def persisted_vault_config_path() -> Path: | CODE |
| LOW | tools/patent_reader/shared/common.py | 85 | def detect_obsidian_installed() -> dict: | CODE |
| LOW | tools/patent_reader/shared/common.py | 135 | def _parse_obsidian_json_vaults(cfg_path: Path) -> list[dict]: | CODE |
| LOW | tools/patent_reader/shared/common.py | 164 | def candidate_default_vault_paths() -> list[Path]: | CODE |
| LOW | tools/patent_reader/shared/common.py | 317 | def probe_obsidian_environment() -> dict: | CODE |
| LOW | tools/patent_reader/shared/common.py | 679 | def load_ipc_application_hints() -> list[dict]: | CODE |
| LOW | tools/patent_reader/extract/figure_extract.py | 144 | def _count_text_chars_in_bbox(page, bbox: tuple[float, float, float, float]) -> int: | CODE |
| LOW | tools/patent_reader/extract/figure_extract.py | 225 | def _estimate_bbox_near_caption( | CODE |
| LOW | tools/patent_reader/extract/figure_extract.py | 516 | def extract_patent_pdf_figures( | CODE |
| LOW | tools/patent_reader/extract/extract_patent_text.py | 183 | def extract_background_snippets(text: str) -> list[str]: | CODE |
| LOW | tools/patent_reader/extract/fetch_patent_pdf.py | 102 | def extract_pdf_urls_from_html(html: str, pub: str) -> list[str]: | CODE |
| LOW | tools/patent_reader/vault/schema_vault.py | 91 | def render_structure_section_md(schema: dict) -> str: | CODE |
| LOW | tools/patent_reader/vault/schema_vault.py | 140 | def render_appearance_section_md(schema: dict) -> str: | CODE |
| LOW | tools/patent_reader/vault/schema_vault.py | 211 | def upsert_appearance_section(content: str, section_md: str) -> str: | CODE |
| LOW | tools/patent_reader/vault/write_patent_obsidian_note.py | 136 | def sanitize_user_facing_titles(content: str) -> str: | CODE |
| LOW | tools/patent_reader/vault/write_patent_obsidian_note.py | 214 | def sanitize_internal_tool_leakage(content: str) -> str: | CODE |
| LOW | tools/patent_reader/vault/write_patent_obsidian_note.py | 267 | def harvest_glossary_from_note(content: str) -> list[dict]: | CODE |
| LOW | tools/patent_reader/vault/write_patent_obsidian_note.py | 301 | def merge_glossary_candidates( | CODE |
| LOW | tools/patent_reader/vault/write_patent_obsidian_note.py | 357 | def copy_source_pdf_to_note_dir( | CODE |
| LOW | tools/patent_reader/vault/write_patent_obsidian_note.py | 534 | def harvest_narrative_from_note(content: str) -> dict[str, str]: | CODE |
| LOW | tools/patent_reader/vault/write_patent_obsidian_note.py | 588 | def _strip_stale_figure_blocks(content: str) -> str: | CODE |
| LOW | tools/patent_reader/vault/desc_paragraphs.py | 56 | def split_cn_description_paragraphs(text: str) -> dict[str, str]: | CODE |
| LOW | tools/patent_reader/vault/desc_paragraphs.py | 77 | def description_text_from_raw_sections(raw_sections_path: Path) -> str: | CODE |
| LOW | tools/patent_reader/vault/desc_paragraphs.py | 95 | def load_description_paragraphs(workdir: Path | None) -> dict[str, str]: | CODE |
| LOW | tools/patent_reader/vault/desc_paragraphs.py | 117 | def write_description_paragraphs_json( | CODE |
| LOW | tools/patent_reader/vault/desc_paragraphs.py | 187 | def parse_cited_paragraph_numbers(content: str) -> list[str]: | CODE |
| LOW | tools/patent_reader/vault/desc_paragraphs.py | 195 | def paragraph_anchor_basename(pub: str) -> str: | CODE |
| LOW | tools/patent_reader/vault/desc_paragraphs.py | 208 | def render_paragraph_anchor_note( | CODE |
| LOW | tools/patent_reader/vault/desc_paragraphs.py | 277 | def format_citation_wikilinks(pub: str, start: str, end: str | None = None) -> str: | CODE |
| LOW | tools/patent_reader/vault/desc_paragraphs.py | 283 | def upgrade_legacy_citation_wikilinks(content: str, *, pub: str) -> str: | CODE |
| LOW | tools/patent_reader/vault/desc_paragraphs.py | 297 | def wikilink_description_citations(content: str, *, pub: str) -> str: | CODE |
| 159 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/shared/structure_callout_overlay.py | 12 | CODE | |
| LOW | tools/shared/md_to_docx.py | 25 | CODE | |
| LOW | tools/shared/formula_eval.py | 6 | CODE | |
| LOW | tools/shared/formula_paradigms.py | 10 | CODE | |
| LOW | tools/shared/formula_paradigms.py | 15 | CODE | |
| LOW | tools/shared/bootstrap_cad_venv.py | 13 | CODE | |
| LOW | tools/shared/gen_demo_snap_step.py | 10 | CODE | |
| LOW | tools/shared/step_to_views.py | 11 | CODE | |
| LOW | tools/shared/step_to_views.py | 46 | CODE | |
| LOW | tools/shared/structure_lineart_compose.py | 13 | CODE | |
| LOW | tools/shared/iteration_dialog_log.py | 5 | CODE | |
| LOW | tools/shared/mermaid_render.py | 25 | CODE | |
| LOW | tools/shared/docx_to_md.py | 14 | CODE | |
| LOW | tools/shared/latex_delimiters.py | 12 | CODE | |
| LOW | tools/shared/design_lineart_gate.py | 7 | CODE | |
| LOW | tools/shared/cad_venv.py | 9 | CODE | |
| LOW | tools/shared/check_formula_plan.py | 9 | CODE | |
| LOW | tools/shared/image_gen.py | 14 | CODE | |
| LOW | tools/shared/formula_chem.py | 6 | CODE | |
| LOW | tools/shared/browser.py | 13 | CODE | |
| LOW | tools/shared/stdio_utf8.py | 6 | CODE | |
| LOW | tools/shared/formula_units.py | 3 | CODE | |
| LOW | tools/shared/structure_lineart_gate.py | 7 | CODE | |
| LOW | tools/shared/pptx_to_md.py | 14 | CODE | |
| LOW | tools/shared/run_step_to_views.py | 9 | CODE | |
| LOW | tools/shared/cad_scan.py | 10 | CODE | |
| LOW | tools/shared/cad_formats.py | 3 | CODE | |
| LOW | tools/shared/math_render.py | 19 | CODE | |
| LOW | tools/shared/patent_type.py | 3 | CODE | |
| LOW | tools/shared/svg_screenshot.py | 13 | CODE | |
| LOW | tools/shared/math_to_omml.py | 11 | CODE | |
| LOW | tools/shared/math_to_omml.py | 205 | CODE | |
| LOW | tools/crawl/cnipa_epub_parse.py | 7 | CODE | |
| LOW | tools/crawl/cnipa_epub_search.py | 29 | CODE | |
| LOW | tools/crawl/cnipa_epub_search.py | 158 | CODE | |
| LOW | tools/crawl/cnipa_epub_crawler.py | 41 | CODE | |
| LOW | tools/patent_reader/shared/common.py | 2 | CODE | |
| LOW | tools/patent_reader/analyze/build_context_anchor.py | 12 | CODE | |
| LOW | tools/patent_reader/analyze/build_claim_mermaid.py | 8 | CODE | |
| LOW | tools/patent_reader/analyze/lint_patent_note.py | 10 | CODE | |
| LOW | tools/patent_reader/analyze/validate_public_clues.py | 12 | CODE | |
| LOW | tools/patent_reader/analyze/validate_claim_tree.py | 12 | CODE | |
| LOW | tools/patent_reader/extract/figure_extract.py | 10 | CODE | |
| LOW | tools/patent_reader/extract/extract_patent_text.py | 18 | CODE | |
| LOW | tools/patent_reader/extract/extract_patent_figures.py | 14 | CODE | |
| LOW | tools/patent_reader/extract/extract_patent_figures.py | 57 | CODE | |
| LOW | tools/patent_reader/extract/fetch_patent_pdf.py | 19 | CODE | |
| LOW | tools/patent_reader/extract/fetch_design_views.py | 26 | CODE | |
| LOW | tools/patent_reader/vault/link_patent_notes.py | 18 | CODE | |
| LOW | tools/patent_reader/vault/build_patent_canvas.py | 14 | CODE | |
| LOW | tools/patent_reader/vault/schema_vault.py | 3 | CODE | |
| LOW | tools/patent_reader/vault/write_patent_obsidian_note.py | 13 | CODE | |
| LOW | tools/patent_reader/vault/desc_paragraphs.py | 10 | CODE | |
| LOW | tools/patent_reader/vault/check_obsidian_env.py | 15 | CODE | |
| LOW | tools/patent_reader/vault/note_cites.py | 5 | CODE | |
| LOW | tools/patent_reader/vault/materialize_public_clues.py | 16 | CODE | |
| LOW | tools/patent_reader/vault/patent_link.py | 2 | CODE | |
| LOW | tools/patent_reader/vault/obsidian.py | 2 | CODE | |
| LOW | tools/patent_reader/vault/setup_obsidian_vault.py | 9 | CODE | |
| LOW | tools/patent_reader/vault/clue_vault.py | 2 | CODE | |
| 61 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/shared/structure_callout_overlay.py | 36 | except Exception as exc: | CODE |
| LOW | tools/shared/md_to_docx.py | 146 | except Exception: | CODE |
| LOW | tools/shared/md_to_docx.py | 438 | except Exception: | CODE |
| LOW | tools/shared/md_to_docx.py | 477 | except Exception: | CODE |
| LOW | tools/shared/formula_eval.py | 240 | except Exception as exc: | CODE |
| LOW | tools/shared/bootstrap_cad_venv.py | 192 | except Exception as e: | CODE |
| LOW | tools/shared/step_to_views.py | 49 | except Exception as e: | CODE |
| LOW | tools/shared/step_to_views.py | 61 | except Exception as e: | CODE |
| LOW | tools/shared/step_to_views.py | 112 | except Exception as e: | CODE |
| LOW | tools/shared/step_to_views.py | 164 | except Exception as e: | CODE |
| LOW | tools/shared/step_to_views.py | 190 | except Exception as e: | CODE |
| LOW | tools/shared/step_to_views.py | 213 | except Exception: | CODE |
| LOW | tools/shared/step_to_views.py | 275 | except Exception: | CODE |
| LOW | tools/shared/step_to_views.py | 396 | except Exception: | CODE |
| LOW | tools/shared/step_to_views.py | 517 | except Exception as e: | CODE |
| LOW | tools/shared/structure_lineart_compose.py | 33 | except Exception as exc: | CODE |
| LOW | tools/shared/structure_lineart_compose.py | 526 | except Exception as exc: | CODE |
| LOW⚡ | tools/shared/mermaid_render.py | 107 | except Exception: | CODE |
| LOW⚡ | tools/shared/mermaid_render.py | 117 | except Exception: | CODE |
| LOW⚡ | tools/shared/mermaid_render.py | 125 | except Exception: | CODE |
| LOW | tools/shared/mermaid_render.py | 258 | except Exception as e: | CODE |
| LOW | tools/shared/mermaid_render.py | 317 | except Exception as e: | CODE |
| LOW | tools/shared/docx_to_md.py | 74 | except Exception as e: | CODE |
| LOW | tools/shared/design_lineart_gate.py | 44 | except Exception: | CODE |
| LOW | tools/shared/design_lineart_gate.py | 230 | except Exception: | CODE |
| LOW | tools/shared/image_gen.py | 261 | except Exception: | CODE |
| LOW | tools/shared/browser.py | 104 | except Exception as e: | CODE |
| LOW | tools/shared/browser.py | 147 | except Exception as e: | CODE |
| MEDIUM | tools/shared/browser.py | 43 | def playwright_installed() -> bool: | CODE |
| LOW | tools/shared/structure_lineart_gate.py | 44 | except Exception: | CODE |
| LOW | tools/shared/structure_lineart_gate.py | 335 | except Exception: | CODE |
| LOW | tools/shared/pptx_to_md.py | 86 | except Exception as e: | CODE |
| LOW | tools/shared/pptx_to_md.py | 111 | except Exception as e: | CODE |
| MEDIUM | tools/shared/pptx_to_md.py | 21 | def _require_pptx(): | CODE |
| LOW | tools/shared/run_step_to_views.py | 88 | except Exception as e: | CODE |
| LOW | tools/shared/math_render.py | 163 | except Exception as e: | CODE |
| LOW⚡ | tools/shared/svg_screenshot.py | 248 | except Exception as e: | CODE |
| LOW⚡ | tools/shared/svg_screenshot.py | 254 | except Exception as e: | CODE |
| LOW⚡ | tools/shared/svg_screenshot.py | 260 | except Exception: | CODE |
| LOW⚡ | tools/shared/svg_screenshot.py | 265 | except Exception: | CODE |
| LOW⚡ | tools/shared/svg_screenshot.py | 269 | except Exception: | CODE |
| LOW | tools/shared/math_to_omml.py | 195 | except Exception: | CODE |
| LOW | tools/crawl/cnipa_epub_search.py | 179 | except Exception as e: | CODE |
| LOW | tools/crawl/cnipa_epub_crawler.py | 146 | except Exception: | CODE |
| LOW | tools/crawl/cnipa_epub_crawler.py | 422 | except Exception as e: | CODE |
| LOW | tools/patent_reader/shared/common.py | 705 | except Exception: | CODE |
| LOW | tools/patent_reader/extract/figure_extract.py | 71 | except Exception: | CODE |
| LOW | tools/patent_reader/extract/figure_extract.py | 95 | except Exception: | CODE |
| LOW | tools/patent_reader/extract/figure_extract.py | 363 | except Exception: | CODE |
| LOW | tools/patent_reader/extract/figure_extract.py | 411 | except Exception: | CODE |
| LOW | tools/patent_reader/extract/figure_extract.py | 464 | except Exception: | CODE |
| LOW | tools/patent_reader/extract/fetch_patent_pdf.py | 314 | except Exception as e: | CODE |
| LOW | tools/patent_reader/extract/fetch_design_views.py | 159 | except Exception: | CODE |
| LOW | tools/patent_reader/extract/fetch_design_views.py | 218 | except Exception: | CODE |
| LOW | tools/patent_reader/extract/fetch_design_views.py | 423 | except Exception as e: | CODE |
| LOW | tools/patent_reader/vault/clue_vault.py | 394 | except Exception: | CODE |
| LOW | tools/patent_reader/vault/clue_vault.py | 404 | except Exception: | CODE |
| LOW | tools/oa/search_cases.py | 147 | except Exception as exc: | CODE |
| LOW | tools/oa/config.py | 103 | except Exception: | CODE |
| LOW | tools/oa/config.py | 624 | except Exception as exc: | CODE |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/shared/structure_callout_overlay.py | 109 | CODE | |
| LOW | tools/shared/md_to_docx.py | 225 | CODE | |
| LOW | tools/shared/md_to_docx.py | 442 | CODE | |
| LOW | tools/shared/md_to_docx.py | 481 | CODE | |
| LOW | tools/shared/md_to_docx.py | 519 | CODE | |
| LOW | tools/shared/md_to_docx.py | 548 | CODE | |
| LOW | tools/shared/md_to_docx.py | 865 | CODE | |
| LOW | tools/shared/md_to_docx.py | 1042 | CODE | |
| LOW | tools/shared/step_to_views.py | 95 | CODE | |
| LOW | tools/shared/structure_lineart_compose.py | 147 | CODE | |
| LOW | tools/shared/structure_lineart_compose.py | 274 | CODE | |
| LOW | tools/shared/structure_lineart_compose.py | 338 | CODE | |
| LOW | tools/shared/mermaid_render.py | 227 | CODE | |
| LOW | tools/shared/mermaid_render.py | 443 | CODE | |
| LOW | tools/shared/latex_delimiters.py | 53 | CODE | |
| LOW | tools/shared/check_formula_plan.py | 59 | CODE | |
| LOW | tools/shared/image_gen.py | 251 | CODE | |
| LOW | tools/shared/formula_chem.py | 59 | CODE | |
| LOW | tools/shared/formula_chem.py | 67 | CODE | |
| LOW | tools/shared/formula_units.py | 82 | CODE | |
| LOW | tools/shared/structure_lineart_gate.py | 83 | CODE | |
| LOW | tools/shared/structure_lineart_gate.py | 186 | CODE | |
| LOW | tools/shared/pptx_to_md.py | 65 | CODE | |
| LOW | tools/shared/math_render.py | 40 | CODE | |
| LOW | tools/shared/math_render.py | 206 | CODE | |
| LOW | tools/shared/svg_screenshot.py | 188 | CODE | |
| LOW | tools/shared/math_to_omml.py | 86 | CODE | |
| LOW | tools/crawl/cnipa_epub_search.py | 52 | CODE | |
| LOW | tools/crawl/cnipa_epub_crawler.py | 293 | CODE | |
| LOW | tools/patent_reader/shared/common.py | 85 | CODE | |
| LOW | tools/patent_reader/shared/common.py | 182 | CODE | |
| LOW | tools/patent_reader/shared/common.py | 216 | CODE | |
| LOW | tools/patent_reader/shared/common.py | 430 | CODE | |
| LOW | tools/patent_reader/shared/common.py | 530 | CODE | |
| LOW | tools/patent_reader/shared/common.py | 600 | CODE | |
| LOW | tools/patent_reader/shared/common.py | 679 | CODE | |
| LOW | tools/patent_reader/shared/common.py | 755 | CODE | |
| LOW | tools/patent_reader/analyze/lint_patent_note.py | 63 | CODE | |
| LOW | tools/patent_reader/extract/figure_extract.py | 161 | CODE | |
| LOW | tools/patent_reader/extract/fetch_design_views.py | 130 | CODE | |
| LOW | tools/patent_reader/extract/fetch_design_views.py | 224 | CODE | |
| LOW | tools/patent_reader/vault/schema_vault.py | 37 | CODE | |
| LOW | tools/patent_reader/vault/write_patent_obsidian_note.py | 534 | CODE | |
| LOW | tools/patent_reader/vault/write_patent_obsidian_note.py | 620 | CODE | |
| LOW | tools/patent_reader/vault/write_patent_obsidian_note.py | 718 | CODE | |
| LOW | tools/patent_reader/vault/note_cites.py | 390 | CODE | |
| LOW | tools/patent_reader/vault/patent_link.py | 239 | CODE | |
| LOW | tools/patent_reader/vault/patent_link.py | 571 | CODE | |
| LOW | tools/patent_reader/vault/obsidian.py | 101 | CODE | |
| LOW | tools/patent_reader/vault/obsidian.py | 399 | CODE | |
| LOW | tools/patent_reader/vault/obsidian.py | 539 | CODE | |
| LOW | tools/patent_reader/vault/obsidian.py | 950 | CODE | |
| LOW | tools/patent_reader/vault/obsidian.py | 1168 | CODE | |
| LOW | tools/patent_reader/vault/obsidian.py | 2080 | CODE | |
| LOW | tools/patent_reader/vault/clue_vault.py | 202 | CODE | |
| LOW | tools/patent_reader/vault/clue_vault.py | 713 | CODE | |
| LOW | tools/patent_reader/vault/clue_vault.py | 827 | CODE | |
| LOW | tools/patent_reader/vault/clue_vault.py | 996 | CODE | |
| LOW | tools/patent_reader/vault/clue_vault.py | 1525 | CODE | |
| LOW | tools/oa/config.py | 87 | CODE | |
| 5 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/shared/mermaid_render.py | 71 | return null; | CODE |
| HIGH | tools/shared/mermaid_render.py | 73 | return String(e && e.message ? e.message : e); | CODE |
| HIGH | tools/patent_reader/extract/fetch_design_views.py | 298 | "img", "els => els.map(e => e.currentSrc || e.src || '')" | CODE |
| HIGH | tools/oa/store.py | 78 | case_id text not null, | CODE |
| HIGH | tests/crawl/test_cnipa_epub_chain.py | 5 | 需已安装:pip install -r tools/crawl/requirements-cnipa.txt && python -m playwright install chromium | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 1 | # Used by tools/shared/md_to_docx.py, docx_to_md.py, pptx_to_md.py, | COMMENT |
| LOW | requirements.txt | 21 | # only if no system browser: python -m playwright install chromium | COMMENT |
| LOW | tools/shared/gen_demo_snap_step.py | 101 | #{a+2}=PRODUCT('demo_snap_plate','demo_snap_plate','teaching STEP for cad_scan / step_to_views',(#{a+3})); | COMMENT |
| LOW | tools/shared/requirements-step.txt | 1 | # CadQuery/OCP: STEP -> SVG. Install ONLY into tools/shared/cad-env | COMMENT |
| LOW | tools/crawl/requirements-cnipa.txt | 1 | # 国知局公布公告站检索(tools/crawl/cnipa_epub_search.py / cnipa_epub_crawler.py)依赖 | COMMENT |
| LOW | references/schemas/oa_playbook.schema.yaml | 21 | COMMENT | |
| LOW | …ferences/schemas/structure_callout_anchors.schema.yaml | 41 | # 1. Read 叠标后的 PNG/SVG,按 parts 名称核对每条引出线末端。 | COMMENT |
| LOW | …ferences/schemas/structure_lineart_compose.schema.yaml | 41 | # - slot 缺省:assembly 则跟 crop_box 或铺满画布;exploded 则自动网格。 | COMMENT |
| LOW | docs/oa/embedding.config.yaml | 1 | # 模式 D · 向量嵌入配置(仓库模板种子) | COMMENT |
| LOW | .github/workflows/update-star-history.yml | 1 | # Update star history (orphan branch) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/shared/structure_lineart_compose.py | 212 | if source not in {"crop", "image", "placeholder"}: | CODE |
| LOW | tools/shared/structure_lineart_compose.py | 361 | source = str(item.get("source") or "placeholder") | CODE |
| LOW | tools/patent_reader/extract/figure_extract.py | 337 | return "placeholder" | CODE |
| LOW | tools/patent_reader/extract/figure_extract.py | 484 | "decision": "placeholder", | CODE |
| LOW | tools/patent_reader/extract/figure_extract.py | 486 | f"嵌入图{img_index + 1}", page_number, fname, "placeholder", quality | CODE |
| LOW | tools/patent_reader/vault/write_patent_obsidian_note.py | 446 | if decision == "placeholder" and status == "review": | CODE |
| LOW | tools/patent_reader/vault/write_patent_obsidian_note.py | 508 | "decision": "placeholder", | CODE |
| LOW | tests/shared/test_structure_lineart_compose.py | 104 | "source": "placeholder", | CODE |
| LOW | tests/shared/test_structure_lineart_compose.py | 144 | self.assertIn('data-source="placeholder"', text) | CODE |
| LOW | tests/shared/test_structure_lineart_compose.py | 170 | "source": "placeholder", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/shared/math_render.py | 110 | CODE | |
| LOW | tools/patent_reader/shared/common.py | 527 | CODE | |
| LOW | tools/patent_reader/vault/desc_paragraphs.py | 294 | CODE | |
| LOW | tools/patent_reader/vault/patent_link.py | 783 | CODE | |
| LOW | tools/patent_reader/vault/obsidian.py | 1168 | CODE | |
| LOW | tools/patent_reader/vault/clue_vault.py | 74 | CODE | |
| LOW | tools/oa/config.py | 383 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/shared/md_to_docx.py | 775 | def _set_paragraph_num_id(paragraph, num_id: int) -> None: | CODE |