Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-24 17:46 UTC

qaiu / netdisk-fast-download

聚合多种主流网盘的直链解析下载服务, 一键解析下载,已支持夸克网盘/uc网盘/蓝奏云/蓝奏优享/小飞机盘/123云盘等. 支持文件夹分享解析. 体验地址: https://lz.qaiu.top https://189.qaiu.top

Java · VueMIT★ 3.008 Sterne⑂ 265 Forksseit Apr. 2023Auf GitHub ansehen ↗

qaiu/netdisk-fast-download erreicht einen Gesundheitsindex von 67 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (91/100) ab, am schwächsten bei Security (43/100). Zuletzt vor 2 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

67
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

67
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

qaiuPersönliches Konto
121 Follower31 öffentliche Reposseit Juli 2017qaiu

Dieses Repository gehört einem persönlichen Konto. Ein Projekt mit nur einem Eigentümer trägt ein höheres Kontinuitätsrisiko als ein organisationsgetragenes.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlicht
Mavencn.qaiu:coreverweist auf ein anderes Repo — nicht bewertet1.2.3-5vor 148 Tagen
Mavencn.qaiu:parser10.2.5-12vor 149 Tagen
Mavencn.qaiu:core-databaseverweist auf ein anderes Repo — nicht bewertet1.2.3-5vor 148 Tagen

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

91Exzellent · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 2 Tagen
27.7/36Commit-Rhythmus — 40/52 Wochen mit Commits
18/18Commit-Volumen — 544 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year544
human_commit_share0,98
days_since_last_push2
active_weeks_last_year40
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 21 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 3 Tagen
27/27Release-Rhythmus — ein Release etwa alle 18,9 Tage
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Verwendete Eingangsdaten
releases_count21
latest_release_tagdependabot/npm_and_yarn/web-front/npm_and_yarn-c42958dede
releases_from_tagsnein
days_since_latest_release3
mean_days_between_releases18,9

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

68Mittel · 18 % des Gesamtindex
Wie die Bewertung erfolgt
56.4/60Stars — 3.008 Stars
20.2/25Forks — 265 Forks
6.2/15Watcher — 14 Watcher
Verwendete Eingangsdaten
forks265
stars3.008
watchers14
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

61Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
4.4/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 80 % der Commits
9.5/13.5Breite der Beitragenden — 7 Beitragende
6/10OpenSSF Scorecard: Contributors — project has 2 contributing companies or organizations -- score normalized to 6
Verwendete Eingangsdaten
bus_factor1
contributors_sampled7
top_contributor_share0,805
Wie die Bewertung erfolgt
41.1/46.8Issue-Lösungsquote — 88 % der Issues geschlossen
26/38.3PR-Annahme — 55/81 entschiedene PRs gemergt
1.5/15OpenSSF Scorecard: Code-Review — Found 3/18 approved changesets -- score normalized to 1
Verwendete Eingangsdaten
merged_prs55
open_issues14
closed_issues103
issue_closed_ratio0,88
closed_unmerged_prs26
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
15/25Reichweite des Inhabers — 121 Follower von qaiu
23/25Kontohistorie — 31 öffentliche Repos, Kontoalter ca. 9 Jahre
Verwendete Eingangsdaten
followers121
owner_typeUser
is_verified
owner_loginqaiu
public_repos31
account_age_days3.309
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf maven
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 149 Tagen
20/20Versionshistorie — 12 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagescn.qaiu:parser
ecosystemsmaven
any_deprecatednein
min_days_since_publish149

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

67Mittel · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 2 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 3 out of 3 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein
Wie die Bewertung erfolgt
30/30README
0/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://nfd-parser.github.io
10/10Repository-Beschreibung
10/10Topics — 13 Topics
0/10Wiki
Verwendete Eingangsdaten
topicsdownload, java, vertx, parser, webserver, api, drive, ilanzou, onedrive, file-server, share, yunpan, netdisk-fast-download
has_wikinein
homepagehttps://nfd-parser.github.io
has_readmeja
has_docs_dirnein
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

43Gefährdet · 16 % des Gesamtindex

Sicherheitslage

44Gefährdet
Wie die Bewertung erfolgt
6/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — keine Daten
2.5/2.5CI-Tests — 3 out of 3 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0.8/7.5Code-Review — Found 3/18 approved changesets -- score normalized to 1
1.5/2.5Contributors — project has 2 contributing companies or organizations -- score normalized to 6
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
7.5/7.5Maintained — 30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 24 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4,4
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): branch_protection. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
12.3/35Direkte Abhängigkeiten ohne bekannte Advisories — 1 betroffen: com.fasterxml.jackson.core:jackson-databind 2.18.3 (high 8.1)
3/25Indirekte Abhängigkeiten ohne bekannte Advisories — 10 betroffen: com.fasterxml.jackson.core:jackson-core 2.16.1 (high 7.5), io.netty:netty-codec 4.1.130.Final (high 7.5), io.netty:netty-codec-dns 4.1.130.Final (high 7.5), +7 weitere
23.8/40Keine offenen Advisories — 4 Paket(e) mit Advisory seit über 90 Tagen unbehandelt; ältestes vor 296 Tagen veröffentlicht
Verwendete Eingangsdaten
sourceosv
advisories46
affected_packages11
assessed_packages67
unassessed_packages0
affected_by_severityhigh 8, moderate 3
direct_affected_packages1
Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von maven:cn.qaiu:core@1.2.3 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 67 Paketen. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

57Mittel · 0 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 87 von 98 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,888
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
12.6/18Bootstrap mit einem Befehl — core-database/pom.xml, core/pom.xml, parser/pom.xml (Toolchain-Konvention, kein Task-Runner)
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — parser/src/main/resources/custom-parsers/jsconfig.json, web-front/jsconfig.json
10/10Reproduzierbare Umgebung — devcontainer, Dockerfile
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100
5/8Automatisierte Wartung — Abhängigkeits-Automatisierung konfiguriert, in den erfassten Commits nicht beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfiles
has_dockerfileja
typed_languageja
bootstrap_files
has_devcontainerja
has_linter_confignein
typecheck_configsparser/src/main/resources/custom-parsers/jsconfig.json, web-front/jsconfig.json
agent_commit_share0
toolchain_manifestscore-database/pom.xml, core/pom.xml, parser/pom.xml, pom.xml, web-service/pom.xml
dependency_bot_commit_share0
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — Java (statisch typisiert)
54.8/55Handhabbare Dateigrößen — 1/252 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageJava
largest_source_bytes89.795
source_files_sampled252
oversized_source_files1
Wie die Bewertung erfolgt
40/40API-Schema (OpenAPI/GraphQL/proto) — web-service/doc/openapi.json
0/20MCP-Server
0/40Lauffähige Beispiele
Verwendete Eingangsdaten
example_dirs
has_mcp_signalnein
api_schema_filesweb-service/doc/openapi.json

Eckdaten

3.008GitHub-Sterne
7Mitwirkende
544Commits, letzte 12 Monate
2Tage seit letztem Push
21Releases
1Bus-Faktor
14offene Issues
Maven, npmPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • maven package 'cn.qaiu:core' points at a different repository (https://github.com/qaiu/vxcore/tree/main/core); excluded from ecosystem scoring
  • Could not fetch maven package 'cn.qaiu:web-service' from its registry
  • maven package 'cn.qaiu:core-database' points at a different repository (https://github.com/qaiu/vxcore/tree/main/core-database); excluded from ecosystem scoring

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 265 ⇿
0Sterne
265Forks
19Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

050100150200250300261112023-072025-012026-07
Major 0Minor 1Patch 6

Jeder Punkt umfasst 3 Tage.

OpenSSF Scorecard 4.4 / 10
4.4Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-24 17:46 UTC

8Binary-Artifactsbinaries present in source code
k. A.Branch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
10CI-Tests3 out of 3 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
1Code-ReviewFound 3/18 approved changesets -- score normalized to 1
6Contributorsproject has 2 contributing companies or organizations -- score normalized to 6
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities24 existing vulnerabilities detected
Direkte Abhängigkeiten 56
RegistryPaketVersionsvorgabeManifest
Mavencn.qaiu:corecore-database/pom.xml
Mavencom.h2database:h22.2.220core-database/pom.xml
Mavencom.zaxxer:HikariCP5.0.1core-database/pom.xml
Mavenorg.apache.commons:commons-lang33.18.0core-database/pom.xml
Mavenio.vertx:vertx-codegen${vertx.version}core-database/pom.xml
Mavenio.vertx:vertx-sql-client-templates${vertx.version}core-database/pom.xml
Mavenio.vertx:vertx-jdbc-client${vertx.version}core-database/pom.xml
Mavencom.mysql:mysql-connector-j9.2.0core-database/pom.xml
Mavenorg.postgresql:postgresql42.7.11core-database/pom.xml
Mavench.qos.logback:logback-classic${logback.version}core/pom.xml
Mavenorg.slf4j:slf4j-api${slf4j.version}core/pom.xml
Mavenio.vertx:vertx-webcore/pom.xml
Mavenio.vertx:vertx-codegencore/pom.xml
Mavenio.vertx:vertx-configcore/pom.xml
Mavenio.vertx:vertx-config-yamlcore/pom.xml
Mavenio.vertx:vertx-service-proxycore/pom.xml
Mavenio.vertx:vertx-web-proxycore/pom.xml
Mavenorg.reflections:reflections${org.reflections.version}core/pom.xml
Mavenorg.apache.commons:commons-lang3${commons-lang3.version}core/pom.xml
Mavencom.fasterxml.jackson.core:jackson-databind${jackson.version}core/pom.xml
Mavencom.fasterxml.jackson.datatype:jackson-datatype-jsr310${jackson.version}core/pom.xml
npmmvn^3.5.0package.json
Mavench.qos.logback:logback-classic${logback.version}parser/pom.xml
Mavenorg.slf4j:slf4j-api${slf4j.version}parser/pom.xml
Mavenio.vertx:vertx-web-client${vertx.version}parser/pom.xml
Mavenorg.apache.commons:commons-lang3${commons-lang3.version}parser/pom.xml
Mavenorg.openjdk.nashorn:nashorn-core15.4parser/pom.xml
Mavenorg.brotli:dec0.1.2parser/pom.xml
Mavenorg.apache.groovy:groovy4.0.24parser/pom.xml
Mavenio.vertx:vertx-dependencies${vertx.version}pom.xml
Mavench.qos.logback:logback-classic${logback.version}pom.xml
Mavench.qos.logback:logback-core${logback.version}pom.xml
Mavencn.qaiu:core${revision}pom.xml
Mavencn.qaiu:core-database${revision}pom.xml
Mavencn.qaiu:parser${parserVersion}pom.xml
npm@element-plus/icons-vue^2.3.1web-front/package.json
npm@monaco-editor/loader^1.4.0web-front/package.json
npm@vueuse/core^11.2.0web-front/package.json
npmaxios1.16.1web-front/package.json
npmclipboard^2.0.11web-front/package.json
npmcore-js^3.8.3web-front/package.json
npmcrypto-js^4.2.0web-front/package.json
npmelement-plus2.11.3web-front/package.json
npmmonaco-editor^0.55.1web-front/package.json
npmqrcode^1.5.4web-front/package.json
npmsplitpanes^4.0.4web-front/package.json
npmvue^3.5.12web-front/package.json
npmvue-clipboard3^2.0.0web-front/package.json
npmvue-router^4.5.1web-front/package.json
npmvue3-json-viewer2.2.2web-front/package.json
Mavencn.qaiu:coreweb-service/pom.xml
Mavencn.qaiu:core-databaseweb-service/pom.xml
Mavencn.qaiu:parserweb-service/pom.xml
Mavench.qos.logback:logback-classic${logback.version}web-service/pom.xml
Mavenorg.fusesource.jansi:jansi1.17.1web-service/pom.xml
Mavenorg.slf4j:slf4j-api${slf4j.version}web-service/pom.xml
Alle Abhängigkeiten 126

Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 64 direkte und 62 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.

RegistryPaketVersionBeziehung
Mavench.qos.logback:logback-classicdirekt
Mavench.qos.logback:logback-classic1.5.8direkt
Mavench.qos.logback:logback-core1.5.8direkt
Mavencn.qaiu:coredirekt
Mavencn.qaiu:core0.1.8direkt
Mavencn.qaiu:core-databasedirekt
Mavencn.qaiu:core-database0.1.8direkt
Mavencn.qaiu:parserdirekt
Mavencn.qaiu:parser0.1.8direkt
Mavencom.fasterxml.jackson.core:jackson-databinddirekt
Mavencom.fasterxml.jackson.core:jackson-databind2.16.1direkt
Mavencom.fasterxml.jackson.datatype:jackson-datatype-jsr310direkt
Mavencom.fasterxml.jackson.datatype:jackson-datatype-jsr3102.16.1direkt
Mavencom.h2database:h22.2.220direkt
Mavencom.mysql:mysql-connector-j9.2.0direkt
Mavencom.zaxxer:HikariCP5.0.1direkt
Mavenio.vertx:vertx-codegendirekt
Mavenio.vertx:vertx-codegen4.5.6direkt
Mavenio.vertx:vertx-configdirekt
Mavenio.vertx:vertx-config4.5.6direkt
Mavenio.vertx:vertx-config-yamldirekt
Mavenio.vertx:vertx-config-yaml4.5.6direkt
Mavenio.vertx:vertx-jdbc-clientdirekt
Mavenio.vertx:vertx-jdbc-client4.5.6direkt
Mavenio.vertx:vertx-service-proxydirekt
Mavenio.vertx:vertx-service-proxy4.5.6direkt
Mavenio.vertx:vertx-sql-client-templatesdirekt
Mavenio.vertx:vertx-sql-client-templates4.5.6direkt
Mavenio.vertx:vertx-webdirekt
Mavenio.vertx:vertx-web4.5.6direkt
Mavenio.vertx:vertx-web-client4.5.27direkt
Mavenio.vertx:vertx-web-client4.5.6direkt
Mavenio.vertx:vertx-web-proxydirekt
Mavenio.vertx:vertx-web-proxy4.5.6direkt
Mavenorg.apache.commons:commons-lang3direkt
Mavenorg.apache.commons:commons-lang33.12.0direkt
Mavenorg.apache.commons:commons-lang33.18.0direkt
Mavenorg.apache.groovy:groovy4.0.24direkt
Mavenorg.brotli:dec0.1.2direkt
Mavenorg.fusesource.jansi:jansi1.17.1direkt
Mavenorg.openjdk.nashorn:nashorn-core15.4direkt
Mavenorg.postgresql:postgresql42.7.11direkt
Mavenorg.postgresql:postgresql42.7.3direkt
Mavenorg.reflections:reflectionsdirekt
Mavenorg.reflections:reflections0.10.2direkt
Mavenorg.slf4j:slf4j-apidirekt
Mavenorg.slf4j:slf4j-api2.0.16direkt
Mavenorg.slf4j:slf4j-api2.0.5direkt
npm@element-plus/icons-vue^2.3.1direkt
npm@monaco-editor/loader^1.4.0direkt
npm@vueuse/core^11.2.0direkt
npmaxios1.16.1direkt
npmclipboard^2.0.11direkt
npmcore-js^3.8.3direkt
npmcrypto-js^4.2.0direkt
npmelement-plus2.11.3direkt
npmmonaco-editor^0.55.1direkt
npmmvn^3.5.0direkt
npmqrcode^1.5.4direkt
npmsplitpanes^4.0.4direkt
npmvue^3.5.12direkt
npmvue-clipboard3^2.0.0direkt
npmvue-router^4.5.1direkt
npmvue3-json-viewer2.2.2direkt
Mavencom.fasterxml.jackson.core:jackson-annotations2.16.1indirekt
Mavencom.fasterxml.jackson.core:jackson-core2.16.1indirekt
Mavencom.google.code.findbugs:jsr3053.0.2indirekt
Mavencom.google.protobuf:protobuf-java4.29.0indirekt
Mavencom.mchange:c3p00.9.5.5indirekt
Mavencom.mchange:mchange-commons-java0.2.19indirekt
Mavenio.netty:netty-buffer4.1.108.Finalindirekt
Mavenio.netty:netty-codec4.1.108.Finalindirekt
Mavenio.netty:netty-codec-dns4.1.108.Finalindirekt
Mavenio.netty:netty-codec-http4.1.108.Finalindirekt
Mavenio.netty:netty-codec-http24.1.108.Finalindirekt
Mavenio.netty:netty-codec-socks4.1.108.Finalindirekt
Mavenio.netty:netty-common4.1.108.Finalindirekt
Mavenio.netty:netty-handler4.1.108.Finalindirekt
Mavenio.netty:netty-handler-proxy4.1.108.Finalindirekt
Mavenio.netty:netty-resolver4.1.108.Finalindirekt
Mavenio.netty:netty-resolver-dns4.1.108.Finalindirekt
Mavenio.netty:netty-transport4.1.108.Finalindirekt
Mavenio.netty:netty-transport-native-unix-common4.1.108.Finalindirekt
Mavenio.vertx:vertx-auth-common4.5.6indirekt
Mavenio.vertx:vertx-bridge-common4.5.6indirekt
Mavenio.vertx:vertx-core4.5.6indirekt
Mavenio.vertx:vertx-http-proxy4.5.6indirekt
Mavenio.vertx:vertx-sql-client4.5.6indirekt
Mavenio.vertx:vertx-uri-template4.5.6indirekt
Mavenio.vertx:vertx-web-common4.5.6indirekt
Mavenjunit:junitindirekt
Mavenjunit:junit4.13.2indirekt
Mavenorg.apache.maven.plugins:maven-assembly-plugin3.3.0indirekt
Mavenorg.apache.maven.plugins:maven-dependency-plugin3.1.2indirekt
Mavenorg.apache.maven.plugins:maven-deploy-plugin3.1.2indirekt
Mavenorg.apache.maven.plugins:maven-gpg-plugin3.2.7indirekt
Mavenorg.apache.maven.plugins:maven-jar-plugin3.2.0indirekt
Mavenorg.apache.maven.plugins:maven-javadoc-plugin3.7.0indirekt
Mavenorg.apache.maven.plugins:maven-source-plugin3.3.0indirekt
Mavenorg.checkerframework:checker-qual3.42.0indirekt
Mavenorg.codehaus.gmavenplus:gmavenplus-plugin4.1.1indirekt
Mavenorg.codehaus.mojo:flatten-maven-plugin1.6.0indirekt
Mavenorg.hamcrest:hamcrest-core1.3indirekt
Mavenorg.javassist:javassist3.28.0-GAindirekt
Mavenorg.ow2.asm:asm7.3.1indirekt
Mavenorg.ow2.asm:asm-analysis7.3.1indirekt
Mavenorg.ow2.asm:asm-commons7.3.1indirekt
Mavenorg.ow2.asm:asm-tree7.3.1indirekt
Mavenorg.ow2.asm:asm-util7.3.1indirekt
Mavenorg.projectlombok:lombokindirekt
Mavenorg.projectlombok:lombok1.18.38indirekt
Mavenorg.sonatype.central:central-publishing-maven-plugin0.6.0indirekt
Mavenorg.yaml:snakeyaml2.0indirekt
npm@babel/core^7.26.0indirekt
npm@babel/eslint-parser^7.25.9indirekt
npm@babel/plugin-transform-class-properties^7.26.0indirekt
npm@babel/plugin-transform-class-static-block^7.26.0indirekt
npm@vue/babel-plugin-transform-vue-jsx^1.4.0indirekt
npm@vue/cli-plugin-babel~5.0.8indirekt
npm@vue/cli-plugin-eslint~5.0.8indirekt
npm@vue/cli-service~5.0.8indirekt
npmcompression-webpack-plugin^11.1.0indirekt
npmeslint^9.0.0indirekt
npmeslint-plugin-vue^9.30.0indirekt
npmfilemanager-webpack-plugin8.0.0indirekt
npmmonaco-editor-webpack-plugin^7.1.1indirekt
Abhängigkeits-Advisories 11

Die Installation von maven:cn.qaiu:core@1.2.3 zieht 67 Pakete nach sich, direkt und transitiv: 11 tragen bekannte Advisories, davon 1 direkte Abhängigkeiten.

PaketVersionBeziehungSchweregradAdvisoriesBehoben in
com.fasterxml.jackson.core:jackson-databind2.18.3direkthoch73.2.1
com.fasterxml.jackson.core:jackson-core2.16.1indirekthoch23.2.1
io.netty:netty-codec4.1.130.Finalindirekthoch24.2.16.Final
io.netty:netty-codec-dns4.1.130.Finalindirekthoch24.2.16.Final
io.netty:netty-codec-http4.1.130.Finalindirekthoch154.2.16.Final
io.netty:netty-codec-http24.1.130.Finalindirekthoch64.2.16.Final
io.netty:netty-handler4.1.130.Finalindirekthoch34.2.15.Final
io.netty:netty-resolver-dns4.1.130.Finalindirekthoch34.2.15.Final
ch.qos.logback:logback-core1.5.17indirektmittel41.5.34
io.netty:netty-handler-proxy4.1.130.Finalindirektmittel14.2.13.Final
io.vertx:vertx-core4.5.25indirektmittel15.0.12

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [
        "download",
        "java",
        "vertx",
        "parser",
        "webserver",
        "api",
        "drive",
        "ilanzou",
        "onedrive",
        "file-server",
        "share",
        "yunpan",
        "netdisk-fast-download"
      ],
      "is_fork": false,
      "size_kb": 6371,
      "has_wiki": false,
      "homepage": "https://nfd-parser.github.io",
      "languages": {
        "CSS": 3192,
        "Vue": 305974,
        "HTML": 50020,
        "Java": 1474644,
        "Shell": 7098,
        "Python": 14049,
        "Batchfile": 823,
        "Dockerfile": 583,
        "JavaScript": 140588
      },
      "pushed_at": "2026-07-22T02:30:58Z",
      "created_at": "2023-04-20T09:41:34Z",
      "owner_type": "User",
      "updated_at": "2026-07-24T13:51:36Z",
      "description": "聚合多种主流网盘的直链解析下载服务, 一键解析下载,已支持夸克网盘/uc网盘/蓝奏云/蓝奏优享/小飞机盘/123云盘等. 支持文件夹分享解析. 体验地址: https://lz.qaiu.top https://189.qaiu.top",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Java",
      "significant_languages": [
        "Java",
        "Vue"
      ]
    },
    "owner": {
      "blog": "https://blog.qaiu.top",
      "name": "qaiu",
      "type": "User",
      "login": "qaiu",
      "company": "qaiu",
      "location": "5rWO5Y2X",
      "followers": 121,
      "avatar_url": "https://avatars.githubusercontent.com/u/29825328?v=4",
      "created_at": "2017-07-01T22:49:35Z",
      "is_verified": null,
      "public_repos": 31,
      "account_age_days": 3309
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "dependabot/npm_and_yarn/web-front/npm_and_yarn-c42958dede",
          "kind": "other",
          "published_at": "2026-07-21T07:32:52Z"
        },
        {
          "tag": "v0.4.1",
          "kind": "patch",
          "published_at": "2026-07-19T02:01:03Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-07-19T01:44:00Z"
        },
        {
          "tag": "v0.3.9",
          "kind": "patch",
          "published_at": "2026-07-18T17:15:09Z"
        },
        {
          "tag": "v0.3.7",
          "kind": "patch",
          "published_at": "2026-07-18T04:31:22Z"
        },
        {
          "tag": "dependabot/maven/maven-6421fd6730",
          "kind": "other",
          "published_at": "2026-07-06T02:12:15Z"
        },
        {
          "tag": "v0.3.6",
          "kind": "patch",
          "published_at": "2026-06-10T21:57:02Z"
        },
        {
          "tag": "v0.3.4",
          "kind": "patch",
          "published_at": "2026-05-30T10:07:52Z"
        },
        {
          "tag": "v019b21b",
          "kind": "other",
          "published_at": "2026-02-02T20:52:20Z"
        },
        {
          "tag": "v0.1.9b20a",
          "kind": "other",
          "published_at": "2026-02-01T02:46:56Z"
        },
        {
          "tag": "v0.1.9b12b",
          "kind": "other",
          "published_at": "2025-11-28T12:08:32Z"
        },
        {
          "tag": "v0.1.9b7",
          "kind": "other",
          "published_at": "2025-07-18T05:12:40Z"
        },
        {
          "tag": "0.1.8.fixed3",
          "kind": "other",
          "published_at": "2025-05-28T09:19:12Z"
        },
        {
          "tag": "0.1.8.fixed2",
          "kind": "other",
          "published_at": "2024-12-18T04:59:20Z"
        },
        {
          "tag": "0.1.8.proxy",
          "kind": "other",
          "published_at": "2024-10-07T18:53:22Z"
        },
        {
          "tag": "0.1.8.bate2",
          "kind": "other",
          "published_at": "2024-09-22T06:07:16Z"
        },
        {
          "tag": "0.1.7-release-fixed3",
          "kind": "prerelease",
          "published_at": "2024-04-09T04:38:20Z"
        },
        {
          "tag": "0.1.7",
          "kind": "patch",
          "published_at": "2023-08-25T09:01:32Z"
        },
        {
          "tag": "0.1.6-releases-fixed6",
          "kind": "prerelease",
          "published_at": "2023-07-15T19:16:25Z"
        },
        {
          "tag": "0.1.5-releases",
          "kind": "prerelease",
          "published_at": "2023-06-13T05:30:41Z"
        },
        {
          "tag": "0.1.3-releases",
          "kind": "prerelease",
          "published_at": "2023-05-25T07:25:43Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "aeb4394cf801fee793ab52f98a539f6f8c064a3e",
          "body": null,
          "is_bot": false,
          "headline": "fix GHSA-997r-7xx2-p9x6",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-07-22T02:25:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b70e30796ff86ba87b72718c7b68e3da7076b310",
          "body": null,
          "is_bot": false,
          "headline": "ci: package fuller jre for native builds",
          "author_name": "q",
          "author_login": null,
          "committed_at": "2026-07-19T01:57:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3ef5217732f5628f2989e04a6513aa03a09a037",
          "body": null,
          "is_bot": false,
          "headline": "fix: support donated auth for 123 directory downloads",
          "author_name": "q",
          "author_login": null,
          "committed_at": "2026-07-19T01:39:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2969c92d3d9eff1572ec0ed6e4a329b3de4e9178",
          "body": null,
          "is_bot": false,
          "headline": "build jre",
          "author_name": "q",
          "author_login": null,
          "committed_at": "2026-07-18T18:06:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2fde421169101f85e91a544ad06a5678b8c85587",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump version to 0.3.9",
          "author_name": "q",
          "author_login": null,
          "committed_at": "2026-07-18T17:11:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3494271150bfd428081fee08dfb2305f384464e1",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump version to 0.3.8",
          "author_name": "q",
          "author_login": null,
          "committed_at": "2026-07-18T16:55:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "675d930f868520a0dd4ba3fc74b297db7dbb4702",
          "body": "- 前端: getCurrentPanType() 补全123网盘域名匹配正则(share.123pan.cn等子域名)\n- 前端: 临时认证弹窗补充123云盘(YE)选项及提示文案\n- 前端: submitDonateAccount() 按当前authType只提交相关字段,避免切换认证方式后\n  残留的用户名/密码脏数据被一并提交\n- 后端: URLParamUtil.addParam() 不再无条件用静态yml配置覆盖已生效的临时认证/\n  自动捐赠账号回退(增加 __TEMP_AUTH_ADDED 判断)\n- 后端: CacheServiceImpl 新增 applyDonatedAc\n[…]\narer \",避免拼接成\n  'Bearer Bearer xxx' 导致123接口返回 tokenstring should not contain bearer\n\n已通过本地实测验证: 捐赠123账号后,不带auth参数直接请求\n/json/parser?url=https://1815268665.share.123pan.cn/123pan/iaKtVv-r4aCd\n可正常返回200及直链",
          "is_bot": false,
          "headline": "fix: 123网盘捐赠账号无需临时auth参数即可自动生效,修复token前缀与脏数据问题",
          "author_name": "q",
          "author_login": null,
          "committed_at": "2026-07-18T15:21:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5e20ed5050f6d1fb919acb320e69d861ce735ebc",
          "body": "…mp version to 0.3.7\n\n引用 #201 #198 #116\n说明: 123解析仅限于本地部署(可Windows一键运行 run.bat),公共/云端服务因风控限制不保证可用",
          "is_bot": false,
          "headline": "fix: 123网盘(YE)支持authorization别名配置并修复auth临时参数登录被覆盖问题, 更新README认证说明, bu…",
          "author_name": "q",
          "author_login": null,
          "committed_at": "2026-07-18T04:28:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "91f4fcaa7675adb00dd682ddab56b2768af3a73b",
          "body": "oosmetrics不可用",
          "is_bot": false,
          "headline": "更新 README.md",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-07-10T22:28:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0754fe20f1760a51bbf9a64e90590305bae29e4c",
          "body": null,
          "is_bot": false,
          "headline": "更新 README.md",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-07-10T08:41:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "034fd20d3b0b8385717d2cbf25ea9f6bd3ce0fcf",
          "body": null,
          "is_bot": false,
          "headline": "更新 README.md",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-07-10T08:41:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "24bf98bca9a6e8212494c4b9c7a68b9b0b4c6208",
          "body": null,
          "is_bot": false,
          "headline": "fix: support 123pan redirected share links",
          "author_name": "q",
          "author_login": null,
          "committed_at": "2026-07-06T00:50:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "275f6b9e6d9b17a8567778849bc0d444de87c7c8",
          "body": null,
          "is_bot": false,
          "headline": "更新 README.md",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-06-23T09:10:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5db9e422f4f3b7123a1b1b6de147d871788975d8",
          "body": null,
          "is_bot": false,
          "headline": "更新 README.md",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-06-11T04:03:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "705b6ba4b7bed4290c485d3c4d12822427ef2f4d",
          "body": "Clean up fork changes for upstream review",
          "is_bot": false,
          "headline": "Merge pull request #195 from yukaidi1220/codex/full-main-clean",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-06-10T13:32:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0edc0573477c3940dbed5e120d98a268cf0e8205",
          "body": null,
          "is_bot": false,
          "headline": "docs: update parser and custom script docs",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-06-10T13:23:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6ae5d998e6a3b92a26654db5230f50d93ace9921",
          "body": null,
          "is_bot": false,
          "headline": "fix(frontend): improve directory and timestamp display",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-06-10T13:22:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cbb442ceb6d8aeece15776336b18290e381b7c91",
          "body": null,
          "is_bot": false,
          "headline": "fix(web): harden cache and API services",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-06-10T13:21:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0103841fb5f8eaaaf7949aef1e05e593ce0d2f4a",
          "body": null,
          "is_bot": false,
          "headline": "fix(parser): harden built-in pan parsers",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-06-10T13:20:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b6b7f0d8b78e3fc2df8b19b7cf0432fd3c7b9569",
          "body": null,
          "is_bot": false,
          "headline": "fix(parser): harden runtime resource handling",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-06-10T13:19:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46c6827edae9c220453093f15425bf9e54e96d25",
          "body": null,
          "is_bot": false,
          "headline": "fix(core): harden proxy and routing lifecycle",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-06-10T13:19:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ef6e120a892fe748a8b5402ce710a201228b41e",
          "body": null,
          "is_bot": false,
          "headline": "ci: improve build and packaging workflow",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-06-10T13:18:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65d518373de78ccce77026ff7fd399a309ec63d7",
          "body": "feat: 乐云 directDownload 接口支持 & 缓存配置补充完善",
          "is_bot": false,
          "headline": "Merge pull request #191 from yukaidi1220/lecloud-direct-download",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-06-05T15:02:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bca4da4b6c07ec18aef1fbad0a5f89a4e73e8b47",
          "body": "- 新增 directDownload (GET) 接口,比 packageDownloadWithFileIds 少一次请求\n- 每次随机选择下载方式,失败自动 fallback 到另一种\n- 统一所有下载方法的 Promise 参数传递\n- 添加 HTTP 状态码日志便于调试\n- 优化 app-dev.yml 缓存配置注释,补充所有缺失的网盘类型",
          "is_bot": false,
          "headline": "feat: 乐云 directDownload 接口支持 & 缓存配置补充完善",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-06-05T14:48:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0fd78defcbf7d3714e74f2eff002fbe98d32bc95",
          "body": "- 移除token参数,新增url参数至API1请求\n- API2新增start_time/wait_seconds/verifycode/share_id/acheck=1参数\n- parse()中从API1响应提取FileInfo(file_name/file_id/file_size/file_time/username)\n- 新增parseFileList()实现目录分享解析,通过getdir.php+file_list API获取文件列表\n- 新增CTD枚举项匹配城通网盘目录分享链接(/d/路径)",
          "is_bot": false,
          "headline": "feat(ct): 升级城通网盘接口并实现目录分享解析",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-06-03T09:46:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "452fd0ea2c7ffb09795998a00ff414195ec96ba6",
          "body": "CI: 新增原生环境打包 & 启动日志改进",
          "is_bot": false,
          "headline": "Merge pull request #190 from yukaidi1220/pr/native-package",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-05-31T09:02:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd8f2efb375aec95aa1bb1ab2c9e8390b4715552",
          "body": null,
          "is_bot": false,
          "headline": "ci: Release 自动生成更新说明(generate_release_notes)",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-31T08:39:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0feb8e798a3a4c60eb2730f668aec0e7db0b6f4c",
          "body": "- 配置文件查找顺序与 Deploy 保持一致(先当前目录,再 resources/)\n- 页面地址日志改用 onComplete,无论演练场加载成功失败均输出\n- Windows ZIP 移除 /* 通配符,与 Linux 保持一致的顶层目录结构\n- 修正注释:同步读文件会阻塞 event loop,不再声称'避免阻塞'\n- YAML 正则和 jdeps 回退列表补充适用范围说明",
          "is_bot": false,
          "headline": "fix: PR#190 review 修复 — 配置查找顺序/页面日志/ZIP结构/注释",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-31T08:34:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d55d8edd2ffc8e490802f15d1e7f9f685f7068dc",
          "body": null,
          "is_bot": false,
          "headline": "AppMain: 启动日志增加前端页面访问地址提示",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-31T06:00:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "451496f102823f7ffc99371ef9eb5288c40c7775",
          "body": null,
          "is_bot": false,
          "headline": "CI: 新增 Linux/Windows 原生环境打包 (jlink + 精简 JRE) 及 Docker 多平台构建",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-31T06:00:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d6351bd585fc339d6564b4db63fe73ae9908aa2",
          "body": null,
          "is_bot": false,
          "headline": "更新 README.md",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-05-30T23:02:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a5fc8d1ef812d5c2c95d578908ff958b0edd67c",
          "body": "…to 0.3.4",
          "is_bot": false,
          "headline": "feat: truncate long error msg, fix lanzou folder regex, bump version …",
          "author_name": "q",
          "author_login": null,
          "committed_at": "2026-05-29T17:16:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a44f30f7e55cfab540e454d5938f79b501e2eaa8",
          "body": "Update README maven badge to track tag-triggered workflow status",
          "is_bot": false,
          "headline": "Merge pull request #189 from qaiu/copilot/update-readme-badge",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-05-29T16:17:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9ebd34de33699b0a63e674c02ce8b6d29ae6ee7",
          "body": null,
          "is_bot": true,
          "headline": "docs: remove branch filter from maven workflow badge",
          "author_name": "copilot-swe-agent[bot]",
          "author_login": "Copilot",
          "committed_at": "2026-05-29T16:16:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b47db300a6906b5da6484d22d136b555187f9807",
          "body": null,
          "is_bot": true,
          "headline": "Initial plan",
          "author_name": "copilot-swe-agent[bot]",
          "author_login": "Copilot",
          "committed_at": "2026-05-29T16:10:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d19d8573f9692cf7202b48f469f5ebbe5b85f076",
          "body": "fix(QQwTool): 改用 POST JSON API 解析 QQ 邮箱云盘链接",
          "is_bot": false,
          "headline": "Merge pull request #188 from yukaidi1220/fix/qqwtool-json-api",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-05-29T15:54:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "799e12006957ce21ea02adc93b9efe0ba92614c6",
          "body": "安全加固、新功能、Bug 修复与代码质量改进",
          "is_bot": false,
          "headline": "Merge pull request #187 from yukaidi1220/feat/contributions",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-05-29T15:53:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "13f83e879502d018d8618e55c44688ec0c302d4e",
          "body": "旧实现通过 GET 请求获取 HTML 并正则提取 JS 变量,但接口已改为返回 JSON,\n导致 NumberFormatException。改为 POST 请求 `https://wx.mail.qq.com/s`,\nbody 为 `f=json&k={shareKey}`,解析 JSON 响应中的 body.url/name/size。\n\n- 使用 postAbs() 替代 request() 以正确处理 HTTPS\n- 使用 asJson() 兼容 gzip 响应\n- 使用 complete() 正确存储 downloadUrl\n- 添加 User-Agent、URL 编码 shareKey",
          "is_bot": false,
          "headline": "fix(QQwTool): 改用 POST JSON API 解析 QQ 邮箱云盘链接",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T14:26:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b5900aae4759e199e881b670bd50015611ccbea",
          "body": "- 替换 System.out.println/printStackTrace 为 Logger: MkgsTool, PodTool, WsTool, IpExtractor, ReqIpUtil, LogStatistics\n- JsPlaygroundLogger 日志列表限制最大 1000 条防止内存泄漏\n- JsScriptLoader JarFile 改用 try-with-resources 防止文件句柄泄漏\n- DbServiceImpl Thread.sleep 改为 vertx.setTimer 避免阻塞 event loop\n- 删除未使用的 api.js,删除空的 ParserApiClientLinkTest\n- 移除前端未使用的导入和死代码 (downloaderService, monacoTypes)\n- 提取 previewBaseUrl 到 constants.js 常量文件",
          "is_bot": false,
          "headline": "refactor: 代码质量清理与日志规范化",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T06:23:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e36c0bbe45da9ceeab31416ce9d4c8c0c68b99e3",
          "body": "- run.sh 改用 exec 直接运行 Java,修复 Docker 中 ShutdownHook 失效\n- Dockerfile 预创建 db 和 logs 目录,添加非 root 用户运行\n- Docker entrypoint 以 root 运行再降权,解决 volume 权限问题\n- EXPOSE 改为仅 6401,entrypoint 添加 -Duser.timezone",
          "is_bot": false,
          "headline": "fix: Docker 部署优化",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T06:23:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af723aed3a8fca5427f85b087fc26be9cf637cdd",
          "body": "- 修复 12 处 NPE 风险: FjTool/FsTool/IzTool/LzTool/MkwTool/P115Tool/PdbTool/QQTool/ParserCreate/CommonUtils/ShareLinkInfo/URLParamUtil\n- 修复 4 处 Vert.x 资源泄漏: 测试类中 Vertx 实例未关闭\n- 修复 CacheManager 防重入和 registerPeriodicCleanup 就绪检查\n- 修复 ParserApi 中 redirectUrl()/viewUrl() Promise 未 complete\n- 修复 CacheManager.u\n[…]\nToolWithAuth 并发安全 (volatile + header 副本)\n- 修复 P115Tool UA 为 null 时的 NPE,添加默认 User-Agent\n- Font Awesome CDN 换源为 s4.zstatic.net,避免 bootcdn 投毒风险\n- DirectoryTree selectAll 补 parserUrl 检查,Home 组件名 App→Home",
          "is_bot": false,
          "headline": "fix: NPE 修复、资源泄漏修复及其他 Bug 修复",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T06:22:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0978186679c9420a7a0eb325ed04b5480fbb0760",
          "body": "- QQscTool: 支持多文件和目录解析,通过 GetFileList API 实现递归目录导航\n- Home: 从粘贴文本中自动提取分享链接\n- DirectoryTree: 目录浏览添加复制直链按钮\n- domainName 改为可选,未配置时自动从请求地址推断\n- 统一版本号管理,GitHub URL 构建时自动从 git remote origin 识别\n- vue.config.js 添加前端构建配置,sync-version.js 构建时同步版本号",
          "is_bot": false,
          "headline": "feat: 新功能与配置优化",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T06:21:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17460ff2719fd89e9efc9eb72b165db7a237f271",
          "body": "- 升级 Vert.x 4.5.24 → 4.5.27, postgresql 42.7.3 → 42.7.11, logback 1.5.18 → 1.5.32, axios 1.13.5 → 1.16.1\n- 修复 JWT 签名验证和密码比较的时序攻击漏洞 (MessageDigest.isEqual)\n- 修复 AESUtils 使用不安全 Random 改为 SecureRandom\n- 修复登录用户枚举和异常信息泄露,统一错误提示\n- 修复 RateLimiter count++ 非原子操作 (AtomicInteger)\n- 修复 JsParserExecutor DCL 模式缺少 volatile\n- 修复 Token 日志泄露,仅打印前8字符\n- 修复 Playground 密码时序攻击和堆栈泄露\n- 所有 window.open 添加 noopener,noreferrer\n- LocalConstant 改用 ConcurrentHashMap 保证线程安全\n- Dockerfile 添加非 root 用户运行,secret.yml 加入 .gitignore",
          "is_bot": false,
          "headline": "fix(security): 安全漏洞修复与依赖升级",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T06:20:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f81b3852eedc53393639ff542c2932820ad00870",
          "body": null,
          "is_bot": false,
          "headline": "fix: Font Awesome CDN 换源为 s4.zstatic.net,避免 bootcdn 投毒风险",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T06:10:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "37abebf8f87c1f47efcc45387830fbcb0273b5ba",
          "body": null,
          "is_bot": false,
          "headline": "fix(QQscTool): 简化 filesetId 正则,避免反斜杠转义问题",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T05:58:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "79fab8c0d6bd37f337b6c911fae801472e48e0cd",
          "body": "- 前端 axios 对 HTTP 非2xx直接reject,catch块丢失后端错误信息,从 error.response.data.msg 提取实际错误展示给用户\n\n- QQscTool extractFilesetId 正则未适配 Nuxt 转义JSON格式",
          "is_bot": false,
          "headline": "fix: 修复前端错误信息丢失 & QQscTool filesetId 提取失败",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T05:46:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9b70fb2778c0e6596c7281883c6183491ee816a3",
          "body": null,
          "is_bot": false,
          "headline": "feat(QQscTool): 支持多文件和目录解析,通过 GetFileList API 实现递归目录导航",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T05:22:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bd2868748fbb4fb7a5eef73af5db307f9b2ee143",
          "body": null,
          "is_bot": false,
          "headline": "feat(Home): 从粘贴文本中自动提取分享链接",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T05:08:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f47bf13b51ca36d6e3740d990c579f4e0292dad",
          "body": null,
          "is_bot": false,
          "headline": "fix(QQscTool): 检测被和谐文件,避免返回无效直链",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T04:56:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d8b33afe057d2347f4030e2bd06eaff9c142d18",
          "body": "- fix: Home.vue 组件名 'App' → 'Home'\n- fix: DirectoryTree selectAll 补 parserUrl 空值检查\n- fix: 提取 previewBaseUrl 到 utils/constants.js,解除 ShowFile 对 Home 的耦合\n- fix: Home.vue focus 事件监听器改为命名函数,加 beforeUnmount 移除\n- fix: Playground.vue MutationObserver 保存引用,onUnmounted 中 disconnect\n- chore: 删除未使用的 api.js\n- chore: 删除 ClientLinks.vue 死代码 downloadClient/shouldShowDownloadButton\n- chore: 删除 DirectoryTree.vue 死代码 buildTree",
          "is_bot": false,
          "headline": "refactor: 前端代码质量清理",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T04:38:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "367f7c78a48e3606afc53678019c5b2a231c656c",
          "body": null,
          "is_bot": false,
          "headline": "Merge remote-tracking branch 'upstream/main'",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T04:17:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1bd23ec4ae27415d2da14037672cb6b10af93ee7",
          "body": null,
          "is_bot": false,
          "headline": "feat: 目录浏览添加复制直链按钮",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T04:13:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "346153267986421ae065d7c98c7a1ef8446201db",
          "body": "当文件系统直接读取 app.yml 失败时(如 Docker 卷挂载场景),\nConfigUtil.readConfig 现在会自动尝试 resources/ 子目录作为\nfallback,确保配置文件在各种部署方式下都能被正确加载。",
          "is_bot": false,
          "headline": "fix: ConfigUtil 读取配置失败时自动尝试 resources/ 目录",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T03:54:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4cfcdfa1f82e63ffdd481a4b244befe8a88ec3a7",
          "body": "当 app.yml 在当前目录不存在时,自动回退到 resources/app.yml,\n解决 Docker 部署时配置文件在 resources/ 子目录导致启动失败的问题。",
          "is_bot": false,
          "headline": "fix: Deploy 启动时自动从 resources/ 子目录查找配置文件",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T03:39:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ac2f526a1c0cf3a7054d8fe0dfe62bdc3feb3afc",
          "body": "- clientLinks 无 auth 时调用 URLParamUtil.addParam() 注入代理/认证配置\n- clientLink 补设 _requestOrigin 并调用 addParam()\n- getFileList/getFileDownUrl 补设 _requestOrigin 保持一致性\n- getDownLink 回退地址补上端口号",
          "is_bot": false,
          "headline": "fix: clientLinks/clientLink 补全参数注入,统一 _requestOrigin 设置",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T03:36:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cfb624e9e04ecf35c424f41e602ed0eefb4e41a5",
          "body": "- ServerApi 添加 resolveOrigin() 统一处理 X-Forwarded-Host 头\n- ParserApi.parse() 补设 _requestOrigin,修复 /v2/linkInfo 路径遗漏\n- 清理 app-dev.yml 残留注释",
          "is_bot": false,
          "headline": "fix: 统一 origin 解析逻辑,修复反向代理下 domainName 不一致",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T03:31:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1bf45b5c8eefde865a4da955595a71803779372",
          "body": "- app-dev.yml 注释掉默认 domainName\n- ParserApi 添加 getLinkPrefix() 支持 X-Forwarded-Host 反向代理\n- ServerApi 传递 _requestOrigin 到 otherParam 供 parser 层使用\n- URLParamUtil.addParam() 读不到配置时用 _requestOrigin 兜底\n- AppMain 启动日志 domainName 为空时显示本地端口地址",
          "is_bot": false,
          "headline": "feat: domainName 改为可选,未配置时自动从请求地址推断",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T03:27:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e2dc611aa4222300cd41c667c2cafbfa1c102e4c",
          "body": null,
          "is_bot": false,
          "headline": "fix: 剪切板自动读取失败时静默,仅手动读取时提示",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T03:02:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77c953626f91b1b36bede8c8e1b3be5a5ebff17b",
          "body": null,
          "is_bot": false,
          "headline": "fix: api.js baseURL 改为相对路径,修复反向代理下请求绕过代理的问题",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T02:59:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e14c9a9259a43f4689663ba9ab8502d41482425",
          "body": "项目版本(pom.xml revision)和parser版本(parserVersion)统一为单一来源,\n前端构建时自动同步,发版只需改根pom.xml的两个属性。",
          "is_bot": false,
          "headline": "refactor: 统一版本号管理,消除硬编码",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T02:57:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a4e8585e2c163e90b1cd1de95ac6df2cf76c5ef3",
          "body": "RouterHandlerFactory 的 onFailure 和 catch 两处均丢弃了\ne.getMessage(),导致前端无法获知具体报错原因。",
          "is_bot": false,
          "headline": "fix: 错误处理返回具体异常信息而非通用\"服务器内部错误\"",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T02:49:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf7d64916e4812c1b16441be6c58aea13efb75ed",
          "body": null,
          "is_bot": false,
          "headline": "fix: Groovy 正则改为字符串形式避免斜杠解析问题",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T02:37:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ac80bbfe84b1f637cfae2ebafe877216c76b85c",
          "body": null,
          "is_bot": false,
          "headline": "fix: gmavenplus-plugin 添加 Groovy 依赖",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T02:34:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cfe8352d450da5eaf02cdca9d14924ae9a255510",
          "body": "前端:vue.config.js 通过 DefinePlugin 注入 VUE_APP_GITHUB_REPO_URL,\nHome.vue/Playground.vue 中硬编码的 GitHub URL 全部改为动态变量。\n后端:parser/pom.xml 添加 gmavenplus-plugin 在 initialize 阶段从\ngit remote origin 解析 github.owner/github.repo,SCM 字段引用 property。",
          "is_bot": false,
          "headline": "refactor: GitHub URL 改为构建时自动从 git remote origin 识别",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T02:29:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a0fe61d3069f2931ad575f3a1bcc9f37630fc73",
          "body": "matcher.group(PWD) 在正则未定义 PWD 命名组时抛出\nIllegalArgumentException 而非 IllegalStateException,原 catch 未覆盖\n导致无提取码的链接(如QQ文件分享)返回 500。",
          "is_bot": false,
          "headline": "fix: ParserCreate 正则匹配 PWD 组时捕获 IllegalArgumentException",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T02:13:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c62e109affa5a2ffc156d8aad68e198a5bec1165",
          "body": "Home.vue、Playground.vue、parser/pom.xml 中的 qaiu/netdisk-fast-download\nURL 全部替换为 yukaidi1220/netdisk-fast-download。",
          "is_bot": false,
          "headline": "fix: 将硬编码的上游 GitHub URL 改为 fork 地址",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T02:09:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff400d3be3991215c37f3a3e5c893eb2dccd8f27",
          "body": "fix: 修复多个内存泄漏问题、资源管理缺陷及安全漏洞\n感谢 @yukaidi1220 的贡献! 🎉\n\n本次 PR 对项目做了一次全面深入的审查,涵盖了内存泄漏、资源管理、安全漏洞和代码缺陷,工作量很大,质量也很高,辛苦了👍\n\n几个小建议供参考:\n\nregisterPeriodicCleanup 注册时机:目前在 的 块中调用,类加载时机不能保证 Vertx 已完全就绪。建议后续改为实现 接口,在 启动后执行,时机更可控。CacheServiceImplstaticAppRunPostExecVerticle\n\nRateLimiter 并发安全:去掉 方向正确,但需确认 底层是 ,否则 与 并\n[…]\nHashMapremoveIfcomputevolatile int countcount++AtomicInteger\n\nPanBase 子类覆写 client:static 共享 WebClient 本身没问题,但如果有子类在构造中重新赋值 用于特殊场景(如代理),需确保这些子类有对应的逻辑,否则泄漏依然存在。this.client = WebClient.create(...)close()",
          "is_bot": false,
          "headline": "Merge pull request #186 from yukaidi1220/260529",
          "author_name": "qaiu",
          "author_login": "qaiu",
          "committed_at": "2026-05-29T01:59:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1d243b8f1b67a5cf6312c144f320c20981e71969",
          "body": "审查发现:\n- EXPOSE 6400 误导用户映射后端端口,实际只需 6401(反向代理)\n- TZ 环境变量不如 JVM -Duser.timezone 可靠",
          "is_bot": false,
          "headline": "fix: Docker EXPOSE 改为仅 6401,entrypoint 添加 -Duser.timezone",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T01:57:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "732a7f86fe1d0db698bd6c9fb2d9835599b80158",
          "body": "去掉 USER appuser,entrypoint 以 root 身份运行,先 chown 修复\nvolume 挂载目录的权限,再通过 su 降权到 appuser 执行应用。",
          "is_bot": false,
          "headline": "fix: Docker entrypoint 以 root 运行再降权,彻底解决 volume 权限问题",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T01:49:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c428f6a6de71ca62ee0f263ad9ec05ede807cad",
          "body": "JVM ShutdownHook 按注册逆序执行。将 AppMain 的 hook 移到 Deploy.start() 之前注册,\n使执行顺序变为:Deploy hook(关闭 Vert.x)-> AppMain hook(关闭 JDBCPoolInit/JsParserExecutor)。",
          "is_bot": false,
          "headline": "fix: ShutdownHook 注册顺序调整,确保 Vert.x 先于 JDBCPoolInit 关闭",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T01:01:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bff17f2d4e28bfa00a49518357c0eb9fa5f3a75f",
          "body": "原 nohup+tail-f 模式下,Docker SIGTERM 发给 tail 而非 Java 进程,\n导致 ShutdownHook 永远不会触发,资源无法优雅关闭。\n改为 exec 让 Java 成为 PID 1,正确接收信号。\n同时支持通过 JVM_XMX/JVM_OPTS 环境变量自定义 JVM 参数。",
          "is_bot": false,
          "headline": "fix: run.sh 改用 exec 直接运行 Java,修复 Docker 中 ShutdownHook 失效",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T00:46:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df600eaada247ed76c8807170fa35e8c04c4a6d7",
          "body": "appuser 运行时无法在 /app 下创建新子目录,H2 尝试创建 /app/db/nfdData.mv.db\n时因目录不存在导致 AccessDeniedException。在 chown 之前预创建目录。",
          "is_bot": false,
          "headline": "fix: Dockerfile 预创建 db 和 logs 目录,修复非 root 用户无法写入 H2 数据库",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-29T00:34:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd4027c9312c9c085035497d721da6a9021c4b2c",
          "body": "- LzTool:221 — obj.get(\"url\").toString() 改为 String.valueOf()\n- IzToolWithAuth:434 — get(\"uuid\").toString() 添加 null 检查",
          "is_bot": false,
          "headline": "fix: LzTool/IzToolWithAuth 最后两处 .get().toString() NPE 风险",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T23:54:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1569195e46334351700fbce4e84b5ac1eb1ea0b",
          "body": "审查发现 9c3945f 因模块依赖问题回退了 ShutdownHook 中的清理逻辑,\n导致 JDBCPoolInit 连接池和 JsParserExecutor WorkerExecutor 在进程退出时\n无法被显式关闭。将清理逻辑移到 web-service 模块的 AppMain(可依赖所有模块)。",
          "is_bot": false,
          "headline": "fix: AppMain 注册 ShutdownHook 关闭 JDBCPoolInit 和 JsParserExecutor",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T23:22:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6e88f0c53effc9a6dcff34689e2afa4d6e450bb",
          "body": "审查发现 42925c8 引入了重复的 StandardCharsets import,且 getStackTrace\n方法在移除堆栈泄露后无任何调用方,属于死代码。",
          "is_bot": false,
          "headline": "fix: PlaygroundApi 移除重复 import 和未使用的 getStackTrace 死代码",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T23:06:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a9fa81e560afc2b144e153f10b9857a44313928",
          "body": "审查发现 static 块中注册定时任务存在时序风险:如果 CacheServiceImpl 在 Vertx\n初始化前被加载,定时任务将注册失败且无法恢复。添加 cleanupRegistered 标志防止\n重复注册,Vertx 未就绪时跳过并等待下次调用。",
          "is_bot": false,
          "headline": "fix: CacheManager registerPeriodicCleanup 添加防重入和 Vertx 就绪检查",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T23:02:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5eed1fdfa03cceebde13d2dd17cc39d1ee0f167d",
          "body": "用户明确表示不需要改动 MyData 的 TODO,回退 741d7aa 对该文件的修改。",
          "is_bot": false,
          "headline": "revert: 回退 MyData.java 的构造函数修改,恢复为空 TODO",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T22:58:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf7fc4f5023d17631e26d5f569f20fe3a31924ee",
          "body": "token 脱敏日志在 token 可能为 null 时会抛 NPE,添加 null 检查。",
          "is_bot": false,
          "headline": "fix: FjTool login() 中 token.substring 添加 null 保护",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T22:58:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0ea31d631a40bd24c8dea425260ae0c77e9e7f57",
          "body": "并发安全修复引入的 h 变量创建后从未使用,后续请求仍通过\nsetTemplateParam(\"appToken\", token) 传递 token。删除死代码并为\n同一行的 token.substring 添加 null 保护。",
          "is_bot": false,
          "headline": "fix: 移除 IzTool/IzToolWithAuth login() 中未使用的 h 变量(死代码)",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T22:57:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "74840ab63f869b8a999cbe6a5a02f82c966f6c73",
          "body": "将 catch(Exception) 改为 catch(IllegalArgumentException),\n只捕获 URLDecoder.decode 在遇到非法百分比编码时抛出的具体异常。",
          "is_bot": false,
          "headline": "fix(FsTool): 收窄 parseFileNameFromContentDisposition 中的 catch 异常类型",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T22:38:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31f33339f13d57f4b83be5d56610da4a9adf9f7d",
          "body": "当 otherParam 中缺少 \"paramJson\" 键时,后续 getString 调用会抛出 NPE。\n添加 null 检查并提前返回失败。",
          "is_bot": false,
          "headline": "fix(FsTool): 修复 parseById 中 get(\"paramJson\") 可能导致的 NPE",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T22:37:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0a0d0dc47dfbfcb1a774b7b1f9dc78bc74030d4",
          "body": "当 otherParam 中缺少 \"paramJson\" 键时,后续 getString 调用会抛出 NPE。\n添加 null 检查并提前返回失败。",
          "is_bot": false,
          "headline": "fix(FjTool): 修复 parseById 中 get(\"paramJson\") 可能导致的 NPE",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T22:37:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0cd77ee9b99a8ff98cbb5515d100907431306297",
          "body": "当 otherParam 中缺少 \"uuid\" 键时,原代码直接调用 .toString() 会抛出\nNullPointerException。改为先取出 Object 再做 null 检查。",
          "is_bot": false,
          "headline": "fix(IzTool): 修复 parseFileList 中 get(\"uuid\") 可能导致的 NPE",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T22:36:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "741d7aa8cadfae73c9488798c44cc8b026f128e1",
          "body": "Implement the MyData(JsonObject) constructor to deserialize `id` and\n`maxSize` fields from the provided JsonObject, replacing the empty TODO.",
          "is_bot": false,
          "headline": "fix: implement MyData @DataObject constructor deserialization",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T22:28:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d06a80dc7363323b3d5bb366ff7b7d253601039a",
          "body": "Replace 2 instances of `catch (Exception ignored)` with\n`catch (MalformedURLException ignored)` around `new java.net.URL(url)`\ncalls, since that constructor only throws MalformedURLException.",
          "is_bot": false,
          "headline": "fix: narrow catch exception type in LzTool.java",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T22:28:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "86b9c43b8b09be283e707cbb6d56f8e06abb5890",
          "body": "Replace 5 instances of `catch (Exception ignored)` with\n`catch (IllegalStateException ignored)` around matcher.group() calls,\nsince that method only throws IllegalStateException when a named group\ndoes not exist.",
          "is_bot": false,
          "headline": "fix: narrow catch exception type in ParserCreate.java",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T22:27:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "206981d4b41abe7609ed6821f4cdd08b5a66a36e",
          "body": "原 ctx.failure().getMessage() 是故意设计——RateLimiter 等组件通过 promise.fail()\n传递用户友好的错误消息(如\"请求次数太多了\"),这些消息需要通过 failureHandler\n返回给客户端。改为固定\"服务器内部错误\"会导致这些消息丢失。\n仅添加 null 检查防止 NPE。",
          "is_bot": false,
          "headline": "revert: RouterHandlerFactory failureHandler 恢复返回 failure message",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T22:15:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d5831b5f4c3b2b8f8c7d1fc06f32b9e621f3025",
          "body": "- UserServiceImpl: 3处\"用户不存在\"统一改为\"用户名或密码错误\"/\"认证失败\"\n- RouterHandlerFactory: failureHandler 中 ctx.failure().getMessage() 改为\"服务器内部错误\"",
          "is_bot": false,
          "headline": "fix: 彻底消除用户枚举和异常信息泄露的遗留问题",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T21:53:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ca63985bd46e95cef029e7c76b2c13caa13718d",
          "body": "该文件仅包含空行,无实际测试代码,直接删除。",
          "is_bot": false,
          "headline": "fix(test): 删除空的 ParserApiClientLinkTest 文件",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T20:06:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06416a4e5f6a2280116d2e1bd30d757702f31743",
          "body": "将各 @Test 方法中局部创建的 Vertx.vertx() 统一为成员变量,\n通过 @Before 创建并初始化,@After 关闭,避免资源泄漏。",
          "is_bot": false,
          "headline": "fix(test): JsFetchBridgeTest Vertx 资源泄漏修复",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T20:06:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "88739e8d1add30d1646cfbe49bf688045a1d8b3c",
          "body": "将各 @Test 方法中局部创建的 Vertx.vertx() 统一为成员变量,\n通过 @Before 创建并初始化,@After 关闭,避免资源泄漏。",
          "is_bot": false,
          "headline": "fix(test): JsParserTest Vertx 资源泄漏修复",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T20:04:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ffaba4f496b787a74a492490c3608916286cef65",
          "body": "将各 @Test 方法中局部创建的 Vertx.vertx() 统一为成员变量,\n通过 @Before 创建并初始化,@After 关闭,避免资源泄漏。",
          "is_bot": false,
          "headline": "fix(test): BaiduPhotoParserTest Vertx 资源泄漏修复",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T20:03:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4f94a2bc766552c972e21118ac4b17c50f185e1",
          "body": "…Client, PlaygroundApi, LogStatistics, CacheServiceImpl, JsPlaygroundExecutor, JsPlaygroundLogger",
          "is_bot": false,
          "headline": "fix: replace printStackTrace/System.out.println with logger in JsHttp…",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T19:48:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49a391824467d5e78f667c553b50df7a098edd84",
          "body": "…fiableMap; add final to UNIQUE_PREFIX",
          "is_bot": false,
          "headline": "fix: replace double-brace init with static block + Collections.unmodi…",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T19:40:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "caddff567f6c8aac0134e6ab5885b2198396c724",
          "body": null,
          "is_bot": false,
          "headline": "fix: replace System.out.println with logger in IpExtractor",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T19:39:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aed9e9f10d0192ec1b0ab54ee3c843e31e807789",
          "body": "…til; add final to static fields",
          "is_bot": false,
          "headline": "fix: replace System.out.println/printStackTrace with logger in ReqIpU…",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T19:39:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6557b493830091fff2b7d2c85edc9ab468afa235",
          "body": null,
          "is_bot": false,
          "headline": "fix: replace System.out.println with log.debug in MkgsTool",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T19:38:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "082cc4c7436c3651fd29d075ef99a480e6e9935b",
          "body": "…g output",
          "is_bot": false,
          "headline": "fix: replace System.out.println with log in PodTool; mask token in lo…",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T19:38:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e261ebe698d7c0394646514328dbedf1945050f0",
          "body": null,
          "is_bot": false,
          "headline": "fix: replace System.out.println with log.debug in WsTool",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T19:37:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a0dc69186bcde0bca118e57f94d69f5f43b8b76",
          "body": "Remove debug logging from production code while preserving\nconsole.error and console.warn for actual error/warning cases.",
          "is_bot": false,
          "headline": "chore: remove debug console.log statements",
          "author_name": "yukaidi",
          "author_login": "yukaidi1220",
          "committed_at": "2026-05-28T19:28:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 21,
      "commits_last_year": 544,
      "latest_release_at": "2026-07-21T07:32:52Z",
      "latest_release_tag": "dependabot/npm_and_yarn/web-front/npm_and_yarn-c42958dede",
      "releases_from_tags": false,
      "days_since_last_push": 2,
      "active_weeks_last_year": 40,
      "days_since_latest_release": 3,
      "mean_days_between_releases": 18.9
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "cn.qaiu:core",
          "exists": true,
          "license": "MIT License",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": false,
          "registry_url": "https://central.sonatype.com/artifact/cn.qaiu/core",
          "is_deprecated": false,
          "latest_version": "1.2.3",
          "repository_url": "https://github.com/qaiu/vxcore/tree/main/core",
          "versions_count": 5,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-02-26T04:41:19Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 148
        },
        {
          "name": "cn.qaiu:parser",
          "exists": true,
          "license": "MIT License",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/cn.qaiu/parser",
          "is_deprecated": false,
          "latest_version": "10.2.5",
          "repository_url": "https://github.com/qaiu/netdisk-fast-download",
          "versions_count": 12,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-02-25T08:11:19Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 149
        },
        {
          "name": "cn.qaiu:core-database",
          "exists": true,
          "license": "MIT License",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": false,
          "registry_url": "https://central.sonatype.com/artifact/cn.qaiu/core-database",
          "is_deprecated": false,
          "latest_version": "1.2.3",
          "repository_url": "https://github.com/qaiu/vxcore/tree/main/core-database",
          "versions_count": 5,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-02-26T04:41:19Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 148
        }
      ]
    },
    "popularity": {
      "forks": 265,
      "stars": 3008,
      "watchers": 14,
      "fork_history": {
        "days": [
          {
            "date": "2023-07-08",
            "count": 1
          },
          {
            "date": "2023-08-03",
            "count": 1
          },
          {
            "date": "2023-08-20",
            "count": 1
          },
          {
            "date": "2023-08-27",
            "count": 1
          },
          {
            "date": "2023-09-15",
            "count": 1
          },
          {
            "date": "2023-09-23",
            "count": 1
          },
          {
            "date": "2023-09-25",
            "count": 6
          },
          {
            "date": "2023-09-26",
            "count": 1
          },
          {
            "date": "2023-09-28",
            "count": 1
          },
          {
            "date": "2023-09-29",
            "count": 1
          },
          {
            "date": "2023-10-05",
            "count": 1
          },
          {
            "date": "2023-10-08",
            "count": 1
          },
          {
            "date": "2023-10-10",
            "count": 1
          },
          {
            "date": "2023-10-13",
            "count": 1
          },
          {
            "date": "2023-10-14",
            "count": 1
          },
          {
            "date": "2023-10-16",
            "count": 1
          },
          {
            "date": "2023-10-18",
            "count": 1
          },
          {
            "date": "2023-10-20",
            "count": 1
          },
          {
            "date": "2023-10-23",
            "count": 1
          },
          {
            "date": "2023-11-02",
            "count": 1
          },
          {
            "date": "2023-11-03",
            "count": 1
          },
          {
            "date": "2023-11-08",
            "count": 1
          },
          {
            "date": "2023-11-20",
            "count": 1
          },
          {
            "date": "2023-11-26",
            "count": 1
          },
          {
            "date": "2023-11-27",
            "count": 1
          },
          {
            "date": "2023-12-04",
            "count": 1
          },
          {
            "date": "2023-12-07",
            "count": 2
          },
          {
            "date": "2023-12-08",
            "count": 1
          },
          {
            "date": "2023-12-16",
            "count": 1
          },
          {
            "date": "2023-12-18",
            "count": 1
          },
          {
            "date": "2023-12-25",
            "count": 1
          },
          {
            "date": "2023-12-28",
            "count": 1
          },
          {
            "date": "2023-12-31",
            "count": 1
          },
          {
            "date": "2024-01-05",
            "count": 1
          },
          {
            "date": "2024-01-08",
            "count": 1
          },
          {
            "date": "2024-01-13",
            "count": 1
          },
          {
            "date": "2024-01-15",
            "count": 1
          },
          {
            "date": "2024-01-19",
            "count": 1
          },
          {
            "date": "2024-01-29",
            "count": 1
          },
          {
            "date": "2024-02-04",
            "count": 1
          },
          {
            "date": "2024-02-05",
            "count": 1
          },
          {
            "date": "2024-02-08",
            "count": 1
          },
          {
            "date": "2024-02-11",
            "count": 1
          },
          {
            "date": "2024-02-15",
            "count": 1
          },
          {
            "date": "2024-02-23",
            "count": 1
          },
          {
            "date": "2024-02-29",
            "count": 1
          },
          {
            "date": "2024-03-05",
            "count": 1
          },
          {
            "date": "2024-03-12",
            "count": 1
          },
          {
            "date": "2024-03-13",
            "count": 1
          },
          {
            "date": "2024-03-17",
            "count": 1
          },
          {
            "date": "2024-04-02",
            "count": 2
          },
          {
            "date": "2024-04-15",
            "count": 1
          },
          {
            "date": "2024-04-26",
            "count": 1
          },
          {
            "date": "2024-04-30",
            "count": 1
          },
          {
            "date": "2024-05-25",
            "count": 1
          },
          {
            "date": "2024-06-14",
            "count": 1
          },
          {
            "date": "2024-06-23",
            "count": 1
          },
          {
            "date": "2024-07-08",
            "count": 1
          },
          {
            "date": "2024-07-18",
            "count": 1
          },
          {
            "date": "2024-07-21",
            "count": 1
          },
          {
            "date": "2024-07-22",
            "count": 2
          },
          {
            "date": "2024-07-25",
            "count": 1
          },
          {
            "date": "2024-07-27",
            "count": 1
          },
          {
            "date": "2024-08-04",
            "count": 1
          },
          {
            "date": "2024-08-08",
            "count": 1
          },
          {
            "date": "2024-09-22",
            "count": 2
          },
          {
            "date": "2024-09-23",
            "count": 2
          },
          {
            "date": "2024-09-29",
            "count": 1
          },
          {
            "date": "2024-10-10",
            "count": 1
          },
          {
            "date": "2024-10-12",
            "count": 3
          },
          {
            "date": "2024-10-21",
            "count": 1
          },
          {
            "date": "2024-10-22",
            "count": 2
          },
          {
            "date": "2024-10-25",
            "count": 2
          },
          {
            "date": "2024-10-29",
            "count": 1
          },
          {
            "date": "2024-10-30",
            "count": 5
          },
          {
            "date": "2024-10-31",
            "count": 2
          },
          {
            "date": "2024-11-01",
            "count": 1
          },
          {
            "date": "2024-11-04",
            "count": 4
          },
          {
            "date": "2024-11-05",
            "count": 1
          },
          {
            "date": "2024-11-06",
            "count": 1
          },
          {
            "date": "2024-11-08",
            "count": 2
          },
          {
            "date": "2024-11-15",
            "count": 1
          },
          {
            "date": "2024-11-17",
            "count": 1
          },
          {
            "date": "2024-11-22",
            "count": 1
          },
          {
            "date": "2024-11-29",
            "count": 1
          },
          {
            "date": "2024-12-13",
            "count": 1
          },
          {
            "date": "2024-12-17",
            "count": 1
          },
          {
            "date": "2024-12-19",
            "count": 1
          },
          {
            "date": "2024-12-20",
            "count": 1
          },
          {
            "date": "2024-12-31",
            "count": 1
          },
          {
            "date": "2025-01-02",
            "count": 2
          },
          {
            "date": "2025-01-03",
            "count": 1
          },
          {
            "date": "2025-01-06",
            "count": 1
          },
          {
            "date": "2025-01-08",
            "count": 1
          },
          {
            "date": "2025-01-10",
            "count": 1
          },
          {
            "date": "2025-01-13",
            "count": 3
          },
          {
            "date": "2025-01-14",
            "count": 2
          },
          {
            "date": "2025-01-15",
            "count": 1
          },
          {
            "date": "2025-01-19",
            "count": 1
          },
          {
            "date": "2025-01-21",
            "count": 1
          },
          {
            "date": "2025-01-22",
            "count": 1
          },
          {
            "date": "2025-02-08",
            "count": 1
          },
          {
            "date": "2025-02-22",
            "count": 2
          },
          {
            "date": "2025-03-12",
            "count": 1
          },
          {
            "date": "2025-03-19",
            "count": 1
          },
          {
            "date": "2025-03-24",
            "count": 1
          },
          {
            "date": "2025-03-31",
            "count": 1
          },
          {
            "date": "2025-04-01",
            "count": 1
          },
          {
            "date": "2025-04-14",
            "count": 1
          },
          {
            "date": "2025-04-15",
            "count": 1
          },
          {
            "date": "2025-04-16",
            "count": 1
          },
          {
            "date": "2025-04-18",
            "count": 1
          },
          {
            "date": "2025-04-21",
            "count": 1
          },
          {
            "date": "2025-05-01",
            "count": 1
          },
          {
            "date": "2025-05-04",
            "count": 1
          },
          {
            "date": "2025-05-13",
            "count": 1
          },
          {
            "date": "2025-05-19",
            "count": 1
          },
          {
            "date": "2025-05-27",
            "count": 1
          },
          {
            "date": "2025-05-31",
            "count": 1
          },
          {
            "date": "2025-06-03",
            "count": 1
          },
          {
            "date": "2025-06-06",
            "count": 1
          },
          {
            "date": "2025-06-09",
            "count": 1
          },
          {
            "date": "2025-06-12",
            "count": 1
          },
          {
            "date": "2025-06-15",
            "count": 1
          },
          {
            "date": "2025-06-17",
            "count": 1
          },
          {
            "date": "2025-06-19",
            "count": 1
          },
          {
            "date": "2025-06-20",
            "count": 3
          },
          {
            "date": "2025-07-01",
            "count": 1
          },
          {
            "date": "2025-07-17",
            "count": 1
          },
          {
            "date": "2025-07-19",
            "count": 1
          },
          {
            "date": "2025-07-29",
            "count": 2
          },
          {
            "date": "2025-08-28",
            "count": 1
          },
          {
            "date": "2025-08-29",
            "count": 1
          },
          {
            "date": "2025-08-30",
            "count": 2
          },
          {
            "date": "2025-09-09",
            "count": 1
          },
          {
            "date": "2025-09-10",
            "count": 1
          },
          {
            "date": "2025-09-16",
            "count": 1
          },
          {
            "date": "2025-09-20",
            "count": 1
          },
          {
            "date": "2025-09-21",
            "count": 1
          },
          {
            "date": "2025-09-25",
            "count": 1
          },
          {
            "date": "2025-10-03",
            "count": 3
          },
          {
            "date": "2025-10-04",
            "count": 1
          },
          {
            "date": "2025-10-07",
            "count": 6
          },
          {
            "date": "2025-10-08",
            "count": 4
          },
          {
            "date": "2025-10-09",
            "count": 1
          },
          {
            "date": "2025-10-13",
            "count": 1
          },
          {
            "date": "2025-10-19",
            "count": 2
          },
          {
            "date": "2025-10-21",
            "count": 1
          },
          {
            "date": "2025-10-22",
            "count": 1
          },
          {
            "date": "2025-10-24",
            "count": 1
          },
          {
            "date": "2025-10-25",
            "count": 1
          },
          {
            "date": "2025-10-31",
            "count": 1
          },
          {
            "date": "2025-11-01",
            "count": 2
          },
          {
            "date": "2025-11-02",
            "count": 1
          },
          {
            "date": "2025-11-03",
            "count": 1
          },
          {
            "date": "2025-11-20",
            "count": 1
          },
          {
            "date": "2025-11-25",
            "count": 1
          },
          {
            "date": "2025-11-27",
            "count": 2
          },
          {
            "date": "2025-11-30",
            "count": 1
          },
          {
            "date": "2025-12-05",
            "count": 1
          },
          {
            "date": "2025-12-06",
            "count": 1
          },
          {
            "date": "2025-12-15",
            "count": 1
          },
          {
            "date": "2025-12-16",
            "count": 1
          },
          {
            "date": "2025-12-18",
            "count": 1
          },
          {
            "date": "2025-12-21",
            "count": 1
          },
          {
            "date": "2026-01-03",
            "count": 1
          },
          {
            "date": "2026-01-07",
            "count": 1
          },
          {
            "date": "2026-01-09",
            "count": 1
          },
          {
            "date": "2026-01-10",
            "count": 2
          },
          {
            "date": "2026-01-13",
            "count": 1
          },
          {
            "date": "2026-01-19",
            "count": 1
          },
          {
            "date": "2026-01-20",
            "count": 2
          },
          {
            "date": "2026-01-24",
            "count": 1
          },
          {
            "date": "2026-02-02",
            "count": 1
          },
          {
            "date": "2026-02-04",
            "count": 1
          },
          {
            "date": "2026-02-06",
            "count": 1
          },
          {
            "date": "2026-02-12",
            "count": 1
          },
          {
            "date": "2026-03-07",
            "count": 1
          },
          {
            "date": "2026-03-08",
            "count": 1
          },
          {
            "date": "2026-03-19",
            "count": 1
          },
          {
            "date": "2026-03-21",
            "count": 2
          },
          {
            "date": "2026-04-05",
            "count": 1
          },
          {
            "date": "2026-04-10",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 2
          },
          {
            "date": "2026-04-16",
            "count": 1
          },
          {
            "date": "2026-04-19",
            "count": 1
          },
          {
            "date": "2026-04-22",
            "count": 1
          },
          {
            "date": "2026-04-24",
            "count": 1
          },
          {
            "date": "2026-04-27",
            "count": 1
          },
          {
            "date": "2026-05-01",
            "count": 1
          },
          {
            "date": "2026-05-02",
            "count": 1
          },
          {
            "date": "2026-05-04",
            "count": 1
          },
          {
            "date": "2026-05-05",
            "count": 1
          },
          {
            "date": "2026-05-14",
            "count": 1
          },
          {
            "date": "2026-05-19",
            "count": 1
          },
          {
            "date": "2026-05-28",
            "count": 1
          },
          {
            "date": "2026-06-06",
            "count": 1
          },
          {
            "date": "2026-06-24",
            "count": 1
          },
          {
            "date": "2026-07-02",
            "count": 1
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-08",
            "count": 2
          },
          {
            "date": "2026-07-10",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 2
          },
          {
            "date": "2026-07-14",
            "count": 2
          },
          {
            "date": "2026-07-15",
            "count": 1
          },
          {
            "date": "2026-07-19",
            "count": 1
          },
          {
            "date": "2026-07-20",
            "count": 1
          },
          {
            "date": "2026-07-21",
            "count": 1
          },
          {
            "date": "2026-07-24",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 261,
        "total_forks": 265
      },
      "star_history": null,
      "open_issues_and_prs": 18
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [
        "web-service/doc/openapi.json"
      ],
      "has_devcontainer": true,
      "typecheck_configs": [
        "parser/src/main/resources/custom-parsers/jsconfig.json",
        "web-front/jsconfig.json"
      ],
      "toolchain_manifests": [
        "core-database/pom.xml",
        "core/pom.xml",
        "parser/pom.xml",
        "pom.xml",
        "web-service/pom.xml"
      ],
      "largest_source_bytes": 89795,
      "source_files_sampled": 252,
      "oversized_source_files": 1,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "core-database/pom.xml",
        "core/pom.xml",
        "package.json",
        "parser/pom.xml",
        "pom.xml",
        "web-front/package.json",
        "web-service/pom.xml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "com.fasterxml.jackson.core:jackson-databind",
            "direct": true,
            "version": "2.18.3",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-3pjw-73gf-8qr5",
              "GHSA-5gvw-p9qm-jgwh",
              "GHSA-5jmj-h7xm-6q6v",
              "GHSA-hgj6-7826-r7m5",
              "GHSA-j3rv-43j4-c7qm",
              "GHSA-mhm7-754m-9p8w",
              "GHSA-rmj7-2vxq-3g9f"
            ],
            "fixed_version": "3.2.1",
            "advisory_count": 7,
            "oldest_advisory_days": 30
          },
          {
            "name": "com.fasterxml.jackson.core:jackson-core",
            "direct": false,
            "version": "2.16.1",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-72hv-8253-57qq",
              "GHSA-r7wm-3cxj-wff9"
            ],
            "fixed_version": "3.2.1",
            "advisory_count": 2,
            "oldest_advisory_days": 146
          },
          {
            "name": "io.netty:netty-codec",
            "direct": false,
            "version": "4.1.130.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-558v-64gr-wgg4",
              "GHSA-mj4r-2hfc-f8p6"
            ],
            "fixed_version": "4.2.16.Final",
            "advisory_count": 2,
            "oldest_advisory_days": 78
          },
          {
            "name": "io.netty:netty-codec-dns",
            "direct": false,
            "version": "4.1.130.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-cm33-6792-r9fm",
              "GHSA-mfg7-5gfp-c4w3"
            ],
            "fixed_version": "4.2.16.Final",
            "advisory_count": 2,
            "oldest_advisory_days": 78
          },
          {
            "name": "io.netty:netty-codec-http",
            "direct": false,
            "version": "4.1.130.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-38f8-5428-x5cv",
              "GHSA-4mp9-239f-g9hg",
              "GHSA-57rv-r2g8-2cj3",
              "GHSA-6cqp-g7gg-8hr5",
              "GHSA-6jqx-86gh-f27w",
              "GHSA-f6hv-jmp6-3vwv",
              "GHSA-gcjf-9mgh-3p7g",
              "GHSA-hvcg-qmg6-jm4c",
              "GHSA-jppx-w49h-x2qq",
              "GHSA-m4cv-j2px-7723"
            ],
            "fixed_version": "4.2.16.Final",
            "advisory_count": 15,
            "oldest_advisory_days": 119
          },
          {
            "name": "io.netty:netty-codec-http2",
            "direct": false,
            "version": "4.1.130.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-563q-j3cm-6jxm",
              "GHSA-5x3r-wrvg-rp6q",
              "GHSA-c2gf-v879-257j",
              "GHSA-c69g-56f8-xwqj",
              "GHSA-f6hv-jmp6-3vwv",
              "GHSA-w9fj-cfpg-grvv"
            ],
            "fixed_version": "4.2.16.Final",
            "advisory_count": 6,
            "oldest_advisory_days": 119
          },
          {
            "name": "io.netty:netty-handler",
            "direct": false,
            "version": "4.1.130.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-3qp7-7mw8-wx86",
              "GHSA-c653-97m9-rcg9",
              "GHSA-x4gw-5cx5-pgmh"
            ],
            "fixed_version": "4.2.15.Final",
            "advisory_count": 3,
            "oldest_advisory_days": 45
          },
          {
            "name": "io.netty:netty-resolver-dns",
            "direct": false,
            "version": "4.1.130.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 8.7,
            "advisory_ids": [
              "GHSA-5pvg-856g-cp85",
              "GHSA-676x-f7gg-47vc",
              "GHSA-xmv7-r254-6q78"
            ],
            "fixed_version": "4.2.15.Final",
            "advisory_count": 3,
            "oldest_advisory_days": 45
          },
          {
            "name": "ch.qos.logback:logback-core",
            "direct": false,
            "version": "1.5.17",
            "severity": "moderate",
            "ecosystem": "maven",
            "cvss_score": 4.8,
            "advisory_ids": [
              "GHSA-25qh-j22f-pwp8",
              "GHSA-jhq6-gfmj-v8fx",
              "GHSA-p47f-322f-whfh",
              "GHSA-qqpg-mvqg-649v"
            ],
            "fixed_version": "1.5.34",
            "advisory_count": 4,
            "oldest_advisory_days": 296
          },
          {
            "name": "io.netty:netty-handler-proxy",
            "direct": false,
            "version": "4.1.130.Final",
            "severity": "moderate",
            "ecosystem": "maven",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-45q3-82m4-75jr"
            ],
            "fixed_version": "4.2.13.Final",
            "advisory_count": 1,
            "oldest_advisory_days": 78
          },
          {
            "name": "io.vertx:vertx-core",
            "direct": false,
            "version": "4.5.25",
            "severity": "moderate",
            "ecosystem": "maven",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-3g76-f9xq-8vp6"
            ],
            "fixed_version": "5.0.12",
            "advisory_count": 1,
            "oldest_advisory_days": 76
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 8,
          "moderate": 3
        },
        "advisory_count": 46,
        "affected_count": 11,
        "assessed_count": 67,
        "malicious_count": 0,
        "assessed_package": "maven:cn.qaiu:core@1.2.3",
        "unassessed_count": 0,
        "direct_affected_count": 1
      },
      "ecosystems": [
        "maven",
        "npm"
      ],
      "dependencies": [
        {
          "name": "cn.qaiu:core",
          "manifest": "core-database/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "com.h2database:h2",
          "manifest": "core-database/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "2.2.220"
        },
        {
          "name": "com.zaxxer:HikariCP",
          "manifest": "core-database/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "5.0.1"
        },
        {
          "name": "org.apache.commons:commons-lang3",
          "manifest": "core-database/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "3.18.0"
        },
        {
          "name": "io.vertx:vertx-codegen",
          "manifest": "core-database/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${vertx.version}"
        },
        {
          "name": "io.vertx:vertx-sql-client-templates",
          "manifest": "core-database/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${vertx.version}"
        },
        {
          "name": "io.vertx:vertx-jdbc-client",
          "manifest": "core-database/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${vertx.version}"
        },
        {
          "name": "com.mysql:mysql-connector-j",
          "manifest": "core-database/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "9.2.0"
        },
        {
          "name": "org.postgresql:postgresql",
          "manifest": "core-database/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "42.7.11"
        },
        {
          "name": "ch.qos.logback:logback-classic",
          "manifest": "core/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${logback.version}"
        },
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "core/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${slf4j.version}"
        },
        {
          "name": "io.vertx:vertx-web",
          "manifest": "core/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.vertx:vertx-codegen",
          "manifest": "core/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.vertx:vertx-config",
          "manifest": "core/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.vertx:vertx-config-yaml",
          "manifest": "core/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.vertx:vertx-service-proxy",
          "manifest": "core/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.vertx:vertx-web-proxy",
          "manifest": "core/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.reflections:reflections",
          "manifest": "core/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${org.reflections.version}"
        },
        {
          "name": "org.apache.commons:commons-lang3",
          "manifest": "core/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${commons-lang3.version}"
        },
        {
          "name": "com.fasterxml.jackson.core:jackson-databind",
          "manifest": "core/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jackson.version}"
        },
        {
          "name": "com.fasterxml.jackson.datatype:jackson-datatype-jsr310",
          "manifest": "core/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jackson.version}"
        },
        {
          "name": "mvn",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.5.0"
        },
        {
          "name": "ch.qos.logback:logback-classic",
          "manifest": "parser/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${logback.version}"
        },
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "parser/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${slf4j.version}"
        },
        {
          "name": "io.vertx:vertx-web-client",
          "manifest": "parser/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${vertx.version}"
        },
        {
          "name": "org.apache.commons:commons-lang3",
          "manifest": "parser/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${commons-lang3.version}"
        },
        {
          "name": "org.openjdk.nashorn:nashorn-core",
          "manifest": "parser/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "15.4"
        },
        {
          "name": "org.brotli:dec",
          "manifest": "parser/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "0.1.2"
        },
        {
          "name": "org.apache.groovy:groovy",
          "manifest": "parser/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "4.0.24"
        },
        {
          "name": "io.vertx:vertx-dependencies",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${vertx.version}"
        },
        {
          "name": "ch.qos.logback:logback-classic",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${logback.version}"
        },
        {
          "name": "ch.qos.logback:logback-core",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${logback.version}"
        },
        {
          "name": "cn.qaiu:core",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${revision}"
        },
        {
          "name": "cn.qaiu:core-database",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${revision}"
        },
        {
          "name": "cn.qaiu:parser",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${parserVersion}"
        },
        {
          "name": "@element-plus/icons-vue",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.3.1"
        },
        {
          "name": "@monaco-editor/loader",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.4.0"
        },
        {
          "name": "@vueuse/core",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "^11.2.0"
        },
        {
          "name": "axios",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "1.16.1"
        },
        {
          "name": "clipboard",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.11"
        },
        {
          "name": "core-js",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.8.3"
        },
        {
          "name": "crypto-js",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.0"
        },
        {
          "name": "element-plus",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "2.11.3"
        },
        {
          "name": "monaco-editor",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.55.1"
        },
        {
          "name": "qrcode",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.5.4"
        },
        {
          "name": "splitpanes",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.4"
        },
        {
          "name": "vue",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.5.12"
        },
        {
          "name": "vue-clipboard3",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.0"
        },
        {
          "name": "vue-router",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.5.1"
        },
        {
          "name": "vue3-json-viewer",
          "manifest": "web-front/package.json",
          "ecosystem": "npm",
          "version_constraint": "2.2.2"
        },
        {
          "name": "cn.qaiu:core",
          "manifest": "web-service/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "cn.qaiu:core-database",
          "manifest": "web-service/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "cn.qaiu:parser",
          "manifest": "web-service/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "ch.qos.logback:logback-classic",
          "manifest": "web-service/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${logback.version}"
        },
        {
          "name": "org.fusesource.jansi:jansi",
          "manifest": "web-service/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.17.1"
        },
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "web-service/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${slf4j.version}"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "ch.qos.logback:logback-classic",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "ch.qos.logback:logback-classic",
            "direct": true,
            "version": "1.5.8",
            "ecosystem": "maven"
          },
          {
            "name": "ch.qos.logback:logback-core",
            "direct": true,
            "version": "1.5.8",
            "ecosystem": "maven"
          },
          {
            "name": "cn.qaiu:core",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "cn.qaiu:core",
            "direct": true,
            "version": "0.1.8",
            "ecosystem": "maven"
          },
          {
            "name": "cn.qaiu:core-database",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "cn.qaiu:core-database",
            "direct": true,
            "version": "0.1.8",
            "ecosystem": "maven"
          },
          {
            "name": "cn.qaiu:parser",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "cn.qaiu:parser",
            "direct": true,
            "version": "0.1.8",
            "ecosystem": "maven"
          },
          {
            "name": "com.fasterxml.jackson.core:jackson-databind",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "com.fasterxml.jackson.core:jackson-databind",
            "direct": true,
            "version": "2.16.1",
            "ecosystem": "maven"
          },
          {
            "name": "com.fasterxml.jackson.datatype:jackson-datatype-jsr310",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "com.fasterxml.jackson.datatype:jackson-datatype-jsr310",
            "direct": true,
            "version": "2.16.1",
            "ecosystem": "maven"
          },
          {
            "name": "com.h2database:h2",
            "direct": true,
            "version": "2.2.220",
            "ecosystem": "maven"
          },
          {
            "name": "com.mysql:mysql-connector-j",
            "direct": true,
            "version": "9.2.0",
            "ecosystem": "maven"
          },
          {
            "name": "com.zaxxer:HikariCP",
            "direct": true,
            "version": "5.0.1",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-codegen",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-codegen",
            "direct": true,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-config",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-config",
            "direct": true,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-config-yaml",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-config-yaml",
            "direct": true,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-jdbc-client",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-jdbc-client",
            "direct": true,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-service-proxy",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-service-proxy",
            "direct": true,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-sql-client-templates",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-sql-client-templates",
            "direct": true,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-web",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-web",
            "direct": true,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-web-client",
            "direct": true,
            "version": "4.5.27",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-web-client",
            "direct": true,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-web-proxy",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-web-proxy",
            "direct": true,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.commons:commons-lang3",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.commons:commons-lang3",
            "direct": true,
            "version": "3.12.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.commons:commons-lang3",
            "direct": true,
            "version": "3.18.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.groovy:groovy",
            "direct": true,
            "version": "4.0.24",
            "ecosystem": "maven"
          },
          {
            "name": "org.brotli:dec",
            "direct": true,
            "version": "0.1.2",
            "ecosystem": "maven"
          },
          {
            "name": "org.fusesource.jansi:jansi",
            "direct": true,
            "version": "1.17.1",
            "ecosystem": "maven"
          },
          {
            "name": "org.openjdk.nashorn:nashorn-core",
            "direct": true,
            "version": "15.4",
            "ecosystem": "maven"
          },
          {
            "name": "org.postgresql:postgresql",
            "direct": true,
            "version": "42.7.11",
            "ecosystem": "maven"
          },
          {
            "name": "org.postgresql:postgresql",
            "direct": true,
            "version": "42.7.3",
            "ecosystem": "maven"
          },
          {
            "name": "org.reflections:reflections",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.reflections:reflections",
            "direct": true,
            "version": "0.10.2",
            "ecosystem": "maven"
          },
          {
            "name": "org.slf4j:slf4j-api",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.slf4j:slf4j-api",
            "direct": true,
            "version": "2.0.16",
            "ecosystem": "maven"
          },
          {
            "name": "org.slf4j:slf4j-api",
            "direct": true,
            "version": "2.0.5",
            "ecosystem": "maven"
          },
          {
            "name": "@element-plus/icons-vue",
            "direct": true,
            "version": "^2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@monaco-editor/loader",
            "direct": true,
            "version": "^1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vueuse/core",
            "direct": true,
            "version": "^11.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "axios",
            "direct": true,
            "version": "1.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "clipboard",
            "direct": true,
            "version": "^2.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "core-js",
            "direct": true,
            "version": "^3.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "crypto-js",
            "direct": true,
            "version": "^4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "element-plus",
            "direct": true,
            "version": "2.11.3",
            "ecosystem": "npm"
          },
          {
            "name": "monaco-editor",
            "direct": true,
            "version": "^0.55.1",
            "ecosystem": "npm"
          },
          {
            "name": "mvn",
            "direct": true,
            "version": "^3.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "qrcode",
            "direct": true,
            "version": "^1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "splitpanes",
            "direct": true,
            "version": "^4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "vue",
            "direct": true,
            "version": "^3.5.12",
            "ecosystem": "npm"
          },
          {
            "name": "vue-clipboard3",
            "direct": true,
            "version": "^2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "vue-router",
            "direct": true,
            "version": "^4.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "vue3-json-viewer",
            "direct": true,
            "version": "2.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "com.fasterxml.jackson.core:jackson-annotations",
            "direct": false,
            "version": "2.16.1",
            "ecosystem": "maven"
          },
          {
            "name": "com.fasterxml.jackson.core:jackson-core",
            "direct": false,
            "version": "2.16.1",
            "ecosystem": "maven"
          },
          {
            "name": "com.google.code.findbugs:jsr305",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "maven"
          },
          {
            "name": "com.google.protobuf:protobuf-java",
            "direct": false,
            "version": "4.29.0",
            "ecosystem": "maven"
          },
          {
            "name": "com.mchange:c3p0",
            "direct": false,
            "version": "0.9.5.5",
            "ecosystem": "maven"
          },
          {
            "name": "com.mchange:mchange-commons-java",
            "direct": false,
            "version": "0.2.19",
            "ecosystem": "maven"
          },
          {
            "name": "io.netty:netty-buffer",
            "direct": false,
            "version": "4.1.108.Final",
            "ecosystem": "maven"
          },
          {
            "name": "io.netty:netty-codec",
            "direct": false,
            "version": "4.1.108.Final",
            "ecosystem": "maven"
          },
          {
            "name": "io.netty:netty-codec-dns",
            "direct": false,
            "version": "4.1.108.Final",
            "ecosystem": "maven"
          },
          {
            "name": "io.netty:netty-codec-http",
            "direct": false,
            "version": "4.1.108.Final",
            "ecosystem": "maven"
          },
          {
            "name": "io.netty:netty-codec-http2",
            "direct": false,
            "version": "4.1.108.Final",
            "ecosystem": "maven"
          },
          {
            "name": "io.netty:netty-codec-socks",
            "direct": false,
            "version": "4.1.108.Final",
            "ecosystem": "maven"
          },
          {
            "name": "io.netty:netty-common",
            "direct": false,
            "version": "4.1.108.Final",
            "ecosystem": "maven"
          },
          {
            "name": "io.netty:netty-handler",
            "direct": false,
            "version": "4.1.108.Final",
            "ecosystem": "maven"
          },
          {
            "name": "io.netty:netty-handler-proxy",
            "direct": false,
            "version": "4.1.108.Final",
            "ecosystem": "maven"
          },
          {
            "name": "io.netty:netty-resolver",
            "direct": false,
            "version": "4.1.108.Final",
            "ecosystem": "maven"
          },
          {
            "name": "io.netty:netty-resolver-dns",
            "direct": false,
            "version": "4.1.108.Final",
            "ecosystem": "maven"
          },
          {
            "name": "io.netty:netty-transport",
            "direct": false,
            "version": "4.1.108.Final",
            "ecosystem": "maven"
          },
          {
            "name": "io.netty:netty-transport-native-unix-common",
            "direct": false,
            "version": "4.1.108.Final",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-auth-common",
            "direct": false,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-bridge-common",
            "direct": false,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-core",
            "direct": false,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-http-proxy",
            "direct": false,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-sql-client",
            "direct": false,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-uri-template",
            "direct": false,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.vertx:vertx-web-common",
            "direct": false,
            "version": "4.5.6",
            "ecosystem": "maven"
          },
          {
            "name": "junit:junit",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "junit:junit",
            "direct": false,
            "version": "4.13.2",
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.maven.plugins:maven-assembly-plugin",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.maven.plugins:maven-dependency-plugin",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.maven.plugins:maven-deploy-plugin",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.maven.plugins:maven-gpg-plugin",
            "direct": false,
            "version": "3.2.7",
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.maven.plugins:maven-jar-plugin",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.maven.plugins:maven-javadoc-plugin",
            "direct": false,
            "version": "3.7.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.maven.plugins:maven-source-plugin",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.checkerframework:checker-qual",
            "direct": false,
            "version": "3.42.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.codehaus.gmavenplus:gmavenplus-plugin",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "maven"
          },
          {
            "name": "org.codehaus.mojo:flatten-maven-plugin",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.hamcrest:hamcrest-core",
            "direct": false,
            "version": "1.3",
            "ecosystem": "maven"
          },
          {
            "name": "org.javassist:javassist",
            "direct": false,
            "version": "3.28.0-GA",
            "ecosystem": "maven"
          },
          {
            "name": "org.ow2.asm:asm",
            "direct": false,
            "version": "7.3.1",
            "ecosystem": "maven"
          },
          {
            "name": "org.ow2.asm:asm-analysis",
            "direct": false,
            "version": "7.3.1",
            "ecosystem": "maven"
          },
          {
            "name": "org.ow2.asm:asm-commons",
            "direct": false,
            "version": "7.3.1",
            "ecosystem": "maven"
          },
          {
            "name": "org.ow2.asm:asm-tree",
            "direct": false,
            "version": "7.3.1",
            "ecosystem": "maven"
          },
          {
            "name": "org.ow2.asm:asm-util",
            "direct": false,
            "version": "7.3.1",
            "ecosystem": "maven"
          },
          {
            "name": "org.projectlombok:lombok",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.projectlombok:lombok",
            "direct": false,
            "version": "1.18.38",
            "ecosystem": "maven"
          },
          {
            "name": "org.sonatype.central:central-publishing-maven-plugin",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.yaml:snakeyaml",
            "direct": false,
            "version": "2.0",
            "ecosystem": "maven"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "^7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/eslint-parser",
            "direct": false,
            "version": "^7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-class-properties",
            "direct": false,
            "version": "^7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-class-static-block",
            "direct": false,
            "version": "^7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/babel-plugin-transform-vue-jsx",
            "direct": false,
            "version": "^1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/cli-plugin-babel",
            "direct": false,
            "version": "~5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/cli-plugin-eslint",
            "direct": false,
            "version": "~5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/cli-service",
            "direct": false,
            "version": "~5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "compression-webpack-plugin",
            "direct": false,
            "version": "^11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "^9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-vue",
            "direct": false,
            "version": "^9.30.0",
            "ecosystem": "npm"
          },
          {
            "name": "filemanager-webpack-plugin",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "monaco-editor-webpack-plugin",
            "direct": false,
            "version": "^7.1.1",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 126,
        "direct_count": 64,
        "indirect_count": 62
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 4,
        "merged_prs": 55,
        "open_issues": 14,
        "closed_ratio": 0.88,
        "closed_issues": 103,
        "closed_unmerged_prs": 26
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "qaiu",
          "commits": 711,
          "avatar_url": "https://avatars.githubusercontent.com/u/29825328?v=4"
        },
        {
          "type": "User",
          "login": "yukaidi1220",
          "commits": 146,
          "avatar_url": "https://avatars.githubusercontent.com/u/98259608?v=4"
        },
        {
          "type": "User",
          "login": "rensumo",
          "commits": 10,
          "avatar_url": "https://avatars.githubusercontent.com/u/199432183?v=4"
        },
        {
          "type": "User",
          "login": "yyzy-official",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/218790145?v=4"
        },
        {
          "type": "User",
          "login": "BLSKWOLF",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/76619116?v=4"
        },
        {
          "type": "User",
          "login": "xrgzs",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/26499123?v=4"
        },
        {
          "type": "User",
          "login": "Edakerx",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/133368599?v=4"
        }
      ],
      "contributors_sampled": 7,
      "top_contributor_share": 0.805
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "build.yml",
        "maven.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 8,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "3 out of 3 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 1,
            "reason": "Found 3/18 approved changesets -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 6,
            "reason": "project has 2 contributing companies or organizations -- score normalized to 6",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "24 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "aeb4394cf801fee793ab52f98a539f6f8c064a3e",
        "ran_at": "2026-07-24T17:46:02Z",
        "aggregate_score": 4.4,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-24T10:08:42Z",
      "oldest_open_prs": [
        {
          "number": 199,
          "created_at": "2026-07-06T02:09:02Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 200,
          "created_at": "2026-07-07T02:29:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 203,
          "created_at": "2026-07-21T07:29:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 204,
          "created_at": "2026-07-24T10:06:10Z",
          "last_comment_at": "2026-07-24T13:06:52Z",
          "last_comment_author": "qaiu"
        }
      ],
      "last_merged_pr_at": "2026-06-10T13:32:22Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 15,
          "created_at": "2023-08-24T12:15:12Z",
          "last_comment_at": "2025-05-03T12:15:52Z",
          "last_comment_author": "HZBHZB1234"
        },
        {
          "number": 65,
          "created_at": "2024-10-11T18:53:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 80,
          "created_at": "2024-12-31T00:31:56Z",
          "last_comment_at": "2025-12-10T15:45:38Z",
          "last_comment_author": "GK-sky"
        },
        {
          "number": 85,
          "created_at": "2025-02-10T06:37:18Z",
          "last_comment_at": "2025-02-20T21:16:28Z",
          "last_comment_author": "qaiu"
        },
        {
          "number": 90,
          "created_at": "2025-02-27T16:02:04Z",
          "last_comment_at": "2025-12-19T04:41:57Z",
          "last_comment_author": "qaiu"
        },
        {
          "number": 112,
          "created_at": "2025-07-18T14:03:35Z",
          "last_comment_at": "2025-07-18T14:59:44Z",
          "last_comment_author": "qaiu"
        },
        {
          "number": 114,
          "created_at": "2025-07-27T10:31:04Z",
          "last_comment_at": "2025-08-05T05:16:16Z",
          "last_comment_author": "qaiu"
        },
        {
          "number": 116,
          "created_at": "2025-07-28T14:11:02Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 122,
          "created_at": "2025-09-09T05:10:18Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 184,
          "created_at": "2026-05-14T11:43:05Z",
          "last_comment_at": "2026-05-14T11:47:40Z",
          "last_comment_author": "qaiu"
        },
        {
          "number": 194,
          "created_at": "2026-06-10T08:37:20Z",
          "last_comment_at": "2026-06-10T21:55:27Z",
          "last_comment_author": "qaiu"
        },
        {
          "number": 197,
          "created_at": "2026-06-24T02:41:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 198,
          "created_at": "2026-06-25T08:46:38Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 201,
          "created_at": "2026-07-18T02:24:27Z",
          "last_comment_at": "2026-07-21T01:27:27Z",
          "last_comment_author": "qaiu"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/qaiu/netdisk-fast-download",
    "host": "github.com",
    "name": "netdisk-fast-download",
    "owner": "qaiu"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 67,
      "inputs": {
        "security": 43,
        "vitality": 91,
        "community": 68,
        "governance": 61,
        "engineering": 67
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 91,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "commits_last_year": 544,
              "human_commit_share": 0.98,
              "days_since_last_push": 2,
              "active_weeks_last_year": 40
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 2 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "40/52 weeks with commits",
                "points": 27.7,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 40
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "544 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 544
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 21,
              "latest_release_tag": "dependabot/npm_and_yarn/web-front/npm_and_yarn-c42958dede",
              "releases_from_tags": false,
              "days_since_latest_release": 3,
              "mean_days_between_releases": 18.9
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "21 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 21
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 3 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 3
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~18.9 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 18.9
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 2,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 2 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 68,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "forks": 265,
              "stars": 3008,
              "watchers": 14,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "3,008 stars",
                "points": 56.4,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 3008
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "265 forks",
                "points": 20.2,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 265
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "14 watchers",
                "points": 6.2,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 61,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 29,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 7,
              "top_contributor_share": 0.805
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 80% of commits",
                "points": 4.4,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 80
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "7 contributors",
                "points": 9.5,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "merged_prs": 55,
              "open_issues": 14,
              "closed_issues": 103,
              "issue_closed_ratio": 0.88,
              "closed_unmerged_prs": 26
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "88% of issues closed",
                "points": 41.1,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 88
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "55/81 decided PRs merged",
                "points": 26,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 55,
                      "decided": 81
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 3/18 approved changesets -- score normalized to 1",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "followers": 121,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "qaiu",
              "public_repos": 31,
              "account_age_days": 3309
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "121 followers of qaiu",
                "points": 15,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 121,
                      "login": "qaiu"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "31 public repos, account ~9 yr old",
                "points": 23,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 31
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 9
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "cn.qaiu:parser"
              ],
              "ecosystems": "maven",
              "any_deprecated": false,
              "min_days_since_publish": 149
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on maven",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "maven"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 149 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 149
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "12 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 67,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "3 out of 3 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [
                "download",
                "java",
                "vertx",
                "parser",
                "webserver",
                "api",
                "drive",
                "ilanzou",
                "onedrive",
                "file-server",
                "share",
                "yunpan",
                "netdisk-fast-download"
              ],
              "has_wiki": false,
              "homepage": "https://nfd-parser.github.io",
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://nfd-parser.github.io",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "13 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 13
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 43,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 44,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 4.4
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "3 out of 3 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 3/18 approved changesets -- score normalized to 1",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "24 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "at_risk",
            "name": "Dependency advisories",
            "note": "Matched the maven:cn.qaiu:core@1.2.3 runtime dependency closure — what installing the published package pulls in — 67 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "maven:cn.qaiu:core@1.2.3",
                  "assessed": 67
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 39,
            "inputs": {
              "source": "osv",
              "advisories": 46,
              "affected_packages": 11,
              "assessed_packages": 67,
              "unassessed_packages": 0,
              "affected_by_severity": "high 8, moderate 3",
              "direct_affected_packages": 1
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "1 affected: com.fasterxml.jackson.core:jackson-databind 2.18.3 (high 8.1)",
                "points": 12.3,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "com.fasterxml.jackson.core:jackson-databind 2.18.3 (high 8.1)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "10 affected: com.fasterxml.jackson.core:jackson-core 2.16.1 (high 7.5), io.netty:netty-codec 4.1.130.Final (high 7.5), io.netty:netty-codec-dns 4.1.130.Final (high 7.5), +7 more",
                "points": 3,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 10,
                      "packages": "com.fasterxml.jackson.core:jackson-core 2.16.1 (high 7.5), io.netty:netty-codec 4.1.130.Final (high 7.5), io.netty:netty-codec-dns 4.1.130.Final (high 7.5)"
                    }
                  },
                  {
                    "code": "advisories_affected_more",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "4 advisory-carrying package(s) unaddressed past 90 days; oldest published 296 days ago",
                "points": 23.8,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 4,
                      "oldest": 296
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 67,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 4
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 57,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.888,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "87 of 98 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 87,
                      "sampled": 98
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 61,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": true,
              "has_linter_config": false,
              "typecheck_configs": [
                "parser/src/main/resources/custom-parsers/jsconfig.json",
                "web-front/jsconfig.json"
              ],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "core-database/pom.xml",
                "core/pom.xml",
                "parser/pom.xml",
                "pom.xml",
                "web-service/pom.xml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "core-database/pom.xml, core/pom.xml, parser/pom.xml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "core-database/pom.xml, core/pom.xml, parser/pom.xml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "parser/src/main/resources/custom-parsers/jsconfig.json, web-front/jsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "parser/src/main/resources/custom-parsers/jsconfig.json, web-front/jsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "devcontainer, Dockerfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "devcontainer, Dockerfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "dependency automation configured, none observed in the sampled commits",
                "points": 5,
                "status": "partial",
                "details": [
                  {
                    "code": "dependency_bot_config_only",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Java",
              "largest_source_bytes": 89795,
              "source_files_sampled": 252,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Java (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Java"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/252 source files over 60KB",
                "points": 54.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 252,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": false,
              "api_schema_files": [
                "web-service/doc/openapi.json"
              ]
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": "web-service/doc/openapi.json",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "web-service/doc/openapi.json"
                    }
                  }
                ],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "maven package 'cn.qaiu:core' points at a different repository (https://github.com/qaiu/vxcore/tree/main/core); excluded from ecosystem scoring",
    "Could not fetch maven package 'cn.qaiu:web-service' from its registry",
    "maven package 'cn.qaiu:core-database' points at a different repository (https://github.com/qaiu/vxcore/tree/main/core-database); excluded from ecosystem scoring"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-24T17:46:17.151763Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/q/qaiu/netdisk-fast-download.svg",
  "full_name": "qaiu/netdisk-fast-download",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte StatistikenMaven.