NocoBase is an open-source AI + no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.
This report summarizes scanner evidence for nocobase/nocobase, a TypeScript project with 24,798 GitHub stars. SynthScan examined 3,103,429 lines of code across 25445 source files, recording 4315 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 1.8 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 4006 finding(s).
Are imports declared and package/API names verified? 284 finding(s).
Are wrappers, guards, and repeated structures necessary? 3231 finding(s).
Which changes need focused human review? 4315 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 4315 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/plugins/pluginCrossRef.ts | 448 | function rewriteRelativeMarkdownLinks( | CODE |
| LOW | docs/theme/components/NavHamburger/useNavScreen.ts | 33 | function closeScreenOnTabletWindow() { | CODE |
| LOW | docs/theme/components/NavScreen/NavScreenMenuItem.tsx | 72 | export function NavScreenMenuItemWithLink({ | CODE |
| LOW | docs/theme/components/NavScreen/NavScreenMenuItem.tsx | 100 | export function NavScreenMenuItemWithChildren({ | CODE |
| LOW | docs/theme/components/HomeHero/index.tsx | 126 | function normalizeSrcsetAndSizes( | CODE |
| LOW | scripts/release/changelogAndRelease.js | 446 | async function writeChangelogAndCreateRelease() { | CODE |
| LOW | packages/core/database/src/helpers.ts | 100 | export async function parseDatabaseOptionsFromEnv(): Promise<IDatabaseOptions> { | CODE |
| LOW | packages/core/database/src/utils.ts | 35 | function patchShowConstraintsQuery(queryGenerator, db) { | CODE |
| LOW | packages/core/database/src/utils.ts | 94 | export function patchSequelizeQueryInterface(db: Database) { | CODE |
| LOW | packages/core/database/src/utils.ts | 132 | export function extractTypeFromDefinition(rawType: string) { | CODE |
| LOW | packages/core/database/src/update-associations.ts | 31 | export function belongsToManyAssociations(instance: Model): Array<BelongsToMany> { | CODE |
| LOW | packages/core/database/src/update-associations.ts | 404 | export async function updateMultipleAssociation( | CODE |
| LOW | …/core/database/src/decorators/transaction-decorator.ts | 12 | export function transactionWrapperBuilder(transactionGenerator) { | CODE |
| LOW | …e/database/src/features/referential-integrity-check.ts | 18 | export async function referentialIntegrityCheck(options: ReferentialIntegrityCheckOptions) { | CODE |
| LOW | packages/core/database/src/value-parsers/index.ts | 21 | export function registerFieldValueParsers(db: Database) { | CODE |
| LOW | packages/core/app/client-v2/rsbuild.config.ts | 32 | function normalizeModernClientPrefix(value: string | undefined) { | CODE |
| LOW | packages/core/app/client-v2/rsbuild.config.ts | 67 | function isClientDocumentEntryPath(pathname: string) { | CODE |
| LOW | packages/core/app/client-v2/src/main.tsx | 56 | function inferRootPublicPathFromLocation() { | CODE |
| LOW | packages/core/app/client-v2/src/runtimePublicPath.ts | 18 | export function resolveRuntimeAssetPublicPath( | CODE |
| LOW | packages/core/app/client/public/browser-checker.js | 32 | function isClientDocumentEntryPath(pathname) { | CODE |
| LOW | packages/core/app/client/src/runtimePublicPath.ts | 25 | export function resolveRuntimeAssetPublicPath( | CODE |
| LOW | packages/core/test/src/web/index.tsx | 243 | export function addXReadPrettyToEachLayer(obj: Record<string, any> = {}) { | CODE |
| LOW | packages/core/test/src/e2e/e2eUtils.ts | 34 | function getPageMenuSchemaWithTabSchema({ tabSchema }) { | CODE |
| LOW | packages/core/test/src/e2e/e2eUtils.ts | 1359 | async function removeRedundantUserAndRoles() { | CODE |
| LOW | packages/core/auth/src/actions.ts | 18 | function assertTrustedSignInOrigin(ctx: AuthActionContext) { | CODE |
| LOW | packages/core/resourcer/src/utils.ts | 242 | function normalizeIndexedObjectToArray(value: any) { | CODE |
| LOW | packages/core/flow-engine/src/runjsLibs.ts | 170 | function ensureDefaultRunJSLibsRegistered(): void { | CODE |
| LOW | packages/core/flow-engine/src/runjsLibs.ts | 274 | function isReactHooksDispatcherNullError(err: any): boolean { | CODE |
| LOW | packages/core/flow-engine/src/runjsLibs.ts | 293 | function extractReactVersionFromStack(err: any): string | undefined { | CODE |
| LOW | packages/core/flow-engine/src/runjsLibs.ts | 302 | function buildReactDispatcherNullHint(options: { ctx: any; internalReact: any; internalAntd: any; err: any }): string { | CODE |
| LOW | packages/core/flow-engine/src/runjsLibs.ts | 447 | function wrapVnodeWithRunjsErrorBoundary(options: { | CODE |
| LOW | packages/core/flow-engine/src/runjsLibs.ts | 460 | function tryRenderWithExternalAntdTheme(options: { | CODE |
| LOW | packages/core/flow-engine/src/JSRunner.ts | 33 | export function shouldPreprocessRunJSTemplates( | CODE |
| LOW | packages/core/flow-engine/src/JSRunner.ts | 128 | function collectRunJSBrowserGlobals(providedGlobals: Record<string, unknown> = {}) { | CODE |
| LOW⚡ | packages/core/flow-engine/src/JSRunner.ts | 156 | function extractDeprecatedCtxTemplateUsage(code: string): { placeholder: string; expression: string } | null { | CODE |
| LOW⚡ | packages/core/flow-engine/src/JSRunner.ts | 166 | function shouldHintCtxTemplateSyntax(err: any, usage: { placeholder: string; expression: string } | null): boolean { | CODE |
| LOW⚡ | packages/core/flow-engine/src/JSRunner.ts | 174 | function toCtxTemplateSyntaxHintError( | CODE |
| LOW | packages/core/flow-engine/src/flowContext.ts | 97 | function filterBuilderOutputByPaths(built: any, neededPaths: string[]): any { | CODE |
| LOW | packages/core/flow-engine/src/flowContext.ts | 3172 | function pickDefinedOpenViewInputArgs(source?: Record<string, unknown> | null) { | CODE |
| LOW | packages/core/flow-engine/src/flowContext.ts | 4251 | export function createRunJSDeprecationProxy( | CODE |
| LOW | packages/core/flow-engine/src/runjs-context/helpers.ts | 31 | export function createJSRunnerWithVersion(this: FlowContext, options?: JSRunnerOptions) { | CODE |
| LOW | …es/core/flow-engine/src/runjs-context/contributions.ts | 51 | export function registerRunJSContextContribution(contribution: RunJSContextContribution) { | CODE |
| LOW | …es/core/flow-engine/src/runjs-context/contributions.ts | 76 | export async function applyRunJSContextContributions(version: RunJSVersion) { | CODE |
| LOW | …es/core/flow-engine/src/runjs-context/contributions.ts | 86 | export function markRunJSContextsSetupDone(version: RunJSVersion) { | CODE |
| LOW | …-context/snippets/scene/table/concat-fields.snippet.ts | 27 | function resolvePreviousDataIndexes() { | CODE |
| LOW | …e/flow-engine/src/runjs-context/contexts/elementDoc.ts | 122 | export function createZhCNElementPropertyDoc( | CODE |
| LOW | …ne/src/resources/__tests__/multiRecordResource.test.ts | 14 | function createMultiRecordResource() { | CODE |
| LOW | …ckages/core/flow-engine/src/utils/runjsModuleLoader.ts | 73 | function disableAmdDefineTemporarily(): () => void { | CODE |
| LOW | …ages/core/flow-engine/src/utils/dirtyAwareApiClient.ts | 188 | function getDirtyResourcePathFromAbsoluteUrl(url: URL, app?: ApiUrlProvider): string | undefined { | CODE |
| LOW | …ages/core/flow-engine/src/utils/dirtyAwareApiClient.ts | 210 | function getDirtyResourcePathFromUrl(url: unknown, context: FlowContext): string | undefined { | CODE |
| LOW⚡ | …ages/core/flow-engine/src/utils/dirtyAwareApiClient.ts | 237 | function decodeResourcePathSegment(segment: string): string { | CODE |
| LOW⚡ | …ages/core/flow-engine/src/utils/dirtyAwareApiClient.ts | 245 | function getDataSourceKeyFromResourceOf(resourceOf: unknown): string | undefined { | CODE |
| LOW⚡ | …ages/core/flow-engine/src/utils/dirtyAwareApiClient.ts | 250 | function parseResourceActionFromSegments(segments: string[]): DirtyResourceAction | undefined { | CODE |
| LOW | …ages/core/flow-engine/src/utils/dirtyAwareApiClient.ts | 285 | function parseDirtyResourceActionFromUrl(url: unknown, context: FlowContext): DirtyResourceAction | undefined { | CODE |
| LOW | …ages/core/flow-engine/src/utils/dirtyAwareApiClient.ts | 307 | function resolveDirtyResourceActionFromResource( | CODE |
| LOW | …ages/core/flow-engine/src/utils/dirtyAwareApiClient.ts | 346 | function resolveDirtyResourceAction( | CODE |
| LOW | …ages/core/flow-engine/src/utils/dirtyAwareApiClient.ts | 359 | function getDirtyResourceActionDispatchKey( | CODE |
| LOW | …ages/core/flow-engine/src/utils/dirtyAwareApiClient.ts | 406 | function markResourceActionDataSourceDirty( | CODE |
| LOW | …ages/core/flow-engine/src/utils/dirtyAwareApiClient.ts | 419 | function markResourceActionDataSourceDirtyOnce( | CODE |
| LOW | …ages/core/flow-engine/src/utils/dirtyAwareApiClient.ts | 509 | function createDirtyAwareApiClient(api: DirtyAwareAPIClient, context: FlowContext): APIClient { | CODE |
| 3146 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …i/plugin-development/client/ctx/common-capabilities.md | 110 | this.context.api.axios.interceptors.request.use((config) => { | CODE |
| CRITICAL | …i/plugin-development/client/ctx/common-capabilities.md | 116 | this.context.api.axios.interceptors.response.use( | CODE |
| CRITICAL | …n/plugin-development/client/ctx/common-capabilities.md | 110 | this.context.api.axios.interceptors.request.use((config) => { | CODE |
| CRITICAL | …n/plugin-development/client/ctx/common-capabilities.md | 116 | this.context.api.axios.interceptors.response.use( | CODE |
| CRITICAL | …a/plugin-development/client/ctx/common-capabilities.md | 110 | this.context.api.axios.interceptors.request.use((config) => { | CODE |
| CRITICAL | …a/plugin-development/client/ctx/common-capabilities.md | 116 | this.context.api.axios.interceptors.response.use( | CODE |
| CRITICAL | …u/plugin-development/client/ctx/common-capabilities.md | 110 | this.context.api.axios.interceptors.request.use((config) => { | CODE |
| CRITICAL | …u/plugin-development/client/ctx/common-capabilities.md | 116 | this.context.api.axios.interceptors.response.use( | CODE |
| CRITICAL | …t/plugin-development/client/ctx/common-capabilities.md | 110 | this.context.api.axios.interceptors.request.use((config) => { | CODE |
| CRITICAL | …t/plugin-development/client/ctx/common-capabilities.md | 116 | this.context.api.axios.interceptors.response.use( | CODE |
| CRITICAL | …e/plugin-development/client/ctx/common-capabilities.md | 110 | this.context.api.axios.interceptors.request.use((config) => { | CODE |
| CRITICAL | …e/plugin-development/client/ctx/common-capabilities.md | 116 | this.context.api.axios.interceptors.response.use( | CODE |
| CRITICAL | …d/plugin-development/client/ctx/common-capabilities.md | 110 | this.context.api.axios.interceptors.request.use((config) => { | CODE |
| CRITICAL | …d/plugin-development/client/ctx/common-capabilities.md | 116 | this.context.api.axios.interceptors.response.use( | CODE |
| CRITICAL | …r/plugin-development/client/ctx/common-capabilities.md | 110 | this.context.api.axios.interceptors.request.use((config) => { | CODE |
| CRITICAL | …r/plugin-development/client/ctx/common-capabilities.md | 116 | this.context.api.axios.interceptors.response.use( | CODE |
| CRITICAL | …s/plugin-development/client/ctx/common-capabilities.md | 110 | this.context.api.axios.interceptors.request.use((config) => { | CODE |
| CRITICAL | …s/plugin-development/client/ctx/common-capabilities.md | 116 | this.context.api.axios.interceptors.response.use( | CODE |
| CRITICAL | …n/plugin-development/client/ctx/common-capabilities.md | 110 | this.context.api.axios.interceptors.request.use((config) => { | CODE |
| CRITICAL | …n/plugin-development/client/ctx/common-capabilities.md | 116 | this.context.api.axios.interceptors.response.use( | CODE |
| CRITICAL | packages/core/database/src/collection.ts | 957 | this.context.database.sequelize.modelManager.forEachModel((model) => { | CODE |
| CRITICAL | …atabase/src/relation-repository/relation-repository.ts | 54 | this.targetCollection = this.sourceCollection.context.database.modelCollection.get(this.targetModel); | CODE |
| CRITICAL | …ne/src/__tests__/flowModel.openView.navigation.test.ts | 53 | const viewCalls = child.context.defineProperty.mock.calls.filter((args: any[]) => args?.[0] === 'view'); | CODE |
| CRITICAL | …ne/src/__tests__/flowModel.openView.navigation.test.ts | 72 | const viewCalls = child.context.defineProperty.mock.calls.filter((args: any[]) => args?.[0] === 'view'); | CODE |
| CRITICAL | packages/core/sdk/src/Auth.ts | 33 | this.api.axios.interceptors.request.use(this.middleware.bind(this)); | CODE |
| CRITICAL | packages/core/acl/src/__tests__/acl.test.ts | 553 | ctx1.permission.can.params.fields.push('createdById'); | CODE |
| CRITICAL | …e/plugin-multi-keyword-filter/src/client-v2/plugin.tsx | 75 | this.app.apiClient.axios.interceptors.request.use(interceptor); | CODE |
| CRITICAL | …obase/plugin-multi-keyword-filter/src/client/index.tsx | 120 | this.app.apiClient.axios.interceptors.request.use(interceptor); | CODE |
| CRITICAL | …yword-filter/src/client/__tests__/interceptor.test.tsx | 30 | mockApp.apiClient.axios.interceptors.request.use(interceptor); | CODE |
| CRITICAL | …s/@nocobase/plugin-backup-restore/src/server/dumper.ts | 296 | const collectionOnDumpOption = this.app.db.collectionFactory.collectionTypes.get( | CODE |
| CRITICAL | …s/@nocobase/plugin-backup-restore/src/server/dumper.ts | 367 | const collectionOnDumpOption = this.app.db.collectionFactory.collectionTypes.get( | CODE |
| CRITICAL | …ase/plugin-acl/src/server/middlewares/with-acl-meta.ts | 187 | const actionSql = ctx.db.sequelize.queryInterface.queryGenerator.selectQuery( | CODE |
| CRITICAL | …ustom-action-trigger/src/server/CustomActionTrigger.ts | 446 | const dataSource = this.workflow.app.dataSourceManager.dataSources.get(dataSourceName); | CODE |
| CRITICAL | …kages/plugins/@nocobase/plugin-ai/src/server/plugin.ts | 318 | const workflowSnippet = this.app.acl.snippetManager.snippets.get('pm.workflow.workflows'); | CODE |
| CRITICAL | …obase/plugin-ai/src/server/ai-employees/ai-employee.ts | 930 | const dataSource = this.ctx.app.dataSourceManager.dataSources.get(dataSourceName); | CODE |
| CRITICAL | …/plugin-ai/src/server/workflow/nodes/employee/index.ts | 507 | const UserRepo = processor.options.plugin.app.db.getRepository('users'); | CODE |
| CRITICAL | …/ai-chat-box/__tests__/AIChatBoxView.registry.test.tsx | 246 | const readListener = mocks.eventBus.addEventListener.mock.calls.find( | CODE |
| CRITICAL | …ai/src/client/__tests__/chatbox/hooks-contract.test.ts | 376 | mockRuntime.app.aiManager.toolsManager.useTools.mockClear(); | CODE |
| CRITICAL | …ai/src/client/__tests__/chatbox/hooks-contract.test.ts | 833 | const filters = mockRuntime.resources.aiWorkflowTasks.list.mock.calls.slice(-4).map((call) => call[0].filter); | CODE |
| CRITICAL | …ai/src/client/__tests__/chatbox/hooks-contract.test.ts | 895 | mockRuntime.app.aiManager.toolsManager.useTools.mockReturnValue( | CODE |
| CRITICAL | …lient-v2/pages/components/__tests__/FieldForm.test.tsx | 790 | flowMocks.ctx.dataSourceManager.collectionFieldInterfaceManager.getFieldInterfaceConfigure.mockReturnValueOnce({ | CODE |
| CRITICAL | …t-interceptor/src/server/RequestInterceptionTrigger.ts | 256 | const dataSource = this.workflow.app.dataSourceManager.dataSources.get(dataSourceName); | CODE |
| CRITICAL | …ugin-collection-tree/src/server/__tests__/tree.test.ts | 146 | expect(res.body.meta.allowedActions.view.sort()).toMatchObject([1, 2, 3, 4]); | CODE |
| CRITICAL | …in-workflow-action-trigger/src/server/ActionTrigger.ts | 335 | const { collectionManager } = this.workflow.app.dataSourceManager.dataSources.get(dataSourceName); | CODE |
| CRITICAL | …tree/src/client-v2/models/components/TreeBlockView.tsx | 496 | ? model.context.app.dataSourceManager.collectionFieldInterfaceManager.getFieldInterface(collectionField.interface) | CODE |
| CRITICAL⚡ | …mbed/src/client-v2/__tests__/EmbedAccessGuard.test.tsx | 141 | mocks.app.flowEngine.context.dataSourceManager.ensureLoaded.mockResolvedValue(undefined); | CODE |
| CRITICAL⚡ | …mbed/src/client-v2/__tests__/EmbedAccessGuard.test.tsx | 142 | mocks.app.flowEngine.context.routeRepository.ensureAccessibleLoaded.mockResolvedValue(undefined); | CODE |
| CRITICAL⚡ | …mbed/src/client-v2/__tests__/EmbedAccessGuard.test.tsx | 143 | mocks.app.flowEngine.context.routeRepository.getRouteBySchemaUid.mockReturnValue({ uid: 'test-page' }); | CODE |
| CRITICAL | …mbed/src/client-v2/__tests__/EmbedAccessGuard.test.tsx | 363 | mocks.app.flowEngine.context.routeRepository.getRouteBySchemaUid.mockReturnValue(undefined); | CODE |
| CRITICAL | …r/src/client-v2/__tests__/UploadActionRuntime.test.tsx | 143 | runtimeMocks.context.app.pm.get.mockReturnValue({ | CODE |
| CRITICAL | …plugins/@nocobase/plugin-auth/src/server/basic-auth.ts | 354 | await this.ctx.app.authManager.jwt.decode(resetToken); | CODE |
| CRITICAL | …plugins/@nocobase/plugin-auth/src/client-v2/plugin.tsx | 39 | this.context.app.apiClient.auth.setLocale(value); | CODE |
| CRITICAL | …cobase/plugin-auth/src/client/__tests__/routes.test.ts | 71 | const matchingCall = app.router.add.mock.calls.find(([name]) => name === routeName) as | CODE |
| CRITICAL | …@nocobase/plugin-data-source-main/src/server/server.ts | 570 | rawFields = await ctx.app.db.queryInterface.sequelizeQueryInterface.describeTable( | CODE |
| CRITICAL | …ion-custom-request/src/client-v2/customRequestUtils.ts | 285 | return ctx.model.context.api.request.bind(ctx.model.context.api); | CODE |
| CRITICAL | …@nocobase/plugin-custom-variables/src/client/index.tsx | 53 | this.app.apiClient.axios.interceptors.response.use((response) => { | CODE |
| CRITICAL | …gins/@nocobase/plugin-workflow/src/server/Processor.ts | 578 | await this.options.plugin.db.sequelize.query( | CODE |
| CRITICAL | …gins/@nocobase/plugin-workflow/src/server/Processor.ts | 940 | $env: this.options.plugin.app.environment.getVariables(), | CODE |
| CRITICAL | …-workflow/src/server/instructions/CreateInstruction.ts | 40 | const dataSource = this.workflow.app.dataSourceManager.dataSources.get(dataSourceName); | CODE |
| CRITICAL | …ugin-workflow/src/server/triggers/CollectionTrigger.ts | 175 | const { collectionManager } = this.workflow.app.dataSourceManager.dataSources.get(dataSourceName); | CODE |
| 17 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/docs/vi/plugin-development/server/app.md | 1 | --- | COMMENT |
| LOW | docs/docs/vi/get-started/upgrading/docker.md | 41 | # Khuyến nghị dùng image Aliyun (mạng nội địa Trung Quốc ổn định hơn) | COMMENT |
| LOW | docs/docs/cn/plugin-development/server/app.md | 1 | --- | COMMENT |
| LOW | docs/docs/cn/get-started/upgrading/docker.md | 41 | # 推荐使用阿里云镜像(国内网络更稳定) | COMMENT |
| LOW | docs/docs/ja/ui-development-field/index.md | 1 | # フィールド拡張 | COMMENT |
| LOW | docs/docs/ja/flow-engine/flow-model-options.md | 1 | # FlowModel の設定 | COMMENT |
| LOW | docs/docs/ja/flow-engine/flow-definition.md | 1 | # FlowModel の設定項目 | COMMENT |
| LOW | docs/docs/ja/flow-engine/flow-model-usage.md | 1 | # FlowModel の使用とレンダリング | COMMENT |
| LOW | docs/docs/ja/flow-engine/js-model/js-action.md | 1 | # JS アクション | COMMENT |
| LOW | docs/docs/ja/flow-engine/js-model/js-item.md | 1 | # JS項目 | COMMENT |
| LOW | docs/docs/ja/flow-engine/js-model/js-field.md | 1 | # JS フィールド | COMMENT |
| LOW | docs/docs/ja/flow-engine/js-model/js-block.md | 1 | # JS ブロック | COMMENT |
| LOW | docs/docs/ja/flow-engine/js-model/js-column.md | 1 | # JS テーブル列 | COMMENT |
| LOW | docs/docs/ja/ui-development-action/index.md | 1 | # アクション拡張 | COMMENT |
| LOW | docs/docs/ja/runjs/model/form-block-model.md | 1 | # FormBlockModel | COMMENT |
| LOW | docs/docs/ja/api/flow-engine/data-source-manager.md | 1 | # データソースマネージャー | COMMENT |
| LOW | docs/docs/ja/api/flow-engine/flow-model.md | 1 | # フローモデル | COMMENT |
| LOW | docs/docs/ja/api/flow-engine/flow-resource.md | 1 | # フローリソース | COMMENT |
| LOW | docs/docs/ja/api/server/plugin.md | 1 | # プラグイン | COMMENT |
| LOW | docs/docs/ja/api/server/application.md | 1 | # アプリケーション | COMMENT |
| LOW | docs/docs/ja/api/client/plugin.md | 1 | # プラグイン | COMMENT |
| LOW | docs/docs/ja/api/client/application.md | 1 | # アプリケーション | COMMENT |
| LOW | docs/docs/ja/auth-verification/index.md | 1 | # 認証と検証 | COMMENT |
| LOW | docs/docs/ja/auth-verification/verification/dev/api.md | 61 | ### `verify()` | COMMENT |
| LOW | …cs/docs/ja/auth-verification/verification/dev/scene.md | 1 | # 検証シナリオの拡張 | COMMENT |
| LOW | docs/docs/ja/auth-verification/verification/dev/type.md | 1 | # 検証タイプの拡張 | COMMENT |
| LOW | docs/docs/ja/plugin-development/plugin-upgrade-guide.md | 1 | # プラグインのアップグレードガイド | COMMENT |
| LOW | docs/docs/ja/plugin-development/server/app.md | 1 | # アプリケーション | COMMENT |
| LOW | …ja/interface-builder/actions/types/trigger-workflow.md | 1 | # ワークフローをトリガーする | COMMENT |
| LOW | …docs/ja/interface-builder/actions/types/ai-employee.md | 1 | # AI従業員 | COMMENT |
| LOW | docs/docs/ja/get-started/deployment/internal.md | 1 | # イントラネットデプロイ | COMMENT |
| LOW | …t-started/deployment/common-commands/docker-compose.md | 1 | # ドッカーコンポーズ | COMMENT |
| LOW | …/docs/ja/get-started/deployment/common-commands/pm2.md | 1 | # pm2 | COMMENT |
| LOW | …ja/get-started/deployment/static-resource-proxy/cdn.md | 1 | # CDN | COMMENT |
| LOW | docs/docs/ru/flow-engine/flow-model-options.md | 1 | # Конфигурация FlowModel | COMMENT |
| LOW | docs/docs/ru/flow-engine/flow-definition.md | 1 | # Конфигурация модели потока | COMMENT |
| LOW | docs/docs/ru/flow-engine/flow-model-usage.md | 1 | # Использование и рендеринг `FlowModel` | COMMENT |
| LOW | docs/docs/ru/flow-engine/js-model/js-action.md | 1 | # JS-действие | COMMENT |
| LOW | docs/docs/ru/flow-engine/js-model/js-item.md | 1 | # JS-элемент | COMMENT |
| LOW | docs/docs/ru/flow-engine/js-model/js-field.md | 1 | # JS-поле | COMMENT |
| LOW | docs/docs/ru/flow-engine/js-model/js-block.md | 1 | # JS-блок | COMMENT |
| LOW | docs/docs/ru/flow-engine/js-model/js-column.md | 1 | # JS-колонка таблицы | COMMENT |
| LOW | docs/docs/ru/ui-development-action/index.md | 1 | # Расширения действий | COMMENT |
| LOW | docs/docs/ru/api/flow-engine/flow-context.md | 1 | # FlowContext - Контекст потока | COMMENT |
| LOW | docs/docs/ru/api/flow-engine/data-source-manager.md | 1 | # DataSourceManager - Менеджер источников данных | COMMENT |
| LOW | docs/docs/ru/api/flow-engine/flow-model.md | 1 | # FlowModel - Модель потока | COMMENT |
| LOW | docs/docs/ru/api/flow-engine/flow-resource.md | 1 | # FlowResource - Ресурс потока | COMMENT |
| LOW | docs/docs/ru/api/server/plugin.md | 1 | # Plugin - Плагин | COMMENT |
| LOW | docs/docs/ru/api/server/application.md | 1 | # Application - Приложение | COMMENT |
| LOW | docs/docs/ru/api/server/migration.md | 1 | # Migration - Миграция | COMMENT |
| LOW | docs/docs/ru/api/client/plugin.md | 1 | # Плагин | COMMENT |
| LOW | docs/docs/ru/api/client/application.md | 1 | # Приложение | COMMENT |
| LOW | docs/docs/ru/auth-verification/index.md | 1 | # Аутентификация и верификация | COMMENT |
| LOW | docs/docs/ru/auth-verification/verification/dev/api.md | 61 | ### `verify()` | COMMENT |
| LOW | …cs/docs/ru/auth-verification/verification/dev/scene.md | 1 | # Расширение сценариев валидации | COMMENT |
| LOW | docs/docs/ru/auth-verification/verification/dev/type.md | 1 | # Расширение типов валидации | COMMENT |
| LOW | docs/docs/ru/plugin-development/plugin-upgrade-guide.md | 1 | # Руководство по обновлению плагинов | COMMENT |
| LOW | docs/docs/ru/plugin-development/server/app.md | 1 | # Приложение | COMMENT |
| LOW | …ru/interface-builder/actions/types/trigger-workflow.md | 1 | # Запуск рабочего процесса | COMMENT |
| LOW | …docs/ru/interface-builder/actions/types/ai-employee.md | 1 | # ИИ-сотрудники | COMMENT |
| 430 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/docs/vi/ai-builder/security.md | 47 | --access-token <your-api-key> | CODE |
| HIGH | docs/docs/vi/integration/workflow-http-request/index.md | 132 | key: your-api-key | CODE |
| HIGH | docs/docs/vi/integration/workflow-http-request/index.md | 219 | X-API-Key: your-api-key | CODE |
| HIGH | docs/docs/vi/integration/workflow-http-request/index.md | 223 | api_key: your-api-key | CODE |
| HIGH | docs/docs/vi/ai/mcp/index.md | 80 | export NOCOBASE_API_TOKEN=<your_api_key> | CODE |
| HIGH | docs/docs/vi/ai/mcp/index.md | 100 | claude mcp add --transport http nocobase https://<host>:<port>/api/mcp --header "Authorization: Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/vi/ai/mcp/index.md | 132 | "Authorization": "Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/cn/ai-builder/security.md | 47 | --access-token <your-api-key> | CODE |
| HIGH | docs/docs/cn/integration/workflow-http-request/index.md | 132 | key: your-api-key | CODE |
| HIGH | docs/docs/cn/integration/workflow-http-request/index.md | 219 | X-API-Key: your-api-key | CODE |
| HIGH | docs/docs/cn/integration/workflow-http-request/index.md | 223 | api_key: your-api-key | CODE |
| HIGH | docs/docs/cn/ai/mcp/index.md | 80 | export NOCOBASE_API_TOKEN=<your_api_key> | CODE |
| HIGH | docs/docs/cn/ai/mcp/index.md | 100 | claude mcp add --transport http nocobase https://<host>:<port>/api/mcp --header "Authorization: Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/cn/ai/mcp/index.md | 132 | "Authorization": "Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/ja/ai-builder/security.md | 47 | --access-token <your-api-key> | CODE |
| HIGH | docs/docs/ja/integration/workflow-http-request/index.md | 126 | key: your-api-key | CODE |
| HIGH | docs/docs/ja/integration/workflow-http-request/index.md | 213 | X-API-Key: your-api-key | CODE |
| HIGH | docs/docs/ja/integration/workflow-http-request/index.md | 217 | api_key: your-api-key | CODE |
| HIGH | docs/docs/ja/ai/mcp/index.md | 80 | export NOCOBASE_API_TOKEN=<your_api_key> | CODE |
| HIGH | docs/docs/ja/ai/mcp/index.md | 100 | claude mcp add --transport http nocobase https://<host>:<port>/api/mcp --header "Authorization: Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/ja/ai/mcp/index.md | 132 | "Authorization": "Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/ru/ai-builder/security.md | 47 | --access-token <your-api-key> | CODE |
| HIGH | docs/docs/ru/integration/workflow-http-request/index.md | 126 | key: your-api-key | CODE |
| HIGH | docs/docs/ru/integration/workflow-http-request/index.md | 213 | X-API-Key: your-api-key | CODE |
| HIGH | docs/docs/ru/integration/workflow-http-request/index.md | 217 | api_key: your-api-key | CODE |
| HIGH | docs/docs/ru/ai/mcp/index.md | 80 | export NOCOBASE_API_TOKEN=<your_api_key> | CODE |
| HIGH | docs/docs/ru/ai/mcp/index.md | 100 | claude mcp add --transport http nocobase https://<host>:<port>/api/mcp --header "Authorization: Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/ru/ai/mcp/index.md | 132 | "Authorization": "Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/pt/ai-builder/security.md | 47 | --access-token <your-api-key> | CODE |
| HIGH | docs/docs/pt/integration/workflow-http-request/index.md | 126 | key: your-api-key | CODE |
| HIGH | docs/docs/pt/integration/workflow-http-request/index.md | 213 | X-API-Key: your-api-key | CODE |
| HIGH | docs/docs/pt/integration/workflow-http-request/index.md | 217 | api_key: your-api-key | CODE |
| HIGH | docs/docs/de/ai-builder/security.md | 47 | --access-token <your-api-key> | CODE |
| HIGH | docs/docs/de/integration/workflow-http-request/index.md | 126 | key: your-api-key | CODE |
| HIGH | docs/docs/de/integration/workflow-http-request/index.md | 213 | X-API-Key: your-api-key | CODE |
| HIGH | docs/docs/de/integration/workflow-http-request/index.md | 217 | api_key: your-api-key | CODE |
| HIGH | docs/docs/de/ai/mcp/index.md | 80 | export NOCOBASE_API_TOKEN=<your_api_key> | CODE |
| HIGH | docs/docs/de/ai/mcp/index.md | 100 | claude mcp add --transport http nocobase https://<host>:<port>/api/mcp --header "Authorization: Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/de/ai/mcp/index.md | 132 | "Authorization": "Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/id/ai-builder/security.md | 47 | --access-token <your-api-key> | CODE |
| HIGH | docs/docs/id/integration/workflow-http-request/index.md | 132 | key: your-api-key | CODE |
| HIGH | docs/docs/id/integration/workflow-http-request/index.md | 219 | X-API-Key: your-api-key | CODE |
| HIGH | docs/docs/id/integration/workflow-http-request/index.md | 223 | api_key: your-api-key | CODE |
| HIGH | docs/docs/id/ai/mcp/index.md | 80 | export NOCOBASE_API_TOKEN=<your_api_key> | CODE |
| HIGH | docs/docs/id/ai/mcp/index.md | 100 | claude mcp add --transport http nocobase https://<host>:<port>/api/mcp --header "Authorization: Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/id/ai/mcp/index.md | 132 | "Authorization": "Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/fr/ai-builder/security.md | 47 | --access-token <your-api-key> | CODE |
| HIGH | docs/docs/fr/integration/workflow-http-request/index.md | 126 | key: your-api-key | CODE |
| HIGH | docs/docs/fr/integration/workflow-http-request/index.md | 213 | X-API-Key: your-api-key | CODE |
| HIGH | docs/docs/fr/integration/workflow-http-request/index.md | 217 | api_key: your-api-key | CODE |
| HIGH | docs/docs/fr/ai/mcp/index.md | 80 | export NOCOBASE_API_TOKEN=<your_api_key> | CODE |
| HIGH | docs/docs/fr/ai/mcp/index.md | 100 | claude mcp add --transport http nocobase https://<host>:<port>/api/mcp --header "Authorization: Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/fr/ai/mcp/index.md | 132 | "Authorization": "Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/es/ai-builder/security.md | 47 | --access-token <your-api-key> | CODE |
| HIGH | docs/docs/es/integration/workflow-http-request/index.md | 126 | key: your-api-key | CODE |
| HIGH | docs/docs/es/integration/workflow-http-request/index.md | 213 | X-API-Key: your-api-key | CODE |
| HIGH | docs/docs/es/integration/workflow-http-request/index.md | 217 | api_key: your-api-key | CODE |
| HIGH | docs/docs/es/ai/mcp/index.md | 80 | export NOCOBASE_API_TOKEN=<your_api_key> | CODE |
| HIGH | docs/docs/es/ai/mcp/index.md | 100 | claude mcp add --transport http nocobase https://<host>:<port>/api/mcp --header "Authorization: Bearer <your_api_key>" | CODE |
| HIGH | docs/docs/es/ai/mcp/index.md | 132 | "Authorization": "Bearer <your_api_key>" | CODE |
| 7 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/docs/vi/file-manager/storage/migrate-to-s3-pro.md | 40 | ### Step 1: Stop writes or enter a maintenance window | COMMENT |
| LOW | docs/docs/vi/file-manager/storage/migrate-to-s3-pro.md | 46 | ### Step 2: Back up the database and files | COMMENT |
| LOW | docs/docs/vi/file-manager/storage/migrate-to-s3-pro.md | 75 | ### Step 3: Create and verify the S3 Pro storage | COMMENT |
| LOW | docs/docs/vi/file-manager/storage/migrate-to-s3-pro.md | 97 | ### Step 4: Decide the object key mapping | COMMENT |
| LOW | docs/docs/vi/file-manager/storage/migrate-to-s3-pro.md | 133 | ### Step 5: Move physical files or confirm object location | COMMENT |
| LOW | docs/docs/vi/file-manager/storage/migrate-to-s3-pro.md | 166 | ### Step 6: Verify target object accessibility | COMMENT |
| LOW | docs/docs/vi/file-manager/storage/migrate-to-s3-pro.md | 181 | ### Step 7: Update file records | COMMENT |
| LOW | docs/docs/vi/file-manager/storage/migrate-to-s3-pro.md | 202 | ### Step 8: Switch future uploads to the new storage | COMMENT |
| LOW | docs/docs/vi/file-manager/storage/migrate-to-s3-pro.md | 214 | ### Step 9: Restart or refresh storage cache | COMMENT |
| LOW | docs/docs/vi/file-manager/storage/migrate-to-s3-pro.md | 220 | ### Step 10: Sample-check and keep old files | COMMENT |
| LOW | docs/docs/ja/file-manager/storage/migrate-to-s3-pro.md | 40 | ### Step 1: Stop writes or enter a maintenance window | COMMENT |
| LOW | docs/docs/ja/file-manager/storage/migrate-to-s3-pro.md | 46 | ### Step 2: Back up the database and files | COMMENT |
| LOW | docs/docs/ja/file-manager/storage/migrate-to-s3-pro.md | 75 | ### Step 3: Create and verify the S3 Pro storage | COMMENT |
| LOW | docs/docs/ja/file-manager/storage/migrate-to-s3-pro.md | 97 | ### Step 4: Decide the object key mapping | COMMENT |
| LOW | docs/docs/ja/file-manager/storage/migrate-to-s3-pro.md | 133 | ### Step 5: Move physical files or confirm object location | COMMENT |
| LOW | docs/docs/ja/file-manager/storage/migrate-to-s3-pro.md | 166 | ### Step 6: Verify target object accessibility | COMMENT |
| LOW | docs/docs/ja/file-manager/storage/migrate-to-s3-pro.md | 181 | ### Step 7: Update file records | COMMENT |
| LOW | docs/docs/ja/file-manager/storage/migrate-to-s3-pro.md | 202 | ### Step 8: Switch future uploads to the new storage | COMMENT |
| LOW | docs/docs/ja/file-manager/storage/migrate-to-s3-pro.md | 214 | ### Step 9: Restart or refresh storage cache | COMMENT |
| LOW | docs/docs/ja/file-manager/storage/migrate-to-s3-pro.md | 220 | ### Step 10: Sample-check and keep old files | COMMENT |
| LOW | docs/docs/ru/ai/ai-quick-start.md | 14 | ## Step 1: Check Prerequisites | COMMENT |
| LOW | docs/docs/ru/ai/ai-quick-start.md | 25 | ## Step 2: Install CLI | COMMENT |
| LOW | docs/docs/ru/ai/ai-quick-start.md | 35 | ## Step 3: Run the Initialization Command | COMMENT |
| LOW | docs/docs/ru/ai/ai-quick-start.md | 50 | ## Step 4: Verify Results | COMMENT |
| LOW | docs/docs/ru/ai/ai-quick-start.md | 58 | ## Step 5: Complete | COMMENT |
| LOW | docs/docs/ru/file-manager/storage/migrate-to-s3-pro.md | 40 | ### Step 1: Stop writes or enter a maintenance window | COMMENT |
| LOW | docs/docs/ru/file-manager/storage/migrate-to-s3-pro.md | 46 | ### Step 2: Back up the database and files | COMMENT |
| LOW | docs/docs/ru/file-manager/storage/migrate-to-s3-pro.md | 75 | ### Step 3: Create and verify the S3 Pro storage | COMMENT |
| LOW | docs/docs/ru/file-manager/storage/migrate-to-s3-pro.md | 97 | ### Step 4: Decide the object key mapping | COMMENT |
| LOW | docs/docs/ru/file-manager/storage/migrate-to-s3-pro.md | 133 | ### Step 5: Move physical files or confirm object location | COMMENT |
| LOW | docs/docs/ru/file-manager/storage/migrate-to-s3-pro.md | 166 | ### Step 6: Verify target object accessibility | COMMENT |
| LOW | docs/docs/ru/file-manager/storage/migrate-to-s3-pro.md | 181 | ### Step 7: Update file records | COMMENT |
| LOW | docs/docs/ru/file-manager/storage/migrate-to-s3-pro.md | 202 | ### Step 8: Switch future uploads to the new storage | COMMENT |
| LOW | docs/docs/ru/file-manager/storage/migrate-to-s3-pro.md | 214 | ### Step 9: Restart or refresh storage cache | COMMENT |
| LOW | docs/docs/ru/file-manager/storage/migrate-to-s3-pro.md | 220 | ### Step 10: Sample-check and keep old files | COMMENT |
| LOW | docs/docs/pt/ai/ai-quick-start.md | 14 | ## Step 1: verifique os pré-requisitos | COMMENT |
| LOW | docs/docs/pt/ai/ai-quick-start.md | 25 | ## Step 2: instale o CLI | COMMENT |
| LOW | docs/docs/pt/ai/ai-quick-start.md | 35 | ## Step 3: execute o comando de inicialização | COMMENT |
| LOW | docs/docs/pt/ai/ai-quick-start.md | 50 | ## Step 4: valide o resultado | COMMENT |
| LOW | docs/docs/pt/ai/ai-quick-start.md | 58 | ## Step 5: pronto | COMMENT |
| LOW | docs/docs/pt/file-manager/storage/migrate-to-s3-pro.md | 40 | ### Step 1: Stop writes or enter a maintenance window | COMMENT |
| LOW | docs/docs/pt/file-manager/storage/migrate-to-s3-pro.md | 46 | ### Step 2: Back up the database and files | COMMENT |
| LOW | docs/docs/pt/file-manager/storage/migrate-to-s3-pro.md | 75 | ### Step 3: Create and verify the S3 Pro storage | COMMENT |
| LOW | docs/docs/pt/file-manager/storage/migrate-to-s3-pro.md | 97 | ### Step 4: Decide the object key mapping | COMMENT |
| LOW | docs/docs/pt/file-manager/storage/migrate-to-s3-pro.md | 133 | ### Step 5: Move physical files or confirm object location | COMMENT |
| LOW | docs/docs/pt/file-manager/storage/migrate-to-s3-pro.md | 166 | ### Step 6: Verify target object accessibility | COMMENT |
| LOW | docs/docs/pt/file-manager/storage/migrate-to-s3-pro.md | 181 | ### Step 7: Update file records | COMMENT |
| LOW | docs/docs/pt/file-manager/storage/migrate-to-s3-pro.md | 202 | ### Step 8: Switch future uploads to the new storage | COMMENT |
| LOW | docs/docs/pt/file-manager/storage/migrate-to-s3-pro.md | 214 | ### Step 9: Restart or refresh storage cache | COMMENT |
| LOW | docs/docs/pt/file-manager/storage/migrate-to-s3-pro.md | 220 | ### Step 10: Sample-check and keep old files | COMMENT |
| LOW | docs/docs/de/file-manager/storage/migrate-to-s3-pro.md | 40 | ### Step 1: Stop writes or enter a maintenance window | COMMENT |
| LOW | docs/docs/de/file-manager/storage/migrate-to-s3-pro.md | 46 | ### Step 2: Back up the database and files | COMMENT |
| LOW | docs/docs/de/file-manager/storage/migrate-to-s3-pro.md | 75 | ### Step 3: Create and verify the S3 Pro storage | COMMENT |
| LOW | docs/docs/de/file-manager/storage/migrate-to-s3-pro.md | 97 | ### Step 4: Decide the object key mapping | COMMENT |
| LOW | docs/docs/de/file-manager/storage/migrate-to-s3-pro.md | 133 | ### Step 5: Move physical files or confirm object location | COMMENT |
| LOW | docs/docs/de/file-manager/storage/migrate-to-s3-pro.md | 166 | ### Step 6: Verify target object accessibility | COMMENT |
| LOW | docs/docs/de/file-manager/storage/migrate-to-s3-pro.md | 181 | ### Step 7: Update file records | COMMENT |
| LOW | docs/docs/de/file-manager/storage/migrate-to-s3-pro.md | 202 | ### Step 8: Switch future uploads to the new storage | COMMENT |
| LOW | docs/docs/de/file-manager/storage/migrate-to-s3-pro.md | 214 | ### Step 9: Restart or refresh storage cache | COMMENT |
| LOW | docs/docs/de/file-manager/storage/migrate-to-s3-pro.md | 220 | ### Step 10: Sample-check and keep old files | COMMENT |
| 152 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/docs/vi/ai-employees/knowledge-base/rag.md | 8 | # Truy xuất RAG | COMMENT |
| MEDIUM | docs/docs/vi/ai-employees/knowledge-base/index.md | 18 | ### RAG là gì | COMMENT |
| MEDIUM | docs/docs/vi/api/cli/init.md | 254 | // Runs after git clone / npm scaffold and before yarn install. | COMMENT |
| MEDIUM | docs/docs/vi/api/cli/source/download.md | 63 | // Chạy sau git clone / npm scaffold và trước yarn install. | COMMENT |
| MEDIUM | docs/docs/vi/api/cli/scaffold/plugin.md | 7 | # nb scaffold plugin | COMMENT |
| MEDIUM | docs/docs/vi/api/cli/scaffold/migration.md | 7 | # nb scaffold migration | COMMENT |
| MEDIUM | docs/docs/vi/api/cli/scaffold/index.md | 7 | # nb scaffold | COMMENT |
| MEDIUM | docs/docs/vi/ai-dev/watermark-plugin.md | 80 | ### 2. Tạo scaffold plugin | COMMENT |
| MEDIUM | …cs/docs/vi/plugin-development/client/component/i18n.md | 84 | // src/client-v2/locale.ts (scaffold tự sinh) | COMMENT |
| MEDIUM | docs/docs/cn/ai-employees/knowledge-base/rag.md | 8 | # RAG 检索 | COMMENT |
| MEDIUM | docs/docs/cn/api/cli/init.md | 269 | // 在 git clone / npm scaffold 之后、yarn install 之前执行。 | COMMENT |
| MEDIUM | docs/docs/cn/api/cli/source/download.md | 63 | // 在 git clone / npm scaffold 之后、yarn install 之前执行。 | COMMENT |
| MEDIUM | docs/docs/cn/api/cli/scaffold/plugin.md | 7 | # nb scaffold plugin | COMMENT |
| MEDIUM | docs/docs/cn/api/cli/scaffold/migration.md | 7 | # nb scaffold migration | COMMENT |
| MEDIUM | docs/docs/cn/api/cli/scaffold/index.md | 7 | # nb scaffold | COMMENT |
| MEDIUM | docs/docs/ja/ai-employees/knowledge-base/rag.md | 8 | # RAG 検索 | COMMENT |
| MEDIUM | docs/docs/ja/api/cli/init.md | 254 | // Runs after git clone / npm scaffold and before yarn install. | COMMENT |
| MEDIUM | docs/docs/ja/api/cli/source/download.md | 63 | // git clone / npm scaffold の後、yarn install の前に実行されます。 | COMMENT |
| MEDIUM | docs/docs/ja/api/cli/scaffold/plugin.md | 7 | # nb scaffold plugin | COMMENT |
| MEDIUM | docs/docs/ja/api/cli/scaffold/migration.md | 7 | # nb scaffold migration | COMMENT |
| MEDIUM | docs/docs/ja/api/cli/scaffold/index.md | 7 | # nb scaffold | COMMENT |
| MEDIUM | docs/docs/ru/ai-employees/knowledge-base/rag.md | 8 | # RAG-поиск | COMMENT |
| MEDIUM | docs/docs/ru/ai-employees/knowledge-base/index.md | 11 | ### Что такое Генерация с расширенными возможностями поиска (RAG) | COMMENT |
| MEDIUM | docs/docs/ru/api/cli/scaffold/plugin.md | 7 | # nb scaffold plugin | COMMENT |
| MEDIUM | docs/docs/ru/api/cli/scaffold/migration.md | 7 | # nb scaffold migration | COMMENT |
| MEDIUM | docs/docs/ru/api/cli/scaffold/index.md | 7 | # nb scaffold | COMMENT |
| MEDIUM | docs/docs/pt/ai-employees/knowledge-base/rag.md | 8 | # Busca RAG | COMMENT |
| MEDIUM | docs/docs/pt/ai-employees/knowledge-base/index.md | 11 | ### O que é RAG | COMMENT |
| MEDIUM | docs/docs/pt/api/cli/init.md | 254 | // Runs after git clone / npm scaffold and before yarn install. | COMMENT |
| MEDIUM | docs/docs/pt/api/cli/source/download.md | 63 | // Executa após git clone / npm scaffold e antes de yarn install. | COMMENT |
| MEDIUM | docs/docs/pt/api/cli/scaffold/plugin.md | 7 | # nb scaffold plugin | COMMENT |
| MEDIUM | docs/docs/pt/api/cli/scaffold/migration.md | 7 | # nb scaffold migration | COMMENT |
| MEDIUM | docs/docs/pt/api/cli/scaffold/index.md | 7 | # nb scaffold | COMMENT |
| MEDIUM | docs/docs/pt/ai-dev/watermark-plugin.md | 80 | ### 2. Criar o scaffold do plugin | COMMENT |
| MEDIUM | docs/docs/de/ai-employees/knowledge-base/rag.md | 8 | # RAG-Abruf | COMMENT |
| MEDIUM | docs/docs/de/ai-employees/knowledge-base/index.md | 11 | ### Was ist RAG? | COMMENT |
| MEDIUM | docs/docs/de/api/cli/init.md | 254 | // Runs after git clone / npm scaffold and before yarn install. | COMMENT |
| MEDIUM | docs/docs/de/api/cli/source/download.md | 63 | // Wird nach git clone / npm scaffold und vor yarn install ausgeführt. | COMMENT |
| MEDIUM | docs/docs/de/api/cli/scaffold/plugin.md | 7 | # nb scaffold plugin | COMMENT |
| MEDIUM | docs/docs/de/api/cli/scaffold/migration.md | 7 | # nb scaffold migration | COMMENT |
| MEDIUM | docs/docs/de/api/cli/scaffold/index.md | 7 | # nb scaffold | COMMENT |
| MEDIUM | docs/docs/id/ai-employees/knowledge-base/rag.md | 8 | # Pencarian RAG | COMMENT |
| MEDIUM | docs/docs/id/ai-employees/knowledge-base/index.md | 18 | ### Apa itu RAG | COMMENT |
| MEDIUM | docs/docs/id/api/cli/init.md | 254 | // Runs after git clone / npm scaffold and before yarn install. | COMMENT |
| MEDIUM | docs/docs/id/api/cli/source/download.md | 63 | // Berjalan setelah git clone / npm scaffold dan sebelum yarn install. | COMMENT |
| MEDIUM | docs/docs/id/api/cli/scaffold/plugin.md | 7 | # nb scaffold plugin | COMMENT |
| MEDIUM | docs/docs/id/api/cli/scaffold/migration.md | 7 | # nb scaffold migration | COMMENT |
| MEDIUM | docs/docs/id/api/cli/scaffold/index.md | 7 | # nb scaffold | COMMENT |
| MEDIUM | docs/docs/fr/ai-employees/knowledge-base/rag.md | 8 | # Récupération RAG | COMMENT |
| MEDIUM | docs/docs/fr/ai-employees/knowledge-base/index.md | 11 | ### Qu'est-ce que le RAG ? | COMMENT |
| MEDIUM | docs/docs/fr/api/cli/init.md | 254 | // Runs after git clone / npm scaffold and before yarn install. | COMMENT |
| MEDIUM | docs/docs/fr/api/cli/source/download.md | 63 | // S’exécute après git clone / npm scaffold et avant yarn install. | COMMENT |
| MEDIUM | docs/docs/fr/api/cli/scaffold/plugin.md | 7 | # nb scaffold plugin | COMMENT |
| MEDIUM | docs/docs/fr/api/cli/scaffold/migration.md | 7 | # nb scaffold migration | COMMENT |
| MEDIUM | docs/docs/fr/api/cli/scaffold/index.md | 7 | # nb scaffold | COMMENT |
| MEDIUM | docs/docs/fr/ai-dev/watermark-plugin.md | 80 | ### 2. Créer le scaffold du plugin | COMMENT |
| MEDIUM | docs/docs/es/ai-employees/knowledge-base/rag.md | 8 | # Recuperación RAG | COMMENT |
| MEDIUM | docs/docs/es/ai-employees/knowledge-base/index.md | 11 | ### ¿Qué es RAG? | COMMENT |
| MEDIUM | docs/docs/es/api/cli/init.md | 254 | // Runs after git clone / npm scaffold and before yarn install. | COMMENT |
| MEDIUM | docs/docs/es/api/cli/source/download.md | 63 | // Se ejecuta después de git clone / npm scaffold y antes de yarn install. | COMMENT |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/docs/vi/flow-engine/create-mock-client.md | 54 | name: 'John Doe', | CODE |
| LOW | docs/docs/cn/flow-engine/create-mock-client.md | 54 | name: 'John Doe', | CODE |
| LOW | docs/docs/ja/flow-engine/create-mock-client.md | 48 | name: 'John Doe', | CODE |
| LOW | …ai-employees/configuration/prompt-engineering-guide.md | 225 | {"Name":"John Doe","Date":"2024-01-15","Amount":5000,"Status":"Подтверждено"} | CODE |
| LOW | docs/docs/ru/flow-engine/create-mock-client.md | 48 | name: 'John Doe', | CODE |
| LOW⚡ | docs/docs/ru/api/database/repository.md | 149 | name: 'John Doe', | CODE |
| LOW⚡ | docs/docs/ru/api/database/repository.md | 152 | // ВСТАВИТЬ В пользователей (имя, возраст) ЗНАЧЕНИЯ ('John Doe', 18) | COMMENT |
| LOW⚡ | docs/docs/ru/api/database/repository.md | 157 | name: 'John Doe', | CODE |
| LOW | docs/docs/ru/api/database/repository.md | 173 | name: 'John Doe', | CODE |
| LOW | docs/docs/ru/api/database/repository.md | 203 | name: 'John Doe', | CODE |
| LOW | docs/docs/ru/api/database/repository.md | 231 | name: 'John Doe', | CODE |
| LOW | docs/docs/ru/api/database/repository.md | 247 | name: 'John Doe', | CODE |
| LOW | docs/docs/ru/api/database/repository.md | 260 | name: 'John Doe', | CODE |
| LOW | docs/docs/pt/flow-engine/create-mock-client.md | 48 | name: 'John Doe', | CODE |
| LOW | docs/docs/de/flow-engine/create-mock-client.md | 48 | name: 'John Doe', | CODE |
| LOW | docs/docs/id/flow-engine/create-mock-client.md | 54 | name: 'John Doe', | CODE |
| LOW | docs/docs/fr/flow-engine/create-mock-client.md | 48 | name: 'John Doe', | CODE |
| LOW | docs/docs/es/flow-engine/create-mock-client.md | 48 | name: 'John Doe', | CODE |
| LOW | …ai-employees/configuration/prompt-engineering-guide.md | 229 | {"Name":"John Doe","Date":"2024-01-15","Amount":5000,"Status":"Confirmed"} | CODE |
| LOW | docs/docs/en/flow-engine/create-mock-client.md | 48 | name: 'John Doe', | CODE |
| LOW | docs/docs/en/runjs/context/resource.md | 70 | await ctx.resource.runAction('create', { data: { name: 'John Doe' } }); | CODE |
| LOW | docs/docs/en/runjs/context/request.md | 76 | data: { nickname: 'John Doe', email: 'johndoe@example.com' }, | CODE |
| LOW | docs/docs/en/runjs/resource/single-record-resource.md | 90 | await ctx.resource.save({ name: 'John Doe' }); | CODE |
| LOW | docs/docs/en/runjs/resource/multi-record-resource.md | 132 | await ctx.resource.create({ name: 'John Doe', email: 'john.doe@example.com' }); | CODE |
| LOW⚡ | docs/docs/en/api/database/repository.md | 149 | name: 'John Doe', | CODE |
| LOW⚡ | docs/docs/en/api/database/repository.md | 152 | // INSERT INTO users (name, age) VALUES ('John Doe', 18) | COMMENT |
| LOW⚡ | docs/docs/en/api/database/repository.md | 157 | name: 'John Doe', | CODE |
| LOW | docs/docs/en/api/database/repository.md | 173 | name: 'John Doe', | CODE |
| LOW | docs/docs/en/api/database/repository.md | 203 | name: 'John Doe', | CODE |
| LOW | docs/docs/en/api/database/repository.md | 231 | name: 'John Doe', | CODE |
| LOW | docs/docs/en/api/database/repository.md | 247 | name: 'John Doe', | CODE |
| LOW | docs/docs/en/api/database/repository.md | 260 | name: 'John Doe', | CODE |
| LOW | …ow-engine/src/utils/__tests__/params-resolvers.test.ts | 106 | name: 'John Doe', | CODE |
| LOW | …ow-engine/src/utils/__tests__/params-resolvers.test.ts | 335 | name: 'John Doe', | CODE |
| LOW | …ow-engine/src/utils/__tests__/params-resolvers.test.ts | 411 | name: 'John Doe', | CODE |
| LOW⚡ | …ow-engine/src/utils/__tests__/params-resolvers.test.ts | 424 | // 简单表达式 - 输入: {{ctx.user.name}}, 输出: 'John Doe' | COMMENT |
| LOW⚡ | …ow-engine/src/utils/__tests__/params-resolvers.test.ts | 430 | expect(result).toEqual('John Doe'); | CODE |
| LOW⚡ | …ow-engine/src/utils/__tests__/params-resolvers.test.ts | 433 | // 简单表达式 - 输入: {{ctx.user.name}}, 输出: 'John Doe' | COMMENT |
| LOW⚡ | …ow-engine/src/utils/__tests__/params-resolvers.test.ts | 442 | userName: 'John Doe', | CODE |
| LOW | …ow-engine/src/utils/__tests__/params-resolvers.test.ts | 469 | name: 'John Doe', | CODE |
| LOW | …ow-engine/src/utils/__tests__/params-resolvers.test.ts | 587 | name: 'John Doe', | CODE |
| LOW | …ow-engine/src/utils/__tests__/params-resolvers.test.ts | 636 | { name: 'John Doe', role: 'static-role' }, | CODE |
| LOW⚡ | …ow-engine/src/utils/__tests__/params-resolvers.test.ts | 670 | noSpace: 'John Doe', | CODE |
| LOW⚡ | …ow-engine/src/utils/__tests__/params-resolvers.test.ts | 671 | leftSpace: 'John Doe', | CODE |
| LOW⚡ | …ow-engine/src/utils/__tests__/params-resolvers.test.ts | 672 | rightSpace: 'John Doe', | CODE |
| LOW⚡ | …ow-engine/src/utils/__tests__/params-resolvers.test.ts | 673 | bothSpace: 'John Doe', | CODE |
| LOW | …ore/flow-engine/src/models/__tests__/flowModel.test.ts | 2417 | expect(params.authorName).toBe('John Doe'); | CODE |
| LOW | …ore/flow-engine/src/models/__tests__/flowModel.test.ts | 2437 | name: 'John Doe', | CODE |
| LOW | …/components/variables/__tests__/VariableInput.test.tsx | 454 | expect(input).toHaveAttribute('placeholder', 'Enter value'); | CODE |
| LOW | …ngine/src/data-source/__tests__/jioToJoiSchema.test.ts | 24 | const r1 = schema.validate('user@example.com'); | CODE |
| LOW | …kages/core/utils/src/__tests__/transformFilter.test.ts | 758 | name: 'John Doe', | CODE |
| LOW | …kages/core/utils/src/__tests__/transformFilter.test.ts | 789 | items: [{ path: 'name', operator: '$in', value: ['John Doe', 'Jane Doe'] }], | CODE |
| LOW | …kages/core/utils/src/__tests__/transformFilter.test.ts | 789 | items: [{ path: 'name', operator: '$in', value: ['John Doe', 'Jane Doe'] }], | CODE |
| LOW⚡ | packages/core/cli/src/locale/zh-CN.json | 292 | "placeholder": "https://github.com/nocobase/nocobase.git" | CODE |
| LOW⚡ | packages/core/cli/src/locale/zh-CN.json | 296 | "placeholder": "例如 ./nocobase-latest" | CODE |
| LOW⚡ | packages/core/cli/src/locale/zh-CN.json | 300 | "placeholder": "留空则使用默认 registry" | CODE |
| LOW⚡ | packages/core/cli/src/locale/zh-CN.json | 327 | "placeholder": "local" | CODE |
| LOW⚡ | packages/core/cli/src/locale/zh-CN.json | 334 | "placeholder": "./<env>/" | CODE |
| LOW⚡ | packages/core/cli/src/locale/zh-CN.json | 338 | "placeholder": "13000" | CODE |
| LOW⚡ | packages/core/cli/src/locale/zh-CN.json | 342 | "placeholder": "/ 或 /nocobase/" | CODE |
| 80 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/plugins/pluginCrossRef.ts | 13 | // ── 内部类型 ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/plugins/pluginCrossRef.ts | 27 | // ── 递归收集所有叶子 link(用于跨模块检测)──────────────────────────── | COMMENT |
| MEDIUM | docs/plugins/pluginCrossRef.ts | 91 | // ── 将 _meta.json 条目解析为 Rspress sidebar 格式 ───────────────────── | COMMENT |
| MEDIUM | docs/plugins/pluginCrossRef.ts | 284 | // ── canonical 映射表(供 rspress.config.ts 查询)───────────────────── | COMMENT |
| MEDIUM | docs/plugins/pluginCrossRef.ts | 292 | // ── 插件主体 ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/plugins/pluginCrossRef.ts | 444 | // ── 工具函数 ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/core/utils/src/__tests__/server-request.test.ts | 61 | // ── no whitelist ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/core/utils/src/__tests__/server-request.test.ts | 142 | // ── IPv4 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/core/utils/src/__tests__/server-request.test.ts | 166 | // ── IPv6 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/core/utils/src/__tests__/server-request.test.ts | 202 | // ── domain / wildcard ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/core/utils/src/__tests__/server-request.test.ts | 217 | // ── multi-entry & edge cases ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …plugins/@nocobase/plugin-workflow/src/swagger/index.ts | 52 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …plugins/@nocobase/plugin-workflow/src/swagger/index.ts | 54 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …plugins/@nocobase/plugin-workflow/src/swagger/index.ts | 477 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …plugins/@nocobase/plugin-workflow/src/swagger/index.ts | 479 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …plugins/@nocobase/plugin-workflow/src/swagger/index.ts | 541 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …plugins/@nocobase/plugin-workflow/src/swagger/index.ts | 543 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …plugins/@nocobase/plugin-workflow/src/swagger/index.ts | 868 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …plugins/@nocobase/plugin-workflow/src/swagger/index.ts | 870 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …plugins/@nocobase/plugin-workflow/src/swagger/index.ts | 1068 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …plugins/@nocobase/plugin-workflow/src/swagger/index.ts | 1070 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …plugins/@nocobase/plugin-workflow/src/swagger/index.ts | 1217 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …plugins/@nocobase/plugin-workflow/src/swagger/index.ts | 1219 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …plugins/@nocobase/plugin-workflow/src/swagger/index.ts | 1339 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …plugins/@nocobase/plugin-workflow/src/swagger/index.ts | 1341 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/docs/en/building-tips/operations-dashboard.md | 501 | In this way, the content generated by AI will be closer to the real business, rather than just giving isolated code. | CODE |
| HIGH | …/ai-employees/scenarios/company-background-research.md | 35 | | Research report | Save the complete research report generated by AI this time. | CODE |
| HIGH | …/ai-employees/scenarios/company-background-research.md | 45 | After entering the editing page, "Background information" is displayed using the Markdown editing component. The AI-gene | CODE |
| HIGH | docs/docs/en/ai-dev/capabilities.md | 21 | - NocoBase is migrating from `client` (v1) to `client-v2`, and `client-v2` is still under development. The client code g | CODE |
| HIGH | docs/docs/en/ai-dev/index.md | 36 | - NocoBase is migrating from `client` (v1) to `client-v2`, and `client-v2` is still under development. The client code g | CODE |
| HIGH | docs/docs/en/ai-dev/watermark-plugin.md | 37 | - NocoBase is migrating from `client` (v1) to `client-v2`, and `client-v2` is still under development. The client code g | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …er/llm-providers/__tests__/dashscope-embedding.test.ts | 42 | async function handleRequest(request: IncomingMessage, response: ServerResponse) { | CODE |
| LOW | …r/llm-providers/__tests__/openai-responses-zdr.test.ts | 70 | async function handleRequest(request: IncomingMessage, response: ServerResponse) { | CODE |
| LOW | …erver/llm-providers/__tests__/prompt-cache-key.test.ts | 42 | async function handleRequest(request: IncomingMessage, response: ServerResponse) { | CODE |
| LOW | …ine/src/server/__tests__/flow-surfaces.context.test.ts | 700 | function getData(response: any) { | CODE |
| LOW | …rc/server/__tests__/flow-surfaces.templates.helpers.ts | 76 | export function getData(response: any) { | CODE |
| LOW | …ne/src/server/__tests__/flow-surfaces.reaction.test.ts | 1356 | function getData(response: any) { | CODE |
| LOW | …src/server/__tests__/flow-surfaces.chart-write.test.ts | 1976 | function getData(response: any) { | CODE |
| LOW | …/src/server/__tests__/flow-surfaces.event-flow.test.ts | 708 | function getData(response: any) { | CODE |
| LOW | …src/server/__tests__/flow-surfaces.contract.helpers.ts | 332 | export function getData(response: any) { | CODE |
| LOW | …ow-surfaces.field-default-bindings.integration.test.ts | 228 | function getData(response: any) { | CODE |
| LOW | …c/server/__tests__/flow-surfaces.create-parity.test.ts | 950 | function getData(response: any) { | CODE |
| LOW | …flow-engine/src/server/__tests__/flow-surfaces.test.ts | 11450 | function getData(response: any) { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | packages/core/flow-engine/src/flowEngine.ts | 892 | // Step 1: Collect already-loaded subclasses from _modelClasses | COMMENT |
| LOW⚡ | packages/core/flow-engine/src/flowEngine.ts | 895 | // Step 2: Find unloaded loaders whose extends includes baseClassName | COMMENT |
| LOW⚡ | packages/core/flow-engine/src/flowEngine.ts | 904 | // Step 3: Resolve all matching loaders | COMMENT |
| LOW⚡ | packages/core/flow-engine/src/flowEngine.ts | 909 | // Step 4: Validate resolved classes and add to result | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …cs/docs/en/users-permissions/acl/dev/permission-tab.md | 34 | First, we need to obtain an instance of the `PluginACLClient` plugin ([other methods to obtain plugin instances](/plugin | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/scripts/gen_rag.sh | 96 | # Read file content | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/check-plugin-peer-deps.sh | 6 | # Usage: | COMMENT |