基于Github三件套设计一个分层架构方案,涵盖内容管理、自动化流程和功能扩展性:

AIGmeek/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── aigmeek/
│   │   │           ├── config/                # 配置中心(Spring Boot标准)
│   │   │           │   ├── GitHubConfig.java   # OAuth认证配置 
│   │   │           │   └── TemplateConfig.java  # 模板引擎配置 
│   │   │           ├── core/
│   │   │           │   ├── generator/        # 静态生成器(替代Python脚本)
│   │   │           │   │   ├── HtmlGenerator.java  
│   │   │           │   │   └── SitemapBuilder.java  
│   │   │           │   └── processor/       # 内容处理器 
│   │   │           │       ├── IssueParser.java  
│   │   │           │       └── MarkdownConverter.java  
│   │   │           ├── github/               # API交互层 
│   │   │           │   ├── client/
│   │   │           │   │   ├── IssueClient.java   # 实现PyGithub功能 
│   │   │           │   │   └── RepoClient.java  
│   │   │           │   └── model/            # 数据模型(Record类型)
│   │   │           │       └── GIssue.java  
│   │   │           └── web/
│   │   │               └── controller/       # 预览功能API端点 
│   │   │                   └── PreviewController.java  
│   │   └── resources/
│   │       ├── static/                      # 全量保留原前端资源 
│   │       │   ├── css/
│   │       │   │   ├── style.css            # 增强响应式布局 
│   │       │   │   └── dark-mode.css        # 支持2025新CSS特性 
│   │       │   ├── js/
│   │       │   │   ├── plugins/           # 插件体系(热加载)
│   │       │   │   │   ├── lightbox.js     # 图片灯箱优化版 
│   │       │   │   │   └── vercount.js     # 访问统计模块 
│   │       │   │   └── GmeekTOC.js         # 目录生成器 
│   │       │   └── img/                   # 静态资源托管 
│   │       └── templates/                 # Thymeleaf模板 
│   │           ├── fragments/             # 模块化组件 
│   │           │   ├── header.html  
│   │           │   └── comment.html        # 集成utteranc评论 
│   │           ├── post.html               # 文章页(支持SEO优化)
│   │           └── index.html              # 首页(分页逻辑)
│   └── test/                              # 测试套件 
│       └── java/
│           └── com/
│               └── aigmeek/
│                   └── core/
│                       └── generator/      # 生成器单元测试 
├── .github/                               # 自动化流水线 
│   └── workflows/
│       └── gh-pages.yml                   # 深度优化的Java构建流程 
└── HELP.md                                # 新版文档(含AI助手指引)

一、核心架构分层

1.数据获取层

使用Github API Client for Java实现Issue数据抓取

public class IssueFetcher {
    // 实现基于标签过滤的Issue查询(对应MD文档的标签要求)
    public List<IssueDTO> fetchIssuesByLabel(String repo, String label);
    // 解析Issue正文中的Markdown和元数据(参考post.html 模板)
    public PostContent parseIssueBody(String markdownContent);
}

2.静态生成层

采用Thymeleaf模板引擎替代Jinja2

@Component 
public class StaticGenerator {
    // 生成文章页(集成lightbox.js 图片预览功能[13]())
    public void generatePostPage(PostContent post, Path outputDir);
    // 生成索引页(实现plist.html 的分页逻辑[1]())
    public void generateIndexPage(List<PostContent> posts, int pageNum); 
}

3.自动化部署层

集成Github Actions的Java实现方案

# .github/workflows/build.yml  核心配置 
- name: Build with Maven 
  run: mvn -B package --file pom.xml  
- name: Deploy to Pages 
  uses: peaceiris/actions-gh-pages@v3 
  with:
    github_token: ${{ secrets.GITHUB_TOKEN }}
    publish_dir: ./target/generated-site 

二、关键组件设计

1.配置中心

@Configuration 
public class BlogConfig {
    // 读取类似config.json 的配置(参考requirements.txt 依赖管理[3]())
    @Value("${blog.baseUrl}")  
    private String baseUrl;
    
    // 集成utteranc评论系统(对应post.html 的评论区块[9]())
    @Bean 
    public CommentService commentService() {
        return new UtterancCommentImpl();
    }
}

2.前端资源管理

保留原JS插件体系的集成方式:

public class AssetManager {
    // 将GmeekTocBot.js 等插件写入生成目录 
    public void copyPluginFiles(Path outputDir) {
        Files.copy("src/main/resources/static/GmeekTOC.js",  
                   outputDir.resolve("js/GmeekTOC.js")); 
    }
}

3.元数据处理器

public class MetadataExtractor {
    // 实现类似plist.html 的标签处理逻辑[1]()
    public List<String> extractLabels(JSONObject issueJson) {
        return Arrays.stream(issueJson.getJSONArray("labels")) 
                     .map(label -> label.getString("name")) 
                     .collect(Collectors.toList()); 
    }
}

三、技术选型建议

Image

四、典型工作流程

1.Issue创建/更新事件触发

sequenceDiagram 
    Github Issues->>Java服务: Webhook通知 
    Java服务->>Github API: 获取Issue详情[2]()
    Github API->>Java服务: 返回JSON数据 
    Java服务->>StaticGenerator: 生成HTML(集成footer.html[6]() )
    StaticGenerator->>Github Pages: 提交到gh-pages分支 

2.构建部署流程

# 通过Actions实现CI/CD[10]()
mvn clean package 
&& java -jar blog-generator.jar  
&& gh-pages -d target/generated-site 

五、扩展性设计

1.插件机制

public interface BlogPlugin {
    void apply(PostContent post, TemplateContext context);
}
// 实现类似GmeekVercount的访问统计[5]()
@Component 
public class VisitCounterPlugin implements BlogPlugin {
    public void apply(PostContent post, TemplateContext ctx) {
        ctx.addScript("<script  src='/js/GmeekVercount.js'></script>"); 
    }
}

2.多仓库支持

通过@ConfigurationProperties实现多源配置:

@ConfigurationProperties(prefix = "github")
public class RepoConfig {
    private Map<String, RepoProfile> repositories;
    // 支持同时管理多个Github Pages站点 
}

ps:看到Gmeek的第一眼我就忘本了,我也想做一个这玩意。