feat: add Missing Data module as new sidebar entry

Replaces the tab approach with a dedicated 'Missing Data' module in the
sidebar. The module has two sub-tabs: 'Missing Classification' and
'Missing Launch Date'. Shows SKU, Name, Classification, Launch Date and
Ready to Order columns. Includes a local Excel serial date formatter so
dates that slipped through the App.tsx pre-processing are rendered
correctly instead of showing as raw numbers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Christian Vidal Wolf
2026-04-12 15:11:57 +02:00
co-authored by Claude Sonnet 4.6
parent fdf878a4f8
commit 7eeccdaf8c
4 changed files with 322 additions and 96 deletions
+8 -2
View File
@@ -15,6 +15,7 @@ import { ArticleDetails } from './components/ArticleDetails';
import { HistoryView } from './components/HistoryView';
import { UndoToast } from './components/UndoToast';
import { PendingValidationView } from './components/PendingValidationView';
import { MissingDataView } from './components/MissingDataView';
export default function App() {
const [session, setSession] = useState<AuthSession | null>(() => getStoredSession());
@@ -27,7 +28,7 @@ export default function App() {
hasUnsavedChanges: false,
asinColumnIndex: null
});
const [activeModule, setActiveModule] = useState<'descriptions' | 'article_details' | 'matrix' | 'dimensions' | 'pricing' | 'pending_validation' | 'history'>('descriptions');
const [activeModule, setActiveModule] = useState<'descriptions' | 'article_details' | 'matrix' | 'dimensions' | 'pricing' | 'pending_validation' | 'history' | 'missing_data'>('descriptions');
const [undoHistory, setUndoHistory] = useState<{ data: ExcelRow[], message: string }[]>([]);
const [editingRowIndex, setEditingRowIndex] = useState<number | null>(null);
const [isLoadingDefault, setIsLoadingDefault] = useState(true);
@@ -548,7 +549,6 @@ export default function App() {
{activeModule === 'article_details' && (
<ArticleDetails
data={appState.data}
headers={appState.headers}
onEdit={(index) => setEditingRowIndex(index)}
rowStatuses={rowStatuses}
/>
@@ -562,6 +562,12 @@ export default function App() {
onEdit={(index) => setEditingRowIndex(index)}
/>
)}
{activeModule === 'missing_data' && (
<MissingDataView
data={appState.data}
headers={appState.headers}
/>
)}
{activeModule === 'history' && (
<HistoryView
headers={appState.headers}