Issue #73 - Entry-Centered Graph View: - Added GET /api/knowledge/entries/:id/graph endpoint with depth parameter - Returns entry + connected nodes with link relationships - Created GraphService for graph traversal using BFS - Added EntryGraphViewer component for frontend - Integrated graph view tab into entry detail page Issue #74 - Graph Statistics Dashboard: - Added GET /api/knowledge/stats endpoint - Returns overview stats (entries, tags, links by status) - Includes most connected entries, recent activity, tag distribution - Created StatsDashboard component with visual stats - Added route at /knowledge/stats Backend: - GraphService: BFS-based graph traversal with configurable depth - StatsService: Parallel queries for comprehensive statistics - GraphQueryDto: Validation for depth parameter (1-5) - Entity types for graph nodes/edges and statistics - Unit tests for both services Frontend: - EntryGraphViewer: Entry-centered graph visualization - StatsDashboard: Statistics overview with charts - Graph view tab on entry detail page - API client functions for new endpoints - TypeScript strict typing throughout
41 lines
674 B
TypeScript
41 lines
674 B
TypeScript
/**
|
|
* Represents a node in the knowledge graph
|
|
*/
|
|
export interface GraphNode {
|
|
id: string;
|
|
slug: string;
|
|
title: string;
|
|
summary: string | null;
|
|
tags: Array<{
|
|
id: string;
|
|
name: string;
|
|
slug: string;
|
|
color: string | null;
|
|
}>;
|
|
depth: number;
|
|
}
|
|
|
|
/**
|
|
* Represents an edge/link in the knowledge graph
|
|
*/
|
|
export interface GraphEdge {
|
|
id: string;
|
|
sourceId: string;
|
|
targetId: string;
|
|
linkText: string;
|
|
}
|
|
|
|
/**
|
|
* Entry-centered graph response
|
|
*/
|
|
export interface EntryGraphResponse {
|
|
centerNode: GraphNode;
|
|
nodes: GraphNode[];
|
|
edges: GraphEdge[];
|
|
stats: {
|
|
totalNodes: number;
|
|
totalEdges: number;
|
|
maxDepth: number;
|
|
};
|
|
}
|