@hkyhy/marsun-components-core 0.1.115 → 0.1.116

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/agent-hub.js +131 -126
  2. package/dist/agent-hub.js.map +1 -1
  3. package/dist/components/AgentHub/Chat/Detail/ChatAgentFab/index.d.ts +1 -1
  4. package/dist/components/AgentHub/Chat/Detail/ChatAgentFab/index.js.map +1 -1
  5. package/dist/components/AgentHub/Chat/Detail/ChatAgentFab/style.module.scss.js +9 -9
  6. package/dist/components/AgentHub/Chat/Detail/ChatAgentFabLayout/index.d.ts +2 -2
  7. package/dist/components/AgentHub/Chat/Detail/ChatAgentFabLayout/index.js.map +1 -1
  8. package/dist/components/AgentHub/Chat/Detail/ChatAgentFabLayout/style.module.scss.js +3 -3
  9. package/dist/components/AgentHub/Chat/Detail/ChatCapabilityStrip/index.d.ts +20 -0
  10. package/dist/components/AgentHub/Chat/Detail/ChatCapabilityStrip/index.js +155 -0
  11. package/dist/components/AgentHub/Chat/Detail/ChatCapabilityStrip/index.js.map +1 -0
  12. package/dist/components/AgentHub/Chat/Detail/ChatCapabilityStrip/style.module.scss.js +19 -0
  13. package/dist/components/AgentHub/Chat/Detail/ChatCapabilityStrip/style.module.scss.js.map +1 -0
  14. package/dist/components/AgentHub/Chat/Detail/ChatPanel/index.d.ts +2 -0
  15. package/dist/components/AgentHub/Chat/Detail/ChatPanel/index.js +59 -55
  16. package/dist/components/AgentHub/Chat/Detail/ChatPanel/index.js.map +1 -1
  17. package/dist/components/AgentHub/Chat/Detail/ChatPanelHeaderTools/index.d.ts +19 -0
  18. package/dist/components/AgentHub/Chat/Detail/ChatPanelHeaderTools/index.js +122 -0
  19. package/dist/components/AgentHub/Chat/Detail/ChatPanelHeaderTools/index.js.map +1 -0
  20. package/dist/components/AgentHub/Chat/Detail/ChatPanelHeaderTools/style.module.scss.js +8 -0
  21. package/dist/components/AgentHub/Chat/Detail/ChatPanelHeaderTools/style.module.scss.js.map +1 -0
  22. package/dist/components/AgentHub/Chat/Detail/index.d.ts +4 -0
  23. package/dist/components/Audit/AuditLogList.d.ts +2 -0
  24. package/dist/components/Audit/AuditLogList.js +179 -170
  25. package/dist/components/Audit/AuditLogList.js.map +1 -1
  26. package/dist/components/Audit/labels.d.ts +6 -2
  27. package/dist/components/Audit/labels.js +19 -16
  28. package/dist/components/Audit/labels.js.map +1 -1
  29. package/dist/components/Audit/labels.json.d.ts +47 -1
  30. package/dist/components/Audit/labels.json.js +124 -32
  31. package/dist/components/Audit/labels.json.js.map +1 -1
  32. package/dist/components/Audit/style.module.scss.js +26 -22
  33. package/dist/components/Audit/style.module.scss.js.map +1 -1
  34. package/dist/components/Icons/ZoomIn.d.ts +1 -0
  35. package/dist/components/Icons/ZoomIn.js +7 -0
  36. package/dist/components/Icons/ZoomIn.js.map +1 -0
  37. package/dist/components/Icons/ZoomOut.d.ts +1 -0
  38. package/dist/components/Icons/ZoomOut.js +7 -0
  39. package/dist/components/Icons/ZoomOut.js.map +1 -0
  40. package/dist/components/Icons/index.d.ts +2 -0
  41. package/dist/components/Icons/registry.d.ts +1 -1
  42. package/dist/components/Icons/registry.js +58 -52
  43. package/dist/components/Icons/registry.js.map +1 -1
  44. package/dist/components/Stat/StatCardList.js +16 -16
  45. package/dist/components/Stat/StatCardList.js.map +1 -1
  46. package/dist/components/Tools/ActionTracking/ActionTrackingShell.d.ts +27 -0
  47. package/dist/components/Tools/ActionTracking/ActionTrackingShell.js +43 -0
  48. package/dist/components/Tools/ActionTracking/ActionTrackingShell.js.map +1 -0
  49. package/dist/components/Tools/ActionTracking/index.d.ts +2 -0
  50. package/dist/components/Tools/ActionTracking/style.module.scss.js +7 -0
  51. package/dist/components/Tools/ActionTracking/style.module.scss.js.map +1 -0
  52. package/dist/components/Tools/index.d.ts +2 -0
  53. package/dist/index.js +787 -776
  54. package/dist/index.js.map +1 -1
  55. package/dist/marsun-components-core.css +1 -1
  56. package/dist/styles/global.css +1 -1
  57. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AuditLogList.js","sources":["../../../src/components/Audit/AuditLogList.tsx"],"sourcesContent":["import { CommonDescriptions } from '@/components/Descriptions';\nimport InfoPage from '@/components/InfoPage';\nimport { StatCardList, type StatItem } from '@/components/Stat';\nimport { Table } from '@/components/Table';\nimport { SEMANTIC_COLORS, SemanticTag } from '@/components/Tag';\nimport { VirtualScrollbar } from '@/components/VirtualScrollbar';\nimport { copyText } from '@/utils/copyText';\nimport { Button, Collapse, Empty, Space, Typography, message } from 'antd';\nimport type { ColumnsType } from 'antd/es/table';\nimport classNames from 'classnames';\nimport dayjs from 'dayjs';\nimport React, { useMemo } from 'react';\nimport { AuditDayStatsBar } from './AuditDayStatsBar';\nimport { AuditWaterfall } from './AuditWaterfall';\nimport { computeDetailKpi, isErrorStep } from './detailKpi';\nimport { formatAuditJson, isTruncatedAuditText } from './formatAuditJson';\nimport { buildAuditReplayCurl, readBrowserReplaySession } from './formatAuditCurl';\nimport { displayActionLabel, displaySummary, labelOfAction } from './labels';\nimport styles from './style.module.scss';\nimport type { AuditDayStats, AuditEventDetail, AuditEventListItem, AuditStep } from './types';\n\nexport type AuditLogListMode = 'app' | 'platform';\n\nexport type AuditLogListProps = {\n mode?: AuditLogListMode;\n dataSource: AuditEventListItem[];\n loading?: boolean;\n /** 点击行(进详情页) */\n onRowClick?: (row: AuditEventListItem) => void;\n filterSlot?: React.ReactNode;\n /** 日汇总顶栏 */\n dayStats?: AuditDayStats | null;\n dayStatsLoading?: boolean;\n dayStatsError?: string | null;\n onExport?: () => void;\n exportLoading?: boolean;\n pagination?: false | object;\n className?: string;\n};\n\nfunction formatCreatedAt(iso: string): string {\n const d = dayjs(iso);\n return d.isValid() ? d.format('YYYY-MM-DD HH:mm:ss') : iso;\n}\n\nfunction statusLabel(status: string): string {\n if (status === 'success') return '成功';\n if (status === 'fail' || status === 'error') return '失败';\n return status;\n}\n\nfunction statusColor(status: string): string {\n if (status === 'success') return SEMANTIC_COLORS.SUCCESS;\n if (status === 'fail' || status === 'error') return SEMANTIC_COLORS.DANGER;\n return SEMANTIC_COLORS.DEFAULT;\n}\n\nfunction categoryLabel(c?: string | null): string {\n if (c === 'TRACE') return '请求线路';\n if (c === 'SYSTEM') return '系统';\n if (c === 'OPERATION' || !c) return '业务操作';\n return c;\n}\n\nfunction httpStatusColor(code: number): string {\n if (code >= 500) return SEMANTIC_COLORS.DANGER;\n if (code >= 400) return SEMANTIC_COLORS.WARNING;\n if (code >= 200 && code < 300) return SEMANTIC_COLORS.SUCCESS;\n return SEMANTIC_COLORS.DEFAULT;\n}\n\nfunction parseHttpStatus(output: unknown): number | null {\n if (!output || typeof output !== 'object' || Array.isArray(output)) return null;\n const v = (output as { httpStatus?: unknown }).httpStatus;\n if (typeof v === 'number' && Number.isFinite(v)) return v;\n if (v != null && String(v).trim() !== '') {\n const n = Number(v);\n return Number.isFinite(n) ? n : null;\n }\n return null;\n}\n\nfunction showActionCode(detail: AuditEventDetail): boolean {\n return Boolean(detail.actionLabel?.trim()) || Boolean(labelOfAction(detail.action));\n}\n\nconst JsonBlock: React.FC<{ value: unknown; maxHeight?: number }> = ({\n value,\n maxHeight = 360,\n}) => {\n const text = formatAuditJson(value);\n const truncated = isTruncatedAuditText(value) || text.includes('…[truncated]');\n return (\n <div className={styles.jsonWrap}>\n {truncated ? (\n <div className={styles.truncateHint}>内容已截断(采集侧 body 上限),以下为可读展开</div>\n ) : null}\n <VirtualScrollbar className={styles.jsonScroll} style={{ maxHeight }}>\n <pre className={styles.jsonBlock}>{text}</pre>\n </VirtualScrollbar>\n </div>\n );\n};\n\nfunction renderBody(label: string, value: unknown): React.ReactNode {\n if (value == null) return null;\n if (\n label === 'output' &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n value !== null &&\n ('httpStatus' in (value as object) || 'body' in (value as object))\n ) {\n const out = value as { body?: unknown; [k: string]: unknown };\n const rest = { ...out };\n delete rest.httpStatus;\n delete rest.body;\n const hasRest = Object.keys(rest).length > 0;\n return (\n <>\n {out.body !== undefined ? (\n <>\n <div className={styles.blockLabel}>响应体</div>\n <JsonBlock value={out.body} maxHeight={420} />\n </>\n ) : null}\n {hasRest ? (\n <>\n <div className={styles.blockLabel}>其它</div>\n <JsonBlock value={rest} />\n </>\n ) : null}\n </>\n );\n }\n return (\n <>\n <div className={styles.blockLabel}>{label}</div>\n <JsonBlock value={value} />\n </>\n );\n}\n\nexport const AuditStepContent: React.FC<{ step: AuditStep }> = ({ step }) => {\n const httpStatus = parseHttpStatus(step.output);\n return (\n <div className={styles.stepBody}>\n <div className={styles.stepMeta}>\n {step.stepType ? (\n <SemanticTag color={SEMANTIC_COLORS.DEFAULT}>{step.stepType}</SemanticTag>\n ) : null}\n {httpStatus != null ? (\n <SemanticTag color={httpStatusColor(httpStatus)}>HTTP {httpStatus}</SemanticTag>\n ) : null}\n {step.occurredAt ? (\n <Typography.Text type=\"secondary\">{formatCreatedAt(step.occurredAt)}</Typography.Text>\n ) : null}\n {typeof step.durationMs === 'number' ? (\n <Typography.Text type=\"secondary\">{step.durationMs} ms</Typography.Text>\n ) : null}\n </div>\n {step.sqlText ? (\n <>\n <div className={styles.blockLabel}>SQL</div>\n <VirtualScrollbar className={styles.jsonScroll} style={{ maxHeight: 200 }}>\n <pre className={styles.jsonBlock}>{step.sqlText}</pre>\n </VirtualScrollbar>\n </>\n ) : null}\n {step.tables?.length ? (\n <Typography.Text type=\"secondary\">表:{step.tables.join(', ')}</Typography.Text>\n ) : null}\n {step.errorMessage ? (\n <Typography.Text type=\"danger\">{step.errorMessage}</Typography.Text>\n ) : null}\n {step.errorCode ? (\n <Typography.Text type=\"secondary\">错误码:{step.errorCode}</Typography.Text>\n ) : null}\n {step.input != null ? renderBody('请求体', step.input) : null}\n {step.output != null ? renderBody('output', step.output) : null}\n </div>\n );\n};\n\n/** 审计事件详情:KPI + Lazy 瀑布 + 默认折叠 Flow */\nexport const AuditEventDetailView: React.FC<{\n detail: AuditEventDetail | null;\n loading?: boolean;\n emptyDescription?: string;\n className?: string;\n /** 当前登录 token(不含 Bearer 前缀亦可);复制 curl 用,不落库 */\n getAuthToken?: () => string | null | undefined;\n}> = ({ detail, loading, emptyDescription = '暂无明细', className, getAuthToken }) => {\n const kpi = useMemo(() => computeDetailKpi(detail), [detail]);\n const kpiItems = useMemo((): StatItem[] => {\n const slow =\n kpi.slowestStep != null ? `${kpi.slowestStep.title} (${kpi.slowestStep.durationMs}ms)` : '—';\n return [\n {\n title: '总耗时',\n value: kpi.durationMs ?? '—',\n suffix: kpi.durationMs != null ? 'ms' : undefined,\n tone: 'blue',\n color: '#1677ff',\n },\n { title: '步数', value: kpi.stepCount, tone: 'lilac', color: '#722ed1' },\n { title: 'SQL 步', value: kpi.sqlCount, tone: 'mint', color: '#0d9f8a' },\n { title: '最慢步', value: slow, tone: 'peach', color: '#d46b08' },\n ];\n }, [kpi]);\n\n if (loading) {\n return <Typography.Text type=\"secondary\">加载中…</Typography.Text>;\n }\n if (!detail) {\n return <Empty description={emptyDescription} />;\n }\n\n const steps = detail.steps || [];\n const title = displayActionLabel(detail.action, detail.actionLabel);\n const errorKeys = steps\n .map((s, i) => (isErrorStep(s) ? String(i) : null))\n .filter((k): k is string => k != null);\n\n const descContent = [\n {\n label: '操作人',\n value: detail.actorName?.trim() ? detail.actorName : '—',\n },\n { label: '时间', value: formatCreatedAt(detail.createdAt) },\n {\n label: '方法',\n value: detail.httpMethod?.trim() ? detail.httpMethod : '—',\n },\n {\n label: '状态',\n value: (\n <SemanticTag color={statusColor(detail.status)}>{statusLabel(detail.status)}</SemanticTag>\n ),\n },\n {\n label: '类别',\n value: detail.category ? categoryLabel(detail.category) : '—',\n },\n {\n label: '耗时',\n value: typeof detail.durationMs === 'number' ? `${detail.durationMs} ms` : '—',\n },\n {\n label: '路径',\n value: detail.path?.trim() ? (\n <Typography.Text code copyable={{ text: detail.path }}>\n {detail.path}\n </Typography.Text>\n ) : (\n '—'\n ),\n span: 2,\n },\n {\n label: 'traceId',\n value: detail.traceId ? (\n <Typography.Text copyable={{ text: detail.traceId }}>{detail.traceId}</Typography.Text>\n ) : (\n '—'\n ),\n span: 1,\n },\n ...(showActionCode(detail)\n ? [{ label: '动作码', value: <Typography.Text code>{detail.action}</Typography.Text> }]\n : []),\n ];\n\n return (\n <InfoPage className={classNames(styles.detail, className)}>\n <InfoPage.Part\n title={\n <Space size={8} wrap>\n <span>{title}</span>\n {title !== detail.action ? (\n <Typography.Text type=\"secondary\" className={styles.actionCode}>\n {detail.action}\n </Typography.Text>\n ) : null}\n </Space>\n }\n subtitle=\"事件摘要\"\n extra={\n detail.path || detail.requestCurl ? (\n <Button\n size=\"small\"\n type=\"primary\"\n onClick={async () => {\n try {\n const text = buildAuditReplayCurl(detail, readBrowserReplaySession(getAuthToken));\n const ok = await copyText(text);\n if (ok) message.success('已复制 curl');\n else message.error('复制失败');\n } catch (e) {\n message.error(e instanceof Error ? e.message : '无法生成 curl');\n }\n }}\n >\n 复制 curl\n </Button>\n ) : undefined\n }\n >\n <div className={styles.kpiBlock}>\n <StatCardList items={kpiItems} inline fontSize={20} gutter={[12, 8]} />\n </div>\n <CommonDescriptions content={descContent} column={3} bordered size=\"small\" />\n </InfoPage.Part>\n\n <InfoPage.Part title=\"耗时瀑布\" subtitle=\"逐步 durationMs(无 SQL 原文)\">\n <AuditWaterfall steps={steps} />\n </InfoPage.Part>\n\n <InfoPage.Part title=\"执行流程\" subtitle=\"默认折叠;失败步展开;展开后见 SQL/正文\">\n {detail.stepsTruncated ? (\n <div className={styles.truncateNote}>\n 步骤已截断:展示 {steps.length} / {detail.stepsTotal ?? steps.length}\n </div>\n ) : null}\n {steps.length === 0 ? (\n <Empty description=\"无流程步骤\" />\n ) : (\n <Collapse\n defaultActiveKey={errorKeys}\n items={steps.map((s, i) => ({\n key: String(i),\n label: (\n <Space size={8} wrap>\n <span>{s.title || s.stepType}</span>\n {typeof s.durationMs === 'number' ? (\n <Typography.Text type=\"secondary\">{s.durationMs} ms</Typography.Text>\n ) : null}\n {isErrorStep(s) ? (\n <SemanticTag color={SEMANTIC_COLORS.DANGER}>失败</SemanticTag>\n ) : null}\n </Space>\n ),\n children: <AuditStepContent step={s} />,\n }))}\n />\n )}\n </InfoPage.Part>\n </InfoPage>\n );\n};\n\nexport const AuditLogList: React.FC<AuditLogListProps> = ({\n mode = 'app',\n dataSource,\n loading,\n onRowClick,\n filterSlot,\n dayStats,\n dayStatsLoading,\n dayStatsError,\n onExport,\n exportLoading,\n pagination,\n className,\n}) => {\n const columns: ColumnsType<AuditEventListItem> = useMemo(() => {\n const cols: ColumnsType<AuditEventListItem> = [\n {\n title: '时间',\n dataIndex: 'createdAt',\n width: 180,\n render: (v: string) => formatCreatedAt(v),\n },\n {\n title: '类别',\n dataIndex: 'category',\n width: 96,\n render: (v: string | undefined) => categoryLabel(v),\n },\n {\n title: '方法',\n dataIndex: 'httpMethod',\n width: 72,\n render: (v: string | null | undefined) => (v && String(v).trim() ? v : '—'),\n },\n {\n title: '操作人',\n dataIndex: 'actorName',\n width: 100,\n ellipsis: true,\n render: (v: string | null | undefined) => (v && String(v).trim() ? v : '—'),\n },\n {\n title: '动作',\n dataIndex: 'action',\n width: 160,\n ellipsis: true,\n render: (_: unknown, row) => displayActionLabel(row.action, row.actionLabel),\n },\n {\n title: '摘要',\n dataIndex: 'summary',\n ellipsis: true,\n render: (_: unknown, row) =>\n displaySummary(row.summary, displayActionLabel(row.action, row.actionLabel)),\n },\n {\n title: '状态',\n dataIndex: 'status',\n width: 90,\n render: (v: string) => <SemanticTag color={statusColor(v)}>{statusLabel(v)}</SemanticTag>,\n },\n { title: '耗时ms', dataIndex: 'durationMs', width: 80 },\n { title: '路径', dataIndex: 'path', ellipsis: true },\n ];\n if (mode === 'platform') {\n cols.splice(2, 0, {\n title: '系统',\n dataIndex: 'systemAppId',\n width: 140,\n ellipsis: true,\n });\n }\n return cols;\n }, [mode]);\n\n return (\n <div className={classNames(styles.wrap, className)}>\n {filterSlot ? <div className={styles.filter}>{filterSlot}</div> : null}\n {dayStats !== undefined || onExport ? (\n <AuditDayStatsBar\n stats={dayStats ?? null}\n loading={dayStatsLoading}\n error={dayStatsError}\n onExport={onExport}\n exportLoading={exportLoading}\n />\n ) : null}\n <Table<AuditEventListItem>\n rowKey=\"id\"\n loading={loading}\n columns={columns}\n dataSource={dataSource}\n pagination={pagination === undefined ? false : pagination}\n onRow={\n onRowClick\n ? (record) => ({\n onClick: () => onRowClick(record),\n style: { cursor: 'pointer' },\n })\n : undefined\n }\n />\n </div>\n );\n};\n\nexport default AuditLogList;\n"],"names":["formatCreatedAt","iso","d","dayjs","statusLabel","status","statusColor","SEMANTIC_COLORS","categoryLabel","c","httpStatusColor","code","parseHttpStatus","output","v","n","showActionCode","detail","_a","labelOfAction","JsonBlock","value","maxHeight","text","formatAuditJson","truncated","isTruncatedAuditText","jsxs","styles","jsx","VirtualScrollbar","renderBody","label","out","rest","hasRest","Fragment","AuditStepContent","step","httpStatus","SemanticTag","Typography","AuditEventDetailView","loading","emptyDescription","className","getAuthToken","kpi","useMemo","computeDetailKpi","kpiItems","slow","Empty","steps","title","displayActionLabel","errorKeys","s","i","isErrorStep","k","descContent","_b","_c","InfoPage","classNames","Space","Button","buildAuditReplayCurl","readBrowserReplaySession","copyText","message","e","StatCardList","CommonDescriptions","AuditWaterfall","Collapse","AuditLogList","mode","dataSource","onRowClick","filterSlot","dayStats","dayStatsLoading","dayStatsError","onExport","exportLoading","pagination","columns","cols","_","row","displaySummary","AuditDayStatsBar","Table","record"],"mappings":"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"}
1
+ {"version":3,"file":"AuditLogList.js","sources":["../../../src/components/Audit/AuditLogList.tsx"],"sourcesContent":["import { CommonDescriptions } from '@/components/Descriptions';\nimport InfoPage from '@/components/InfoPage';\nimport { StatCardList, type StatItem } from '@/components/Stat';\nimport { Table } from '@/components/Table';\nimport { SEMANTIC_COLORS, SemanticTag } from '@/components/Tag';\nimport { VirtualScrollbar } from '@/components/VirtualScrollbar';\nimport { copyText } from '@/utils/copyText';\nimport { Button, Collapse, Empty, Space, Typography, message } from 'antd';\nimport type { ColumnsType } from 'antd/es/table';\nimport classNames from 'classnames';\nimport dayjs from 'dayjs';\nimport React, { useMemo } from 'react';\nimport { AuditDayStatsBar } from './AuditDayStatsBar';\nimport { AuditWaterfall } from './AuditWaterfall';\nimport { computeDetailKpi, isErrorStep } from './detailKpi';\nimport { formatAuditJson, isTruncatedAuditText } from './formatAuditJson';\nimport { buildAuditReplayCurl, readBrowserReplaySession } from './formatAuditCurl';\nimport { displayActionLabel, displaySummary, labelOfAction } from './labels';\nimport styles from './style.module.scss';\nimport type { AuditDayStats, AuditEventDetail, AuditEventListItem, AuditStep } from './types';\n\nexport type AuditLogListMode = 'app' | 'platform';\n\nexport type AuditLogListProps = {\n mode?: AuditLogListMode;\n dataSource: AuditEventListItem[];\n loading?: boolean;\n /** 点击行(进详情页) */\n onRowClick?: (row: AuditEventListItem) => void;\n filterSlot?: React.ReactNode;\n /** 日汇总顶栏 */\n dayStats?: AuditDayStats | null;\n dayStatsLoading?: boolean;\n dayStatsError?: string | null;\n onExport?: () => void;\n exportLoading?: boolean;\n pagination?: false | object;\n className?: string;\n /** platform 系统列:SSO SystemApp.code → name;缺则回落 systemAppId */\n systemAppNames?: Record<string, string>;\n};\n\nfunction formatCreatedAt(iso: string): string {\n const d = dayjs(iso);\n return d.isValid() ? d.format('YYYY-MM-DD HH:mm:ss') : iso;\n}\n\nfunction statusLabel(status: string): string {\n if (status === 'success') return '成功';\n if (status === 'fail' || status === 'error') return '失败';\n return status;\n}\n\nfunction statusColor(status: string): string {\n if (status === 'success') return SEMANTIC_COLORS.SUCCESS;\n if (status === 'fail' || status === 'error') return SEMANTIC_COLORS.DANGER;\n return SEMANTIC_COLORS.DEFAULT;\n}\n\nfunction categoryLabel(c?: string | null): string {\n if (c === 'TRACE') return '请求线路';\n if (c === 'SYSTEM') return '系统';\n if (c === 'OPERATION' || !c) return '业务操作';\n return c;\n}\n\nfunction httpStatusColor(code: number): string {\n if (code >= 500) return SEMANTIC_COLORS.DANGER;\n if (code >= 400) return SEMANTIC_COLORS.WARNING;\n if (code >= 200 && code < 300) return SEMANTIC_COLORS.SUCCESS;\n return SEMANTIC_COLORS.DEFAULT;\n}\n\nfunction parseHttpStatus(output: unknown): number | null {\n if (!output || typeof output !== 'object' || Array.isArray(output)) return null;\n const v = (output as { httpStatus?: unknown }).httpStatus;\n if (typeof v === 'number' && Number.isFinite(v)) return v;\n if (v != null && String(v).trim() !== '') {\n const n = Number(v);\n return Number.isFinite(n) ? n : null;\n }\n return null;\n}\n\nfunction showActionCode(detail: AuditEventDetail): boolean {\n return Boolean(detail.actionLabel?.trim()) || Boolean(labelOfAction(detail.action));\n}\n\nconst JsonBlock: React.FC<{ value: unknown; maxHeight?: number }> = ({\n value,\n maxHeight = 360,\n}) => {\n const text = formatAuditJson(value);\n const truncated = isTruncatedAuditText(value) || text.includes('…[truncated]');\n return (\n <div className={styles.jsonWrap}>\n {truncated ? (\n <div className={styles.truncateHint}>内容已截断(采集侧 body 上限),以下为可读展开</div>\n ) : null}\n <VirtualScrollbar className={styles.jsonScroll} style={{ maxHeight }}>\n <pre className={styles.jsonBlock}>{text}</pre>\n </VirtualScrollbar>\n </div>\n );\n};\n\nfunction renderBody(label: string, value: unknown): React.ReactNode {\n if (value == null) return null;\n if (\n label === 'output' &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n value !== null &&\n ('httpStatus' in (value as object) || 'body' in (value as object))\n ) {\n const out = value as { body?: unknown; [k: string]: unknown };\n const rest = { ...out };\n delete rest.httpStatus;\n delete rest.body;\n const hasRest = Object.keys(rest).length > 0;\n return (\n <>\n {out.body !== undefined ? (\n <>\n <div className={styles.blockLabel}>响应体</div>\n <JsonBlock value={out.body} maxHeight={420} />\n </>\n ) : null}\n {hasRest ? (\n <>\n <div className={styles.blockLabel}>其它</div>\n <JsonBlock value={rest} />\n </>\n ) : null}\n </>\n );\n }\n return (\n <>\n <div className={styles.blockLabel}>{label}</div>\n <JsonBlock value={value} />\n </>\n );\n}\n\nexport const AuditStepContent: React.FC<{ step: AuditStep }> = ({ step }) => {\n const httpStatus = parseHttpStatus(step.output);\n return (\n <div className={styles.stepBody}>\n <div className={styles.stepMeta}>\n {step.stepType ? (\n <SemanticTag color={SEMANTIC_COLORS.DEFAULT}>{step.stepType}</SemanticTag>\n ) : null}\n {httpStatus != null ? (\n <SemanticTag color={httpStatusColor(httpStatus)}>HTTP {httpStatus}</SemanticTag>\n ) : null}\n {step.occurredAt ? (\n <Typography.Text type=\"secondary\">{formatCreatedAt(step.occurredAt)}</Typography.Text>\n ) : null}\n {typeof step.durationMs === 'number' ? (\n <Typography.Text type=\"secondary\">{step.durationMs} ms</Typography.Text>\n ) : null}\n </div>\n {step.sqlText ? (\n <>\n <div className={styles.blockLabel}>SQL</div>\n <VirtualScrollbar className={styles.jsonScroll} style={{ maxHeight: 200 }}>\n <pre className={styles.jsonBlock}>{step.sqlText}</pre>\n </VirtualScrollbar>\n </>\n ) : null}\n {step.tables?.length ? (\n <Typography.Text type=\"secondary\">表:{step.tables.join(', ')}</Typography.Text>\n ) : null}\n {step.errorMessage ? (\n <Typography.Text type=\"danger\">{step.errorMessage}</Typography.Text>\n ) : null}\n {step.errorCode ? (\n <Typography.Text type=\"secondary\">错误码:{step.errorCode}</Typography.Text>\n ) : null}\n {step.input != null ? renderBody('请求体', step.input) : null}\n {step.output != null ? renderBody('output', step.output) : null}\n </div>\n );\n};\n\n/** 审计事件详情:KPI + Lazy 瀑布 + 默认折叠 Flow */\nexport const AuditEventDetailView: React.FC<{\n detail: AuditEventDetail | null;\n loading?: boolean;\n emptyDescription?: string;\n className?: string;\n /** 当前登录 token(不含 Bearer 前缀亦可);复制 curl 用,不落库 */\n getAuthToken?: () => string | null | undefined;\n}> = ({ detail, loading, emptyDescription = '暂无明细', className, getAuthToken }) => {\n const kpi = useMemo(() => computeDetailKpi(detail), [detail]);\n const kpiItems = useMemo((): StatItem[] => {\n const slow =\n kpi.slowestStep != null ? `${kpi.slowestStep.title} (${kpi.slowestStep.durationMs}ms)` : '—';\n return [\n {\n title: '总耗时',\n value: kpi.durationMs ?? '—',\n suffix: kpi.durationMs != null ? 'ms' : undefined,\n tone: 'blue',\n color: '#1677ff',\n },\n { title: '步数', value: kpi.stepCount, tone: 'lilac', color: '#722ed1' },\n { title: 'SQL 步', value: kpi.sqlCount, tone: 'mint', color: '#0d9f8a' },\n { title: '最慢步', value: slow, tone: 'peach', color: '#d46b08' },\n ];\n }, [kpi]);\n\n if (loading) {\n return <Typography.Text type=\"secondary\">加载中…</Typography.Text>;\n }\n if (!detail) {\n return <Empty description={emptyDescription} />;\n }\n\n const steps = detail.steps || [];\n const title = displayActionLabel(detail.action, detail.actionLabel);\n const errorKeys = steps\n .map((s, i) => (isErrorStep(s) ? String(i) : null))\n .filter((k): k is string => k != null);\n\n const descContent = [\n {\n label: '操作人',\n value: detail.actorName?.trim() ? detail.actorName : '—',\n },\n { label: '时间', value: formatCreatedAt(detail.createdAt) },\n {\n label: '方法',\n value: detail.httpMethod?.trim() ? detail.httpMethod : '—',\n },\n {\n label: '状态',\n value: (\n <SemanticTag color={statusColor(detail.status)}>{statusLabel(detail.status)}</SemanticTag>\n ),\n },\n {\n label: '类别',\n value: detail.category ? categoryLabel(detail.category) : '—',\n },\n {\n label: '耗时',\n value: typeof detail.durationMs === 'number' ? `${detail.durationMs} ms` : '—',\n },\n {\n label: '路径',\n value: detail.path?.trim() ? (\n <Typography.Text code copyable={{ text: detail.path }}>\n {detail.path}\n </Typography.Text>\n ) : (\n '—'\n ),\n span: 2,\n },\n {\n label: 'traceId',\n value: detail.traceId ? (\n <Typography.Text copyable={{ text: detail.traceId }}>{detail.traceId}</Typography.Text>\n ) : (\n '—'\n ),\n span: 1,\n },\n ...(showActionCode(detail)\n ? [{ label: '动作码', value: <Typography.Text code>{detail.action}</Typography.Text> }]\n : []),\n ];\n\n return (\n <InfoPage className={classNames(styles.detail, className)}>\n <InfoPage.Part\n title={\n <Space size={8} wrap>\n <span>{title}</span>\n {title !== detail.action ? (\n <Typography.Text type=\"secondary\" className={styles.actionCode}>\n {detail.action}\n </Typography.Text>\n ) : null}\n </Space>\n }\n subtitle=\"事件摘要\"\n extra={\n detail.path || detail.requestCurl ? (\n <Button\n size=\"small\"\n type=\"primary\"\n onClick={async () => {\n try {\n const text = buildAuditReplayCurl(detail, readBrowserReplaySession(getAuthToken));\n const ok = await copyText(text);\n if (ok) message.success('已复制 curl');\n else message.error('复制失败');\n } catch (e) {\n message.error(e instanceof Error ? e.message : '无法生成 curl');\n }\n }}\n >\n 复制 curl\n </Button>\n ) : undefined\n }\n >\n <div className={styles.kpiBlock}>\n <StatCardList items={kpiItems} inline fontSize={20} gutter={[12, 8]} />\n </div>\n <CommonDescriptions content={descContent} column={3} bordered size=\"small\" />\n </InfoPage.Part>\n\n <InfoPage.Part title=\"耗时瀑布\" subtitle=\"逐步 durationMs(无 SQL 原文)\">\n <AuditWaterfall steps={steps} />\n </InfoPage.Part>\n\n <InfoPage.Part title=\"执行流程\" subtitle=\"默认折叠;失败步展开;展开后见 SQL/正文\">\n {detail.stepsTruncated ? (\n <div className={styles.truncateNote}>\n 步骤已截断:展示 {steps.length} / {detail.stepsTotal ?? steps.length}\n </div>\n ) : null}\n {steps.length === 0 ? (\n <Empty description=\"无流程步骤\" />\n ) : (\n <Collapse\n defaultActiveKey={errorKeys}\n items={steps.map((s, i) => ({\n key: String(i),\n label: (\n <Space size={8} wrap>\n <span>{s.title || s.stepType}</span>\n {typeof s.durationMs === 'number' ? (\n <Typography.Text type=\"secondary\">{s.durationMs} ms</Typography.Text>\n ) : null}\n {isErrorStep(s) ? (\n <SemanticTag color={SEMANTIC_COLORS.DANGER}>失败</SemanticTag>\n ) : null}\n </Space>\n ),\n children: <AuditStepContent step={s} />,\n }))}\n />\n )}\n </InfoPage.Part>\n </InfoPage>\n );\n};\n\nexport const AuditLogList: React.FC<AuditLogListProps> = ({\n mode = 'app',\n dataSource,\n loading,\n onRowClick,\n filterSlot,\n dayStats,\n dayStatsLoading,\n dayStatsError,\n onExport,\n exportLoading,\n pagination,\n className,\n systemAppNames,\n}) => {\n const columns: ColumnsType<AuditEventListItem> = useMemo(() => {\n const cols: ColumnsType<AuditEventListItem> = [\n {\n title: '时间',\n dataIndex: 'createdAt',\n width: 180,\n render: (v: string) => formatCreatedAt(v),\n },\n {\n title: '类别',\n dataIndex: 'category',\n width: 96,\n render: (v: string | undefined) => categoryLabel(v),\n },\n {\n title: '方法',\n dataIndex: 'httpMethod',\n width: 72,\n render: (v: string | null | undefined) => (v && String(v).trim() ? v : '—'),\n },\n {\n title: '操作人',\n dataIndex: 'actorName',\n width: 100,\n ellipsis: true,\n render: (v: string | null | undefined) => (v && String(v).trim() ? v : '—'),\n },\n {\n title: '动作',\n dataIndex: 'action',\n width: 160,\n ellipsis: true,\n render: (_: unknown, row) => displayActionLabel(row.action, row.actionLabel),\n },\n {\n title: '摘要',\n dataIndex: 'summary',\n ellipsis: true,\n render: (_: unknown, row) =>\n displaySummary(row.summary, displayActionLabel(row.action, row.actionLabel), {\n httpMethod: row.httpMethod,\n path: row.path,\n }),\n },\n {\n title: '状态',\n dataIndex: 'status',\n width: 90,\n render: (v: string) => <SemanticTag color={statusColor(v)}>{statusLabel(v)}</SemanticTag>,\n },\n { title: '耗时ms', dataIndex: 'durationMs', width: 80 },\n { title: '路径', dataIndex: 'path', ellipsis: true },\n ];\n if (mode === 'platform') {\n cols.splice(2, 0, {\n title: '系统',\n dataIndex: 'systemAppId',\n width: 140,\n ellipsis: true,\n render: (v: string) => {\n const id = v && String(v).trim() ? String(v) : '';\n if (!id) return '—';\n const name = systemAppNames?.[id]?.trim();\n return name || id;\n },\n });\n }\n return cols;\n }, [mode, systemAppNames]);\n\n return (\n <div className={classNames(styles.wrap, className)}>\n {filterSlot ? <div className={styles.filter}>{filterSlot}</div> : null}\n {dayStats !== undefined || onExport ? (\n <AuditDayStatsBar\n stats={dayStats ?? null}\n loading={dayStatsLoading}\n error={dayStatsError}\n onExport={onExport}\n exportLoading={exportLoading}\n />\n ) : null}\n <Table<AuditEventListItem>\n rowKey=\"id\"\n loading={loading}\n columns={columns}\n dataSource={dataSource}\n pagination={pagination === undefined ? false : pagination}\n onRow={\n onRowClick\n ? (record) => ({\n onClick: () => onRowClick(record),\n style: { cursor: 'pointer' },\n })\n : undefined\n }\n />\n </div>\n );\n};\n\nexport default AuditLogList;\n"],"names":["formatCreatedAt","iso","d","dayjs","statusLabel","status","statusColor","SEMANTIC_COLORS","categoryLabel","c","httpStatusColor","code","parseHttpStatus","output","v","n","showActionCode","detail","_a","labelOfAction","JsonBlock","value","maxHeight","text","formatAuditJson","truncated","isTruncatedAuditText","jsxs","styles","jsx","VirtualScrollbar","renderBody","label","out","rest","hasRest","Fragment","AuditStepContent","step","httpStatus","SemanticTag","Typography","AuditEventDetailView","loading","emptyDescription","className","getAuthToken","kpi","useMemo","computeDetailKpi","kpiItems","slow","Empty","steps","title","displayActionLabel","errorKeys","s","i","isErrorStep","k","descContent","_b","_c","InfoPage","classNames","Space","Button","buildAuditReplayCurl","readBrowserReplaySession","copyText","message","e","StatCardList","CommonDescriptions","AuditWaterfall","Collapse","AuditLogList","mode","dataSource","onRowClick","filterSlot","dayStats","dayStatsLoading","dayStatsError","onExport","exportLoading","pagination","systemAppNames","columns","cols","_","row","displaySummary","id","AuditDayStatsBar","Table","record"],"mappings":"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"}
@@ -2,8 +2,12 @@
2
2
  export declare function labelOfAction(action: string | null | undefined): string | null;
3
3
  /** 展示用:actionLabel → shared labels → 码 */
4
4
  export declare function displayActionLabel(action: string, actionLabel?: string | null): string;
5
+ export type DisplaySummaryRoute = {
6
+ httpMethod?: string | null;
7
+ path?: string | null;
8
+ };
5
9
  /**
6
- * 摘要与动作中文相同或空 → 展示「—」(列表去重)
10
+ * 摘要与动作中文相同或空 → 尝试 METHOD+path 回落;再空则「—」(列表去重)
7
11
  */
8
- export declare function displaySummary(summary: string | null | undefined, actionLabelDisplay: string): string;
12
+ export declare function displaySummary(summary: string | null | undefined, actionLabelDisplay: string, route?: DisplaySummaryRoute): string;
9
13
  export declare function allActionLabels(): Readonly<Record<string, string>>;
@@ -1,23 +1,26 @@
1
- import f from "./labels.json.js";
2
- const i = f;
3
- function u(r) {
4
- return !r || !String(r).trim() ? null : i[String(r).trim()] ?? null;
1
+ import A from "./labels.json.js";
2
+ const c = A;
3
+ function h(n) {
4
+ return !n || !String(n).trim() ? null : c[String(n).trim()] ?? null;
5
5
  }
6
- function e(r, t) {
7
- const n = t == null ? void 0 : t.trim();
8
- return n || u(r) || r;
6
+ function d(n, i) {
7
+ const t = i == null ? void 0 : i.trim();
8
+ return t || h(n) || n;
9
9
  }
10
- function o(r, t) {
11
- const n = r == null ? void 0 : r.trim();
12
- return !n || n === t ? "—" : n;
10
+ function e(n, i, t) {
11
+ var f, p;
12
+ const r = n == null ? void 0 : n.trim();
13
+ if (r && r !== i) return r;
14
+ const s = ((f = t == null ? void 0 : t.httpMethod) == null ? void 0 : f.trim()) || "", o = ((p = t == null ? void 0 : t.path) == null ? void 0 : p.trim()) || "", l = [s, o].filter(Boolean).join(" ").trim();
15
+ return l || "—";
13
16
  }
14
- function A() {
15
- return i;
17
+ function S() {
18
+ return c;
16
19
  }
17
20
  export {
18
- A as allActionLabels,
19
- e as displayActionLabel,
20
- o as displaySummary,
21
- u as labelOfAction
21
+ S as allActionLabels,
22
+ d as displayActionLabel,
23
+ e as displaySummary,
24
+ h as labelOfAction
22
25
  };
23
26
  //# sourceMappingURL=labels.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"labels.js","sources":["../../../src/components/Audit/labels.ts"],"sourcesContent":["import labels from './labels.json';\n\nconst LABEL_MAP = labels as Record<string, string>;\n\n/** 与 SSOT / audit labels.json / Java AuditActionLabels 同表;禁平行造词 */\nexport function labelOfAction(action: string | null | undefined): string | null {\n if (!action || !String(action).trim()) return null;\n return LABEL_MAP[String(action).trim()] ?? null;\n}\n\n/** 展示用:actionLabel → shared labels → 码 */\nexport function displayActionLabel(action: string, actionLabel?: string | null): string {\n const fromApi = actionLabel?.trim();\n if (fromApi) return fromApi;\n return labelOfAction(action) || action;\n}\n\n/**\n * 摘要与动作中文相同或空 → 展示「—」(列表去重)\n */\nexport function displaySummary(\n summary: string | null | undefined,\n actionLabelDisplay: string,\n): string {\n const s = summary?.trim();\n if (!s) return '—';\n if (s === actionLabelDisplay) return '—';\n return s;\n}\n\nexport function allActionLabels(): Readonly<Record<string, string>> {\n return LABEL_MAP;\n}\n"],"names":["LABEL_MAP","labels","labelOfAction","action","displayActionLabel","actionLabel","fromApi","displaySummary","summary","actionLabelDisplay","s","allActionLabels"],"mappings":";AAEA,MAAMA,IAAYC;AAGX,SAASC,EAAcC,GAAkD;AAC9E,SAAI,CAACA,KAAU,CAAC,OAAOA,CAAM,EAAE,KAAA,IAAe,OACvCH,EAAU,OAAOG,CAAM,EAAE,KAAA,CAAM,KAAK;AAC7C;AAGO,SAASC,EAAmBD,GAAgBE,GAAqC;AACtF,QAAMC,IAAUD,KAAA,gBAAAA,EAAa;AAC7B,SAAIC,KACGJ,EAAcC,CAAM,KAAKA;AAClC;AAKO,SAASI,EACdC,GACAC,GACQ;AACR,QAAMC,IAAIF,KAAA,gBAAAA,EAAS;AAEnB,SADI,CAACE,KACDA,MAAMD,IAA2B,MAC9BC;AACT;AAEO,SAASC,IAAoD;AAClE,SAAOX;AACT;"}
1
+ {"version":3,"file":"labels.js","sources":["../../../src/components/Audit/labels.ts"],"sourcesContent":["import labels from './labels.json';\n\nconst LABEL_MAP = labels as Record<string, string>;\n\n/** 与 SSOT / audit labels.json / Java AuditActionLabels 同表;禁平行造词 */\nexport function labelOfAction(action: string | null | undefined): string | null {\n if (!action || !String(action).trim()) return null;\n return LABEL_MAP[String(action).trim()] ?? null;\n}\n\n/** 展示用:actionLabel → shared labels → 码 */\nexport function displayActionLabel(action: string, actionLabel?: string | null): string {\n const fromApi = actionLabel?.trim();\n if (fromApi) return fromApi;\n return labelOfAction(action) || action;\n}\n\nexport type DisplaySummaryRoute = {\n httpMethod?: string | null;\n path?: string | null;\n};\n\n/**\n * 摘要与动作中文相同或空 → 尝试 METHOD+path 回落;再空则「—」(列表去重)\n */\nexport function displaySummary(\n summary: string | null | undefined,\n actionLabelDisplay: string,\n route?: DisplaySummaryRoute,\n): string {\n const s = summary?.trim();\n if (s && s !== actionLabelDisplay) return s;\n const method = route?.httpMethod?.trim() || '';\n const path = route?.path?.trim() || '';\n const fallback = [method, path].filter(Boolean).join(' ').trim();\n if (fallback) return fallback;\n return '—';\n}\n\nexport function allActionLabels(): Readonly<Record<string, string>> {\n return LABEL_MAP;\n}\n"],"names":["LABEL_MAP","labels","labelOfAction","action","displayActionLabel","actionLabel","fromApi","displaySummary","summary","actionLabelDisplay","route","s","method","_a","path","_b","fallback","allActionLabels"],"mappings":";AAEA,MAAMA,IAAYC;AAGX,SAASC,EAAcC,GAAkD;AAC9E,SAAI,CAACA,KAAU,CAAC,OAAOA,CAAM,EAAE,KAAA,IAAe,OACvCH,EAAU,OAAOG,CAAM,EAAE,KAAA,CAAM,KAAK;AAC7C;AAGO,SAASC,EAAmBD,GAAgBE,GAAqC;AACtF,QAAMC,IAAUD,KAAA,gBAAAA,EAAa;AAC7B,SAAIC,KACGJ,EAAcC,CAAM,KAAKA;AAClC;AAUO,SAASI,EACdC,GACAC,GACAC,GACQ;;AACR,QAAMC,IAAIH,KAAA,gBAAAA,EAAS;AACnB,MAAIG,KAAKA,MAAMF,EAAoB,QAAOE;AAC1C,QAAMC,MAASC,IAAAH,KAAA,gBAAAA,EAAO,eAAP,gBAAAG,EAAmB,WAAU,IACtCC,MAAOC,IAAAL,KAAA,gBAAAA,EAAO,SAAP,gBAAAK,EAAa,WAAU,IAC9BC,IAAW,CAACJ,GAAQE,CAAI,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAAE,KAAA;AAC1D,SAAIE,KACG;AACT;AAEO,SAASC,IAAoD;AAClE,SAAOjB;AACT;"}
@@ -15,7 +15,53 @@ declare const _default: {
15
15
  "evalRulesReset": "重置评价规则",
16
16
  "alertRulesPut": "保存报警规则",
17
17
  "inspectSchedulePut": "保存巡检排程",
18
- "inspectScheduleRun": "执行巡检排程"
18
+ "inspectScheduleRun": "执行巡检排程",
19
+ "summaryMetrics": "汇总指标",
20
+ "detailListPage": "明细分页",
21
+ "detailList": "明细列表",
22
+ "filterOptions": "筛选项",
23
+ "materials": "物料列表",
24
+ "metaMaterials": "物料维表",
25
+ "machineTypes": "机型列表",
26
+ "metaMachineTypes": "机型维表",
27
+ "machines": "机台列表",
28
+ "machineNames": "机台名列表",
29
+ "machineNos": "机台号列表",
30
+ "metaMachineNames": "机台名维表",
31
+ "metaMachines": "机台维表",
32
+ "metaMachineModels": "机型型号维表",
33
+ "factories": "分厂列表",
34
+ "processes": "工序列表",
35
+ "metaProcesses": "工序维表",
36
+ "workTypes": "工种列表",
37
+ "metaWorkTypes": "工种维表",
38
+ "productEnums": "产品枚举",
39
+ "metaProductEnums": "产品枚举维表",
40
+ "equipmentTypes": "设备类型",
41
+ "metaEquipmentTypes": "设备类型维表",
42
+ "componentTypes": "专件类型",
43
+ "metaComponentTypes": "专件类型维表",
44
+ "componentManufacturers": "专件厂商",
45
+ "plantScoresList": "厂评分列表",
46
+ "plantScoreDetail": "厂评分详情",
47
+ "maintenanceCycleListPage": "整机周期列表",
48
+ "componentCycleListPage": "专件周期列表",
49
+ "evalRulesGet": "查询评价规则",
50
+ "alertRulesList": "报警规则列表",
51
+ "inspectScheduleGet": "查询巡检排程",
52
+ "inspectScheduleStatus": "巡检排程状态",
53
+ "maintenanceMetaOptions": "保养维表选项",
54
+ "componentMetaOptions": "专件维表选项",
55
+ "list": "Agent 目录列表",
56
+ "crossDomainDetail": "跨域明细",
57
+ "metrics": "机台指标",
58
+ "slots": "槽位明细",
59
+ "mountEvents": "上机事件",
60
+ "events": "保养事件",
61
+ "faultRepair": "故障维修",
62
+ "productionMetrics": "产量指标",
63
+ "componentSummary": "专件汇总",
64
+ "dispositionStatus": "处置状态"
19
65
  }
20
66
  ;
21
67
 
@@ -1,40 +1,132 @@
1
- const e = "认领告警", t = "分配告警", c = "跟进告警", n = "发起根因", R = "关闭", d = "暂缓", o = "批量创建整机周期", s = "更新整机周期", a = "删除整机周期", l = "批量创建专件周期", i = "更新专件周期", C = "删除专件周期", r = "保存评价规则", u = "重置评价规则", p = "保存报警规则", m = "保存巡检排程", y = "执行巡检排程", h = {
2
- alertClaim: e,
3
- alertAssign: t,
4
- alertFollow: c,
5
- actionRcaStart: n,
1
+ const t = "认领告警", e = "分配告警", n = "跟进告警", s = "发起根因", at = "关闭", it = "暂缓", c = "批量创建整机周期", o = "更新整机周期", a = "删除整机周期", i = "批量创建专件周期", l = "更新专件周期", m = "删除专件周期", p = "保存评价规则", r = "重置评价规则", u = "保存报警规则", y = "保存巡检排程", d = "执行巡检排程", h = "汇总指标", C = "明细分页", M = "明细列表", lt = "筛选项", S = "物料列表", R = "物料维表", f = "机型列表", P = "机型维表", T = "机台列表", D = "机台名列表", L = "机台号列表", g = "机台名维表", v = "机台维表", E = "机型型号维表", O = "分厂列表", N = "工序列表", k = "工序维表", q = "工种列表", w = "工种维表", A = "产品枚举", B = "产品枚举维表", G = "设备类型", U = "设备类型维表", b = "专件类型", x = "专件类型维表", F = "专件厂商", W = "厂评分列表", j = "厂评分详情", z = "整机周期列表", H = "专件周期列表", I = "查询评价规则", J = "报警规则列表", K = "查询巡检排程", Q = "巡检排程状态", V = "保养维表选项", X = "专件维表选项", Y = "Agent 目录列表", Z = "跨域明细", _ = "机台指标", $ = "槽位明细", tt = "上机事件", et = "保养事件", nt = "故障维修", st = "产量指标", ct = "专件汇总", ot = "处置状态", mt = {
2
+ alertClaim: t,
3
+ alertAssign: e,
4
+ alertFollow: n,
5
+ actionRcaStart: s,
6
6
  actionClose: "关闭",
7
7
  actionDefer: "暂缓",
8
- maintenanceCycleBatchCreate: o,
9
- maintenanceCycleUpdate: s,
8
+ maintenanceCycleBatchCreate: c,
9
+ maintenanceCycleUpdate: o,
10
10
  maintenanceCycleDelete: a,
11
- componentCycleBatchCreate: l,
12
- componentCycleUpdate: i,
13
- componentCycleDelete: C,
14
- evalRulesPut: r,
15
- evalRulesReset: u,
16
- alertRulesPut: p,
17
- inspectSchedulePut: m,
18
- inspectScheduleRun: y
11
+ componentCycleBatchCreate: i,
12
+ componentCycleUpdate: l,
13
+ componentCycleDelete: m,
14
+ evalRulesPut: p,
15
+ evalRulesReset: r,
16
+ alertRulesPut: u,
17
+ inspectSchedulePut: y,
18
+ inspectScheduleRun: d,
19
+ summaryMetrics: h,
20
+ detailListPage: C,
21
+ detailList: M,
22
+ filterOptions: "筛选项",
23
+ materials: S,
24
+ metaMaterials: R,
25
+ machineTypes: f,
26
+ metaMachineTypes: P,
27
+ machines: T,
28
+ machineNames: D,
29
+ machineNos: L,
30
+ metaMachineNames: g,
31
+ metaMachines: v,
32
+ metaMachineModels: E,
33
+ factories: O,
34
+ processes: N,
35
+ metaProcesses: k,
36
+ workTypes: q,
37
+ metaWorkTypes: w,
38
+ productEnums: A,
39
+ metaProductEnums: B,
40
+ equipmentTypes: G,
41
+ metaEquipmentTypes: U,
42
+ componentTypes: b,
43
+ metaComponentTypes: x,
44
+ componentManufacturers: F,
45
+ plantScoresList: W,
46
+ plantScoreDetail: j,
47
+ maintenanceCycleListPage: z,
48
+ componentCycleListPage: H,
49
+ evalRulesGet: I,
50
+ alertRulesList: J,
51
+ inspectScheduleGet: K,
52
+ inspectScheduleStatus: Q,
53
+ maintenanceMetaOptions: V,
54
+ componentMetaOptions: X,
55
+ list: Y,
56
+ crossDomainDetail: Z,
57
+ metrics: _,
58
+ slots: $,
59
+ mountEvents: tt,
60
+ events: et,
61
+ faultRepair: nt,
62
+ productionMetrics: st,
63
+ componentSummary: ct,
64
+ dispositionStatus: ot
19
65
  };
20
66
  export {
21
- R as actionClose,
22
- d as actionDefer,
23
- n as actionRcaStart,
24
- t as alertAssign,
25
- e as alertClaim,
26
- c as alertFollow,
27
- p as alertRulesPut,
28
- l as componentCycleBatchCreate,
29
- C as componentCycleDelete,
30
- i as componentCycleUpdate,
31
- h as default,
32
- r as evalRulesPut,
33
- u as evalRulesReset,
34
- m as inspectSchedulePut,
35
- y as inspectScheduleRun,
36
- o as maintenanceCycleBatchCreate,
67
+ at as actionClose,
68
+ it as actionDefer,
69
+ s as actionRcaStart,
70
+ e as alertAssign,
71
+ t as alertClaim,
72
+ n as alertFollow,
73
+ J as alertRulesList,
74
+ u as alertRulesPut,
75
+ i as componentCycleBatchCreate,
76
+ m as componentCycleDelete,
77
+ H as componentCycleListPage,
78
+ l as componentCycleUpdate,
79
+ F as componentManufacturers,
80
+ X as componentMetaOptions,
81
+ ct as componentSummary,
82
+ b as componentTypes,
83
+ Z as crossDomainDetail,
84
+ mt as default,
85
+ M as detailList,
86
+ C as detailListPage,
87
+ ot as dispositionStatus,
88
+ G as equipmentTypes,
89
+ I as evalRulesGet,
90
+ p as evalRulesPut,
91
+ r as evalRulesReset,
92
+ et as events,
93
+ O as factories,
94
+ nt as faultRepair,
95
+ lt as filterOptions,
96
+ K as inspectScheduleGet,
97
+ y as inspectSchedulePut,
98
+ d as inspectScheduleRun,
99
+ Q as inspectScheduleStatus,
100
+ Y as list,
101
+ D as machineNames,
102
+ L as machineNos,
103
+ f as machineTypes,
104
+ T as machines,
105
+ c as maintenanceCycleBatchCreate,
37
106
  a as maintenanceCycleDelete,
38
- s as maintenanceCycleUpdate
107
+ z as maintenanceCycleListPage,
108
+ o as maintenanceCycleUpdate,
109
+ V as maintenanceMetaOptions,
110
+ S as materials,
111
+ x as metaComponentTypes,
112
+ U as metaEquipmentTypes,
113
+ E as metaMachineModels,
114
+ g as metaMachineNames,
115
+ P as metaMachineTypes,
116
+ v as metaMachines,
117
+ R as metaMaterials,
118
+ k as metaProcesses,
119
+ B as metaProductEnums,
120
+ w as metaWorkTypes,
121
+ _ as metrics,
122
+ tt as mountEvents,
123
+ j as plantScoreDetail,
124
+ W as plantScoresList,
125
+ N as processes,
126
+ A as productEnums,
127
+ st as productionMetrics,
128
+ $ as slots,
129
+ h as summaryMetrics,
130
+ q as workTypes
39
131
  };
40
132
  //# sourceMappingURL=labels.json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"labels.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"labels.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,32 +1,36 @@
1
- const t = "_wrap_1rhjc_2", c = "_filter_1rhjc_6", o = "_detail_1rhjc_10", _ = "_actionCode_1rhjc_16", n = "_stepBody_1rhjc_25", e = "_stepMeta_1rhjc_34", r = "_blockLabel_1rhjc_41", s = "_jsonWrap_1rhjc_47", a = "_jsonScroll_1rhjc_52", l = "_jsonBlock_1rhjc_57", j = "_truncateHint_1rhjc_73", p = "_kpiBlock_1rhjc_79", i = "_truncateNote_1rhjc_83", h = {
1
+ const t = "_wrap_1wy8p_2", o = "_filter_1wy8p_6", s = "_statsBar_1wy8p_10", _ = "_statsBarCards_1wy8p_18", a = "_detail_1wy8p_23", c = "_actionCode_1wy8p_29", n = "_stepBody_1wy8p_38", e = "_stepMeta_1wy8p_47", p = "_blockLabel_1wy8p_54", r = "_jsonWrap_1wy8p_60", l = "_jsonScroll_1wy8p_65", y = "_jsonBlock_1wy8p_70", w = "_truncateHint_1wy8p_86", i = "_kpiBlock_1wy8p_92", B = "_truncateNote_1wy8p_96", d = {
2
2
  wrap: t,
3
- filter: c,
4
- detail: o,
5
- actionCode: _,
3
+ filter: o,
4
+ statsBar: s,
5
+ statsBarCards: _,
6
+ detail: a,
7
+ actionCode: c,
6
8
  stepBody: n,
7
9
  stepMeta: e,
8
- blockLabel: r,
9
- jsonWrap: s,
10
- jsonScroll: a,
11
- jsonBlock: l,
12
- truncateHint: j,
13
- kpiBlock: p,
14
- truncateNote: i
10
+ blockLabel: p,
11
+ jsonWrap: r,
12
+ jsonScroll: l,
13
+ jsonBlock: y,
14
+ truncateHint: w,
15
+ kpiBlock: i,
16
+ truncateNote: B
15
17
  };
16
18
  export {
17
- _ as actionCode,
18
- r as blockLabel,
19
- h as default,
20
- o as detail,
21
- c as filter,
22
- l as jsonBlock,
23
- a as jsonScroll,
24
- s as jsonWrap,
25
- p as kpiBlock,
19
+ c as actionCode,
20
+ p as blockLabel,
21
+ d as default,
22
+ a as detail,
23
+ o as filter,
24
+ y as jsonBlock,
25
+ l as jsonScroll,
26
+ r as jsonWrap,
27
+ i as kpiBlock,
28
+ s as statsBar,
29
+ _ as statsBarCards,
26
30
  n as stepBody,
27
31
  e as stepMeta,
28
- j as truncateHint,
29
- i as truncateNote,
32
+ w as truncateHint,
33
+ B as truncateNote,
30
34
  t as wrap
31
35
  };
32
36
  //# sourceMappingURL=style.module.scss.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
@@ -0,0 +1 @@
1
+ export declare const ZoomIn: import('react').ForwardRefExoticComponent<Omit<import('./createIcon').IconProps, "ref"> & import('react').RefAttributes<SVGSVGElement>>;
@@ -0,0 +1,7 @@
1
+ import { ZoomIn as o } from "lucide-react";
2
+ import { createIcon as m } from "./createIcon.js";
3
+ const t = m(o);
4
+ export {
5
+ t as ZoomIn
6
+ };
7
+ //# sourceMappingURL=ZoomIn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZoomIn.js","sources":["../../../src/components/Icons/ZoomIn.tsx"],"sourcesContent":["import { ZoomIn as LucideZoomIn } from 'lucide-react';\nimport { createIcon } from './createIcon';\n\nexport const ZoomIn = createIcon(LucideZoomIn);\n"],"names":["ZoomIn","createIcon","LucideZoomIn"],"mappings":";;AAGO,MAAMA,IAASC,EAAWC,CAAY;"}
@@ -0,0 +1 @@
1
+ export declare const ZoomOut: import('react').ForwardRefExoticComponent<Omit<import('./createIcon').IconProps, "ref"> & import('react').RefAttributes<SVGSVGElement>>;
@@ -0,0 +1,7 @@
1
+ import { ZoomOut as o } from "lucide-react";
2
+ import { createIcon as t } from "./createIcon.js";
3
+ const c = t(o);
4
+ export {
5
+ c as ZoomOut
6
+ };
7
+ //# sourceMappingURL=ZoomOut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZoomOut.js","sources":["../../../src/components/Icons/ZoomOut.tsx"],"sourcesContent":["import { ZoomOut as LucideZoomOut } from 'lucide-react';\nimport { createIcon } from './createIcon';\n\nexport const ZoomOut = createIcon(LucideZoomOut);\n"],"names":["ZoomOut","createIcon","LucideZoomOut"],"mappings":";;AAGO,MAAMA,IAAUC,EAAWC,CAAa;"}
@@ -77,4 +77,6 @@ export { UserPlus } from './UserPlus';
77
77
  export { UserRoundCog } from './UserRoundCog';
78
78
  export { Users } from './Users';
79
79
  export { X } from './X';
80
+ export { ZoomIn } from './ZoomIn';
81
+ export { ZoomOut } from './ZoomOut';
80
82
  export { ICON_NAMES, ICON_REGISTRY, type IconName } from './registry';
@@ -1,6 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  import { IconProps } from './createIcon';
3
- export declare const ICON_NAMES: readonly ["ArrowLeft", "ArrowLeftRight", "BarChart3", "Bell", "BookOpen", "Bot", "Check", "ChevronDown", "ChevronLeft", "ChevronRight", "ChevronUp", "CircleAlert", "CircleCheck", "CircleHelp", "CirclePlay", "CircleX", "ClipboardCheck", "Clock", "CloudDownload", "CloudUpload", "Code", "Copy", "Crown", "Database", "Download", "Eye", "EyeOff", "File", "FileArchive", "FileImage", "FileSpreadsheet", "FileText", "Flag", "Flame", "Folder", "FolderOpen", "Hash", "House", "Import", "Inbox", "Info", "LayoutDashboard", "LayoutGrid", "ListTodo", "Loader2", "Lock", "LogOut", "Maximize2", "MessageCircle", "MessageSquare", "Minimize2", "PanelLeftClose", "PanelLeftOpen", "Pause", "Pencil", "Plus", "Presentation", "RefreshCw", "RotateCw", "Send", "Settings", "Shield", "ShieldCheck", "SlidersHorizontal", "Square", "Star", "ThumbsDown", "ThumbsUp", "Trash2", "Trophy", "Undo2", "Upload", "User", "UserPlus", "UserRoundCog", "Users", "X"];
3
+ export declare const ICON_NAMES: readonly ["ArrowLeft", "ArrowLeftRight", "BarChart3", "Bell", "BookOpen", "Bot", "Check", "ChevronDown", "ChevronLeft", "ChevronRight", "ChevronUp", "CircleAlert", "CircleCheck", "CircleHelp", "CirclePlay", "CircleX", "ClipboardCheck", "Clock", "CloudDownload", "CloudUpload", "Code", "Copy", "Crown", "Database", "Download", "Eye", "EyeOff", "File", "FileArchive", "FileImage", "FileSpreadsheet", "FileText", "Flag", "Flame", "Folder", "FolderOpen", "Hash", "House", "Import", "Inbox", "Info", "LayoutDashboard", "LayoutGrid", "ListTodo", "Loader2", "Lock", "LogOut", "Maximize2", "MessageCircle", "MessageSquare", "Minimize2", "PanelLeftClose", "PanelLeftOpen", "Pause", "Pencil", "Plus", "Presentation", "RefreshCw", "RotateCw", "Send", "Settings", "Shield", "ShieldCheck", "SlidersHorizontal", "Square", "Star", "ThumbsDown", "ThumbsUp", "Trash2", "Trophy", "Undo2", "Upload", "User", "UserPlus", "UserRoundCog", "Users", "X", "ZoomIn", "ZoomOut"];
4
4
  export type IconName = (typeof ICON_NAMES)[number];
5
5
  /** 全量注册表:仅 showcase / 按名取图标时用;业务具名 import 勿依赖本文件,以免拖入全部图标 */
6
6
  export declare const ICON_REGISTRY: Record<IconName, React.FC<IconProps>>;