Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save beanvuvanhau/52cb67ed6265b8eb96fde60d5b157342 to your computer and use it in GitHub Desktop.
Save beanvuvanhau/52cb67ed6265b8eb96fde60d5b157342 to your computer and use it in GitHub Desktop.
Log Validation Results
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Log Validation Report</title>
<script>
/*!
* Chart.js v4.4.9
* https://www.chartjs.org
* (c) 2025 Chart.js Contributors
* Released under the MIT License
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return Zo},get Decimation(){return ta},get Filler(){return xa},get Legend(){return va},get SubTitle(){return Sa},get Title(){return wa},get Tooltip(){return Wa}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;a<r;a++)e.call(i,t[a],a);else if(o(t))for(l=Object.keys(t),r=l.length,a=0;a<r;a++)e.call(i,t[l[a]],l[a])}function f(t,e){let i,s,n,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,s=t.length;i<s;++i)if(n=t[i],o=e[i],n.datasetIndex!==o.datasetIndex||n.index!==o.index)return!1;return!0}function g(t){if(n(t))return t.map(g);if(o(t)){const e=Object.create(null),i=Object.keys(t),s=i.length;let n=0;for(;n<s;++n)e[i[n]]=g(t[i[n]]);return e}return t}function p(t,e,i){const s=n(e)?e:[e],a=s.length;if(!o(t))return t;const r=(i=i||{}).merger||m;let l;for(let h=0;h<a;++h)if(l=s[h],o(l))for(const c in l)r(t,c,l[c],i);return t}function b(t,e){return x(t,e,{merger:_})}function _(t,e,i){if(!p(t))return;const s=Object.getOwnPropertyDescriptor(t,e);s&&!s.configurable||(s&&s.get&&!s.set?delete t[e]:Object.defineProperty(t,e,{value:i,writable:!0,enumerable:!0,configurable:!0}))}const y={x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)<i}function b(t){const e=Math.round(t);t=V(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(z(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function w(t){const e=[];let i,s;for(i=1;i<t;i++)t%i==0&&(e.push(i),e.push(t/i));return e.sort(((t,e)=>t-e)).pop(),e}function N(t){return!function(t){return"symbol"==typeof t||"object"==typeof t&&null!==t&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;s<n;s++)o=t[s][i],isNaN(o)||(e.min=Math.min(e.min,o),e.max=Math.max(e.max,o))}function $(t){return t*(C/180)}function y(t){return t*(180/C)}function u(t){if(!a(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function x(t,e){const i=e.x-t.x,s=e.y-t.y,n=Math.sqrt(i*i+s*s);let o=Math.atan2(s,i);return o<-.5*C&&(o+=O),{angle:o,distance:n}}function q(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function k(t,e){return(t-e+A)%O-C}function g(t){return(t%O+O)%O}function z(t,e,i,s){const n=G(t),o=G(e),a=G(i),r=G(o-n),l=G(a-n),h=G(n-o),c=G(n-a);return r>l&&h<c}function j(t,e,i){return Math.max(e,Math.min(i,t))}function q(t){return j(t,-32768,32767)}function tt(t,e,i,s=1e-6){return t>=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]<e);let s,n=t.length-1,o=0;for(;n-o>1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return n<i||n===i&&t[s+1][e]===i}:s=>t[s][e]<i),st=(t,e,i)=>e...(truncated)...});</script>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
}
h1, h2 {
color: #2c3e50;
}
.product {
border: 1px solid #ccc;
border-radius: 8px;
margin-bottom: 20px;
padding: 15px;
}
.services {
font-style: italic;
color: #555;
margin-bottom: 10px;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 10px;
}
th, td {
padding: 6px 8px;
border: 1px solid #ddd;
text-align: left;
font-size: 13px;
}
th {
background-color: #f4f4f4;
}
.failed {
color: red;
font-weight: bold;
}
.success {
color: green;
}
.summary {
margin-bottom: 20px;
}
.report-info {
background-color: #f8f9fa;
border: 1px solid #e9ecef;
border-radius: 8px;
padding: 15px;
margin-bottom: 20px;
}
.report-info p {
margin: 5px 0;
color: #495057;
}
.report-info .label {
font-weight: bold;
color: #2c3e50;
}
.stats-container {
display: flex;
flex-wrap: wrap;
gap: 20px;
margin-top: 20px;
}
.stat-box {
flex: 1;
min-width: 200px;
background: #fff;
border: 1px solid #e9ecef;
border-radius: 8px;
padding: 15px;
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}
.stat-title {
font-size: 14px;
color: #6c757d;
margin-bottom: 10px;
}
.stat-value {
font-size: 24px;
font-weight: bold;
color: #2c3e50;
margin-bottom: 10px;
}
.stat-bar {
height: 8px;
background: #e9ecef;
border-radius: 4px;
overflow: hidden;
}
.stat-bar-fill {
height: 100%;
border-radius: 4px;
transition: width 0.3s ease;
}
.stat-bar-products { background-color: #9b59b6; }
.stat-bar-services { background-color: #3498db; }
.stat-bar-success { background-color: #2ecc71; }
.stat-bar-failed { background-color: #e74c3c; }
</style>
</head>
<body>
<h1>📋 Log Validation Summary Report</h1>
<div class="report-info">
<p><span class="label">Date:</span> 2025-06-17-21-39</p>
<p><span class="label">Environment:</span> Production</p>
</div>
<div class="summary">
<h2>📊 Summary Overview</h2>
<div class="stats-container">
<div class="stat-box">
<div class="stat-title">Products</div>
<div class="stat-value">17</div>
<div class="stat-bar">
<div class="stat-bar-fill stat-bar-products" style="width: 100%"></div>
</div>
</div>
<div class="stat-box">
<div class="stat-title">Services</div>
<div class="stat-value">17</div>
<div class="stat-bar">
<div class="stat-bar-fill stat-bar-services" style="width: 100%"></div>
</div>
</div>
<div class="stat-box">
<div class="stat-title">Success Rules</div>
<div class="stat-value">34</div>
<div class="stat-bar">
<div class="stat-bar-fill stat-bar-success" style="width: 66%"></div>
</div>
</div>
<div class="stat-box">
<div class="stat-title">Failed Rules</div>
<div class="stat-value">17</div>
<div class="stat-bar">
<div class="stat-bar-fill stat-bar-failed" style="width: 33%"></div>
</div>
</div>
</div>
</div>
<div class="product">
<h2>Product: asset-accounting-backend (aa)</h2>
<p class="services">Department: Money Forward Cloud Fixed Assets</p>
<p class="services">Services: ERP Development Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>ERP Development Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: pa-web-sidekiq-finalization (pa)</h2>
<p class="services">Department: Money Forward Cloud Payroll</p>
<p class="services">Services: HR Solutions Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>HR Solutions Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: pa_web (pa)</h2>
<p class="services">Department: Money Forward Cloud Payroll</p>
<p class="services">Services: HR Solutions Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>HR Solutions Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: pacman-detector (pacman)</h2>
<p class="services">Department: Journal voucher uploader</p>
<p class="services">Services: Business Platform Development Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>Business Platform Development Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: pacman-gateway (pacman)</h2>
<p class="services">Department: Journal voucher uploader</p>
<p class="services">Services: Business Platform Development Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>Business Platform Development Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: pacman-uploader (pacman)</h2>
<p class="services">Department: Journal voucher uploader</p>
<p class="services">Services: Business Platform Development Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>Business Platform Development Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: panda (panda)</h2>
<p class="services">Department: Master data</p>
<p class="services">Services: SMB Development Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>SMB Development Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: panda.grpc.server (panda)</h2>
<p class="services">Department: Master data</p>
<p class="services">Services: SMB Development Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>SMB Development Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: payable-backend (pa)</h2>
<p class="services">Department: Money Forward Cloud Payroll</p>
<p class="services">Services: HR Solutions Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>HR Solutions Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: payable-batch-high (pa)</h2>
<p class="services">Department: Money Forward Cloud Payroll</p>
<p class="services">Services: HR Solutions Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>HR Solutions Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: project-cost-manhour-backend (pjc)</h2>
<p class="services">Department: Money Forward Cloud Project Cost</p>
<p class="services">Services: ERP Development Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>ERP Development Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: project-cost-manhour-worker (pjc)</h2>
<p class="services">Department: Money Forward Cloud Project Cost</p>
<p class="services">Services: ERP Development Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>ERP Development Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: project-cost-pjm-consumer (pjc)</h2>
<p class="services">Department: Money Forward Cloud Project Cost</p>
<p class="services">Services: ERP Development Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>ERP Development Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: project-cost-worker (pjc)</h2>
<p class="services">Department: Money Forward Cloud Project Cost</p>
<p class="services">Services: ERP Development Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>ERP Development Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: project-master (project_master)</h2>
<p class="services">Department: Project master platform</p>
<p class="services">Services: ERP Development Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>ERP Development Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: project-master-csvimport (project_master)</h2>
<p class="services">Department: Project master platform</p>
<p class="services">Services: ERP Development Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>ERP Development Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="product">
<h2>Product: project-master-worker (project_master)</h2>
<p class="services">Department: Project master platform</p>
<p class="services">Services: ERP Development Department</p>
<table>
<tr>
<th>Rule</th>
<th>Success</th>
<th>Failed</th>
<th>Failed Services</th>
</tr>
<tr>
<td>Rule 1 - Log Format</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
<tr>
<td>Rule 2 - Log Parameters</td>
<td class="success">0</td>
<td class="failed">1</td>
<td>ERP Development Department</td>
</tr>
<tr>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">1</td>
<td class="success">0</td>
<td>–</td>
</tr>
</table>
</div>
<div class="detail-report">
<h2>📝 Detailed Results</h2>
<table class="detail-table">
<thead>
<tr>
<th>No</th>
<th>Product</th>
<th>Service</th>
<th>Rule</th>
<th>Status</th>
<th>Missing Fields</th>
<th>Exposed Data</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td rowspan="3">asset-accounting-backend</td>
<td>ERP Development Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>2</td>
<td>ERP Development Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>3</td>
<td>ERP Development Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>4</td>
<td rowspan="3">pa-web-sidekiq-finalization</td>
<td>HR Solutions Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>5</td>
<td>HR Solutions Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>6</td>
<td>HR Solutions Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>7</td>
<td rowspan="3">pa_web</td>
<td>HR Solutions Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>8</td>
<td>HR Solutions Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>9</td>
<td>HR Solutions Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>10</td>
<td rowspan="3">pacman-detector</td>
<td>Business Platform Development Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>11</td>
<td>Business Platform Development Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>12</td>
<td>Business Platform Development Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>13</td>
<td rowspan="3">pacman-gateway</td>
<td>Business Platform Development Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>14</td>
<td>Business Platform Development Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>15</td>
<td>Business Platform Development Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>16</td>
<td rowspan="3">pacman-uploader</td>
<td>Business Platform Development Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>17</td>
<td>Business Platform Development Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>18</td>
<td>Business Platform Development Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>19</td>
<td rowspan="3">panda</td>
<td>SMB Development Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>20</td>
<td>SMB Development Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>21</td>
<td>SMB Development Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>22</td>
<td rowspan="3">panda.grpc.server</td>
<td>SMB Development Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>23</td>
<td>SMB Development Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>24</td>
<td>SMB Development Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>25</td>
<td rowspan="3">payable-backend</td>
<td>HR Solutions Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>26</td>
<td>HR Solutions Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>27</td>
<td>HR Solutions Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>28</td>
<td rowspan="3">payable-batch-high</td>
<td>HR Solutions Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>29</td>
<td>HR Solutions Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>30</td>
<td>HR Solutions Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>31</td>
<td rowspan="3">project-cost-manhour-backend</td>
<td>ERP Development Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>32</td>
<td>ERP Development Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>33</td>
<td>ERP Development Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>34</td>
<td rowspan="3">project-cost-manhour-worker</td>
<td>ERP Development Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>35</td>
<td>ERP Development Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>36</td>
<td>ERP Development Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>37</td>
<td rowspan="3">project-cost-pjm-consumer</td>
<td>ERP Development Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>38</td>
<td>ERP Development Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>39</td>
<td>ERP Development Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>40</td>
<td rowspan="3">project-cost-worker</td>
<td>ERP Development Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>41</td>
<td>ERP Development Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>42</td>
<td>ERP Development Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>43</td>
<td rowspan="3">project-master</td>
<td>ERP Development Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>44</td>
<td>ERP Development Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>45</td>
<td>ERP Development Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>46</td>
<td rowspan="3">project-master-csvimport</td>
<td>ERP Development Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>47</td>
<td>ERP Development Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>48</td>
<td>ERP Development Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>49</td>
<td rowspan="3">project-master-worker</td>
<td>ERP Development Department</td>
<td>Rule 1 - Log Format</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
<tr>
<td>50</td>
<td>ERP Development Department</td>
<td>Rule 2 - Log Parameters</td>
<td class="failed">Failed</td>
<td>timestamp, service, status, env, level, trace_id, span_id</td>
<td>–</td>
</tr>
<tr>
<td>51</td>
<td>ERP Development Department</td>
<td>Rule 3 - Log Sensitive Data</td>
<td class="success">Success</td>
<td>–</td>
<td>–</td>
</tr>
</tbody>
</table>
</div>
</table>
</div>
<style>
.detail-report {
margin-top: 30px;
overflow-x: auto;
}
.detail-table {
width: 100%;
border-collapse: collapse;
margin-top: 10px;
font-size: 13px;
}
.detail-table th,
.detail-table td {
padding: 8px 12px;
border: 1px solid #ddd;
text-align: left;
vertical-align: top;
}
.detail-table th {
background-color: #f4f4f4;
font-weight: bold;
position: sticky;
top: 0;
}
.detail-table tr:nth-child(even) {
background-color: #f9f9f9;
}
.detail-table tr:hover {
background-color: #f5f5f5;
}
.detail-table td[rowspan] {
vertical-align: middle;
background-color: #f8f9fa;
}
</style>
<script>
const ctx = document.getElementById('summaryChart').getContext('2d');
const totalProducts = 17;
const totalServices = 17;
const totalSuccess = 34;
const totalFailed = 17;
new Chart(ctx, {
type: 'bar',
data: {
labels: ['Product Count', 'Services Count', 'Success Rule Count', 'Failed Rule Count'],
datasets: [{
label: 'Log Summary',
data: [totalProducts, totalServices, totalSuccess, totalFailed],
backgroundColor: ['#9b59b6', '#3498db', '#2ecc71', '#e74c3c']
}]
},
options: {
responsive: false,
plugins: {
legend: { display: false }
},
scales: {
y: {
beginAtZero: true,
ticks: {
precision: 0,
font: { size: 12 }
}
},
x: {
ticks: { font: { size: 12 } }
}
}
}
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment