feat(company): full detail page + members table with tenure & periods#246
Merged
Progi1984 merged 1 commit intoJul 23, 2026
Merged
Conversation
Replaces the flat DetailMembersList grid with a sortable table sourced from the newly-serialized `employees` field of topcompanies_prs.json (traces.byyear-breakdown mirrors `var/data/companies.json` there). Columns ------- - Contributor (avatar + name + @handle, linking to /contributor/:login) - Periods (one line per timeframe — e.g. gRoussac has two stints) - Joined (first startDate — the default sort) - Status pill: Active (green) if the last timeframe has no endDate or endDate ≥ today, otherwise "Left <Mon YYYY>" - Tenure (sum of period lengths, formatted "Ny Nm") - Merged PRs (from contributors_prs.json, joined by login) - OSS years (first–last non-zero year in mergedPullRequestsByYear) Sidebar count now reads `employees.length` when the field is present (the authoritative source), falling back to the old derived `contributors` list only for snapshots produced before the Traces change. This fixes the 93 / 87 mismatch — sidebar and section header now agree. Employees without a matching entry in contributors_prs.json (comptes GH supprimés/renommés, ou contributeur droppé par la pipeline `traces:fetch:contributors`) still render — dimmed, with dashes for their OSS stats — instead of vanishing silently. The old DetailMembersList is kept as a fallback for legacy snapshots that lack `employees`, so the branch degrades gracefully during the window between the front deploy and the next Traces snapshot. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Progi1984
approved these changes
Jul 23, 2026
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
Companion PR to PrestaShop/traces#239, which serializes the new
employeesfield ontopcompanies_prs.json. Must merge Traces first, then regenerate the snapshot before this PR provides its full value on prod.Two features in one branch:
1. Full detail-page parity (commit
7b298bf) — the company detail page now renders the same rich toolkit as a contributor detail page: yearly stacked chart, PR breakdown, top repos, year drilldown, exhaustive repos table. A syntheticContributoris built from the members' PRs viaaggregateContributors(), so the whole existing toolkit accepts it as input without downstream per-entity forking.2. Members table (commit
d6d3ac3) — replaces the flat member grid with a sortable table sourced from the newemployeesfield.Columns:
@handle)gRoussachas Aug 2007 → Oct 2009 and Aug 2012 → Dec 2015)start_date(default sort)end_dateorend_date ≥ today, otherwise gray LeftNy Nmcontributors_prs.json, joined by loginmergedPullRequestsByYearinsightsicon (matches the Wall of Fame tables) linking to/contributor/:loginEmployees without a matching
contributors_prs.jsonentry (deleted/renamed GH accounts, non-PR-authors) still render, dimmed, with—for OSS stats — instead of vanishing silently.Sidebar count and the table header now agree: both use
employees.length, the authoritative source. The old grid is kept as a fallback when the field is absent (legacy snapshots) so the branch degrades gracefully during the Traces-deploy window.Test plan
pnpm typecheck(vianode_modules/.bin/vue-tsc --noEmit) → greentopcompanies_prs.jsonregenerated from the companion Traces branch; the PrestaShop entry carries 69 employees/company/prestashoprenders the 69-row table; Gregory Roussac (2 stints), Sarah Dib (Active, 14y 10m), and departed employees (gray Left … pill) all display correctlyNN contributorsmatches the table'sContributors (NN)insightsicon in the action column navigates to the contributor detail page🤖 Generated with Claude Code