longz
2026-06-29 9d4cbff7464ebfd7803c2ce53ded49d0f73fe011
backend/src/main/java/com/sinata/appointment/audit/OpLogAuditAspect.java
@@ -136,6 +136,8 @@
        Map<String, Object> payload = new LinkedHashMap<>();
        payload.put("method", request.getMethod());
        payload.put("uri", request.getRequestURI());
        payload.put("clientIp", resolveClientIp(request));
        payload.put("userAgent", request.getHeader("User-Agent"));
        payload.put("handler", jp.getSignature().toShortString());
        payload.put("args", summarizeArgs(jp.getArgs()));
        try {
@@ -145,6 +147,26 @@
        }
    }
    private String resolveClientIp(HttpServletRequest request) {
        String[] candidateHeaders = {
                "X-Forwarded-For",
                "X-Real-IP",
                "Proxy-Client-IP",
                "WL-Proxy-Client-IP"
        };
        for (String header : candidateHeaders) {
            String value = request.getHeader(header);
            if (!StringUtils.hasText(value)) {
                continue;
            }
            String first = value.split(",")[0].trim();
            if (StringUtils.hasText(first) && !"unknown".equalsIgnoreCase(first)) {
                return first;
            }
        }
        return request.getRemoteAddr();
    }
    private Object[] summarizeArgs(Object[] args) {
        if (args == null || args.length == 0) {
            return new Object[0];