markdown_parser/diagram/view_diagram.html
Bruno Charest 18ee8a1cfd feat: Add report generation module for tracking metadata changes
- Implemented `report.nim` to create structured reports on metadata modifications.
- Added functionality to merge reports and convert them to formatted strings.

docs: Create prompt documentation for Markdown parser project

- Added `prompt.md` detailing the requirements and functionalities for the Markdown parser.
- Included specifications, usage examples, and testing guidelines.

docs: Generate code review report for Markdown parser

- Created `rapport_revue_code.md` outlining security vulnerabilities, code quality issues, and suggested improvements.
- Provided a detailed analysis of the codebase with actionable recommendations.

test: Add test data for Markdown parser

- Included various Markdown files and a JPG image in `test_data` to simulate different scenarios.
- Ensured that the parser can handle both valid and invalid metadata.

chore: Add version management file

- Created `version.nim` for automatic versioning of the Markdown parser.
- Established constants for major, minor, patch, and build versions.
2026-04-19 12:56:55 -04:00

134 lines
5.9 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Visualisation du diagramme Mermaid</title>
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background-color: #f5f5f5;
}
h1 {
color: #333;
text-align: center;
}
.mermaid {
display: flex;
justify-content: center;
margin: 30px 0;
background-color: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
</style>
</head>
<body>
<h1>Diagramme de flux du Markdown Parser</h1>
<div class="mermaid">
flowchart TD
%% Main Program Flow
Start([Start]) --> ParseCmdLine[Parse Command Line Arguments]
ParseCmdLine --> ValidateConfig[Validate Configuration]
ValidateConfig --> ShowHelp{Show Help?}
ValidateConfig --> ShowVersion{Show Version?}
ShowHelp -->|Yes| DisplayHelp[Display Help Text] --> Exit([Exit])
ShowVersion -->|Yes| DisplayVersion[Display Version] --> Exit
ShowHelp -->|No| ShowVersion
ShowVersion -->|No| ProcessFiles[Process Markdown Files]
%% Processing Files
ProcessFiles --> SourceDir{Source Directory Specified?}
%% Source Directory Branch
SourceDir -->|Yes| BackupSource[Backup & Rename Source Directory]
BackupSource --> WalkSourceDir[Walk Directory Recursively]
WalkSourceDir --> ProcessEachFile[Process Each File]
ProcessEachFile --> IsMarkdown{Is Markdown File?}
IsMarkdown -->|Yes| ProcessMarkdown[Process Markdown File]
IsMarkdown -->|No| CopyFile[Copy File to Target]
ProcessMarkdown --> CleanupTemp[Clean Up Temporary Directory]
CopyFile --> CleanupTemp
%% Individual Files Branch
SourceDir -->|No| FilesSpecified{Files Specified?}
FilesSpecified -->|Yes| CreateTempDir[Create Temporary Directory]
CreateTempDir --> ProcessEachSpecifiedFile[Process Each Specified File]
ProcessEachSpecifiedFile --> IsSpecifiedMarkdown{Is Markdown File?}
IsSpecifiedMarkdown -->|Yes| ProcessSpecifiedMarkdown[Process Markdown File]
IsSpecifiedMarkdown -->|No| CopySpecifiedFile[Copy File to Target]
ProcessSpecifiedMarkdown --> BackupTempDir[Backup Temporary Directory]
CopySpecifiedFile --> BackupTempDir
BackupTempDir --> CleanupTempDir[Clean Up Temporary Directory]
%% Process Markdown File Subflow
subgraph ProcessMarkdownFileFlow[Process Markdown File]
ReadFile[Read File Content] --> ExtractMetadata[Extract YAML Metadata]
ExtractMetadata --> HasMetadata{Has Metadata?}
HasMetadata -->|Yes| UseExistingMetadata[Use Existing Metadata]
HasMetadata -->|No| AnalyzeEnabled{AI Analysis Enabled?}
AnalyzeEnabled -->|Yes| AnalyzeWithAI[Analyze Content with AI]
AnalyzeEnabled -->|No| NoMetadata[No Metadata Added]
AnalyzeWithAI --> GenerateMetadata[Generate Metadata]
GenerateMetadata --> AddMetadataToContent[Add Metadata to Content]
UseExistingMetadata --> WriteFile[Write Processed Content]
AddMetadataToContent --> WriteFile
NoMetadata --> WriteFile
end
ProcessMarkdown -.-> ProcessMarkdownFileFlow
ProcessSpecifiedMarkdown -.-> ProcessMarkdownFileFlow
%% AI Analysis Subflow
subgraph AIAnalysisFlow[AI Analysis]
LoadConfig[Load AI Configuration] --> GetActiveModel[Get Active AI Model]
GetActiveModel --> IsModelAvailable{Is Model Available?}
IsModelAvailable -->|Yes| PreparePrompt[Prepare AI Prompt]
IsModelAvailable -->|No| ReturnEmpty[Return Empty Result]
PreparePrompt --> SendRequest[Send API Request]
SendRequest --> ParseResponse[Parse AI Response]
ParseResponse --> ExtractTitleDescTags[Extract Title, Description, Tags]
ExtractTitleDescTags --> ReturnResult[Return Analysis Result]
end
AnalyzeWithAI -.-> AIAnalysisFlow
%% Final Steps
CleanupTemp --> GenerateReport[Generate Processing Report]
CleanupTempDir --> GenerateReport
GenerateReport --> DisplayReport[Display Report]
DisplayReport --> Exit
%% Styling
classDef process fill:#a8d5ba,stroke:#178a44,stroke-width:1px;
classDef decision fill:#ffda9e,stroke:#d86018,stroke-width:1px;
classDef io fill:#aac4f5,stroke:#1155cc,stroke-width:1px;
classDef terminal fill:#f5b5c8,stroke:#be0d35,stroke-width:1px;
classDef subgraphStyle fill:#f5f5f5,stroke:#666666,stroke-width:1px;
class Start,Exit terminal;
class ParseCmdLine,BackupSource,WalkSourceDir,ProcessEachFile,ProcessMarkdown,CopyFile,CleanupTemp,CreateTempDir,ProcessEachSpecifiedFile,ProcessSpecifiedMarkdown,CopySpecifiedFile,BackupTempDir,CleanupTempDir,GenerateReport,DisplayReport process;
class ShowHelp,ShowVersion,SourceDir,IsMarkdown,FilesSpecified,IsSpecifiedMarkdown,HasMetadata,AnalyzeEnabled,IsModelAvailable decision;
class DisplayHelp,DisplayVersion,ReadFile,ExtractMetadata,UseExistingMetadata,AnalyzeWithAI,GenerateMetadata,AddMetadataToContent,WriteFile,NoMetadata,LoadConfig,GetActiveModel,PreparePrompt,SendRequest,ParseResponse,ExtractTitleDescTags,ReturnResult,ReturnEmpty io;
class ProcessMarkdownFileFlow,AIAnalysisFlow subgraphStyle;
</div>
<script>
mermaid.initialize({
startOnLoad: true,
theme: 'default',
securityLevel: 'loose',
flowchart: {
useMaxWidth: false,
htmlLabels: true
}
});
</script>
</body>
</html>