Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 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★ 3008 estrellas⑂ 265 forksdesde abr 2023Ver en GitHub ↗

qaiu/netdisk-fast-download tiene un índice de salud de 67 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Vitality (91/100) y la más baja, Security (43/100). Se actualizó por última vez hace 2 días. Una sola persona concentra la mayor parte del trabajo reciente.

67
global / 100
Moderado

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

67
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

qaiuCuenta personal
121 seguidores31 repositorios públicosdesde jul 2017qaiu

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
Mavencn.qaiu:coreapunta a otro repositorio; no se puntúa1.2.3-5hace 148 días
Mavencn.qaiu:parser10.2.5-12hace 149 días
Mavencn.qaiu:core-databaseapunta a otro repositorio; no se puntúa1.2.3-5hace 148 días

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

91Excelente · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 2 días
27.7/36Cadencia de commits — 40/52 semanas con commits
18/18Volumen de commits — 544 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year544
human_commit_share0,98
days_since_last_push2
active_weeks_last_year40
Cómo se puntúa
27/27Publica versiones — 21 versiones publicadas
36/36Recencia de las versiones — última versión hace 3 días
27/27Cadencia de publicación — una versión cada ~18,9 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count21
latest_release_tagdependabot/npm_and_yarn/web-front/npm_and_yarn-c42958dede
releases_from_tagsno
days_since_latest_release3
mean_days_between_releases18,9

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

68Moderado · 18% del índice global
Cómo se puntúa
56.4/60Estrellas — 3008 estrellas
20.2/25Forks — 265 forks
6.2/15Observadores — 14 observadores
Datos de entrada utilizados
forks265
stars3008
watchers14
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

61Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
4.4/22.5Distribución de commits — el principal contribuyente firma el 80% de los commits
9.5/13.5Amplitud de contribuyentes — 7 contribuyentes
6/10OpenSSF Scorecard: Contributors — project has 2 contributing companies or organizations -- score normalized to 6
Datos de entrada utilizados
bus_factor1
contributors_sampled7
top_contributor_share0,805
Cómo se puntúa
41.1/46.8Resolución de issues — 88% de issues cerradas
26/38.3Aceptación de PR — 55/81 PR decididos fusionados
1.5/15OpenSSF Scorecard: Code-Review — Found 3/18 approved changesets -- score normalized to 1
Datos de entrada utilizados
merged_prs55
open_issues14
closed_issues103
issue_closed_ratio0,88
closed_unmerged_prs26
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
15/25Alcance del propietario — 121 seguidores de qaiu
23/25Trayectoria — 31 repos públicos, cuenta de ~9 años
Datos de entrada utilizados
followers121
owner_typeUser
is_verified
owner_loginqaiu
public_repos31
account_age_days3309
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en maven
35/35Recencia de publicación — última publicación hace 149 días
20/20Historial de versiones — 12 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagescn.qaiu:parser
ecosystemsmaven
any_deprecatedno
min_days_since_publish149

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

67Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 2 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 3 out of 3 merged PRs checked by a CI test -- score normalized to 10
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno

Documentación

65Moderado
Cómo se puntúa
30/30README
0/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://nfd-parser.github.io
10/10Descripción del repositorio
10/10Topics — 13 topics
0/10Wiki
Datos de entrada utilizados
topicsdownload, java, vertx, parser, webserver, api, drive, ilanzou, onedrive, file-server, share, yunpan, netdisk-fast-download
has_wikino
homepagehttps://nfd-parser.github.io
has_readme
has_docs_dirno
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

43En riesgo · 16% del índice global
Cómo se puntúa
6/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — sin datos
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.5Licencia — 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
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4,4
Excluidos de la puntuación (sin datos o no aplicable): branch_protection. Los pesos restantes se han renormalizado.
Cómo se puntúa
12.3/35Dependencias directas libres de avisos conocidos — 1 afectados: com.fasterxml.jackson.core:jackson-databind 2.18.3 (high 8.1)
3/25Dependencias indirectas libres de avisos conocidos — 10 afectados: 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 más
23.8/40Sin avisos pendientes — 4 paquete(s) con avisos sin atender más allá de 90 días; el más antiguo publicado hace 296 días
Datos de entrada utilizados
sourceosv
advisories46
affected_packages11
assessed_packages67
unassessed_packages0
affected_by_severityhigh 8, moderate 3
direct_affected_packages1
Se cotejó el cierre de dependencias en tiempo de ejecución de maven:cn.qaiu:core@1.2.3 —lo que arrastra la instalación del paquete publicado—: 67 paquetes. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

57Moderado · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 87 de 98 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,888
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
12.6/18Arranque con un solo comando — core-database/pom.xml, core/pom.xml, parser/pom.xml (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — parser/src/main/resources/custom-parsers/jsconfig.json, web-front/jsconfig.json
10/10Entorno reproducible — devcontainer, Dockerfile
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 100
5/8Mantenimiento automatizado — automatización de dependencias configurada, no observada en los commits muestreados
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_configno
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
Cómo se puntúa
45/45Código verificable por tipos — Java (tipado estático)
54.8/55Tamaños de archivo manejables — 1/252 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageJava
largest_source_bytes89.795
source_files_sampled252
oversized_source_files1
Cómo se puntúa
40/40Esquema de API (OpenAPI/GraphQL/proto) — web-service/doc/openapi.json
0/20Servidor MCP
0/40Ejemplos ejecutables
Datos de entrada utilizados
example_dirs
has_mcp_signalno
api_schema_filesweb-service/doc/openapi.json

Datos clave

3008estrellas de GitHub
7contribuidores
544commits en los últimos 12 meses
2días desde el último push
21versiones publicadas
1factor bus
14issues abiertas
Maven, npmecosistemas de paquetes

Advertencias de recopilación de datos

  • 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

Más detalle

Historial de estrellas y forks 0 ★ / 265 ⇿
0Estrellas
265Forks
19Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

050100150200250300261112023-072025-012026-07
Mayor 0Menor 1Parche 6

Cada punto abarca 3 días.

OpenSSF Scorecard 4.4 / 10
4.4agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-24 17:46 UTC

8Binary-Artifactsbinaries present in source code
n/dBranch-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
Dependencias directas 56
RegistroPaqueteRestricción de versiónManifiesto
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
Todas las dependencias 126

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 64 paquetes directos y 62 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

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

Instalar maven:cn.qaiu:core@1.2.3 arrastra 67 paquetes, directos y transitivos: 11 tienen avisos conocidos, de los cuales 1 son dependencias directas.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
com.fasterxml.jackson.core:jackson-databind2.18.3directaalta73.2.1
com.fasterxml.jackson.core:jackson-core2.16.1indirectaalta23.2.1
io.netty:netty-codec4.1.130.Finalindirectaalta24.2.16.Final
io.netty:netty-codec-dns4.1.130.Finalindirectaalta24.2.16.Final
io.netty:netty-codec-http4.1.130.Finalindirectaalta154.2.16.Final
io.netty:netty-codec-http24.1.130.Finalindirectaalta64.2.16.Final
io.netty:netty-handler4.1.130.Finalindirectaalta34.2.15.Final
io.netty:netty-resolver-dns4.1.130.Finalindirectaalta34.2.15.Final
ch.qos.logback:logback-core1.5.17indirectamoderada41.5.34
io.netty:netty-handler-proxy4.1.130.Finalindirectamoderada14.2.13.Final
io.vertx:vertx-core4.5.25indirectamoderada15.0.12

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "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"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasMaven.