refac: article reads, story delete, no leaks, stored SEO status, rate limit, cleanup (%site%, article repo split, old lang repos, one default per site rule to domain)

This commit is contained in:
Florian Sylvain committed 2026-11-03 16:01:52 +01:00
1 parent 9d284e65a9
commit 7c15206170
85 files changed
+1788 -593

No files matched your search

+4 -6
View File
@@ -15,8 +15,6 @@ func metaTitle(art article.Article) (string, string) {
return art.Title, article.SEOSourceTitle
}
const withSiteText = true
func resolveDescription(art article.Article, owner site.Site, facts bodyFacts, siteTextAllowed bool) (string, string) {
if art.SEODescription != "" {
return art.SEODescription, article.SEOSourceSEODescription
@@ -37,7 +35,7 @@ func suggestion(code string, field string, params map[string]int) article.SEOSug
return article.SEOSuggestion{Code: code, Field: field, Params: params}
}
func rawSuggestions(art article.Article, owner site.Site, facts bodyFacts) []article.SEOSuggestion {
func rawSuggestions(art article.Article, owner site.Site, facts bodyFacts, siteTextAllowed bool) []article.SEOSuggestion {
suggestions := []article.SEOSuggestion{}
title, _ := metaTitle(art)
titleRunes := utf8.RuneCountInString(title)
@@ -47,7 +45,7 @@ func rawSuggestions(art article.Article, owner site.Site, facts bodyFacts) []art
if strings.TrimSpace(title) == "" {
suggestions = append(suggestions, suggestion(article.DismissTitleEmpty, article.SEOFieldTitle, map[string]int{}))
}
description, _ := resolveDescription(art, owner, facts, withSiteText)
description, _ := resolveDescription(art, owner, facts, siteTextAllowed)
descriptionRunes := utf8.RuneCountInString(description)
if descriptionRunes < article.SEODescriptionMinRunes {
suggestions = append(suggestions, suggestion(article.DismissDescShort, article.SEOFieldDescription, map[string]int{"length": descriptionRunes, "min": article.SEODescriptionMinRunes}))
@@ -80,10 +78,10 @@ func rawSuggestions(art article.Article, owner site.Site, facts bodyFacts) []art
return suggestions
}
func assessSEO(art article.Article, owner site.Site) article.SEOAssessment {
func assessSEO(art article.Article, owner site.Site, siteTextAllowed bool) article.SEOAssessment {
facts := analyzeBody(art.Body)
kept := []article.SEOSuggestion{}
for _, found := range rawSuggestions(art, owner, facts) {
for _, found := range rawSuggestions(art, owner, facts, siteTextAllowed) {
if !slices.Contains(art.SEODismissed, found.Code) {
kept = append(kept, found)
}