# Outlook Report Style Alignment Implementation Plan > **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. **Goal:** Rebuild the Outlook PDF report so its visual hierarchy, module naming, and card/chart presentation are highly similar to the provided reference HTML while keeping the current request payload and Playwright rendering pipeline. **Architecture:** Keep the existing async report flow and server-side HTML-to-PDF conversion. Replace the current template with a print-safe layout that mirrors the reference page structure, render charts as server-generated inline SVG or static HTML fragments instead of browser JavaScript, and stabilize typography through explicit font handling that works with Playwright/Chromium PDF output. **Tech Stack:** Java 17+, Spring components, Playwright Java, server-side HTML template rendering, JUnit 5 / AssertJ, Maven multi-module build. --- ### Task 1: Lock the new reference-oriented output contract with tests **Files:** - Modify: `ability-integration/src/test/java/cn/yunzhixue/microservice/ability/report/outlook/integration/ClasspathOutlookReportHtmlRendererTest.java` - Optional create if helpful: `ability-integration/src/test/resources/outlook-report/reference-style-notes.txt` **Step 1: Write the failing test** Update `renderBuildsStructuredOutlookReportWithChartsAndModules()` so it asserts the new high-similarity structure instead of the current MVP wording. The test should verify at least these strings/fragments are present in rendered HTML: ```java assertThat(html).contains("高考英语临考词汇突击潜力展望报告"); assertThat(html).contains("科学规划 · 精准提分 · 短期见效"); assertThat(html).contains("模块一:个人学情分析"); assertThat(html).contains("模块二:科学备考建议"); assertThat(html).contains("模块三:上届学员提分案例"); assertThat(html).contains("report-container"); assertThat(html).contains("analysis-grid"); assertThat(html).contains("frequency-grid"); assertThat(html).contains("student-case"); assertThat(html).doesNotContain("https://cdn.jsdelivr.net"); ``` Keep the PDF smoke test and add 1-2 assertions that rendered HTML contains inline chart markup expected by the new chart strategy (for example `` and prefer table/block/fixed-width constructs over advanced browser-only layout. - Mirror the reference color system (`#2b4c8a`, `#ff7d00`, light blue cards, warm case-study panel) and spacing as closely as practical. - Introduce stable class names aligned with the reference where useful: `report-container`, `report-title`, `report-subtitle`, `section`, `analysis-grid`, `card`, `frequency-grid`, `freq-card`, `suggest-box`, `student-case`, `case-info`. - Preserve `@page` and A4-friendly margins. Do not copy the external `