차량 아이콘과 사용량 보정 기준 갱신

This commit is contained in:
seo
2026-06-29 05:15:48 +09:00
parent ad5771e113
commit d99dc97672
2 changed files with 10 additions and 4 deletions
+2 -2
View File
@@ -126,8 +126,8 @@ Worker 교체나 예외 종료로 `processing`, `ui_timeout_pending` 상태가
- 차량 TCP 실패 reason과 마지막 수신 지연을 확인합니다. - 차량 TCP 실패 reason과 마지막 수신 지연을 확인합니다.
- 명령별 rate limit과 감사 로그를 유지합니다. - 명령별 rate limit과 감사 로그를 유지합니다.
- 통신사 기준 데이터 사용량 보정값을 주기적으로 확인합니다. 2026-06-26 01:10 T world 실측 102.4MB(104,834KB) 기준 2026-06 보정값은 통신사 누적 107,350,016 bytes, 로컬 보정 누적 54,104,011 bytes, 배율 1.984142입니다. - 통신사 기준 데이터 사용량 보정값을 주기적으로 확인합니다. 2026-06-29 05:13 T world 실측 109.9MB(112,507.5KB) 기준 2026-06 보정값은 통신사 누적 115,207,680 bytes, 로컬 보정 누적 57,853,769 bytes, 배율 1.991360입니다.
- 직전 배율 1.984648 기준 현재값은 107,377,429 bytes로 계산되어 T world보다 27,413 bytes(약 0.026MB) 높았고, 새 배율은 직전보다 0.000507 낮아졌습니다. - 해당 기준 시각의 로컬 계측 범위는 2026-06-01 00:00:00부터 2026-06-29 05:13:00 직전까지이며, 마지막 로컬 사용량 기록은 2026-06-29 05:12:49입니다.
- 데이터 사용량 집계는 성공 응답 평균을 SQL로 먼저 구하고, 월간/일간 행은 PHP에서 한 줄씩 스트리밍 처리합니다. 기존 보정 조건은 유지하면서 `fetchAll()` 메모리 사용을 제거해 PHP-FPM `memory_limit=128M`에서도 동작하도록 합니다. - 데이터 사용량 집계는 성공 응답 평균을 SQL로 먼저 구하고, 월간/일간 행은 PHP에서 한 줄씩 스트리밍 처리합니다. 기존 보정 조건은 유지하면서 `fetchAll()` 메모리 사용을 제거해 PHP-FPM `memory_limit=128M`에서도 동작하도록 합니다.
- 4.95초 timeout 직후에는 사용량 기록이 즉시 생기지 않을 수 있으며, 최대 60초 뒤 늦은 정산 행이 추가될 수 있습니다. - 4.95초 timeout 직후에는 사용량 기록이 즉시 생기지 않을 수 있으며, 최대 60초 뒤 늦은 정산 행이 추가될 수 있습니다.
- `systemctl status car-tcp-worker.service``journalctl -u car-tcp-worker.service`로 worker 상태를 확인합니다. - `systemctl status car-tcp-worker.service``journalctl -u car-tcp-worker.service`로 worker 상태를 확인합니다.
+8 -2
View File
@@ -27,7 +27,7 @@ const RECEIVE_GAP_LIMIT_SEC = 60;
// SKT T world "잔여기본통화 정보" 기준 현재월 누적값. // SKT T world "잔여기본통화 정보" 기준 현재월 누적값.
// carrier_total_bytes / meter_adjusted_bytes 로 보정 배율을 역산해 로컬 송수신 계측값에 적용한다. // carrier_total_bytes / meter_adjusted_bytes 로 보정 배율을 역산해 로컬 송수신 계측값에 적용한다.
const DATA_CURRENT_BILLING_USAGE_BYTES = [ const DATA_CURRENT_BILLING_USAGE_BYTES = [
'2026-06' => ['total_bytes' => 107350016, 'meter_adjusted_bytes' => 54104011, 'included_bytes' => 104857600, 'coupon_registered_at' => null], '2026-06' => ['total_bytes' => 115207680, 'meter_adjusted_bytes' => 57853769, 'included_bytes' => 104857600, 'coupon_registered_at' => null],
]; ];
function car_db(): PDO function car_db(): PDO
@@ -927,6 +927,12 @@ car_monitor_require_access(false);
line-height: 1; line-height: 1;
transform: translateY(-1px); transform: translateY(-1px);
} }
.app-icon-main {
width: 75px;
height: 75px;
font-size: 1.45rem;
flex: 0 0 75px;
}
.app-title { .app-title {
font-size: 1.25rem; font-weight: 800; letter-spacing: -0.5px; color: var(--text-primary); font-size: 1.25rem; font-weight: 800; letter-spacing: -0.5px; color: var(--text-primary);
} }
@@ -1318,7 +1324,7 @@ car_monitor_require_access(false);
<div class="container py-3"> <div class="container py-3">
<div class="dashboard-header"> <div class="dashboard-header">
<div class="d-flex align-items-center gap-3"> <div class="d-flex align-items-center gap-3">
<div class="bg-primary bg-opacity-10 text-primary rounded-circle d-flex align-items-center justify-content-center border border-primary border-opacity-25" style="width:48px; height:48px;"> <div class="app-icon-main bg-primary bg-opacity-10 text-primary rounded-circle d-flex align-items-center justify-content-center border border-primary border-opacity-25">
<i class="fas fa-car"></i> <i class="fas fa-car"></i>
</div> </div>
<div> <div>