All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 2m47s
Bug: Layout resolvePath map "Dashboard" key → "/inbox" cũ (coi inbox là
home), khiến menu "Tổng quan" và "Hộp thư" cùng navigate về /inbox →
user thấy interface giống nhau, không phân biệt được.
Fix:
- Tạo UserDashboardPage.tsx — overview cá nhân:
* Greeting với fullName
* 5-card "Của tôi" row (HĐ đang soạn / Chờ tôi duyệt / Sắp quá hạn /
Đã quá hạn / Tổng giá trị nháp) — dùng /api/reports/my-dashboard có sẵn
* Card click navigate vào page tương ứng (/my-contracts hoặc /inbox)
* Section HĐ gần đây — list 5 row với click → /my-contracts?id=X
- App.tsx: thêm route /dashboard + redirect "/" sang /dashboard
- Layout.tsx: Dashboard → /dashboard, logo link cũng chuyển về /dashboard
Build: tsc + vite pass (439ms)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
49 lines
1.7 KiB
TypeScript
49 lines
1.7 KiB
TypeScript
import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom'
|
|
import { Toaster } from 'sonner'
|
|
import { AuthProvider } from '@/contexts/AuthContext'
|
|
import { ProtectedRoute } from '@/components/ProtectedRoute'
|
|
import { Layout } from '@/components/Layout'
|
|
import { LoginPage } from '@/pages/LoginPage'
|
|
import { UserDashboardPage } from '@/pages/UserDashboardPage'
|
|
import { InboxPage } from '@/pages/InboxPage'
|
|
import { ContractCreatePage } from '@/pages/contracts/ContractCreatePage'
|
|
import { ContractDetailPage } from '@/pages/contracts/ContractDetailPage'
|
|
import { MyContractsPage } from '@/pages/contracts/MyContractsPage'
|
|
|
|
function App() {
|
|
return (
|
|
<BrowserRouter>
|
|
<AuthProvider>
|
|
<Routes>
|
|
<Route path="/login" element={<LoginPage />} />
|
|
<Route
|
|
element={
|
|
<ProtectedRoute>
|
|
<Layout />
|
|
</ProtectedRoute>
|
|
}
|
|
>
|
|
<Route path="/dashboard" element={<UserDashboardPage />} />
|
|
<Route path="/inbox" element={<InboxPage />} />
|
|
<Route path="/contracts/new" element={<ContractCreatePage />} />
|
|
<Route path="/contracts/:id" element={<ContractDetailPage />} />
|
|
<Route path="/my-contracts" element={<MyContractsPage />} />
|
|
<Route path="/" element={<Navigate to="/dashboard" replace />} />
|
|
<Route
|
|
path="*"
|
|
element={
|
|
<div className="p-8 text-slate-500">
|
|
Trang này chưa được build.
|
|
</div>
|
|
}
|
|
/>
|
|
</Route>
|
|
</Routes>
|
|
<Toaster richColors position="top-right" />
|
|
</AuthProvider>
|
|
</BrowserRouter>
|
|
)
|
|
}
|
|
|
|
export default App
|