Skip to content

GML-2211: Jira Cloud Data Source Connector - #68

Open
prinskumar-tigergraph wants to merge 16 commits into
mainfrom
GML-2211-feature-jira-source-connector
Open

prinskumar-tigergraph wants to merge 16 commits into
mainfrom
GML-2211-feature-jira-source-connector

Conversation

@prinskumar-tigergraph

Copy link
Copy Markdown
Contributor

Description:

Adds a first-class Jira Cloud integration to the GraphRAG pipeline, enabling Jira issues and comments to be automatically ingested, chunked, embedded, and searched through the knowledge graph.

What's included:

  • Jira Cloud REST API client with retry, rate-limit handling, and parallel comment fetching
  • Full graph model: JiraIssue, JiraComment, JiraUser, JiraProject vertices with typed edges
  • Comments chunked and embedded directly at ingest time (bypasses ECC Document pipeline)
  • Log output filtered from comments before chunking to reduce noise
  • Incremental sync with JQL checkpoint — only fetches changed issues on re-run
  • Batched document loading (every 1,000 issues) and pipelined Jira page fetch for performance
  • Auto-recovery: detects failed ECC rebuilds and re-triggers on next sync
  • Rebuild KG dialog shows live warning if a sync is already running
  • UI: new Data Sources configuration page
  • Example config at docs/tutorials/configs/data_sources.json

Testing:

Unit tests for connector, comment chunking, cypher generation, and structural validation

Prins Kumar added 2 commits September 30, 2026 14:07
- Jira Cloud REST API client with retry, rate-limit handling,
  and parallel comment fetching (up to 10 concurrent threads)
- Pydantic config models: connection, scope, sync state
- ADF → Markdown converter for issue descriptions and comments
- Deterministic mapper: JiraIssue, JiraComment, JiraUser, JiraProject
  vertices + edges; comments chunked directly (bypass ECC Document pipeline)
- Log-output filter strips stack traces / log lines from comments
  before chunking to reduce noise in search results
- Sync orchestration: incremental JQL checkpoint, content-hash dedup,
  batch document loading (every 10 pages), pipelined page fetch,
  crash-recovery rebuild detection (_has_unprocessed_chunks)
- REST endpoints for data source CRUD, sync trigger, schema install
- UI: DataSourcesConfig page, Rebuild dialog live sync-status guard
- ECC: zero-text guard skips empty chunks before embedding
- ECC util: register jira / jira_comment chunker types
- Prompt fix: map Jira ticket keys to schema attributes (not vertex IDs)
- Embedding store: transient-error retry with exponential back-off
- Tests: connector unit tests, cypher generation, structural validation
- Design doc: docs/design/jira-data-source-connector.md
- Example config: docs/tutorials/configs/graph_configs/data_sources.json
- .gitignore: exclude configs/graph_configs/*/data_sources.json (credentials)
@prinskumar-tigergraph
prinskumar-tigergraph force-pushed the GML-2211-feature-jira-source-connector branch from 0538732 to 4cd4c80 Compare September 30, 2026 08:47
…TY edges

- Switch embedding model to gemini-embedding-2 (fixes 500/503 transient errors)
- Bump default_concurrency to 5 (embed_sem=10 concurrent embeddings)
- workers.py: look up Document's CONTAINS_ENTITY edge to get correct JiraIssue
  vertex ID for chunk edges (fixes jira:issue:207120 → jira:gml-2191:issue)
- DataSourcesConfig.tsx: poll rebuild_status live during ECC build, show
  'Processing documents (X/Y — Z%)' instead of static 'build started'
- client.py: bulk-fetch changelogs for all issues in one POST per page
- mapper.py: include status/changelog history in issue document text
- sync.py: reconcile comment chunks, recovery build on missing embeddings
@prinskumar-tigergraph
prinskumar-tigergraph force-pushed the GML-2211-feature-jira-source-connector branch from 770024f to 39a5fcf Compare October 1, 2026 12:36
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.

1 participant