- 后端:contract_review.go —— 检查条款完整性、付款/违约/争议条款、风险评分 0-100、AI 深度审查 - 前端:ContractReviewPage.vue —— 合同输入、风险评分展示、风险详情列表、修改建议 - 路由:POST /api/contract/review + 前端 /tools/contract-review 路由 - 模板:StudioPage 新增合同审查模板入口 Co-Authored-By: Claude Code <noreply@anthropic.com>
71 lines
6.8 KiB
JavaScript
71 lines
6.8 KiB
JavaScript
import { createRouter, createWebHashHistory } from 'vue-router'
|
|
|
|
const routes = [
|
|
{
|
|
path: '/login',
|
|
name: 'Login',
|
|
component: () => import('@/views/Login.vue'),
|
|
},
|
|
{
|
|
path: '/',
|
|
component: () => import('@/layout/MainLayout.vue'),
|
|
redirect: '/home',
|
|
children: [
|
|
{ path: 'home', name: 'Home', component: () => import('@/views/home/HomePage.vue') },
|
|
{ path: 'knowledge-hub', name: 'KnowledgeHub', component: () => import('@/views/workbench/KnowledgeHub.vue') },
|
|
{ path: 'knowledge-management', name: 'KnowledgeManagement', meta: { requiresAdmin: true }, component: () => import('@/views/workbench/KnowledgeManagementPage.vue') },
|
|
{ path: 'market', name: 'Market', meta: { requiresAdmin: true }, component: () => import('@/views/workbench/MarketPage.vue') },
|
|
{ path: 'studio', name: 'Studio', meta: { requiresAdmin: true }, component: () => import('@/views/workbench/StudioPage.vue') },
|
|
{ path: 'console', name: 'Console', meta: { requiresAdmin: true }, component: () => import('@/views/workbench/ConsolePage.vue') },
|
|
{ path: 'apps/contract-review', name: 'ContractReviewApp', meta: { workspaceKey: 'contract-review' }, component: () => import('@/views/workbench/BusinessAppPage.vue') },
|
|
{ path: 'apps/solution-proposal', name: 'SolutionProposalApp', meta: { workspaceKey: 'solution-proposal' }, component: () => import('@/views/workbench/BusinessAppPage.vue') },
|
|
{ path: 'apps/training-delivery', name: 'TrainingDeliveryApp', meta: { workspaceKey: 'training-delivery' }, component: () => import('@/views/workbench/BusinessAppPage.vue') },
|
|
{ path: 'apps/knowledge-operations', name: 'KnowledgeOperationsApp', meta: { workspaceKey: 'knowledge-operations' }, component: () => import('@/views/workbench/BusinessAppPage.vue') },
|
|
{ path: 'apps/process-coordination', name: 'ProcessCoordinationApp', meta: { workspaceKey: 'process-coordination' }, component: () => import('@/views/workbench/BusinessAppPage.vue') },
|
|
{ path: 'apps/report-generation', name: 'ReportGenerationApp', meta: { workspaceKey: 'report-generation' }, component: () => import('@/views/workbench/BusinessAppPage.vue') },
|
|
{ path: 'tools/contract-review', name: 'ContractReview', component: () => import('@/views/tools/ContractReviewPage.vue') },
|
|
{ path: 'report-gen', name: 'ReportGeneration', meta: { requiresAdmin: true }, component: () => import('@/views/report/ReportGenerationPage.vue') },
|
|
{ path: 'tools/document-translate', name: 'DocumentTranslate', component: () => import('@/views/tools/DocumentTranslatePage.vue) },
|
|
{ path: 'tools/copy-proofreading', name: 'CopyProofreading', component: () => import('@/views/tools/CopyProofreadingPage.vue) },
|
|
{ path: 'tools/smart-assistant', name: 'SmartAssistant', component: () => import('@/views/tools/SmartAssistantPage.vue) },
|
|
{ path: 'tools/batch-extract', name: 'BatchExtract', component: () => import('@/views/tools/BatchExtractPage.vue) },
|
|
|
|
{ path: 'apps/wechat-official-account', name: 'WechatOfficialAccountApp', meta: { workspaceKey: 'wechat-official-account' }, component: () => import('@/views/workbench/OfficialAccountWorkflowPage.vue') },
|
|
{ path: 'apps/logistics-fulfillment', name: 'LogisticsFulfillmentApp', meta: { workspaceKey: 'logistics-fulfillment' }, component: () => import('@/views/workbench/BusinessAppPage.vue') },
|
|
{ path: 'apps/hr-email-sorter', name: 'HrEmailSorter', meta: { workspaceKey: 'hr-email-sorter' }, component: () => import('@/views/workbench/BusinessAppPage.vue') },
|
|
{ path: 'apps/resume-processor', name: 'ResumeProcessor', meta: { workspaceKey: 'resume-processor' }, component: () => import('@/views/workbench/BusinessAppPage.vue') },
|
|
{ path: 'company-train', name: 'CompanyTrain', component: () => import('@/views/companyTrain/CompanyTrain.vue') },
|
|
{ path: 'products', name: 'ProductList', component: () => import('@/views/product/ProductList.vue') },
|
|
{ path: 'products/:id', name: 'ProductDetail', component: () => import('@/views/product/ProductDetail.vue') },
|
|
{ path: 'courses', name: 'CourseList', component: () => import('@/views/salesTrain/CourseList.vue') },
|
|
{ path: 'courses/:id', name: 'CourseDetail', component: () => import('@/views/salesTrain/CourseDetail.vue') },
|
|
{ path: 'exam/self-test', name: 'ExamSelfTest', component: () => import('@/views/exam/ExamSelfTest.vue') },
|
|
{ path: 'exam/formal', name: 'ExamFormal', component: () => import('@/views/exam/ExamFormal.vue') },
|
|
{ path: 'exam/my-records', name: 'ExamMyRecord', component: () => import('@/views/exam/ExamMyRecord.vue') },
|
|
{ path: 'exam/my-position', name: 'MyPosition', component: () => import('@/views/exam/MyPosition.vue') },
|
|
{ path: 'exam/my-mistakes', name: 'MyMistakes', component: () => import('@/views/exam/MyMistakes.vue') },
|
|
{ path: 'exam/my-profile', name: 'MyProfile', component: () => import('@/views/exam/MyProfile.vue') },
|
|
{ path: 'exam/my-certificates', name: 'MyCertificates', component: () => import('@/views/exam/MyCertificates.vue') },
|
|
{ path: 'exam/leaderboard', name: 'Leaderboard', component: () => import('@/views/exam/Leaderboard.vue') },
|
|
{ path: 'notifications', name: 'Notification', component: () => import('@/views/Notification.vue') },
|
|
{ path: 'knowledge/materials', name: 'MaterialManage', meta: { requiresAdmin: true }, component: () => import('@/views/knowledge/MaterialManage.vue') },
|
|
{ path: 'knowledge/audit', name: 'MaterialAudit', meta: { requiresAdmin: true }, component: () => import('@/views/knowledge/MaterialAudit.vue') },
|
|
{ path: 'knowledge/questions', name: 'ExamQuestionBank', meta: { requiresAdmin: true }, component: () => import('@/views/knowledge/ExamQuestionBank.vue') },
|
|
{ path: 'knowledge/exam-records', name: 'ExamRecordManage', meta: { requiresAdmin: true }, component: () => import('@/views/knowledge/ExamRecordManage.vue') },
|
|
{ path: 'system/positions', name: 'PositionManage', meta: { requiresAdmin: true }, component: () => import('@/views/system/PositionManage.vue') },
|
|
{ path: 'system/departments', name: 'DepartmentManage', meta: { requiresAdmin: true }, component: () => import('@/views/system/DepartmentManage.vue') },
|
|
{ path: 'system/users', name: 'UserManage', meta: { requiresAdmin: true }, component: () => import('@/views/system/UserManage.vue') },
|
|
{ path: 'system/company-config', name: 'CompanyConfig', meta: { requiresAdmin: true }, component: () => import('@/views/system/CompanyConfigPage.vue') },
|
|
{ path: 'system/config', name: 'SystemConfig', meta: { requiresAdmin: true }, component: () => import('@/views/system/SystemConfigPage.vue') },
|
|
{ path: 'system/ai-usage', name: 'AiUsage', meta: { requiresAdmin: true }, component: () => import('@/views/system/AiUsage.vue') },
|
|
],
|
|
},
|
|
]
|
|
|
|
const router = createRouter({
|
|
history: createWebHashHistory(),
|
|
routes,
|
|
})
|
|
|
|
export default router
|