feat(FN-3974): document reports view in dashboard guide
Added documentation for the dashboard's reports view to the dashboard guide, including a corresponding test assertion. Fusion-Task-Id: FN-3974
This commit is contained in:
@@ -198,6 +198,24 @@ Features:
|
||||
|
||||

|
||||
|
||||
## Reports View
|
||||
|
||||
Reports View is available when the **Reports** plugin is installed and enabled.
|
||||
|
||||
Navigation:
|
||||
- Desktop: **Header → More views → Reports**
|
||||
- Mobile: **More** sheet → **Reports**
|
||||
|
||||
Features:
|
||||
|
||||
- Reports history list with filters for cadence, status, date range, title text, and agent
|
||||
- Detail viewer with a sandboxed iframe preview backed by the report HTML preview endpoint
|
||||
- Section quick-jump sidebar based on stable report section markers
|
||||
- Compare drawer for side-by-side report comparisons with section-level diff groupings
|
||||
- Standalone HTML download/export action for sharing a self-contained report file
|
||||
|
||||
For plugin internals (registration, API routes, rendering/export pipeline), see [Reports plugin docs](./plugins/reports.md).
|
||||
|
||||
### Markdown Rendering
|
||||
|
||||
Documents view supports toggling between raw text and formatted markdown when viewing document content:
|
||||
|
||||
@@ -22,6 +22,7 @@ describe("dashboard guide coverage for lazy-loaded views", () => {
|
||||
"Agents View",
|
||||
"Roadmaps View",
|
||||
"Insights View",
|
||||
"Reports View",
|
||||
"Plugin Manager",
|
||||
"Pi Extensions Manager",
|
||||
] as const;
|
||||
|
||||
@@ -157,22 +157,25 @@ export class RoadmapStore extends EventEmitter<RoadmapStoreEvents> {
|
||||
|
||||
// ── ID Generators ───────────────────────────────────────────────────
|
||||
|
||||
private generateRoadmapId(): string {
|
||||
const timestamp = Date.now();
|
||||
private idSequence = 0;
|
||||
|
||||
private generateId(prefix: "RM" | "RMS" | "RF"): string {
|
||||
const timestamp = Date.now().toString(36).toUpperCase();
|
||||
const sequence = (this.idSequence++).toString(36).toUpperCase().padStart(4, "0");
|
||||
const random = Math.random().toString(36).substring(2, 6).toUpperCase();
|
||||
return `RM-${timestamp.toString(36).toUpperCase()}-${random}`;
|
||||
return `${prefix}-${timestamp}-${sequence}-${random}`;
|
||||
}
|
||||
|
||||
private generateRoadmapId(): string {
|
||||
return this.generateId("RM");
|
||||
}
|
||||
|
||||
private generateMilestoneId(): string {
|
||||
const timestamp = Date.now();
|
||||
const random = Math.random().toString(36).substring(2, 6).toUpperCase();
|
||||
return `RMS-${timestamp.toString(36).toUpperCase()}-${random}`;
|
||||
return this.generateId("RMS");
|
||||
}
|
||||
|
||||
private generateFeatureId(): string {
|
||||
const timestamp = Date.now();
|
||||
const random = Math.random().toString(36).substring(2, 6).toUpperCase();
|
||||
return `RF-${timestamp.toString(36).toUpperCase()}-${random}`;
|
||||
return this.generateId("RF");
|
||||
}
|
||||
|
||||
// ── Row-to-Object Converters ───────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user