```python
import heapq
from typing import Dict, Tuple, Optional

class JobQueue:
    def __init__(self):
        self._queue: list = []
        self._counter: int = 0

    def add_job(self, job_id: str, data: dict, priority: int = 0) -> None:
        # Negate priority to use min-heap as max-heap (higher priority = lower negative value)
        # Counter ensures FIFO order for jobs with the same priority
        heapq.heappush(self._queue, (-priority, self._counter, job_id, data))
        self._counter += 1

    def get_next_job(self) -> Tuple[str, dict] | None:
        if not self._queue:
            return None
        _, _, job_id, data = heapq.heappop(self._queue)
        return (job_id, data)
```