fix(t232): log freight import diagnostics

This commit is contained in:
QiuSW
2026-07-29 11:08:23 +08:00
parent 3981a61423
commit b316287092
5 changed files with 90 additions and 14 deletions
@@ -35,18 +35,30 @@ const (
type Handler struct {
service Service
renderer *Renderer
logEvent EventLogger
}
func NewHandler(service Service, renderer *Renderer) (*Handler, error) {
type EventLogger func(string)
func NewHandler(
service Service,
renderer *Renderer,
loggers ...EventLogger,
) (*Handler, error) {
if service == nil {
return nil, errors.New("admin web service is required")
}
if renderer == nil {
return nil, errors.New("admin web renderer is required")
}
logEvent := EventLogger(func(string) {})
if len(loggers) > 0 && loggers[0] != nil {
logEvent = loggers[0]
}
return &Handler{
service: service,
renderer: renderer,
logEvent: logEvent,
}, nil
}
@@ -412,7 +424,9 @@ func (h *Handler) CreateFreightImport(ctx *gin.Context) {
if err != nil {
token, _ := csrfToken(ctx)
code, title, message := freightImportError(err)
h.render(ctx, serviceErrorStatus(err), "freight-import", freightImportPage{
status := serviceErrorStatus(err)
h.logFreightImportFailure(code, status)
h.render(ctx, status, "freight-import", freightImportPage{
Page: pageView{
Title: "导入 ERP 货运",
FreightCurrent: true,
@@ -432,6 +446,17 @@ func (h *Handler) CreateFreightImport(ctx *gin.Context) {
ctx.Redirect(http.StatusSeeOther, "/freight/import?sync="+pathEscape(run.ID))
}
func (h *Handler) logFreightImportFailure(code string, status int) {
if code == "" {
h.logEvent("freight_import_failed status=" + strconv.Itoa(status))
return
}
h.logEvent(
"freight_import_preflight_failed code=" + code +
" status=" + strconv.Itoa(status),
)
}
func freightImportError(err error) (string, string, string) {
switch {
case errors.Is(err, ErrOCRServiceInvalid):