Add OpenAI API integration and document processing features
- Added OpenAI API key configuration to .env.example. - Integrated OpenAI for document processing, including markdown conversion and data extraction. - Implemented new API routes for fetching document processing status and handling various processing tasks. - Enhanced the App component to manage document status and processing states with user feedback via Snackbar. - Updated CSVImportPanel and TableManagement components to support navigation to specific tabs based on processing results. - Introduced transaction handling in the database configuration for improved error management during document processing.
This commit is contained in:
@@ -56,6 +56,20 @@ class CSVImportPanel extends Component {
|
||||
this.datevFileInputRef = React.createRef();
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
// Check if we should navigate to a specific tab
|
||||
if (this.props.targetTab) {
|
||||
this.setState({ activeTab: this.props.targetTab });
|
||||
}
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps) {
|
||||
// Handle targetTab changes
|
||||
if (this.props.targetTab !== prevProps.targetTab && this.props.targetTab) {
|
||||
this.setState({ activeTab: this.props.targetTab });
|
||||
}
|
||||
}
|
||||
|
||||
// Tab switch resets type-specific state but keeps success state as-is
|
||||
handleTabChange = (_e, value) => {
|
||||
this.setState({
|
||||
@@ -344,6 +358,7 @@ class CSVImportPanel extends Component {
|
||||
)}
|
||||
|
||||
{currentHeaders && (
|
||||
|
||||
<Box sx={{ mb: 2 }}>
|
||||
<Typography variant="subtitle2" gutterBottom>
|
||||
Erkannte Spalten ({currentHeaders.length}):
|
||||
|
||||
@@ -165,7 +165,7 @@ class DataViewer extends Component {
|
||||
</>
|
||||
) : (
|
||||
<Box sx={{ flex: 1, minHeight: 0, overflow: 'auto', p: 2 }}>
|
||||
<TableManagement user={user} />
|
||||
<TableManagement user={user} targetTab={this.props.targetTab} />
|
||||
</Box>
|
||||
)}
|
||||
</Box>
|
||||
|
||||
@@ -26,6 +26,21 @@ class TableManagement extends Component {
|
||||
};
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
// Check if we should navigate to a specific tab
|
||||
if (this.props.targetTab?.level1 !== undefined) {
|
||||
this.setState({ activeTab: this.props.targetTab.level1 });
|
||||
}
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps) {
|
||||
// Handle targetTab changes
|
||||
if (this.props.targetTab?.level1 !== prevProps.targetTab?.level1 &&
|
||||
this.props.targetTab?.level1 !== undefined) {
|
||||
this.setState({ activeTab: this.props.targetTab.level1 });
|
||||
}
|
||||
}
|
||||
|
||||
handleTabChange = (event, newValue) => {
|
||||
this.setState({ activeTab: newValue });
|
||||
};
|
||||
@@ -92,6 +107,7 @@ class TableManagement extends Component {
|
||||
</Typography>
|
||||
<CSVImportPanel
|
||||
user={user}
|
||||
targetTab={this.props.targetTab?.level2}
|
||||
/>
|
||||
</Box>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user