first commit

This commit is contained in:
2026-09-21 19:21:35 +08:00
commit 6c944c4ffd
2733 changed files with 296956 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
const states = {
unchanged: '已核对,业务字段没有变化',
unavailable: '未能取得完整的修改前后数据',
failed: '操作失败,未确认生效的改动',
notCaptured: '此操作未记录字段对比'
}
function toParamRows(params) {
if (!params || typeof params !== 'object') return []
return Object.keys(params).map(key => ({ label: key, value: String(params[key]) }))
}
export function parseOperationAudit(text) {
const empty = { action: '', target: '', changes: [], params: [], notice: '', structured: false }
if (!text) return empty
try {
const data = JSON.parse(text)
if (data && data.auditVersion === 1) {
const target = data.target || {}
const changes = data.state === 'changed' && Array.isArray(data.changes)
? data.changes.filter(c => c && typeof c.label === 'string' && typeof c.before === 'string' && typeof c.after === 'string') : []
return {
action: typeof data.action === 'string' ? data.action : '操作',
target: target.id == null ? '' : '用户ID:' + target.id + (typeof target.name === 'string' && target.name ? '(' + target.name + ')' : ''),
changes,
params: toParamRows(data.params),
notice: [states[data.state] || '', data.truncated ? '内容超出存储上限,部分改动未展示' : ''].filter(Boolean).join(';'),
structured: true
}
}
return { ...empty, action: '历史记录', notice: '历史记录未保存可验证的前后值' }
} catch (e) { /* Legacy action strings are not JSON. */ }
if (!text.startsWith('点击【')) return { ...empty, action: '历史记录', notice: '历史记录未保存可验证的前后值' }
const separator = text.indexOf('|')
if (separator < 0) return { ...empty, action: text, notice: '此记录未保存字段对比' }
const changes = text.slice(separator + 1).split('\n').map(line => line.split('\t'))
.filter(parts => parts.length === 3).map(parts => ({ label: parts[0], before: parts[1], after: parts[2] }))
return { ...empty, action: text.slice(0, separator), changes, notice: changes.length ? '' : '历史记录未保存可验证的前后值' }
}