fix: текстовый BOM работает в пасте конфигуратора через единый серверный парсер
Паста BOM на странице конфигурирования теперь распознаёт текстовый и
Inspur-форматы: вместо дублирования парсера на JS добавлен stateless
эндпоинт POST /api/vendor-spec/parse-text, который использует те же
детекторы и парсеры, что и импорт файла (KISS — один парсер на оба
входа). JS-копии _parseInspurBOMText/_isInspurBOMText удалены.
Заголовок конфигурации определяется по маркеру ", в составе:" с любым
префиксом ("Сервер X3" и "Вычислительный GPU сервер X3" → модель X3);
строки тримятся, пробел в начале не попадает в P/N; запятые и дефисы
внутри описания сохраняются (RAID0,1,10; 8-GPU-2304GB).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -37,6 +37,28 @@ func (h *VendorSpecHandler) lookupConfig(uuid string) (*localdb.LocalConfigurati
|
||||
return cfg, nil
|
||||
}
|
||||
|
||||
// ParseText parses a pasted single-column text BOM (Inspur or Russian text BOM)
|
||||
// using the same parsers as the vendor file-import path. It is stateless: no
|
||||
// configuration is required. Returns the parsed rows and the detected format, or
|
||||
// an empty result when the text is not a recognized single-column format (the
|
||||
// client then falls back to manual column mapping).
|
||||
// POST /api/vendor-spec/parse-text
|
||||
func (h *VendorSpecHandler) ParseText(c *gin.Context) {
|
||||
var body struct {
|
||||
Text string `json:"text"`
|
||||
}
|
||||
if err := c.ShouldBindJSON(&body); err != nil {
|
||||
RespondError(c, http.StatusUnprocessableEntity, "invalid request", err)
|
||||
return
|
||||
}
|
||||
|
||||
rows, format := services.ParsePastedBOMText(body.Text)
|
||||
if rows == nil {
|
||||
rows = []localdb.VendorSpecItem{}
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{"rows": rows, "format": format})
|
||||
}
|
||||
|
||||
// GetVendorSpec returns the vendor spec (BOM) for a configuration.
|
||||
// GET /api/configs/:uuid/vendor-spec
|
||||
func (h *VendorSpecHandler) GetVendorSpec(c *gin.Context) {
|
||||
|
||||
Reference in New Issue
Block a user