@panguard-ai/panguard-report 1.5.5 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +26 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/generator/html-generator.d.ts +33 -0
- package/dist/generator/html-generator.d.ts.map +1 -0
- package/dist/generator/html-generator.js +605 -0
- package/dist/generator/html-generator.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,mBAAmB,EAEnB,YAAY,EACZ,YAAY,EACZ,cAAc,EACf,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,mBAAmB,EAEnB,YAAY,EACZ,YAAY,EACZ,cAAc,EACf,MAAM,aAAa,CAAC;AAWrB,0CAA0C;AAC1C,MAAM,MAAM,gBAAgB,GACxB,UAAU,GACV,iBAAiB,GACjB,UAAU,GACV,SAAS,GACT,QAAQ,GACR,MAAM,CAAC;AAEX,2BAA2B;AAC3B,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAmC7D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,YAAY,CAoB9E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAgBzD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAU5C;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAqCpC;AA6CD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsL9D"}
|
package/dist/cli/index.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { DEFAULT_REPORT_CONFIG } from '../types.js';
|
|
9
9
|
import { generateComplianceReport, generateComplianceReportWithAssessment, reportToJSON, generateSummaryText, } from '../generator/report-generator.js';
|
|
10
10
|
import { generatePDFReport } from '../generator/pdf-generator.js';
|
|
11
|
+
import { generateHTMLReport } from '../generator/html-generator.js';
|
|
11
12
|
/**
|
|
12
13
|
* Parse CLI arguments
|
|
13
14
|
* 解析 CLI 參數
|
|
@@ -276,6 +277,31 @@ export async function executeCli(args) {
|
|
|
276
277
|
});
|
|
277
278
|
console.log(`PDF report saved to / PDF 報告已儲存至: ${pdfPath}`);
|
|
278
279
|
}
|
|
280
|
+
else if (format === 'html') {
|
|
281
|
+
// Bug 3 fix (2026-05-19): previously fell through to the summary
|
|
282
|
+
// branch — CLI said "Report generated successfully" but wrote no
|
|
283
|
+
// file. Now generates a real single-file HTML report (inline CSS,
|
|
284
|
+
// print-friendly).
|
|
285
|
+
const { mkdir } = await import('node:fs/promises');
|
|
286
|
+
const outputDir = options.outputDir ?? DEFAULT_REPORT_CONFIG.outputDir;
|
|
287
|
+
await mkdir(outputDir, { recursive: true });
|
|
288
|
+
const htmlPath = `${outputDir}/${report.metadata.reportId}.html`;
|
|
289
|
+
const isZh = language === 'zh-TW';
|
|
290
|
+
const htmlTitle = isZh
|
|
291
|
+
? `Panguard AI - ${framework} 合規報告`
|
|
292
|
+
: `Panguard AI - ${framework} Compliance Report`;
|
|
293
|
+
await generateHTMLReport({
|
|
294
|
+
title: htmlTitle,
|
|
295
|
+
framework,
|
|
296
|
+
lang: language,
|
|
297
|
+
outputPath: htmlPath,
|
|
298
|
+
findings: report.findings,
|
|
299
|
+
assessmentResult: report,
|
|
300
|
+
organizationName: options.organizationName,
|
|
301
|
+
generatedAt: report.metadata.generatedAt.toISOString().split('T')[0],
|
|
302
|
+
});
|
|
303
|
+
console.log(`HTML report saved to / HTML 報告已儲存至: ${htmlPath}`);
|
|
304
|
+
}
|
|
279
305
|
else if (format === 'json') {
|
|
280
306
|
const json = reportToJSON(report);
|
|
281
307
|
if (options.outputDir) {
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compliance Report HTML Generator
|
|
3
|
+
* 合規報告 HTML 產生器
|
|
4
|
+
*
|
|
5
|
+
* Brand-aligned customer-facing report (2026-05-19 rebrand): warm-black
|
|
6
|
+
* dark theme on screen matching panguard.ai design system (Surface 0
|
|
7
|
+
* #1A1614 + Sage #8B9A8E + Active Emerald #34D399 + Space Grotesk
|
|
8
|
+
* headings + Inter body + JetBrains Mono for IDs and code spans).
|
|
9
|
+
*
|
|
10
|
+
* Print stylesheet (@media print) switches to a warm-light variant so
|
|
11
|
+
* the artifact prints cleanly to PDF while keeping sage accents — same
|
|
12
|
+
* pattern Linear / Vercel use for branded dashboards that also need
|
|
13
|
+
* printable receipts.
|
|
14
|
+
*
|
|
15
|
+
* Bilingual labels for zh-TW vs en. Single self-contained file:
|
|
16
|
+
* inline CSS, inline Google Font @import, inline shield SVG logo.
|
|
17
|
+
* Auditors can open offline, email, or browser-print to PDF.
|
|
18
|
+
*
|
|
19
|
+
* @module @panguard-ai/panguard-report/generator/html-generator
|
|
20
|
+
*/
|
|
21
|
+
import type { ComplianceFinding, ComplianceReportData, ReportLanguage } from '../types.js';
|
|
22
|
+
export interface HTMLReportOptions {
|
|
23
|
+
title: string;
|
|
24
|
+
framework: string;
|
|
25
|
+
lang: ReportLanguage;
|
|
26
|
+
outputPath: string;
|
|
27
|
+
findings: ComplianceFinding[];
|
|
28
|
+
assessmentResult?: ComplianceReportData;
|
|
29
|
+
generatedAt?: string;
|
|
30
|
+
organizationName?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function generateHTMLReport(opts: HTMLReportOptions): Promise<string>;
|
|
33
|
+
//# sourceMappingURL=html-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-generator.d.ts","sourceRoot":"","sources":["../../src/generator/html-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAa3F,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AA+lBD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBjF"}
|
|
@@ -0,0 +1,605 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compliance Report HTML Generator
|
|
3
|
+
* 合規報告 HTML 產生器
|
|
4
|
+
*
|
|
5
|
+
* Brand-aligned customer-facing report (2026-05-19 rebrand): warm-black
|
|
6
|
+
* dark theme on screen matching panguard.ai design system (Surface 0
|
|
7
|
+
* #1A1614 + Sage #8B9A8E + Active Emerald #34D399 + Space Grotesk
|
|
8
|
+
* headings + Inter body + JetBrains Mono for IDs and code spans).
|
|
9
|
+
*
|
|
10
|
+
* Print stylesheet (@media print) switches to a warm-light variant so
|
|
11
|
+
* the artifact prints cleanly to PDF while keeping sage accents — same
|
|
12
|
+
* pattern Linear / Vercel use for branded dashboards that also need
|
|
13
|
+
* printable receipts.
|
|
14
|
+
*
|
|
15
|
+
* Bilingual labels for zh-TW vs en. Single self-contained file:
|
|
16
|
+
* inline CSS, inline Google Font @import, inline shield SVG logo.
|
|
17
|
+
* Auditors can open offline, email, or browser-print to PDF.
|
|
18
|
+
*
|
|
19
|
+
* @module @panguard-ai/panguard-report/generator/html-generator
|
|
20
|
+
*/
|
|
21
|
+
import { writeFile, mkdir } from 'node:fs/promises';
|
|
22
|
+
import { dirname } from 'node:path';
|
|
23
|
+
import { createLogger } from '@panguard-ai/core';
|
|
24
|
+
import { getFrameworkName, getFrameworkControls } from '../frameworks/index.js';
|
|
25
|
+
import { evaluateControls, generateExecutiveSummary, generateStatistics, generateRecommendations, } from '../mapper/index.js';
|
|
26
|
+
import { getSectionLabels, getSeverityLabel, getStatusLabel } from '../templates/index.js';
|
|
27
|
+
const logger = createLogger('panguard-report:html');
|
|
28
|
+
/**
|
|
29
|
+
* Brand tokens — keep in lockstep with /Users/user/Downloads/panguard-ai/
|
|
30
|
+
* packages/website/DESIGN.md and packages/app/tailwind.config.ts.
|
|
31
|
+
*/
|
|
32
|
+
const BRAND = {
|
|
33
|
+
// Dark surfaces
|
|
34
|
+
surface0: '#1A1614',
|
|
35
|
+
surface1: '#1F1C19',
|
|
36
|
+
surface2: '#272320',
|
|
37
|
+
surface3: '#302B27',
|
|
38
|
+
// Borders
|
|
39
|
+
borderDefault: '#2E2A27',
|
|
40
|
+
borderHover: '#3D3835',
|
|
41
|
+
// Text
|
|
42
|
+
textPrimary: '#F5F1E8',
|
|
43
|
+
textSecondary: '#A09890',
|
|
44
|
+
textMuted: '#9A9490',
|
|
45
|
+
// Brand sage
|
|
46
|
+
sage: '#8B9A8E',
|
|
47
|
+
sageLight: '#A3B0A6',
|
|
48
|
+
sageDark: '#6B7A6E',
|
|
49
|
+
sageGlow: 'rgba(139, 154, 142, 0.15)',
|
|
50
|
+
// Active emerald
|
|
51
|
+
emerald: '#34D399',
|
|
52
|
+
emeraldLight: '#6EE7B7',
|
|
53
|
+
emeraldDark: '#059669',
|
|
54
|
+
// Severity
|
|
55
|
+
critical: '#EF4444',
|
|
56
|
+
high: '#F97316',
|
|
57
|
+
medium: '#EAB308',
|
|
58
|
+
low: '#34D399',
|
|
59
|
+
info: '#9CA3AF',
|
|
60
|
+
// Semantic
|
|
61
|
+
redAlert: '#C75050',
|
|
62
|
+
};
|
|
63
|
+
const SEVERITY_COLOR = {
|
|
64
|
+
critical: BRAND.critical,
|
|
65
|
+
high: BRAND.high,
|
|
66
|
+
medium: BRAND.medium,
|
|
67
|
+
low: BRAND.low,
|
|
68
|
+
info: BRAND.info,
|
|
69
|
+
};
|
|
70
|
+
const STATUS_COLOR = {
|
|
71
|
+
pass: BRAND.emerald,
|
|
72
|
+
fail: BRAND.redAlert,
|
|
73
|
+
partial: BRAND.medium,
|
|
74
|
+
not_applicable: BRAND.textMuted,
|
|
75
|
+
};
|
|
76
|
+
/** Inline shield logo (currentColor — fill via CSS) */
|
|
77
|
+
const SHIELD_SVG = `<svg viewBox="385 323 1278 1403" xmlns="http://www.w3.org/2000/svg" aria-label="PanGuard shield">
|
|
78
|
+
<path fill="currentColor" d="M 1021.5 830.423 C 1026.54 829.911 1045.81 832.659 1051.64 833.401 C 1072.38 835.99 1093.1 838.746 1113.8 841.667 L 1329.99 871.428 L 1329.95 1306.51 L 1330 1422.21 C 1330.01 1450.54 1332.08 1491.81 1325.18 1518.04 C 1318.79 1541.46 1305.62 1562.47 1287.31 1578.42 C 1269.98 1593.59 1234.62 1610.78 1212.96 1622.97 C 1151.4 1657.6 1087.44 1689.5 1026.42 1725.08 L 1024.58 1725.72 C 1020.72 1724.57 1005.67 1715.74 1001.44 1713.38 C 986.676 1705.08 971.857 1696.88 956.982 1688.79 L 836.342 1623.07 C 818.678 1613.37 800.537 1603.48 783.285 1593.93 C 741.183 1570.62 718.225 1528.6 718.162 1480.8 C 718.14 1463.85 718.093 1446.28 718.119 1429.07 L 718.13 1313.33 L 718.15 871.408 C 819.171 858.462 920.068 841.835 1021.5 830.423 z"/>
|
|
79
|
+
<path fill="currentColor" d="M 687.515 577.4 C 696.504 576.451 715.718 579.584 725.68 580.913 L 782.266 588.553 C 853.62 598.25 926.853 607.634 997.939 618.387 L 997.872 779.654 C 966.188 784.487 928.734 789.954 897.039 793.352 L 897.073 705.399 C 831.524 696.853 760.432 685.286 694.176 678.356 C 683.151 677.203 646.195 683.753 632.643 685.485 L 487.112 705.406 C 488.77 841.757 487.098 980.17 487.357 1116.69 L 487.339 1188.98 C 487.213 1243.94 479.328 1246.69 530.666 1273.69 C 574.625 1298.03 623.372 1322.43 666.093 1347.35 C 665.454 1385.26 666.06 1424.82 666.087 1462.87 C 649.609 1452.6 628.321 1441.62 610.88 1432.12 L 500.871 1372.76 C 476.603 1359.56 440.159 1342.09 421.535 1323.57 C 404.11 1306.02 392.433 1283.59 388.055 1259.25 C 384.254 1237.81 385.323 1203.28 385.354 1180.66 L 385.478 1064.48 L 385.312 618.209 C 414.868 615.376 445.833 609.518 475.437 605.863 C 545.54 597.208 617.46 584.737 687.515 577.4 z"/>
|
|
80
|
+
<path fill="currentColor" d="M 1348.89 577.369 C 1360.73 575.936 1415.83 584.528 1431.77 586.589 C 1508.75 596.536 1585.62 608.685 1662.67 618.335 L 1662.73 1028.87 L 1662.69 1154.09 C 1662.67 1223.3 1674.33 1293.75 1609.64 1337.92 C 1596.01 1347.22 1581.75 1354.57 1567.33 1362.44 L 1512.89 1391.87 L 1382 1462.6 C 1383.76 1427.96 1382.35 1382.83 1382.21 1347.24 C 1420 1324.81 1467.93 1301.58 1507.58 1279.5 C 1524.53 1270.36 1558.74 1256.3 1560.1 1235.39 C 1561.42 1215.18 1560.95 1193.69 1560.9 1173.32 L 1560.87 1066.29 L 1560.68 705.345 C 1543.39 703.65 1521.51 700.068 1504.1 697.576 C 1473.23 693.054 1442.33 688.801 1411.39 684.819 C 1399.03 683.204 1369.09 678.563 1357.99 678.482 C 1343.65 678.377 1310.02 683.839 1294.14 685.904 C 1246.36 692.092 1198.63 698.627 1150.95 705.51 C 1151.37 734.567 1151.1 764.255 1151.14 793.361 C 1118.48 789.558 1083.43 784.206 1050.79 779.597 L 1050.69 617.847 L 1348.89 577.369 z"/>
|
|
81
|
+
<path fill="currentColor" d="M 1017.32 323.354 C 1027.15 321.591 1105.66 333.344 1122.51 335.603 C 1166.74 341.267 1210.92 347.328 1255.05 353.786 C 1279.68 357.183 1305.51 360.23 1329.92 364.192 L 1329.98 526.684 C 1296.55 530.372 1261.73 535.721 1228.25 540.29 C 1228.4 510.591 1228.39 480.892 1228.23 451.193 C 1219.27 449.729 1209.61 448.427 1200.57 447.329 C 1144.13 440.467 1086.78 429.864 1030.24 424.572 C 1018.71 422.967 967.642 430.978 952.027 433.125 L 819.579 450.968 C 820.252 479.945 819.726 511.22 819.879 540.382 C 785.991 535.397 752.051 530.778 718.064 526.526 L 717.99 364.358 C 745.543 359.872 774.642 356.332 802.417 352.399 L 1017.32 323.354 z"/>
|
|
82
|
+
</svg>`;
|
|
83
|
+
function escapeHtml(s) {
|
|
84
|
+
if (s === undefined || s === null)
|
|
85
|
+
return '';
|
|
86
|
+
return String(s)
|
|
87
|
+
.replace(/&/g, '&')
|
|
88
|
+
.replace(/</g, '<')
|
|
89
|
+
.replace(/>/g, '>')
|
|
90
|
+
.replace(/"/g, '"')
|
|
91
|
+
.replace(/'/g, ''');
|
|
92
|
+
}
|
|
93
|
+
function renderHTML(opts) {
|
|
94
|
+
const labels = getSectionLabels(opts.lang);
|
|
95
|
+
const isZh = opts.lang === 'zh-TW';
|
|
96
|
+
const t = (en, zh) => (isZh ? zh : en);
|
|
97
|
+
const framework = opts.framework;
|
|
98
|
+
const frameworkName = getFrameworkName(framework, opts.lang);
|
|
99
|
+
const assessment = opts.assessmentResult ??
|
|
100
|
+
{
|
|
101
|
+
findings: opts.findings,
|
|
102
|
+
metadata: {
|
|
103
|
+
reportId: '—',
|
|
104
|
+
generatedAt: new Date(),
|
|
105
|
+
framework: opts.framework,
|
|
106
|
+
language: opts.lang,
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
const controls = getFrameworkControls(framework);
|
|
110
|
+
const evaluated = evaluateControls(controls, opts.findings);
|
|
111
|
+
const exec = generateExecutiveSummary(evaluated, opts.findings, opts.lang);
|
|
112
|
+
const stats = generateStatistics(evaluated, opts.findings);
|
|
113
|
+
const recs = generateRecommendations(evaluated, opts.lang);
|
|
114
|
+
void stats;
|
|
115
|
+
const sevCounts = opts.findings.reduce((acc, f) => {
|
|
116
|
+
acc[f.severity] = (acc[f.severity] ?? 0) + 1;
|
|
117
|
+
return acc;
|
|
118
|
+
}, {});
|
|
119
|
+
const findingRows = opts.findings
|
|
120
|
+
.map((f) => {
|
|
121
|
+
const sevColor = SEVERITY_COLOR[f.severity] ?? BRAND.textPrimary;
|
|
122
|
+
return `
|
|
123
|
+
<tr>
|
|
124
|
+
<td class="mono">${escapeHtml(f.findingId)}</td>
|
|
125
|
+
<td><span class="badge" style="background:${sevColor}1A;color:${sevColor};border-color:${sevColor}4D">${escapeHtml(getSeverityLabel(f.severity, opts.lang))}</span></td>
|
|
126
|
+
<td class="cell-title">${escapeHtml(f.title)}</td>
|
|
127
|
+
<td class="cell-cat">${escapeHtml(f.category)}</td>
|
|
128
|
+
<td class="muted">${escapeHtml(f.description ?? '')}</td>
|
|
129
|
+
</tr>`;
|
|
130
|
+
})
|
|
131
|
+
.join('');
|
|
132
|
+
const controlRows = evaluated
|
|
133
|
+
.map((c) => {
|
|
134
|
+
const statusColor = STATUS_COLOR[c.status] ?? BRAND.textPrimary;
|
|
135
|
+
const controlTitle = isZh ? c.titleZh : c.titleEn;
|
|
136
|
+
const evidenceText = Array.isArray(c.evidence) ? c.evidence.join('; ') : (c.evidence ?? '');
|
|
137
|
+
return `
|
|
138
|
+
<tr>
|
|
139
|
+
<td class="mono">${escapeHtml(c.controlId)}</td>
|
|
140
|
+
<td class="cell-title">${escapeHtml(controlTitle)}</td>
|
|
141
|
+
<td><span class="badge" style="background:${statusColor}1A;color:${statusColor};border-color:${statusColor}4D">${escapeHtml(getStatusLabel(c.status, opts.lang))}</span></td>
|
|
142
|
+
<td>${c.relatedFindings.length}</td>
|
|
143
|
+
<td class="muted">${escapeHtml(evidenceText)}</td>
|
|
144
|
+
</tr>`;
|
|
145
|
+
})
|
|
146
|
+
.join('');
|
|
147
|
+
const recRows = recs
|
|
148
|
+
.map((r, i) => `
|
|
149
|
+
<li>
|
|
150
|
+
<div class="rec-head"><span class="rec-num">${String(i + 1).padStart(2, '0')}</span> <strong>${escapeHtml(r.title)}</strong></div>
|
|
151
|
+
<div class="rec-body">${escapeHtml(r.description)}</div>
|
|
152
|
+
<div class="rec-meta">
|
|
153
|
+
${labels.priority}: <strong>${escapeHtml(r.priority)}</strong>
|
|
154
|
+
<span class="dot">·</span>
|
|
155
|
+
${labels.estimatedEffort}: ${escapeHtml(r.estimatedEffort ?? '—')}
|
|
156
|
+
</div>
|
|
157
|
+
</li>`)
|
|
158
|
+
.join('');
|
|
159
|
+
const generatedDate = opts.generatedAt ?? new Date().toISOString().split('T')[0];
|
|
160
|
+
const totalControlsLabel = t('Total Controls', '總控制項');
|
|
161
|
+
const generatedLabel = t('Generated', '產生時間');
|
|
162
|
+
const noFindingsText = t('No findings recorded.', '本期未記錄任何發現。');
|
|
163
|
+
const confidentialText = t('Confidential — Panguard AI Compliance Report', '機密 — Panguard AI 合規報告');
|
|
164
|
+
const findingIdLabel = t('Finding ID', '發現編號');
|
|
165
|
+
const titleColLabel = t('Title', '標題');
|
|
166
|
+
const descColLabel = t('Description', '描述');
|
|
167
|
+
const controlIdLabel = t('Control ID', '控制項編號');
|
|
168
|
+
const controlTitleLabel = t('Control', '控制項');
|
|
169
|
+
const overlineText = t('AI Agent Compliance Report', 'AI Agent 合規報告');
|
|
170
|
+
const lang = isZh ? 'zh-TW' : 'en';
|
|
171
|
+
return `<!DOCTYPE html>
|
|
172
|
+
<html lang="${lang}">
|
|
173
|
+
<head>
|
|
174
|
+
<meta charset="UTF-8">
|
|
175
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
176
|
+
<title>${escapeHtml(opts.title)}</title>
|
|
177
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
178
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
179
|
+
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&family=Noto+Sans+TC:wght@400;500;600&display=swap" rel="stylesheet">
|
|
180
|
+
<style>
|
|
181
|
+
:root {
|
|
182
|
+
--surface-0: ${BRAND.surface0};
|
|
183
|
+
--surface-1: ${BRAND.surface1};
|
|
184
|
+
--surface-2: ${BRAND.surface2};
|
|
185
|
+
--surface-3: ${BRAND.surface3};
|
|
186
|
+
--border: ${BRAND.borderDefault};
|
|
187
|
+
--border-hover: ${BRAND.borderHover};
|
|
188
|
+
--text-primary: ${BRAND.textPrimary};
|
|
189
|
+
--text-secondary: ${BRAND.textSecondary};
|
|
190
|
+
--text-muted: ${BRAND.textMuted};
|
|
191
|
+
--sage: ${BRAND.sage};
|
|
192
|
+
--sage-light: ${BRAND.sageLight};
|
|
193
|
+
--emerald: ${BRAND.emerald};
|
|
194
|
+
--emerald-light: ${BRAND.emeraldLight};
|
|
195
|
+
}
|
|
196
|
+
* { box-sizing: border-box; }
|
|
197
|
+
html, body {
|
|
198
|
+
margin: 0; padding: 0;
|
|
199
|
+
background: var(--surface-0);
|
|
200
|
+
color: var(--text-primary);
|
|
201
|
+
font-family: 'Inter', system-ui, -apple-system, sans-serif;
|
|
202
|
+
font-size: 14px;
|
|
203
|
+
line-height: 1.6;
|
|
204
|
+
-webkit-font-smoothing: antialiased;
|
|
205
|
+
}
|
|
206
|
+
:lang(zh-TW), :lang(zh) {
|
|
207
|
+
font-family: 'Inter', 'Noto Sans TC', 'PingFang TC', 'Microsoft JhengHei', sans-serif;
|
|
208
|
+
}
|
|
209
|
+
.page {
|
|
210
|
+
max-width: 1024px;
|
|
211
|
+
margin: 0 auto;
|
|
212
|
+
padding: 48px 56px 64px;
|
|
213
|
+
}
|
|
214
|
+
/* Header */
|
|
215
|
+
header.cover {
|
|
216
|
+
margin-bottom: 48px;
|
|
217
|
+
}
|
|
218
|
+
.brand-row {
|
|
219
|
+
display: flex;
|
|
220
|
+
align-items: center;
|
|
221
|
+
gap: 12px;
|
|
222
|
+
margin-bottom: 32px;
|
|
223
|
+
}
|
|
224
|
+
.brand-shield {
|
|
225
|
+
color: var(--sage);
|
|
226
|
+
width: 24px;
|
|
227
|
+
height: 24px;
|
|
228
|
+
flex-shrink: 0;
|
|
229
|
+
}
|
|
230
|
+
.brand-shield svg { width: 100%; height: 100%; display: block; }
|
|
231
|
+
.brand-name {
|
|
232
|
+
font-family: 'Space Grotesk', system-ui, sans-serif;
|
|
233
|
+
font-weight: 700;
|
|
234
|
+
font-size: 14px;
|
|
235
|
+
letter-spacing: 0.1em;
|
|
236
|
+
text-transform: uppercase;
|
|
237
|
+
color: var(--text-primary);
|
|
238
|
+
}
|
|
239
|
+
.overline {
|
|
240
|
+
font-family: 'Inter', sans-serif;
|
|
241
|
+
font-size: 11px;
|
|
242
|
+
font-weight: 600;
|
|
243
|
+
letter-spacing: 0.15em;
|
|
244
|
+
text-transform: uppercase;
|
|
245
|
+
color: var(--sage);
|
|
246
|
+
margin-bottom: 12px;
|
|
247
|
+
}
|
|
248
|
+
h1.title {
|
|
249
|
+
font-family: 'Space Grotesk', system-ui, sans-serif;
|
|
250
|
+
font-size: 32px;
|
|
251
|
+
font-weight: 700;
|
|
252
|
+
line-height: 1.2;
|
|
253
|
+
letter-spacing: -0.01em;
|
|
254
|
+
margin: 0 0 8px 0;
|
|
255
|
+
color: var(--text-primary);
|
|
256
|
+
}
|
|
257
|
+
.sub {
|
|
258
|
+
font-size: 14px;
|
|
259
|
+
color: var(--text-secondary);
|
|
260
|
+
margin-bottom: 32px;
|
|
261
|
+
}
|
|
262
|
+
.meta-grid {
|
|
263
|
+
display: grid;
|
|
264
|
+
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
|
265
|
+
gap: 1px;
|
|
266
|
+
background: var(--border);
|
|
267
|
+
border: 1px solid var(--border);
|
|
268
|
+
border-radius: 16px;
|
|
269
|
+
overflow: hidden;
|
|
270
|
+
}
|
|
271
|
+
.meta-cell {
|
|
272
|
+
background: var(--surface-1);
|
|
273
|
+
padding: 16px 20px;
|
|
274
|
+
}
|
|
275
|
+
.meta-cell dt {
|
|
276
|
+
font-family: 'Inter', sans-serif;
|
|
277
|
+
font-size: 10px;
|
|
278
|
+
font-weight: 600;
|
|
279
|
+
letter-spacing: 0.12em;
|
|
280
|
+
text-transform: uppercase;
|
|
281
|
+
color: var(--text-muted);
|
|
282
|
+
margin-bottom: 6px;
|
|
283
|
+
}
|
|
284
|
+
.meta-cell dd {
|
|
285
|
+
margin: 0;
|
|
286
|
+
font-size: 15px;
|
|
287
|
+
font-weight: 600;
|
|
288
|
+
color: var(--text-primary);
|
|
289
|
+
font-family: 'Inter', sans-serif;
|
|
290
|
+
}
|
|
291
|
+
.meta-cell dd.mono {
|
|
292
|
+
font-family: 'JetBrains Mono', 'SF Mono', monospace;
|
|
293
|
+
font-size: 13px;
|
|
294
|
+
}
|
|
295
|
+
.meta-cell dd.score {
|
|
296
|
+
font-family: 'Space Grotesk', sans-serif;
|
|
297
|
+
font-size: 24px;
|
|
298
|
+
font-weight: 700;
|
|
299
|
+
color: var(--emerald);
|
|
300
|
+
}
|
|
301
|
+
/* Sections */
|
|
302
|
+
section { margin: 48px 0; }
|
|
303
|
+
section h2 {
|
|
304
|
+
font-family: 'Space Grotesk', system-ui, sans-serif;
|
|
305
|
+
font-size: 20px;
|
|
306
|
+
font-weight: 700;
|
|
307
|
+
color: var(--text-primary);
|
|
308
|
+
margin: 0 0 8px 0;
|
|
309
|
+
padding-bottom: 16px;
|
|
310
|
+
border-bottom: 1px solid var(--border);
|
|
311
|
+
}
|
|
312
|
+
section h2 .count {
|
|
313
|
+
color: var(--text-muted);
|
|
314
|
+
font-weight: 500;
|
|
315
|
+
font-size: 14px;
|
|
316
|
+
margin-left: 6px;
|
|
317
|
+
}
|
|
318
|
+
section .lead {
|
|
319
|
+
font-size: 15px;
|
|
320
|
+
line-height: 1.65;
|
|
321
|
+
color: var(--text-secondary);
|
|
322
|
+
margin: 20px 0;
|
|
323
|
+
}
|
|
324
|
+
.key-risks {
|
|
325
|
+
font-size: 13px;
|
|
326
|
+
color: var(--text-muted);
|
|
327
|
+
margin-top: 16px;
|
|
328
|
+
}
|
|
329
|
+
.key-risks strong { color: var(--sage); }
|
|
330
|
+
/* Stat grid */
|
|
331
|
+
.stat-grid {
|
|
332
|
+
display: grid;
|
|
333
|
+
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
|
|
334
|
+
gap: 12px;
|
|
335
|
+
margin: 20px 0;
|
|
336
|
+
}
|
|
337
|
+
.stat {
|
|
338
|
+
background: var(--surface-1);
|
|
339
|
+
border: 1px solid var(--border);
|
|
340
|
+
border-radius: 12px;
|
|
341
|
+
padding: 20px;
|
|
342
|
+
text-align: center;
|
|
343
|
+
transition: border-color 200ms;
|
|
344
|
+
}
|
|
345
|
+
.stat:hover { border-color: var(--sage); }
|
|
346
|
+
.stat .n {
|
|
347
|
+
font-family: 'Space Grotesk', sans-serif;
|
|
348
|
+
font-size: 28px;
|
|
349
|
+
font-weight: 700;
|
|
350
|
+
line-height: 1;
|
|
351
|
+
color: var(--text-primary);
|
|
352
|
+
}
|
|
353
|
+
.stat .l {
|
|
354
|
+
font-family: 'Inter', sans-serif;
|
|
355
|
+
font-size: 11px;
|
|
356
|
+
font-weight: 600;
|
|
357
|
+
letter-spacing: 0.12em;
|
|
358
|
+
text-transform: uppercase;
|
|
359
|
+
color: var(--text-muted);
|
|
360
|
+
margin-top: 8px;
|
|
361
|
+
}
|
|
362
|
+
/* Tables */
|
|
363
|
+
table {
|
|
364
|
+
width: 100%;
|
|
365
|
+
border-collapse: collapse;
|
|
366
|
+
margin-top: 16px;
|
|
367
|
+
background: var(--surface-1);
|
|
368
|
+
border: 1px solid var(--border);
|
|
369
|
+
border-radius: 12px;
|
|
370
|
+
overflow: hidden;
|
|
371
|
+
}
|
|
372
|
+
thead {
|
|
373
|
+
background: var(--surface-2);
|
|
374
|
+
}
|
|
375
|
+
th {
|
|
376
|
+
font-family: 'Inter', sans-serif;
|
|
377
|
+
font-size: 10px;
|
|
378
|
+
font-weight: 600;
|
|
379
|
+
letter-spacing: 0.12em;
|
|
380
|
+
text-transform: uppercase;
|
|
381
|
+
color: var(--text-muted);
|
|
382
|
+
padding: 12px 16px;
|
|
383
|
+
text-align: left;
|
|
384
|
+
border-bottom: 1px solid var(--border);
|
|
385
|
+
}
|
|
386
|
+
td {
|
|
387
|
+
padding: 14px 16px;
|
|
388
|
+
border-bottom: 1px solid var(--border);
|
|
389
|
+
vertical-align: top;
|
|
390
|
+
font-size: 13px;
|
|
391
|
+
color: var(--text-primary);
|
|
392
|
+
}
|
|
393
|
+
tbody tr:last-child td { border-bottom: none; }
|
|
394
|
+
td.mono, .mono {
|
|
395
|
+
font-family: 'JetBrains Mono', monospace;
|
|
396
|
+
font-size: 12px;
|
|
397
|
+
color: var(--text-secondary);
|
|
398
|
+
}
|
|
399
|
+
td.muted, .muted {
|
|
400
|
+
color: var(--text-muted);
|
|
401
|
+
font-size: 12px;
|
|
402
|
+
}
|
|
403
|
+
td.cell-title { font-weight: 500; }
|
|
404
|
+
td.cell-cat { color: var(--text-secondary); }
|
|
405
|
+
/* Badge */
|
|
406
|
+
.badge {
|
|
407
|
+
display: inline-block;
|
|
408
|
+
padding: 3px 10px;
|
|
409
|
+
border-radius: 9999px;
|
|
410
|
+
font-family: 'Inter', sans-serif;
|
|
411
|
+
font-size: 11px;
|
|
412
|
+
font-weight: 600;
|
|
413
|
+
letter-spacing: 0.02em;
|
|
414
|
+
border: 1px solid;
|
|
415
|
+
}
|
|
416
|
+
/* Recommendations */
|
|
417
|
+
ul.recs { list-style: none; padding: 0; margin: 16px 0 0; }
|
|
418
|
+
ul.recs li {
|
|
419
|
+
background: var(--surface-1);
|
|
420
|
+
border: 1px solid var(--border);
|
|
421
|
+
border-left: 3px solid var(--sage);
|
|
422
|
+
border-radius: 0 12px 12px 0;
|
|
423
|
+
padding: 20px 24px;
|
|
424
|
+
margin-bottom: 12px;
|
|
425
|
+
transition: border-left-color 200ms;
|
|
426
|
+
}
|
|
427
|
+
ul.recs li:hover { border-left-color: var(--emerald); }
|
|
428
|
+
.rec-head {
|
|
429
|
+
display: flex;
|
|
430
|
+
gap: 12px;
|
|
431
|
+
align-items: baseline;
|
|
432
|
+
margin-bottom: 8px;
|
|
433
|
+
}
|
|
434
|
+
.rec-num {
|
|
435
|
+
font-family: 'JetBrains Mono', monospace;
|
|
436
|
+
font-size: 11px;
|
|
437
|
+
color: var(--text-muted);
|
|
438
|
+
font-weight: 500;
|
|
439
|
+
}
|
|
440
|
+
.rec-head strong {
|
|
441
|
+
font-size: 14px;
|
|
442
|
+
font-weight: 600;
|
|
443
|
+
color: var(--text-primary);
|
|
444
|
+
}
|
|
445
|
+
.rec-body {
|
|
446
|
+
font-size: 13px;
|
|
447
|
+
color: var(--text-secondary);
|
|
448
|
+
margin-bottom: 10px;
|
|
449
|
+
line-height: 1.6;
|
|
450
|
+
}
|
|
451
|
+
.rec-meta {
|
|
452
|
+
font-size: 11px;
|
|
453
|
+
color: var(--text-muted);
|
|
454
|
+
font-weight: 500;
|
|
455
|
+
}
|
|
456
|
+
.rec-meta strong { color: var(--sage); }
|
|
457
|
+
.dot { margin: 0 4px; color: var(--border); }
|
|
458
|
+
/* Footer */
|
|
459
|
+
footer.confidential {
|
|
460
|
+
margin-top: 64px;
|
|
461
|
+
padding-top: 24px;
|
|
462
|
+
border-top: 1px solid var(--border);
|
|
463
|
+
font-size: 11px;
|
|
464
|
+
color: var(--text-muted);
|
|
465
|
+
text-align: center;
|
|
466
|
+
letter-spacing: 0.05em;
|
|
467
|
+
}
|
|
468
|
+
/* Print stylesheet — warm-light variant preserving sage accent */
|
|
469
|
+
@media print {
|
|
470
|
+
:root {
|
|
471
|
+
--surface-0: #FAF8F2;
|
|
472
|
+
--surface-1: #FFFFFF;
|
|
473
|
+
--surface-2: #F5F1E8;
|
|
474
|
+
--surface-3: #EFE9DC;
|
|
475
|
+
--border: #E5DFD0;
|
|
476
|
+
--border-hover: #D1C9B5;
|
|
477
|
+
--text-primary: #1A1614;
|
|
478
|
+
--text-secondary: #4A4540;
|
|
479
|
+
--text-muted: #8A847A;
|
|
480
|
+
}
|
|
481
|
+
body { background: white; color: var(--text-primary); }
|
|
482
|
+
.page { padding: 24px 32px; max-width: none; }
|
|
483
|
+
section { page-break-inside: avoid; margin: 28px 0; }
|
|
484
|
+
header.cover { page-break-after: avoid; margin-bottom: 28px; }
|
|
485
|
+
.stat { background: var(--surface-2); }
|
|
486
|
+
ul.recs li { background: var(--surface-2); page-break-inside: avoid; }
|
|
487
|
+
table { border: 1px solid var(--border); }
|
|
488
|
+
thead { background: var(--surface-2); }
|
|
489
|
+
a { color: var(--sage); text-decoration: underline; }
|
|
490
|
+
}
|
|
491
|
+
</style>
|
|
492
|
+
</head>
|
|
493
|
+
<body>
|
|
494
|
+
<div class="page">
|
|
495
|
+
|
|
496
|
+
<header class="cover">
|
|
497
|
+
<div class="brand-row">
|
|
498
|
+
<span class="brand-shield">${SHIELD_SVG}</span>
|
|
499
|
+
<span class="brand-name">PanGuard AI</span>
|
|
500
|
+
</div>
|
|
501
|
+
<p class="overline">${overlineText}</p>
|
|
502
|
+
<h1 class="title">${escapeHtml(opts.title)}</h1>
|
|
503
|
+
<p class="sub">${escapeHtml(frameworkName)}${opts.organizationName ? ` · ${escapeHtml(opts.organizationName)}` : ''}</p>
|
|
504
|
+
<dl class="meta-grid">
|
|
505
|
+
<div class="meta-cell">
|
|
506
|
+
<dt>${labels.reportId}</dt>
|
|
507
|
+
<dd class="mono">${escapeHtml(assessment.metadata.reportId)}</dd>
|
|
508
|
+
</div>
|
|
509
|
+
<div class="meta-cell">
|
|
510
|
+
<dt>${generatedLabel}</dt>
|
|
511
|
+
<dd>${escapeHtml(generatedDate)}</dd>
|
|
512
|
+
</div>
|
|
513
|
+
<div class="meta-cell">
|
|
514
|
+
<dt>${t('Framework', '框架')}</dt>
|
|
515
|
+
<dd>${escapeHtml(frameworkName)}</dd>
|
|
516
|
+
</div>
|
|
517
|
+
<div class="meta-cell">
|
|
518
|
+
<dt>${labels.overallScore}</dt>
|
|
519
|
+
<dd class="score">${exec.overallScore}%</dd>
|
|
520
|
+
</div>
|
|
521
|
+
</dl>
|
|
522
|
+
</header>
|
|
523
|
+
|
|
524
|
+
<section>
|
|
525
|
+
<h2>${labels.executiveSummary}</h2>
|
|
526
|
+
<p class="lead">${escapeHtml(t(`Overall compliance score: ${exec.overallScore}%. ${exec.controlsPassed} of ${exec.totalControls} controls passed, ${exec.controlsFailed} failed, ${exec.controlsPartial} partial. ${exec.totalFindings} findings recorded (${exec.criticalFindings} critical, ${exec.highFindings} high).`, `整體合規分數:${exec.overallScore}%。${exec.totalControls} 項控制項中 ${exec.controlsPassed} 項通過、${exec.controlsFailed} 項未通過、${exec.controlsPartial} 項部分符合。共 ${exec.totalFindings} 項發現(${exec.criticalFindings} 嚴重、${exec.highFindings} 高風險)。`))}</p>
|
|
527
|
+
${exec.keyRisks.length > 0
|
|
528
|
+
? `<p class="key-risks"><strong>${t('Key risks', '主要風險')}:</strong> ${exec.keyRisks
|
|
529
|
+
.map((r) => escapeHtml(r))
|
|
530
|
+
.join(' · ')}</p>`
|
|
531
|
+
: ''}
|
|
532
|
+
<div class="stat-grid">
|
|
533
|
+
<div class="stat"><div class="n">${exec.totalControls}</div><div class="l">${totalControlsLabel}</div></div>
|
|
534
|
+
<div class="stat"><div class="n" style="color:${BRAND.emerald}">${exec.controlsPassed}</div><div class="l">${labels.controlsPassed}</div></div>
|
|
535
|
+
<div class="stat"><div class="n" style="color:${BRAND.redAlert}">${exec.controlsFailed}</div><div class="l">${labels.controlsFailed}</div></div>
|
|
536
|
+
<div class="stat"><div class="n" style="color:${BRAND.medium}">${exec.controlsPartial}</div><div class="l">${labels.controlsPartial}</div></div>
|
|
537
|
+
</div>
|
|
538
|
+
</section>
|
|
539
|
+
|
|
540
|
+
<section>
|
|
541
|
+
<h2>${labels.findings}<span class="count">${opts.findings.length}</span></h2>
|
|
542
|
+
<div class="stat-grid">
|
|
543
|
+
${['critical', 'high', 'medium', 'low']
|
|
544
|
+
.map((s) => `<div class="stat"><div class="n" style="color:${SEVERITY_COLOR[s]}">${sevCounts[s] ?? 0}</div><div class="l">${escapeHtml(getSeverityLabel(s, opts.lang))}</div></div>`)
|
|
545
|
+
.join('')}
|
|
546
|
+
</div>
|
|
547
|
+
${opts.findings.length === 0
|
|
548
|
+
? `<p class="muted" style="margin-top:24px">${noFindingsText}</p>`
|
|
549
|
+
: `<table>
|
|
550
|
+
<thead><tr>
|
|
551
|
+
<th>${findingIdLabel}</th>
|
|
552
|
+
<th>${labels.severity}</th>
|
|
553
|
+
<th>${titleColLabel}</th>
|
|
554
|
+
<th>${labels.category}</th>
|
|
555
|
+
<th>${descColLabel}</th>
|
|
556
|
+
</tr></thead>
|
|
557
|
+
<tbody>${findingRows}</tbody>
|
|
558
|
+
</table>`}
|
|
559
|
+
</section>
|
|
560
|
+
|
|
561
|
+
<section>
|
|
562
|
+
<h2>${labels.controlDetails}<span class="count">${evaluated.length}</span></h2>
|
|
563
|
+
<table>
|
|
564
|
+
<thead><tr>
|
|
565
|
+
<th>${controlIdLabel}</th>
|
|
566
|
+
<th>${controlTitleLabel}</th>
|
|
567
|
+
<th>${labels.status}</th>
|
|
568
|
+
<th>#</th>
|
|
569
|
+
<th>${labels.evidence}</th>
|
|
570
|
+
</tr></thead>
|
|
571
|
+
<tbody>${controlRows}</tbody>
|
|
572
|
+
</table>
|
|
573
|
+
</section>
|
|
574
|
+
|
|
575
|
+
${recs.length > 0
|
|
576
|
+
? `<section>
|
|
577
|
+
<h2>${labels.recommendations}<span class="count">${recs.length}</span></h2>
|
|
578
|
+
<ul class="recs">${recRows}</ul>
|
|
579
|
+
</section>`
|
|
580
|
+
: ''}
|
|
581
|
+
|
|
582
|
+
<footer class="confidential">
|
|
583
|
+
${confidentialText} · ${escapeHtml(assessment.metadata.reportId)} · ${escapeHtml(generatedDate)}
|
|
584
|
+
</footer>
|
|
585
|
+
|
|
586
|
+
</div>
|
|
587
|
+
</body>
|
|
588
|
+
</html>`;
|
|
589
|
+
}
|
|
590
|
+
export async function generateHTMLReport(opts) {
|
|
591
|
+
logger.info('Starting HTML compliance report generation', {
|
|
592
|
+
outputPath: opts.outputPath,
|
|
593
|
+
lang: opts.lang,
|
|
594
|
+
framework: opts.framework,
|
|
595
|
+
});
|
|
596
|
+
await mkdir(dirname(opts.outputPath), { recursive: true });
|
|
597
|
+
const html = renderHTML(opts);
|
|
598
|
+
await writeFile(opts.outputPath, html, 'utf-8');
|
|
599
|
+
logger.info('HTML compliance report written', {
|
|
600
|
+
outputPath: opts.outputPath,
|
|
601
|
+
sizeBytes: html.length,
|
|
602
|
+
});
|
|
603
|
+
return opts.outputPath;
|
|
604
|
+
}
|
|
605
|
+
//# sourceMappingURL=html-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-generator.js","sourceRoot":"","sources":["../../src/generator/html-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -55,7 +55,7 @@ export interface ComplianceFinding {
|
|
|
55
55
|
/** Report type / 報告類型 */
|
|
56
56
|
export type ReportType = 'compliance' | 'incident' | 'monthly' | 'quarterly' | 'annual';
|
|
57
57
|
/** Report format / 報告格式 */
|
|
58
|
-
export type ReportFormat = 'pdf' | 'json';
|
|
58
|
+
export type ReportFormat = 'pdf' | 'json' | 'html';
|
|
59
59
|
/** Report language / 報告語言 */
|
|
60
60
|
export type ReportLanguage = 'zh-TW' | 'en';
|
|
61
61
|
/** Report metadata / 報告元資料 */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,gDAAgD;AAChD,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG,UAAU,GAAG,MAAM,CAAC;AAEhF,yCAAyC;AACzC,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAE3E,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,gEAAgE;AAChE,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,kBAAkB;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8BAA8B;IAC9B,eAAe,EAAE,iBAAiB,EAAE,CAAC;IACrC,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAC1D,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,oCAAoC;IACpC,MAAM,EAAE,eAAe,GAAG,gBAAgB,GAAG,eAAe,GAAG,QAAQ,CAAC;CACzE;AAOD,yBAAyB;AACzB,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExF,2BAA2B;AAC3B,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@panguard-ai/panguard-report",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
],
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"pdfkit": "^0.15.0",
|
|
36
|
-
"@panguard-ai/core": "1.
|
|
36
|
+
"@panguard-ai/core": "1.6.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/node": "^22.14.0",
|