gitlink-cli/docs/pr-draft.md

7.6 KiB

feat(feishu): add layered Feishu collaboration exports for workflow reports

Summary

  • Add Feishu custom-bot cards for GitLink workflow reports.
  • Add weekly, owner, and contributor digests.
  • Add Bitable-ready schemas and records.
  • Add experimental DocX, Bitable, and Task OpenAPI writes.
  • Add read-only Open Platform readiness diagnostics.
  • Add English and zh-CN Feishu output.
  • Fix workflow Issue/PR list filters and paginate all open items by default.
  • Add optional read-only PR review audit for formal reviews and comment actor attribution.
  • Keep all GitLink write operations out of scope.

Data Correctness

workflow +repo-report now uses the GitLink API parameters used by the native Issue and PR commands:

Issue open filter: category=opened
PR open filter: status=0

It paginates all open issues and pull requests by default. An explicit --issue-limit or --pr-limit enables sampling.

Feishu output labels these values as analyzed counts and includes a scope note. This avoids presenting a limited sample as a repository total.

PR Review Attribution

workflow +repo-report --include-pr-review-audit performs a read-only audit of the analyzed PRs:

formal /pulls/{number}/reviews objects mark a PR as reviewed
submitter comments are counted separately and do not mark a PR as reviewed
participant comments are counted separately and do not mark a PR as reviewed
comments from actors with formal review identity are counted as reviewer feedback
maintainer role is not guessed when member lookup is unavailable

This keeps metadata risk, formal review status, and conversation attribution as separate signals.

Stable Surface

feishu +bot-test
feishu +notify
feishu +weekly-report
feishu +owner-digest
feishu +contributor-digest
feishu +bitable-schema
feishu +bitable-records
feishu +task-preview

Stable commands preview locally by default. Custom-bot delivery requires explicit --send.

Readiness Diagnostics

feishu +app-check
feishu +doc-check
feishu +bitable-check
feishu +task-check

Local mode checks configuration only. --remote performs read/check OpenAPI calls and does not create or modify Feishu or GitLink resources.

Experimental Surface

feishu +doc-export
feishu +bitable-sync
feishu +task-create

These commands require a Feishu self-built app and explicit --send.

Safety

  • Preview/check by default.
  • Real Feishu side effects require explicit --send.
  • Remote readiness calls require explicit --remote.
  • GitLink write operations are not implemented.
  • Card buttons are navigation-only.
  • Secrets and resource IDs come from ignored local env files.
  • CLI and smoke output redact sensitive values.
  • Bitable sync never deletes records.

Real Validation

The local test enterprise validated:

custom bot card delivery
English and zh-CN cards
DocX append
Bitable search/create/update
Feishu Task create
app/doc/bitable/task readiness diagnostics

The current real repository report validated complete default pagination:

open issues analyzed: 9
open pull requests analyzed: 166
open/merged/closed PR lifecycle totals: 166 / 65 / 74
full review-audit result: 166 audited, 4 reviewed, 162 unreviewed
needs re-review after reviewer feedback: 0

Task creation was not repeated during the final smoke because Feishu-side deduplication is not implemented.

Validation Commands

go run . workflow +repo-report --owner "$env:GITLINK_OWNER" --repo "$env:GITLINK_REPO" --format json > .local\report.json
go run . workflow +repo-report --owner "$env:GITLINK_OWNER" --repo "$env:GITLINK_REPO" --include-pr-review-audit --format json > .local\report.review-audit.full.json

go run . feishu +app-check --remote --format table
go run . feishu +doc-check --remote --format table
go run . feishu +bitable-check --tables reports,issues,prs,tasks --remote --format table
go run . feishu +task-check --remote --format table

go run . feishu +notify --from-workflow-json .local\report.json --send --format table
go run . feishu +owner-digest --from-workflow-json .local\report.review-audit.full.json --send --format table
go run . feishu +doc-export --from-workflow-json .local\report.json --send --format table
go run . feishu +bitable-sync --from-workflow-json .local\report.json --send --format table

go test ./shortcuts/feishu
go test ./shortcuts/workflow
go test ./shortcuts
go test ./...
go build .
go vet ./...

Local validation on 2026-06-27:

go test ./shortcuts/feishu: pass
go test ./shortcuts/workflow: pass
go test ./shortcuts: pass
go test ./...: pass
go build .: pass
go vet ./...: pass

CI note:

.github/workflows/test.yml already includes the upstream i18n validation steps.
This branch adds Feishu/workflow package tests and go vet to the workflow.
The workflow triggers on pull_request and pushes to main/master. A feature-branch
push alone does not create a branch workflow run, so remote CI should be checked
after the PR is opened.

Known separate issue:

On this Windows workstation, go run ./internal/i18n/cmd/check still reports
internal\i18n\locales\en-US.json formatting. That fix is intentionally kept in
the separate i18n branch/PR and is not mixed into this Feishu change.

The separate i18n fix is:
fix/i18n-locale-eol
8e24a89 fix(i18n): restore locale validation on Windows

It adds .gitattributes LF handling for locale JSON and the missing
cmd.ignore.short locale key.

Review and Comment Attribution Boundary

Formal reviews and PR-associated Issue journals are consumed only by the optional read-only audit path. Previous-snapshot comparison, member-role enrichment, and review-content fingerprint persistence remain designed in:

docs/FEISHU_PR_ACTIVITY_STRATEGY.md

Evidence

Validation evidence is text-only in the repository. No screenshots or other binary evidence are committed. If visual proof is requested, use redacted screenshots pasted directly into the PR description, not repository files.

reports/FEISHU_SMOKE_20260626.md
reports/FEISHU_SMOKE_20260627.md
reports/FEISHU_SMOKE_EVIDENCE_20260627.md
reports/FEISHU_PERMISSION_MATRIX.md
docs/FEISHU_OPENAPI_INVENTORY.md

Text-only validation summary:

Real Feishu custom bot delivery passed:
- final English notify card: HTTP 200 / Feishu code 0
- final English owner digest card: HTTP 200 / Feishu code 0

Real GitLink repository data:
- repository: Gitlink/gitlink-cli
- open issues analyzed: 9
- open PRs analyzed: 166
- PR lifecycle totals: open 166, merged 65, closed/rejected 74

Full PR review audit:
- PRs audited: 166
- reviewed PRs: 4
- unreviewed PRs: 162
- needs re-review: 0
- formal reviews: 4
- reviewer comments: 6
- submitter comments: 0
- participant comments: 436
- system events: 0
- audit errors: 0

Risk source:
- high-risk PRs from metadata rule `security-sensitive keyword`: 13

Out of Scope

  • GitLink issue comment or close.
  • GitLink PR review, approve, reject, or merge.
  • GitLink member management.
  • Feishu callback server.
  • Feishu-to-GitLink identity mapping.
  • Automatic Base/table/field/view creation.
  • Task project/section/assignee placement.
  • Feishu-side Task deduplication.
  • PR activity snapshot persistence.
  • Review-content fingerprint diffing.
  • Maintainer-role enrichment without authenticated member data.

Reviewer Questions

  • Should webhook export remain the stable main path?
  • Should DocX, Bitable, and Task writes remain experimental?
  • Should full PR review activity be a separate workflow command?
  • Should member-role enrichment require authenticated GitLink access?
  • Should future Feishu callbacks live in gitlink-cli or a separate service?