feat(foc-pr-report): FOC Project 14 open-PR summary report#24
Open
feat(foc-pr-report): FOC Project 14 open-PR summary report#24
Conversation
Add foc-pr-report uv package: REST board q filter, Markdown table, reviewer enrichment via PR reviews API. Add foc_project14_client for shared Project 14 GraphQL and REST helpers. Refactor foc_wg_pr_notifier to use shared fetch and field_values_by_name. Document token scope, fetch behavior, and reviewer vs requested-review semantics. Made-with: Cursor
- Add synthetic empty row (no assignee / no reviewer) with board search links - Add Total row and column to PR count by repository and status - Rename first workload column to who; document output in README - Wire CLI through render_full_markdown for both tables Made-with: Cursor
Mirror the repository table structure with a ## section title and align README wording. Made-with: Cursor
Contributor
Author
There was a problem hiding this comment.
Pull request overview
Adds a new foc-pr-report uv-packaged CLI that generates a Markdown snapshot of FilOzone Project 14 PR workload, and refactors existing FOC notifier code to reuse shared Project 14 fetching utilities.
Changes:
- Introduces
foc-pr-reportCLI to render (1) person × status workload and (2) repo × status matrix with View 2 deep links. - Adds
foc_project14_client.pyas shared Project 14 client code (GraphQL full fetch + REST filtered listing + reviewer enrichment). - Refactors
foc_wg_pr_notifier.pyto use the shared client’s project fetching and field-value normalization.
Reviewed changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Documents the new FOC PR report tool and points to shared Project 14 client. |
| foc-pr-report/uv.lock | Adds uv lockfile for the new CLI tool environment. |
| foc-pr-report/README.md | Usage + explanation of reviewer semantics and link behavior for the report. |
| foc-pr-report/pyproject.toml | Defines foc-pr-report package metadata and console script entrypoint. |
| foc-pr-report/foc_pr_report/report.py | Implements aggregation + Markdown rendering for person table and repo/status matrix. |
| foc-pr-report/foc_pr_report/cli.py | CLI entrypoint: token handling, fetch items, enrich reviewers, render/write Markdown. |
| foc-pr-report/foc_pr_report/init.py | Package marker. |
| foc-pr-report/.gitignore | Ignores venv and bytecode for the new tool directory. |
| foc_wg_pr_notifier.py | Refactors to reuse foc_project14_client for fetching and field parsing. |
| foc_project14_client.py | New shared client: GraphQL pagination, REST filtered item listing + normalization, reviewer enrichment. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This adds foc-pr-report, a small uv-packaged CLI that generates a Markdown snapshot of pull requests on FilOzone Project 14 (FOC) under the same View 2 filter we already use elsewhere:
is:prexcluding Done and Todo. The goal is a single readable summary of in-flight PR work: who it touches, which lane each card is in, and how load is spread across repositories.Shared logic from earlier tpm-utils work
Rather than duplicating GitHub calls, the report builds on shared Project 14 plumbing in
foc_project14_client.py:qso we only fetch cards that match the board filter (scalable when the project is large).requested_reviewers) so person-level reviewer counts stay closer to what the board shows than requested reviewers alone.The FOC workload notifier (
foc_wg_pr_notifier.py) was refactored to use that client as well, so fixes and behavior stay in one place.What the report contains
Usage
See
foc-pr-report/README.md. Requiresread:project(e.g.gh auth refresh -s read:project).Scope note
This tool is intentionally summary-oriented: one Markdown artifact for humans and weekly posts, not a replacement for per-squad notifiers or deep automation. Shared client code keeps maintenance cheap while the report answers “what’s open on the FOC board right now?” in one pass.
Made with Cursor