Skip to content

Display Deadlines in Dashboard and Browser#64878

Draft
imrichardwu wants to merge 6 commits intoapache:mainfrom
imrichardwu:dashboard
Draft

Display Deadlines in Dashboard and Browser#64878
imrichardwu wants to merge 6 commits intoapache:mainfrom
imrichardwu:dashboard

Conversation

@imrichardwu
Copy link
Copy Markdown
Contributor

@imrichardwu imrichardwu commented Apr 8, 2026

Add a global Deadlines view that displays all pending deadlines where deadline_time is in the future, as well as recently missed deadlines from the last 24 hours across all DAG runs, with clickable links to the corresponding DAG and DAG run for sorting and filtering. The dashboard shows the 5 most recent, and the user can view more in the browser section.
Screenshot 2026-04-07 at 9 14 35 PM
Screenshot 2026-04-07 at 9 14 49 PM
Screenshot 2026-04-07 at 9 15 10 PM
Screenshot 2026-04-07 at 9 18 49 PM

Related to #50501 (comment)


Was generative AI tooling used to co-author this PR?
  • Yes (please specify the tool below)
    Claude code for code review and bug fix.

  • Read the Pull Request Guidelines for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
  • For fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
  • When adding dependency, check compliance with the ASF 3rd Party License Policy.
  • For significant user-facing changes create newsfragment: {pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.

@pierrejeambrun
Copy link
Copy Markdown
Member

pierrejeambrun commented Apr 8, 2026

Let us know when this is ready for review. (take your time, fix the CI, thorough local tests, etc..., there is no hurry)

@imrichardwu imrichardwu marked this pull request as ready for review April 8, 2026 17:45
Copy link
Copy Markdown
Contributor

@bbovenzi bbovenzi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's remove the Dashboard changes for now since they will really depend on the UX in your other PR and we can just focus on the browse page.

Comment on lines +2 to +6
"deadlines": {
"deadlines": "Deadlines",
"pending": "Pending",
"recentlyMissed": "Recently Missed"
},
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are reimplementing these translations a lot here and in your other PR. Let's try to consolidate them as much as possible.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good. I will create another pr and move the Python and other related stuff to it so these 2 pr focus only on UI

const orderBy = sort ? [`${sort.desc ? "-" : ""}${sort.id}`] : ["deadline_time"];

const filteredDagId = searchParams.get(SearchParamsKeys.DAG_ID);
const filteredMissed = searchParams.get(SearchParamsKeys.MISSED);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can look at our other time range filters to add filters for deadlineTime Lte and Gte


const missedFilter = filteredMissed === "true" ? true : filteredMissed === "false" ? false : undefined;

const { data, error, isFetching, isLoading } = useDeadlinesServiceGetDeadlines({
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would ideally like to include the alert reference and the dag run's end_date plus state to give much more context here, but that can be a custom UI endpoint later.

export const Deadlines = () => {
const { t: translate } = useTranslation("dashboard");
const refetchInterval = useAutoRefresh({ checkPendingRuns: true });
const now = dayjs().toISOString();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With the refetchInterval, we will calculate a new now and last24h constantly.

It would be better to move this under the "History" section and use the start and end date provided just like you did with the Overview page. But again, we don't want to do any of this yet.

@imrichardwu imrichardwu marked this pull request as draft April 8, 2026 20:10
Co-authored-by: Brent Bovenzi <brent.bovenzi@gmail.com>
@imrichardwu
Copy link
Copy Markdown
Contributor Author

imrichardwu commented Apr 8, 2026

Let us know when this is ready for review. (take your time, fix the CI, thorough local tests, etc..., there is no hurry)

Sounds good, thank you for your patience. This pr might take some time as I will work on my other pr (have a lot of feedback to address), and it's the final exam month for me :(, so this pr might actually not be updated until around the end of April.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:API Airflow's REST/HTTP API area:translations area:UI Related to UI/UX. For Frontend Developers. translation:default

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants