Feature/faq (#546)

* feat(web): add FAQ page with search, sidebar, and i18n integration; update navigation and routes; include user feedback analysis docs (faq.md)

* docs: add filled frontend PR template for FAQ feature (PR_FRONTEND_FAQ.md)

* docs(web): add Contributing & Tasks FAQ category near top with guidance on using GitHub Projects and PR contribution standards

* feat(web,api): dynamically embed GitHub Projects roadmap in FAQ via /api/roadmap and RoadmapWidget; add env vars for GitHub token/org/project

* chore(docker): pass GitHub roadmap env vars into backend container

* docs(web): update FAQ with fork-based PR workflow, yellow links to roadmap/task dashboard, and contribution incentives; remove dynamic roadmap embed\n\nchore(api,docker): remove /api/roadmap endpoint and related env wiring

* chore: revert unintended changes (.env.example, api/server.go, docker-compose.yml); remove local-only files (PR_FRONTEND_FAQ.md, web/faq.md) from PR

* feat: 添加对重置密码页面的路由支持
This commit is contained in:
Ember
2025-11-05 22:39:42 +08:00
committed by GitHub
parent e0f1950fe0
commit b2e4be9152
9 changed files with 1628 additions and 40 deletions

View File

@@ -8,6 +8,7 @@ import { RegisterPage } from './components/RegisterPage'
import { ResetPasswordPage } from './components/ResetPasswordPage'
import { CompetitionPage } from './components/CompetitionPage'
import { LandingPage } from './pages/LandingPage'
import { FAQPage } from './pages/FAQPage'
import HeaderBar from './components/landing/HeaderBar'
import AILearning from './components/AILearning'
import { LanguageProvider, useLanguage } from './contexts/LanguageContext'
@@ -230,11 +231,14 @@ function App() {
}
if (route === '/register') {
if (systemConfig?.admin_mode) {
window.history.pushState({}, '', '/login');
return <LoginPage />;
}
window.history.pushState({}, '', '/login')
return <LoginPage />
}
return <RegisterPage />
}
if (route === '/faq') {
return <FAQPage />
}
if (route === '/reset-password') {
return <ResetPasswordPage />
}
@@ -271,6 +275,10 @@ function App() {
window.history.pushState({}, '', '/dashboard')
setRoute('/dashboard')
setCurrentPage('trader')
} else if (page === 'faq') {
console.log('Navigating to faq')
window.history.pushState({}, '', '/faq')
setRoute('/faq')
}
console.log(
@@ -290,12 +298,12 @@ function App() {
// Show landing page for root route
if (route === '/' || route === '') {
return <LandingPage isAdminMode={systemConfig?.admin_mode} />;
return <LandingPage isAdminMode={systemConfig?.admin_mode} />
}
// In admin mode, require authentication for any protected routes
if (systemConfig?.admin_mode && (!user || !token)) {
return <LoginPage />;
return <LoginPage />
}
// Show main app for authenticated users on other routes (non-admin mode)
@@ -332,6 +340,9 @@ function App() {
window.history.pushState({}, '', '/dashboard')
setRoute('/dashboard')
setCurrentPage('trader')
} else if (page === 'faq') {
window.history.pushState({}, '', '/faq')
setRoute('/faq')
}
}}
/>