fix(t232): log freight import diagnostics
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user