Skip to content

Feat template#8

Merged
AptS-1547 merged 7 commits intomasterfrom
feat-template
May 5, 2025
Merged

Feat template#8
AptS-1547 merged 7 commits intomasterfrom
feat-template

Conversation

@AptS-1547
Copy link
Copy Markdown
Owner

No description provided.

AptS-1547 added 4 commits May 5, 2025 09:11
- Added pyproject.toml for project configuration and dependencies management.
- Removed requirements.txt as dependencies are now managed by Poetry.
- Created initial test structure with test modules for matching logic and OneBot message sending.
- Implemented tests for verifying GitHub webhook signatures.
- Added tests for OneBotSender class to ensure message sending functionality works via WebSocket and HTTP.
@AptS-1547 AptS-1547 requested a review from Copilot May 5, 2025 13:17
@AptS-1547 AptS-1547 self-assigned this May 5, 2025
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @AptS-1547, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

Summary of Changes

This pull request introduces a template feature to the project, enhancing its functionality. The changes include modifications to .dockerignore, .gitignore, Dockerfile, and README.md. Additionally, it adds new files related to models, utils, default templates, docker-compose, a new main entrypoint, project configuration, requirements, and tests. The primary goal is to set up a basic structure for the application, including Docker deployment, configuration loading, and webhook handling.

Highlights

  • Project Restructuring: The project structure has been reorganized, introducing app, config, docs, tests, and docker directories to better organize the codebase and configurations.
  • Configuration Loading: The configuration loading mechanism has been updated to load configurations from YAML files, using pydantic for validation.
  • Docker Deployment: Docker-related files have been added and modified to facilitate easy deployment using Docker and Docker Compose.
  • Webhook Handling: Webhook handling logic has been implemented, including signature verification and event matching.
  • Templating: Default templates have been added for different GitHub events, allowing for customizable notifications.
  • Testing: Unit tests have been added to ensure the correct functionality of matching patterns, OneBot message sending, and webhook signature verification.

Changelog

Click here to see the changelog
  • .dockerignore
    • Removed test/, *.md, Dockerfile, and docker-compose.yml from the ignore list.
    • Added docker/ to the ignore list.
  • .gitignore
    • Added .pytest_cache/ to the ignore list.
  • Dockerfile
    • Added VOLUME [ "/app/config" ] to define a volume for configuration.
    • Changed the entrypoint to CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"].
  • README.md
    • Added instructions for using Poetry for dependency management.
    • Updated the configuration file example path to config/config.example.yaml.
    • Updated the uvicorn and python run commands to use main:app and main.py respectively.
    • Removed the development roadmap section.
    • Updated the project structure section to reflect the new directory layout.
    • Added instructions for using Docker Compose.
  • app/models/init.py
    • Added a new file to define the models module, including the Config model.
  • app/models/config.py
    • Renamed Settings to Config.
    • Updated the from_yaml method to load configurations from the current working directory.
  • app/utils/init.py
    • Added a new file to define the utils module, including the matching logic.
  • app/utils/matching.py
    • Added a new file to implement the matching logic for webhook events.
  • config/templates/default.txt
    • Added a default template file.
  • config/templates/issues/default.txt
    • Added a default template file for issues.
  • config/templates/pull_request/default.txt
    • Added a default template file for pull requests.
  • config/templates/push/default.txt
    • Added a default template file for push events.
  • docker/docker-compose.yml
    • Added a docker-compose file for easier deployment.
  • main.py
    • Replaced imports from settings.py, send_message.py, and hooks/github_webhook.py with imports from app/models/config.py, app/core/onebot.py, and app/core/github.py respectively.
    • Replaced settings with config to use the new configuration model.
  • pyproject.toml
    • Added a pyproject.toml file for Poetry dependency management.
  • requirements.txt
    • Updated the requirements file to use version ranges instead of exact versions.
  • tests/init.py
    • Added an empty test init file.
  • tests/test_matching.py
    • Added a test file for the matching logic.
  • tests/test_onebot_sender.py
    • Added a test file for the OneBot message sender.
  • tests/test_webhook_signature.py
    • Added a test file for the webhook signature verification.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.


A webhook's call, a server's grace,
To QQ groups, messages race.
From GitHub's push to chat's delight,
Code's updates shine so bright.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

The pull request introduces several enhancements and refactors the project structure. The changes include updates to Docker configurations, README documentation, model definitions, utility functions, and test suites. Overall, the changes seem well-structured and aim to improve the project's maintainability and functionality. However, there are a few areas that could benefit from further review and refinement.

Summary of Findings

  • Missing Error Handling in OneBot Communication: The send_github_notification function in app/core/onebot.py lacks proper error handling for cases where the OneBot client fails to send messages. This could lead to silent failures and missed notifications. Consider adding more robust error handling and logging to ensure that notification failures are properly detected and addressed.
  • Inconsistent Naming Convention: There are inconsistencies in naming conventions across the project. For example, the configuration class was renamed from Settings to Config in app/models/config.py, but the from_yaml method still initializes a variable named settings. Maintaining consistent naming conventions improves code readability and reduces confusion.
  • Potential Security Risk: Hardcoded Default Configuration: The from_yaml method in app/models/config.py creates a default configuration file with a hardcoded webhook secret if the configuration file does not exist. This could pose a security risk if the default secret is not properly managed or rotated. Consider generating a random secret or prompting the user to set a secure secret during initial setup.

Merge Readiness

The pull request introduces significant improvements to the project. However, the identified issues related to error handling, naming consistency, and potential security risks should be addressed before merging. Addressing these concerns will improve the reliability, maintainability, and security of the project. I am unable to approve this pull request, and recommend that others review and approve this code before merging.

Comment thread app/models/config.py
Comment thread app/models/config.py Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements a new template feature and enhances configuration management, tests, and documentation for the OneBot GitHub Webhook service.

  • Introduces tests for OneBotSender and matching functions.
  • Migrates configuration from the old Settings model to a new Config model and makes necessary adjustments in main.py.
  • Updates documentation and deployment instructions with revised README and Docker Compose files.

Reviewed Changes

Copilot reviewed 22 out of 24 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/test_onebot_sender.py Adds async tests for WebSocket, HTTP message sending, and error handling.
tests/test_matching.py Provides expanded tests for pattern matching using wildcards and special characters.
tests/init.py Introduces file-level documentation for the tests module.
pyproject.toml Updates project configuration and dependency versions.
main.py Replaces Settings with Config and updates import paths accordingly.
docker/docker-compose.yml Adds Docker Compose configuration for easier deployment.
config/templates/push/default.txt Adds a new push notification template with dynamic commit formatting.
config/templates/pull_request/default.txt Introduces the pull request template format.
config/templates/issues/default.txt Adds the issues notification template.
config/templates/default.txt Provides a default notification template.
app/utils/matching.py Implements a pattern matching function using fnmatch.
app/utils/init.py Exports matching utility functions.
app/models/config.py Migrates configuration handling to the new Config model with YAML loading and validation.
app/models/init.py Sets up module exports for configuration models.
README.md Updates installation instructions, commands, and project structure overview.
Files not reviewed (2)
  • .dockerignore: Language not supported
  • Dockerfile: Language not supported

Comment thread config/templates/push/default.txt Outdated
Comment on lines +8 to +9
{{ commit.message.split('
')[0] }}
Copy link

Copilot AI May 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The split() call in the commit.message template appears to be broken across two lines, which may lead to a syntax error. Please combine the expression on a single line (e.g. {{ commit.message.split('\n')[0] }}) to correctly extract the first line of the commit message.

Suggested change
{{ commit.message.split('
')[0] }}
{{ commit.message.split('\n')[0] }}

Copilot uses AI. Check for mistakes.
@AptS-1547 AptS-1547 requested a review from Copilot May 5, 2025 13:29
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces the "Feat template" feature for the OneBot GitHub Webhook service by adding new configuration, templates, and updating module imports and service entry points.

  • New project structure and configuration files added
  • Updated module imports and variable naming for clarity
  • Modified templates for push, pull request, and issues events, along with updated documentation and Docker configuration

Reviewed Changes

Copilot reviewed 23 out of 26 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/init.py Adds boilerplate license and module docstring
pyproject.toml Defines project metadata and dependencies
main.py Updates module imports and renames settings to config
docker/docker-compose.yml Provides container configuration for the service
config/templates/push/default.txt Introduces push notification template; potential error in commit message splitting
config/templates/pull_request/default.txt Adds pull request notification template
config/templates/issues/default.txt Adds issues notification template
config/templates/default.txt Adds default notification template
app/utils/matching.py Implements pattern matching logic
app/models/config.py Renames Settings to Config and adjusts YAML loading behavior
app/models/init.py Exports the configuration model
app/core/github.py Refactors to use centralized matching utility
README.md Updates documentation with new entry point and structure details
.github/workflows/pylint.yml Ignores tests directory during linting
Files not reviewed (3)
  • .dockerignore: Language not supported
  • .pylintrc: Language not supported
  • Dockerfile: Language not supported

Comment thread config/templates/push/default.txt Outdated
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@AptS-1547 AptS-1547 merged commit 0caa443 into master May 5, 2025
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants