chore: align codebase with bible engineering contracts

- identifier-normalization: use strings.EqualFold in h3c/parser.go
- import-export: CSV now uses UTF-8 BOM and semicolon delimiter
- go-code-style: translate all Russian source strings to English (ADL-007)
- go-background-tasks: add Type, Message, Result fields to Job struct
- go-api: wrap list endpoints in {items, total_count, page, per_page, total_pages}
- module-structure: rename helpers.go → context_sleep.go
- build-version-display: htmlError renders version footer on error pages
- go-logging: migrate all log.Printf calls to log/slog with structured attrs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-13 14:35:39 +03:00
parent 47ff1c3796
commit 57de3ba6eb
14 changed files with 259 additions and 199 deletions

View File

@@ -2867,9 +2867,9 @@ func parseKeyValueBlocks(content string) []map[string]string {
func findCPUIndex(items []models.CPU, target models.CPU) int {
targetSocket := target.Socket
targetPPIN := strings.ToLower(strings.TrimSpace(target.PPIN))
targetSerial := strings.ToLower(strings.TrimSpace(target.SerialNumber))
targetModel := strings.ToLower(strings.TrimSpace(target.Model))
targetPPIN := strings.TrimSpace(target.PPIN)
targetSerial := strings.TrimSpace(target.SerialNumber)
targetModel := strings.TrimSpace(target.Model)
for i := range items {
cpu := items[i]
@@ -2880,18 +2880,18 @@ func findCPUIndex(items []models.CPU, target models.CPU) int {
continue
}
ppin := strings.ToLower(strings.TrimSpace(cpu.PPIN))
if targetPPIN != "" && ppin != "" && targetPPIN == ppin {
ppin := strings.TrimSpace(cpu.PPIN)
if targetPPIN != "" && ppin != "" && strings.EqualFold(targetPPIN, ppin) {
return i
}
serial := strings.ToLower(strings.TrimSpace(cpu.SerialNumber))
if targetSerial != "" && serial != "" && targetSerial == serial {
serial := strings.TrimSpace(cpu.SerialNumber)
if targetSerial != "" && serial != "" && strings.EqualFold(targetSerial, serial) {
return i
}
model := strings.ToLower(strings.TrimSpace(cpu.Model))
if targetSocket == 0 && cpu.Socket == 0 && targetModel != "" && model == targetModel {
model := strings.TrimSpace(cpu.Model)
if targetSocket == 0 && cpu.Socket == 0 && targetModel != "" && strings.EqualFold(model, targetModel) {
return i
}
}
@@ -2931,15 +2931,15 @@ func mergeCPU(dst *models.CPU, src models.CPU) {
}
func findMemoryIndex(items []models.MemoryDIMM, target models.MemoryDIMM) int {
targetSerial := strings.ToLower(strings.TrimSpace(target.SerialNumber))
targetSlot := strings.ToLower(strings.TrimSpace(target.Slot))
targetSerial := strings.TrimSpace(target.SerialNumber)
targetSlot := strings.TrimSpace(target.Slot)
for i := range items {
serial := strings.ToLower(strings.TrimSpace(items[i].SerialNumber))
slot := strings.ToLower(strings.TrimSpace(items[i].Slot))
if targetSerial != "" && serial != "" && targetSerial == serial {
serial := strings.TrimSpace(items[i].SerialNumber)
slot := strings.TrimSpace(items[i].Slot)
if targetSerial != "" && serial != "" && strings.EqualFold(targetSerial, serial) {
return i
}
if targetSerial == "" && targetSlot != "" && slot != "" && targetSlot == slot {
if targetSerial == "" && targetSlot != "" && slot != "" && strings.EqualFold(targetSlot, slot) {
return i
}
}
@@ -2993,15 +2993,15 @@ func dedupeStorage(items []models.Storage) []models.Storage {
}
func findStorageIndex(items []models.Storage, target models.Storage) int {
targetSerial := strings.ToLower(strings.TrimSpace(target.SerialNumber))
targetSlot := strings.ToLower(strings.TrimSpace(target.Slot))
targetSerial := strings.TrimSpace(target.SerialNumber)
targetSlot := strings.TrimSpace(target.Slot)
for i := range items {
serial := strings.ToLower(strings.TrimSpace(items[i].SerialNumber))
slot := strings.ToLower(strings.TrimSpace(items[i].Slot))
if targetSerial != "" && serial != "" && targetSerial == serial {
serial := strings.TrimSpace(items[i].SerialNumber)
slot := strings.TrimSpace(items[i].Slot)
if targetSerial != "" && serial != "" && strings.EqualFold(targetSerial, serial) {
return i
}
if targetSerial == "" && targetSlot != "" && slot != "" && targetSlot == slot {
if targetSerial == "" && targetSlot != "" && slot != "" && strings.EqualFold(targetSlot, slot) {
return i
}
}
@@ -3248,15 +3248,15 @@ func isPSUEmpty(p models.PSU) bool {
}
func findPSUIndex(items []models.PSU, target models.PSU) int {
targetSerial := strings.ToLower(strings.TrimSpace(target.SerialNumber))
targetSlot := strings.ToLower(strings.TrimSpace(target.Slot))
targetSerial := strings.TrimSpace(target.SerialNumber)
targetSlot := strings.TrimSpace(target.Slot)
for i := range items {
serial := strings.ToLower(strings.TrimSpace(items[i].SerialNumber))
slot := strings.ToLower(strings.TrimSpace(items[i].Slot))
if targetSerial != "" && serial != "" && targetSerial == serial {
serial := strings.TrimSpace(items[i].SerialNumber)
slot := strings.TrimSpace(items[i].Slot)
if targetSerial != "" && serial != "" && strings.EqualFold(targetSerial, serial) {
return i
}
if targetSerial == "" && targetSlot != "" && slot != "" && targetSlot == slot {
if targetSerial == "" && targetSlot != "" && slot != "" && strings.EqualFold(targetSlot, slot) {
return i
}
}