Add files via upload

This commit is contained in:
公明
2026-07-17 16:51:35 +08:00
committed by GitHub
parent 217f8f9648
commit 9f092388e1
13 changed files with 1912 additions and 254 deletions
+114 -8
View File
@@ -585,6 +585,9 @@
"penetrationTestDetail": "Task execution details",
"expandDetail": "Expand details",
"expandDetailLazyHint": "Expand details (loads iteration details on click)",
"loadingEarlierDetails": "Loading earlier entries…",
"loadingLaterDetails": "Loading newer entries…",
"backToLatestProgress": "↓ Back to latest",
"viewToolDetail": "View details",
"collapseToolDetail": "Collapse",
"liveTimelinePruned": "Collapsed the first {{count}} live process details. View the full record page by page after the task completes.",
@@ -1063,6 +1066,47 @@
"coverageOfTotal": "{{percent}}% of all assets",
"coverageMeta": "{{scanned}} / {{total}} covered",
"addAsset": "+ Add asset",
"bulkImport": "Bulk import",
"bulkImportTitle": "Bulk import assets",
"bulkImportSubtitle": "Fill in a template, upload it, then review validation results before importing",
"downloadTemplate": "Download template",
"downloadTemplateHint": "XLSX is recommended; CSV is convenient for exports from other systems",
"downloadXlsx": "Download XLSX template",
"downloadCsv": "Download CSV template",
"uploadFile": "Upload file",
"uploadFileHint": "Supports .xlsx and .csv, up to 100,000 rows and 100 MB",
"chooseOrDropFile": "Choose a file or drop it here",
"fileNotSelected": "No file selected",
"dataPreview": "Data preview",
"rowNumber": "Row",
"validationResult": "Validation",
"validationPassed": "Valid",
"importValidRows": "Import valid rows",
"importValidRowsCount": "Import {{count}} valid rows",
"importPreviewSummary": "{{total}} rows: {{valid}} valid, {{invalid}} need attention",
"previewLimited": "Showing the first 100 rows; all {{count}} rows will be processed",
"fileTypeInvalid": "Only .xlsx and .csv files are supported",
"fileTooLarge": "The file must not exceed 100 MB",
"spreadsheetUnavailable": "The spreadsheet component failed to load; refresh and try again",
"fileParseFailed": "Could not parse the file; make sure it is valid and not corrupted",
"fileHasNoData": "The file has no rows to import",
"headerInvalid": "No template columns were recognized; use the downloaded template",
"tooManyRows": "Data must not exceed {{count}} rows",
"importTargetRequired": "Target address is missing",
"importStatusInvalid": "Status must be active or inactive",
"importProjectNotFound": "Project does not exist or is not accessible: {{project}}",
"importTagsInvalid": "Use at most 30 tags, with at most 64 characters per tag",
"importFieldTooLong": "Field {{field}} is too long",
"duplicateFileRow": "Duplicates row {{row}}",
"bulkImportDone": "Import complete: {{created}} created, {{updated}} updated, {{skipped}} skipped",
"templateGuideTitle": "Asset bulk import instructions",
"templateGuideRequired": "Required: target, or at least one of host / ip / domain",
"templateGuideTarget": "target examples: https://example.com:443, example.com, 1.1.1.1:22",
"templateGuideProject": "project accepts an existing project name or ID; leave blank for no project",
"templateGuideTags": "Separate tags with commas; at most 30 tags",
"templateGuideStatus": "status accepts active / inactive and defaults to active",
"templateGuideLimit": "Enter data in the Assets sheet; up to 100,000 rows",
"instructionsSheet": "Instructions",
"addAssetTitle": "Add asset",
"editAssetTitle": "Edit asset",
"editorSubtitle": "Enter one target; other details are parsed automatically or can be added later",
@@ -1138,6 +1182,8 @@
"selectAsset": "Select asset",
"selectedCount": "{{count}} selected",
"clearSelection": "Clear selection",
"selectAllResults": "Select all {{count}}",
"allResultsSelected": "All {{count}} matching assets selected",
"bindProject": "Bind project",
"bindProjectTitle": "Bind project",
"chooseProject": "Choose a project",
@@ -1173,7 +1219,62 @@
"riskLow": "Low",
"riskInfo": "Info",
"riskNormal": "Clear",
"riskUnassessed": "Unassessed"
"riskUnassessed": "Unassessed",
"advancedFilters": "Advanced filters",
"resetFilters": "Reset",
"allRisks": "All risk levels",
"minVulnerabilityCount": "Minimum findings",
"scanState": "Scan status",
"allScanStates": "All",
"neverScannedFilter": "Never scanned",
"overdue30": "Not scanned for 30 days",
"overdue60": "Not scanned for 60 days",
"overdue90": "Not scanned for 90 days",
"scannedFilter": "Scanned",
"responsiblePerson": "Owner",
"department": "Department",
"ownership": "Ownership",
"unassigned": "Unassigned",
"businessSystem": "Business system",
"environment": "Environment",
"criticality": "Criticality",
"allEnvironments": "All environments",
"environmentProduction": "Production",
"environmentStaging": "Staging",
"environmentTesting": "Testing",
"environmentDevelopment": "Development",
"environmentOther": "Other",
"allCriticalities": "All criticalities",
"criticalityCritical": "Mission critical",
"criticalityHigh": "High",
"criticalityMedium": "Medium",
"criticalityLow": "Low",
"firstSeenStart": "First seen from",
"firstSeenEnd": "First seen to",
"lastSeenStart": "Last seen from",
"lastSeenEnd": "Last seen to",
"sort": "Sort",
"sortLastSeenDesc": "Last seen (newest)",
"sortLastScanAsc": "Most overdue scan",
"sortLastScanDesc": "Most recently scanned",
"sortRiskDesc": "Risk (high to low)",
"sortVulnerabilityDesc": "Findings (most first)",
"sortFirstSeenDesc": "First seen (newest)",
"sortHostAsc": "Target name",
"sortPortAsc": "Port",
"savedViews": "Saved filter views",
"saveCurrentView": "Save current view",
"deleteView": "Delete view",
"bulkEdit": "Bulk edit",
"moreActions": "More",
"export": "Export",
"exportCsv": "Export CSV",
"exportXlsx": "Export XLSX",
"mergeDuplicates": "Merge duplicates",
"mergeRequiresMultiple": "Select at least two duplicate assets",
"batchDelete": "Bulk delete…",
"responsibilityBusiness": "Ownership and business context",
"responsibilityBusinessHint": "Use ownership and business priority to drive operations and risk ranking"
},
"vulnerability": {
"title": "Vulnerability Management",
@@ -1431,10 +1532,10 @@
"security": "Security",
"rbac": "Platform permissions",
"audit": "Audit logs",
"infocollect": "Recon"
"infocollect": "Asset management"
},
"infocollect": {
"title": "Reconnaissance"
"title": "Asset management"
},
"hitl": {
"title": "Human-in-the-loop",
@@ -1772,7 +1873,8 @@
"chatUploads": "Chat Uploads",
"robotIntegration": "Robot Integration",
"markdownAgents": "Markdown Agents",
"projectManagement": "Project Management"
"projectManagement": "Project Management",
"assetManagement": "Asset Management"
},
"summary": {
"login": "User login",
@@ -1930,7 +2032,8 @@
"listProjectFactEdges": "List all project fact edges",
"createProjectFactEdge": "Add fact edge",
"deleteProjectFactEdge": "Delete fact edge",
"promoteAttackChainToProject": "Promote conversation attack chain to project fact graph"
"promoteAttackChainToProject": "Promote conversation attack chain to project fact graph",
"importAssets": "Import assets in bulk"
},
"response": {
"getSuccess": "Success",
@@ -1995,7 +2098,11 @@
"factGraphNodesEdges": "nodes + edges",
"edgeList": "Edge list",
"edgeCreated": "Edge created",
"promoteAttackChainResult": "Promotion result (facts/edges/graph)"
"promoteAttackChainResult": "Promotion result (facts/edges/graph)",
"assetImportCompleted": "Import completed",
"assetImportValidationFailed": "Asset count or field validation failed",
"assetImportForbidden": "Missing asset:write permission or access to the specified project",
"assetImportTransactionFailed": "Import transaction failed"
}
},
"chatGroup": {
@@ -2445,6 +2552,7 @@
"providerClaude": "Claude (Anthropic Messages API)",
"visionProviderReuseOpenAI": "Reuse OpenAI config (leave empty)",
"fofaConfig": "FOFA config",
"fofaConfigHint": "Used for asset discovery and import; only an API key is required.",
"agentConfig": "Agent config",
"knowledgeConfig": "Knowledge base config",
"baseUrl": "Base URL",
@@ -2469,8 +2577,6 @@
"openaiReasoningAllowClient": "Allow chat page to override reasoning options",
"fofaBaseUrlPlaceholder": "https://fofa.info/api/v1/search/all (optional)",
"fofaBaseUrlHint": "Leave empty for default.",
"email": "Email",
"fofaEmailPlaceholder": "Enter FOFA email",
"fofaApiKeyPlaceholder": "Enter FOFA API Key",
"fofaApiKeyHint": "Stored in server config (config.yaml) only.",
"maxIterations": "Max iterations",
+115 -9
View File
@@ -573,6 +573,9 @@
"penetrationTestDetail": "任务执行详情",
"expandDetail": "展开详情",
"expandDetailLazyHint": "展开详情(点击后加载迭代详情)",
"loadingEarlierDetails": "正在加载更早记录…",
"loadingLaterDetails": "正在加载更新记录…",
"backToLatestProgress": "↓ 回到最新进度",
"viewToolDetail": "查看详情",
"collapseToolDetail": "收起",
"liveTimelinePruned": "已收起前 {{count}} 条实时过程详情,任务完成后可按页查看完整记录",
@@ -1051,6 +1054,47 @@
"coverageOfTotal": "占全部资产 {{percent}}%",
"coverageMeta": "{{scanned}} / {{total}} 已覆盖",
"addAsset": "+ 新增资产",
"bulkImport": "批量导入",
"bulkImportTitle": "批量导入资产",
"bulkImportSubtitle": "下载模板填写后上传,提交前会先校验并预览数据",
"downloadTemplate": "下载模板",
"downloadTemplateHint": "推荐 XLSXCSV 适合从其他系统快速导出",
"downloadXlsx": "下载 XLSX 模板",
"downloadCsv": "下载 CSV 模板",
"uploadFile": "上传文件",
"uploadFileHint": "支持 .xlsx 和 .csv,最多 100000 行、100 MB",
"chooseOrDropFile": "选择文件,或拖拽到此处",
"fileNotSelected": "尚未选择文件",
"dataPreview": "数据预览",
"rowNumber": "行号",
"validationResult": "校验结果",
"validationPassed": "通过",
"importValidRows": "导入有效数据",
"importValidRowsCount": "导入 {{count}} 条有效数据",
"importPreviewSummary": "共 {{total}} 行,{{valid}} 行有效,{{invalid}} 行需修正",
"previewLimited": "仅展示前 100 行;提交时将处理全部 {{count}} 行",
"fileTypeInvalid": "仅支持 .xlsx 和 .csv 文件",
"fileTooLarge": "文件不能超过 100 MB",
"spreadsheetUnavailable": "表格组件加载失败,请刷新后重试",
"fileParseFailed": "无法解析文件,请确认文件未损坏且格式正确",
"fileHasNoData": "文件中没有可导入的数据",
"headerInvalid": "未识别到模板字段,请使用下载的模板填写",
"tooManyRows": "数据不能超过 {{count}} 行",
"importTargetRequired": "缺少目标地址",
"importStatusInvalid": "状态仅支持 active 或 inactive",
"importProjectNotFound": "项目不存在或无权访问:{{project}}",
"importTagsInvalid": "标签最多 30 个,单个标签最多 64 个字符",
"importFieldTooLong": "字段 {{field}} 内容过长",
"duplicateFileRow": "与第 {{row}} 行重复",
"bulkImportDone": "导入完成:新增 {{created}} 条,更新 {{updated}} 条,跳过 {{skipped}} 条",
"templateGuideTitle": "资产批量导入填写说明",
"templateGuideRequired": "必填:target,或 host / ip / domain 中至少一项",
"templateGuideTarget": "target 示例:https://example.com:443、example.com、1.1.1.1:22",
"templateGuideProject": "project 填写系统中已有的项目名称或项目 ID,留空表示不绑定",
"templateGuideTags": "tags 使用逗号分隔,最多 30 个",
"templateGuideStatus": "status 仅支持 active / inactive,留空默认为 active",
"templateGuideLimit": "请在“Assets”工作表中填写,最多 100000 行",
"instructionsSheet": "填写说明",
"addAssetTitle": "新增资产",
"editAssetTitle": "编辑资产",
"editorSubtitle": "输入一个目标即可,其余信息可自动解析或稍后补充",
@@ -1125,7 +1169,9 @@
"selectPage": "选择本页",
"selectAsset": "选择资产",
"selectedCount": "已选择 {{count}} 项",
"clearSelection": "取消选择",
"clearSelection": "清除选择",
"selectAllResults": "选择全部 {{count}} 项",
"allResultsSelected": "已选择当前筛选结果中的 {{count}} 项",
"bindProject": "绑定项目",
"bindProjectTitle": "绑定项目",
"chooseProject": "请选择项目",
@@ -1161,7 +1207,62 @@
"riskLow": "低危",
"riskInfo": "提示",
"riskNormal": "正常",
"riskUnassessed": "未评估"
"riskUnassessed": "未评估",
"advancedFilters": "高级筛选",
"resetFilters": "重置",
"allRisks": "全部风险",
"minVulnerabilityCount": "漏洞数量至少",
"scanState": "扫描状态",
"allScanStates": "全部",
"neverScannedFilter": "从未扫描",
"overdue30": "30 天未扫描",
"overdue60": "60 天未扫描",
"overdue90": "90 天未扫描",
"scannedFilter": "已扫描",
"responsiblePerson": "负责人",
"department": "部门",
"ownership": "归属",
"unassigned": "未分配",
"businessSystem": "业务系统",
"environment": "环境",
"criticality": "重要性",
"allEnvironments": "全部环境",
"environmentProduction": "生产",
"environmentStaging": "预发布",
"environmentTesting": "测试",
"environmentDevelopment": "开发",
"environmentOther": "其他",
"allCriticalities": "全部级别",
"criticalityCritical": "核心",
"criticalityHigh": "重要",
"criticalityMedium": "一般",
"criticalityLow": "低",
"firstSeenStart": "首次发现开始",
"firstSeenEnd": "首次发现结束",
"lastSeenStart": "最近发现开始",
"lastSeenEnd": "最近发现结束",
"sort": "排序",
"sortLastSeenDesc": "最近发现(新到旧)",
"sortLastScanAsc": "最久未扫描优先",
"sortLastScanDesc": "最近扫描优先",
"sortRiskDesc": "风险从高到低",
"sortVulnerabilityDesc": "漏洞数量从多到少",
"sortFirstSeenDesc": "首次发现(新到旧)",
"sortHostAsc": "目标名称",
"sortPortAsc": "端口",
"savedViews": "保存的筛选视图",
"saveCurrentView": "保存当前视图",
"deleteView": "删除视图",
"bulkEdit": "批量编辑",
"moreActions": "更多",
"export": "导出",
"exportCsv": "导出 CSV",
"exportXlsx": "导出 XLSX",
"mergeDuplicates": "合并重复资产",
"mergeRequiresMultiple": "请至少选择两个重复资产",
"batchDelete": "批量删除…",
"responsibilityBusiness": "责任与业务属性",
"responsibilityBusinessHint": "用于资产归属、运营分级与风险排序"
},
"vulnerability": {
"title": "漏洞管理",
@@ -1419,10 +1520,10 @@
"security": "安全设置",
"rbac": "平台权限",
"audit": "日志审计",
"infocollect": "信息收集"
"infocollect": "资产管理"
},
"infocollect": {
"title": "信息收集"
"title": "资产管理"
},
"hitl": {
"title": "人机协同",
@@ -1760,7 +1861,8 @@
"chatUploads": "对话附件",
"robotIntegration": "机器人集成",
"markdownAgents": "多代理Markdown",
"projectManagement": "项目管理"
"projectManagement": "项目管理",
"assetManagement": "资产管理"
},
"summary": {
"login": "用户登录",
@@ -1918,7 +2020,8 @@
"listProjectFactEdges": "列出项目全部事实边",
"createProjectFactEdge": "添加事实边",
"deleteProjectFactEdge": "删除事实边",
"promoteAttackChainToProject": "将对话攻击链沉淀到项目事实图"
"promoteAttackChainToProject": "将对话攻击链沉淀到项目事实图",
"importAssets": "批量导入资产"
},
"response": {
"getSuccess": "获取成功",
@@ -1983,7 +2086,11 @@
"factGraphNodesEdges": "nodes + edges",
"edgeList": "边列表",
"edgeCreated": "边已创建",
"promoteAttackChainResult": "沉淀结果(facts/edges/graph"
"promoteAttackChainResult": "沉淀结果(facts/edges/graph",
"assetImportCompleted": "导入完成",
"assetImportValidationFailed": "数量或资产字段校验失败",
"assetImportForbidden": "缺少 asset:write 权限或无权访问指定项目",
"assetImportTransactionFailed": "导入事务失败"
}
},
"chatGroup": {
@@ -2433,6 +2540,7 @@
"providerClaude": "Claude (Anthropic Messages API)",
"visionProviderReuseOpenAI": "OpenAI 配置(留空复用)",
"fofaConfig": "FOFA 配置",
"fofaConfigHint": "用于资产发现与导入,仅需配置 API Key。",
"agentConfig": "Agent 配置",
"knowledgeConfig": "知识库配置",
"baseUrl": "Base URL",
@@ -2457,8 +2565,6 @@
"openaiReasoningAllowClient": "允许对话页覆盖推理选项",
"fofaBaseUrlPlaceholder": "https://fofa.info/api/v1/search/all(可选)",
"fofaBaseUrlHint": "留空则使用默认地址。",
"email": "Email",
"fofaEmailPlaceholder": "输入 FOFA 账号邮箱",
"fofaApiKeyPlaceholder": "输入 FOFA API Key",
"fofaApiKeyHint": "仅保存在服务器配置中(`config.yaml`)。",
"maxIterations": "最大迭代次数",