fresh-main #3

Merged
KeyArgo merged 3 commits from fresh-main into main 2025-05-02 04:07:52 +00:00
2 changed files with 16 additions and 58 deletions
Showing only changes of commit dba0eac3e4 - Show all commits

View File

@ -11,9 +11,6 @@ tags:
- ci-cd - ci-cd
- automation - automation
readTime: 10 min read readTime: 10 min read
related_posts:
- k3s-cluster
- gitea-self-hosted-git
--- ---
# GitOps with Flux CD # GitOps with Flux CD

View File

@ -63,9 +63,7 @@ const graphData = {
edges: [] edges: []
}; };
// Create edges between posts and their tags, and between related posts // Create edges between posts and their tags
const processedPostPairs = new Set(); // Keep track of processed pairs to avoid duplicate edges
sortedPosts sortedPosts
.filter(post => !post.data.draft) .filter(post => !post.data.draft)
.forEach(post => { .forEach(post => {
@ -81,58 +79,21 @@ sortedPosts
}); });
}); });
// --- Combined Related Posts Logic --- // Check if post references other posts (optional)
let explicitRelatedSlugs = new Set(post.data.related_posts || []); // This requires a related_posts field in frontmatter
let relatedPostsForGraph = []; if (post.data.related_posts && Array.isArray(post.data.related_posts)) {
post.data.related_posts.forEach(relatedSlug => {
// 1. Add explicitly related posts // Make sure related post exists
explicitRelatedSlugs.forEach(relatedSlug => { if (sortedPosts.some(p => p.slug === relatedSlug)) {
const relatedPost = sortedPosts.find(p => p.slug === relatedSlug && !p.data.draft);
if (relatedPost) {
relatedPostsForGraph.push(relatedPost);
}
});
// 2. Add implicitly related posts by tag similarity (if needed, up to a limit, e.g., 3 total)
const MAX_RELATED = 3; // Max related posts to show connections for
const MIN_SHARED_TAGS = 2; // Minimum shared tags for implicit relation
if (relatedPostsForGraph.length < MAX_RELATED && postTags.length > 0) {
sortedPosts
.filter(otherPost =>
!otherPost.data.draft &&
otherPost.slug !== post.slug && // Not the same post
!explicitRelatedSlugs.has(otherPost.slug) && // Not already explicitly related
!relatedPostsForGraph.some(rp => rp.slug === otherPost.slug) // Not already added
)
.forEach(otherPost => {
if (relatedPostsForGraph.length >= MAX_RELATED) return; // Stop if we have enough
const otherTags = otherPost.data.tags || [];
const sharedTags = postTags.filter(tag => otherTags.includes(tag));
if (sharedTags.length >= MIN_SHARED_TAGS) {
relatedPostsForGraph.push(otherPost);
}
});
}
// 3. Create edges for all found related posts (explicit + implicit)
relatedPostsForGraph.forEach(relatedPost => {
const pairKey1 = `${post.slug}-${relatedPost.slug}`;
const pairKey2 = `${relatedPost.slug}-${post.slug}`;
// Avoid duplicate edges (A->B and B->A)
if (!processedPostPairs.has(pairKey1) && !processedPostPairs.has(pairKey2)) {
graphData.edges.push({ graphData.edges.push({
source: post.slug, source: post.slug,
target: relatedPost.slug, target: relatedSlug,
type: 'post-post', // Use consistent type type: 'post-post',
strength: explicitRelatedSlugs.has(relatedPost.slug) ? 3 : 1.5 // Stronger link if explicit strength: 2
}); });
processedPostPairs.add(pairKey1); // Mark pair as processed
} }
}); });
}
}); });
// Terminal commands for tech effect // Terminal commands for tech effect