Dash dropdown selection and column output using callback

Screen link:
image

My Code:

app.layout = html.Div([
    dash_table.DataTable(
        id='table-dropdown',
        data=staging.to_dict('records'),
        columns=[
            {'id': 'quantitative_assessment', 'name': 'Quantitative Assessment'},
            {'id': 'reason_code',
                'name': 'Reason Code', 'presentation': 'dropdown'},
            {'id': 'staging',
                'name': 'Staging', 'presentation': 'dropdown'},
            {'id': 'overwrite',
                'name': 'Overwrite', 'presentation': 'dropdown'},
            {'id': 'final_staging', 'name': 'Final Staging'},
        ],

        editable=True,
        dropdown={
            'reason_code': {
                'options': [
                    {'label': i, 'value': i}
                    for i in staging['reason_code'].unique()
                ]
            },
            'staging': {
                'options': [
                    {'label': s, 'value': s}
                    for s in staging['staging'].unique()
                ]
            },
            'overwrite': {
                'options': [
                    {'label': o, 'value': o}
                    for o in staging['overwrite'].unique()
                ]
            }
        }
    ),
    html.Div(id='table-dropdown-container')
])

@app.callback(
    Output(component_id='table-dropdown', component_property='data'),
    [Input(component_id='table-dropdown', component_property='value'),
    Input(component_id='table-dropdown', component_property='value'),
    Input(component_id='table-dropdown', component_property='value'),
    Input(component_id='table-dropdown', component_property='value')]
)
def update_output_div(quantitative_assessment, reason_code, staging, overwrite):
    if quantitative_assessment == 'Stage 1' and reason_code == 'Breach of contract' and staging == 'Stage 1' and overwrite == 'Yes':
        return 'Stage 1'
    elif quantitative_assessment == 'Stage 1' and reason_code == 'Breach of contract' and staging == 'Stage 1' and overwrite == 'No':
        return 'Stage 1'
  elif quantitative_assessment == 'Stage 1' and reason_code == 'Breach of contract' and staging == 'Stage 2' and overwrite == 'Yes':
        return 'Stage 2'
  elif quantitative_assessment == 'Stage 1' and reason_code == 'Breach of contract' and staging == 'Stage 2' and overwrite == 'No':
        return 'Stage 1'
  elif quantitative_assessment == 'Stage 1' and reason_code == 'Breach of contract' and staging == 'Stage 3' and overwrite == 'Yes':
        return 'Stage 3'
  elif quantitative_assessment == 'Stage 1' and reason_code == 'Breach of contract' and staging == 'Stage 3' and overwrite == 'No':
        return 'Stage 1'

What I expected to happen:
I expect the values in the last column Final staging to either be given a value of Stage 1, Stage 2 or Stage 3 depending on the selected values in the dropdown of each of the preceding columns
For example i select deep discount, Stage 2 and Yes based on this combination the value on that row under Final Staging column should be Stage 2

What actually happened:
But when i run i get id not found

Traceback (most recent call last):
  File "/home/eddie/work/env/flask/lib/python3.8/site-packages/dash/dash.py", line 967, in add_context
    output_value = func(*args, **kwargs)  # %% callback invoked %%
TypeError: update_output_div() missing 1 required positional argument: 'columns'

Invalid prop for this component
Property "value" was used with component ID:
  "table-dropdown"
in one of the Input items of a callback.
This ID is assigned to a dash_table.DataTable component
in the layout, which does not support this property.
This ID was used in the callback(s) for Output(s):
  table-dropdown.data
  table-dropdown.data
  table-dropdown.data
  table-dropdown.data

for all the inputs in callback