From bfe39e45a9ec2441931e9e7622f5e1349da736b8 Mon Sep 17 00:00:00 2001 From: yorn <1057707203@qq.com> Date: Tue, 18 Nov 2025 11:06:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=201.=20=E6=B7=BB=E5=8A=A0axios=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E8=B7=AF=E7=94=B1=E6=8B=A6=E6=88=AA=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=B7=BB=E5=8A=A0=E8=AF=B7=E6=B1=82jwt?= =?UTF-8?q?=E3=80=82=20=20=202.=E9=87=8D=E6=96=B0=E6=95=B4=E7=90=86?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E8=A1=A8=E3=80=82=20=203.=20=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=88=97=E8=A1=A8=E6=96=B0=E5=A2=9E=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=B7=AE=E5=BC=82=E5=AF=B9=E6=AF=94=E3=80=82=20=204.=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E8=B7=AF=E7=94=B1=E5=8F=AF=E8=AE=BF=E9=97=AE=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E9=80=9A=E8=BF=87=E5=AF=B9=E6=8E=A5=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E6=A3=80=E6=B5=8B=E3=80=82=205.=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=BB=9F=E4=B8=80=E8=AE=A4=E8=AF=81=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E5=92=8C=E7=AE=A1=E7=90=86=E5=91=98=E7=99=BB=E5=BD=95=E6=98=AF?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E6=8E=A5=E5=8F=A3=E5=BD=A2=E5=BC=8F=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=EF=BC=8C=E5=AD=98=E5=82=A8=E8=BF=94=E5=9B=9E=E7=9A=84?= =?UTF-8?q?accessToken=E3=80=82=20=20=20=206.=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BA=A4=E5=8F=89=E8=AF=84=E6=9F=A5=E7=9A=84=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/auth/user-routes.ts | 240 ++- app/api/axios-client.ts | 80 + app/api/evaluation_points/reviews.ts | 3 +- app/api/evaluation_points/rules-files.ts | 14 +- app/api/files/documents.ts | 254 ++- app/api/files/files-upload.ts | 24 +- app/api/home/home.ts | 67 +- app/api/login/auth.server.ts | 4 +- app/api/login/login-client.ts | 154 ++ app/api/postgrest-client.ts | 10 +- app/components/auth/ClientAuthGuard.tsx | 57 + app/components/layout/Layout.tsx | 47 +- app/components/layout/Sidebar.tsx | 125 +- app/components/reviews/ReviewTabs.tsx | 2 +- app/components/ui/IssuesDiff.tsx | 59 + app/components/ui/MultiCascader.tsx | 11 +- app/components/ui/index.ts | 5 +- app/root.tsx | 204 +- app/routes/_index.tsx | 48 +- app/routes/callback.tsx | 168 +- app/routes/contract-search._index.tsx | 152 -- app/routes/contract-search.tsx | 23 - app/routes/debug.tsx | 56 - app/routes/documents.edit.tsx | 12 +- ...ocuments._index.tsx => documents.list.tsx} | 379 +++- app/routes/documents.upload.tsx | 632 ------- app/routes/examples/TooltipExample.tsx | 236 --- app/routes/examples/message-modal.tsx | 204 -- app/routes/examples/pdfview.tsx | 192 -- app/routes/examples/toast.tsx | 164 -- app/routes/home.tsx | 12 +- app/routes/login.tsx | 248 ++- app/routes/reviews.tsx | 4 +- app/routes/rules-files.tsx | 82 +- .../{rules._index.tsx => rules.list.tsx} | 105 +- app/routes/rules.new1.tsx | 572 ------ app/styles/components/document-version.css | 202 ++ app/styles/main.css | 1 + app/styles/pages/login.css | 14 + app/utils/auth-storage.ts | 105 ++ app/utils/server-auth-handler.ts | 72 + auth_doc/API接口速查表.md | 435 +++++ auth_doc/JWT管理文档.md | 1316 +++++++++++++ auth_doc/前端完整对接文档_RBAC与PostgREST.md | 1655 +++++++++++++++++ auth_doc/前端对接文档-API端点列表.md | 121 ++ auth_doc/前端对接文档-PostgREST查询参考.md | 316 ++++ auth_doc/前端对接文档-权限列表.md | 338 ++++ auth_doc/前端对接文档.md | 1562 ++++++++++++++++ auth_doc/前端快速开始_5分钟集成.md | 333 ++++ auth_doc/角色-路由权限实现方案.md | 1180 ++++++++++++ tmp/交叉评查-提出意见.png | Bin 322739 -> 0 bytes tmp/交叉评查上传文件页面.png | Bin 115572 -> 0 bytes tmp/交叉评查任务列表.png | Bin 174518 -> 0 bytes 53 files changed, 9503 insertions(+), 2796 deletions(-) create mode 100644 app/api/login/login-client.ts create mode 100644 app/components/auth/ClientAuthGuard.tsx create mode 100644 app/components/ui/IssuesDiff.tsx delete mode 100644 app/routes/contract-search._index.tsx delete mode 100644 app/routes/contract-search.tsx delete mode 100644 app/routes/debug.tsx rename app/routes/{documents._index.tsx => documents.list.tsx} (79%) delete mode 100644 app/routes/documents.upload.tsx delete mode 100644 app/routes/examples/TooltipExample.tsx delete mode 100644 app/routes/examples/message-modal.tsx delete mode 100644 app/routes/examples/pdfview.tsx delete mode 100644 app/routes/examples/toast.tsx rename app/routes/{rules._index.tsx => rules.list.tsx} (91%) delete mode 100644 app/routes/rules.new1.tsx create mode 100644 app/styles/components/document-version.css create mode 100644 app/utils/auth-storage.ts create mode 100644 app/utils/server-auth-handler.ts create mode 100644 auth_doc/API接口速查表.md create mode 100644 auth_doc/JWT管理文档.md create mode 100644 auth_doc/前端完整对接文档_RBAC与PostgREST.md create mode 100644 auth_doc/前端对接文档-API端点列表.md create mode 100644 auth_doc/前端对接文档-PostgREST查询参考.md create mode 100644 auth_doc/前端对接文档-权限列表.md create mode 100644 auth_doc/前端对接文档.md create mode 100644 auth_doc/前端快速开始_5分钟集成.md create mode 100644 auth_doc/角色-路由权限实现方案.md delete mode 100644 tmp/交叉评查-提出意见.png delete mode 100644 tmp/交叉评查上传文件页面.png delete mode 100644 tmp/交叉评查任务列表.png diff --git a/app/api/auth/user-routes.ts b/app/api/auth/user-routes.ts index 96e4a25..558bbb3 100644 --- a/app/api/auth/user-routes.ts +++ b/app/api/auth/user-routes.ts @@ -1,7 +1,34 @@ import { toastService } from '~/components/ui'; -import { postgrestGet } from '../postgrest-client'; +import { apiRequest } from '../axios-client'; -// 路由数据接口 +// 后端返回的路由数据接口 +export interface BackendRouteInfo { + id: number; + route_path: string; + route_name: string; + component: string; + parent_id: number | null; + route_title: string; + icon: string | null; + sort_order: number; + is_hidden: boolean; + is_cache: boolean; + meta: string; + children?: BackendRouteInfo[]; +} + +// 后端API响应接口 +export interface BackendRoutesResponse { + code: number; + msg: string; + data: { + user_id: number; + username: string; + routes: BackendRouteInfo[]; + }; +} + +// 旧的路由数据接口(保留用于兼容) export interface RouteInfo { id: number; path: string; @@ -458,82 +485,87 @@ const FALLBACK_MENU_DATA: Record = { }; /** - * 根据角色获取用户可访问的路由 - * @param roleKey 角色标识 (如: 'admin', 'common', 'deptLeader', 'groupLeader') + * 根据角色获取用户可访问的路由(调用后端统一接口) + * @param roleKey 角色标识 (如: 'admin', 'common', 'deptLeader', 'groupLeader') - 暂时不使用,后端通过JWT自动识别 + * @param jwt JWT token * @returns 用户可访问的路由列表 */ export async function getUserRoutesByRole(roleKey: string, jwt?: string): Promise<{ success: boolean; data?: MenuItem[]; error?: string; shouldRedirectToHome?: boolean }> { try { - console.log(`获取角色 ${roleKey} 的路由权限`); + console.log(`🔍 [User Routes] 获取用户路由,角色: ${roleKey}`); - // 首先获取角色ID - const roleResult = await postgrestGet>("roles", { - filter: { - "role_key": `eq.${roleKey}` - }, - token: jwt - }); - - if (roleResult.error || !roleResult.data || roleResult.data.length === 0) { - console.error("角色不存在:", roleKey); - toastService.error("角色不存在,请联系管理员配置权限后重新登录"); - return { success: false, error: "角色不存在", shouldRedirectToHome: true }; + if (!jwt) { + console.error('❌ [User Routes] JWT token 未提供'); + toastService.error("认证信息缺失,请重新登录"); + return { success: false, error: "JWT token 未提供", shouldRedirectToHome: true }; } - const roleId = roleResult.data[0].id; + // 调用后端统一接口获取用户路由 + // 注意:Authorization 头会由 axios 拦截器自动添加(从 localStorage 读取) + // 但为了确保使用正确的 token,这里仍然显式传递 + const response = await apiRequest( + '/rbac/user/routes', // endpoint (第一个参数) + { + method: 'GET', + headers: { + 'Authorization': `Bearer ${jwt}` + } + } // options (第二个参数) + ); - // 查询角色的路由权限 - const roleRoutesResult = await postgrestGet>("role_route", { - filter: { - "role_id": `eq.${roleId}` - }, - token: jwt - }); + // console.log('🔍 [User Routes] 后端返回:', response); - if (roleRoutesResult.error) { - console.error("查询角色路由关联失败:", roleRoutesResult.error); - toastService.error("查询角色路由关联失败,请稍后再试"); - return { success: false, error: "查询角色路由关联失败", shouldRedirectToHome: true }; + // 检查响应是否成功 + if (response.error) { + console.error('❌ [User Routes] API 请求失败:', response.error); + toastService.error(response.error); + return { success: false, error: response.error, shouldRedirectToHome: true }; } - const roleRoutes = roleRoutesResult.data || []; - const routeIds = roleRoutes.map(item => item.route_id); - - if (routeIds.length === 0) { - console.log(`角色 ${roleKey} 没有分配任何路由权限`); - toastService.error("您的角色没有分配任何路由权限,请联系管理员配置权限"); - return { success: false, error: "角色没有分配任何路由权限", shouldRedirectToHome: true }; + // 检查响应数据 + if (!response.data) { + console.error('❌ [User Routes] 后端未返回数据'); + toastService.error("获取路由数据失败"); + return { success: false, error: "后端未返回数据", shouldRedirectToHome: true }; } - // 查询具体的路由信息 - const routesResult = await postgrestGet("sys_routes", { - filter: { - "id": `in.(${routeIds.join(',')})`, - "is_menu": "eq.1" - }, - order: "parent_id,meta->>order", - token: jwt - }); + const backendResponse = response.data; - if (routesResult.error) { - console.error("查询路由信息失败:", routesResult.error); - toastService.error("查询路由信息失败,请稍后再试"); - return { success: false, error: "查询路由信息失败", shouldRedirectToHome: true }; + // 检查业务状态码(后端使用 code: 0 表示成功) + if (backendResponse.code !== 0 && backendResponse.code !== 200) { + console.error(`❌ [User Routes] 后端返回错误: ${backendResponse.msg}`); + toastService.error(backendResponse.msg || "获取路由权限失败"); + return { success: false, error: backendResponse.msg || "获取路由权限失败", shouldRedirectToHome: true }; } - const routes = routesResult.data || []; - - // 构建菜单树 - const menuItems = buildMenuTreeFromRoutes(routes); - - console.log(`角色 ${roleKey} 可访问 ${menuItems.length} 个路由`); + // 检查数据完整性 + if (!backendResponse.data || !Array.isArray(backendResponse.data.routes)) { + console.error('❌ [User Routes] 后端未返回路由数据'); + toastService.error("未获取到路由权限,请联系管理员配置"); + return { success: false, error: "后端未返回路由数据", shouldRedirectToHome: true }; + } + + const routes = backendResponse.data.routes; + + if (routes.length === 0) { + console.log(`⚠️ [User Routes] 用户没有分配任何路由权限`); + toastService.error("您的角色没有分配任何路由权限,请联系管理员配置"); + return { success: false, error: "用户没有分配任何路由权限", shouldRedirectToHome: true }; + } + + // 将后端路由格式转换为前端 MenuItem 格式 + const menuItems = convertBackendRoutesToMenuItems(routes); + + console.log(`✅ [User Routes] 成功获取 ${menuItems.length} 个路由`); + // console.log('📋 [User Routes] 菜单数据:', menuItems); + return { success: true, data: menuItems }; } catch (error) { - console.error("获取用户路由时发生错误:", error); + console.error("❌ [User Routes] 获取用户路由时发生错误:", error); toastService.error("获取用户路由时发生错误,请稍后再试"); - return { - success: false, + return { + success: false, error: `获取用户路由失败: ${error instanceof Error ? error.message : String(error)}`, shouldRedirectToHome: true }; @@ -541,14 +573,76 @@ export async function getUserRoutesByRole(roleKey: string, jwt?: string): Promis } /** - * 从路由信息构建菜单树结构 + * Element UI 图标到 RemixIcon 的映射 + */ +const ICON_MAPPING: Record = { + 'el-icon-s-home': 'ri-home-line', + 'el-icon-house': 'ri-home-4-line', + 'el-icon-document': 'ri-file-text-line', + 'el-icon-edit': 'ri-edit-line', + 'el-icon-connection': 'ri-links-line', + 'el-icon-setting': 'ri-settings-4-line', + 'el-icon-user': 'ri-user-line', + 'el-icon-tickets': 'ri-ticket-line', + 'el-icon-chat-dot-round': 'ri-chat-smile-2-line', + 'el-icon-s-order': 'ri-list-check', + 'el-icon-s-grid': 'ri-grid-line', + 'el-icon-s-comment': 'ri-chat-1-line', + 'el-icon-files': 'ri-file-copy-line', + 'el-icon-folder': 'ri-folder-line', + 'el-icon-upload': 'ri-upload-cloud-line', + 'el-icon-download': 'ri-download-cloud-line', + 'el-icon-search': 'ri-search-line', +}; + +/** + * 转换 Element UI 图标为 RemixIcon + */ +function convertIcon(elementIcon: string | null): string { + if (!elementIcon) { + return 'ri-file-line'; // 默认图标 + } + return ICON_MAPPING[elementIcon] || 'ri-file-line'; +} + +/** + * 将后端路由格式转换为前端 MenuItem 格式 + * @param backendRoutes 后端返回的路由数组 + * @returns MenuItem 数组 + */ +function convertBackendRoutesToMenuItems(backendRoutes: BackendRouteInfo[]): MenuItem[] { + return backendRoutes + .filter(route => !route.is_hidden) // 过滤隐藏的路由 + .map(route => { + const menuItem: MenuItem = { + id: route.route_name || `route-${route.id}`, + title: route.route_title, + path: route.route_path, + icon: convertIcon(route.icon), + order: route.sort_order, + hideBreadcrumb: route.is_hidden + }; + + // 递归处理子路由 + if (route.children && route.children.length > 0) { + menuItem.children = convertBackendRoutesToMenuItems(route.children); + } + + return menuItem; + }) + .sort((a, b) => a.order - b.order); // 按 sort_order 排序 +} + +/** + * 从路由信息构建菜单树结构(旧版本,已废弃) * @param routes 路由信息数组 * @returns 菜单树结构 + * @deprecated 使用 convertBackendRoutesToMenuItems 替代 */ function buildMenuTreeFromRoutes(routes: RouteInfo[]): MenuItem[] { // 转换为MenuItem格式 const menuMap = new Map(); - + routes.forEach(route => { const menuItem: MenuItem = { id: route.name, @@ -558,25 +652,25 @@ function buildMenuTreeFromRoutes(routes: RouteInfo[]): MenuItem[] { order: route.meta.order || 0, requiredRole: route.meta.requiredRole }; - + menuMap.set(route.id, menuItem); }); - + // 构建父子关系 const rootItems: MenuItem[] = []; const itemsWithParent: Array<{ item: MenuItem; parentId: number }> = []; - + routes.forEach(route => { const menuItem = menuMap.get(route.id); if (!menuItem) return; - + if (route.parent_id === 0) { rootItems.push(menuItem); } else { itemsWithParent.push({ item: menuItem, parentId: route.parent_id }); } }); - + // 添加子菜单 itemsWithParent.forEach(({ item, parentId }) => { const parent = menuMap.get(parentId); @@ -587,7 +681,7 @@ function buildMenuTreeFromRoutes(routes: RouteInfo[]): MenuItem[] { parent.children.push(item); } }); - + // 排序 rootItems.sort((a, b) => a.order - b.order); rootItems.forEach(item => { @@ -595,7 +689,7 @@ function buildMenuTreeFromRoutes(routes: RouteInfo[]): MenuItem[] { item.children.sort((a, b) => a.order - b.order); } }); - + return rootItems; } @@ -609,8 +703,14 @@ export function mapUserRoleToRoleKey(userRole: string): string { 'common': 'common', 'admin': 'admin', 'deptLeader': 'deptLeader', - 'groupLeader': 'groupLeader' + 'groupLeader': 'groupLeader', + // 添加常见的后端角色映射 + 'super_admin': 'admin', + 'system_admin': 'admin', + 'user': 'common', + 'developer': 'admin' }; - - return roleMapping[userRole]; + + // 如果找不到映射,返回 userRole 本身(假设后端已经返回了正确的 role_key) + return roleMapping[userRole] || userRole || 'common'; } \ No newline at end of file diff --git a/app/api/axios-client.ts b/app/api/axios-client.ts index 99dbff4..d993532 100644 --- a/app/api/axios-client.ts +++ b/app/api/axios-client.ts @@ -43,6 +43,86 @@ const axiosInstance = axios.create({ } }); +// 请求白名单 - 这些接口不需要添加 Authorization 头 +const AUTH_WHITELIST = [ + '/auth/login', + '/auth/refresh', + '/auth/register', + '/oauth/token', + '/oauth/userinfo' +]; + +/** + * 检查请求URL是否在白名单中 + */ +function isInAuthWhitelist(url?: string): boolean { + if (!url) return false; + return AUTH_WHITELIST.some(path => url.includes(path)); +} + +/** + * 请求拦截器 - 自动添加 Authorization 头 + */ +axiosInstance.interceptors.request.use( + (config) => { + // 检查是否在白名单中 + if (isInAuthWhitelist(config.url)) { + return config; + } + + // 从 localStorage 获取 token (浏览器环境) + if (typeof window !== 'undefined') { + const token = localStorage.getItem('access_token'); + if (token) { + config.headers.Authorization = `Bearer ${token}`; + } + } + + return config; + }, + (error) => { + return Promise.reject(error); + } +); + +/** + * 自定义错误类:表示需要重新登录 + */ +export class AuthenticationError extends Error { + constructor(message = 'Token 已过期或无效,请重新登录') { + super(message); + this.name = 'AuthenticationError'; + } +} + +/** + * 响应拦截器 - 处理 401 错误(token 过期) + */ +axiosInstance.interceptors.response.use( + (response) => { + return response; + }, + (error) => { + if (isAxiosError(error) && error.response?.status === 401) { + // Token 过期或无效 + console.warn('⚠️ Token 已过期或无效,请重新登录'); + + if (typeof window !== 'undefined') { + // 🌐 客户端环境:清除 localStorage 并跳转 + localStorage.removeItem('access_token'); + localStorage.removeItem('user_info'); + window.location.href = '/login'; + } else { + // 🖥️ 服务端环境:抛出特殊错误,由 loader/action 处理 + console.warn('⚠️ [Server] 检测到 401 错误,抛出 AuthenticationError'); + throw new AuthenticationError('Token 已过期或无效,请重新登录'); + } + } + + return Promise.reject(error); + } +); + // 最大重试次数 const MAX_RETRIES = 2; diff --git a/app/api/evaluation_points/reviews.ts b/app/api/evaluation_points/reviews.ts index a247cfc..bbe9e9d 100644 --- a/app/api/evaluation_points/reviews.ts +++ b/app/api/evaluation_points/reviews.ts @@ -158,7 +158,8 @@ export async function getReviewPoints(fileId: string, request: Request) { token: frontendJWT }; const contractStructureComparisonResponse = await postgrestGet('contract_structure_comparison', contractStructureComparisonParams); - + // console.log('contract_structure_comparison', contractStructureComparisonResponse) + if (contractStructureComparisonResponse.error) { console.error("获取文档附件数据错误:", contractStructureComparisonResponse.error); return Response.json({ error: contractStructureComparisonResponse.error }, { status: contractStructureComparisonResponse.status || 500 }); diff --git a/app/api/evaluation_points/rules-files.ts b/app/api/evaluation_points/rules-files.ts index d733287..1f4a3b0 100644 --- a/app/api/evaluation_points/rules-files.ts +++ b/app/api/evaluation_points/rules-files.ts @@ -100,7 +100,6 @@ export interface DocumentSearchParams { sortOrder?: string; // 排序方式 page?: number; // 当前页码 pageSize?: number; // 每页条数 - token?: string; // JWT token } @@ -169,8 +168,7 @@ export async function getReviewFiles(searchParams: DocumentSearchParams = {}, do reviewStatus, dateFrom, dateTo, - sortOrder = 'upload_time_desc', - token + sortOrder = 'upload_time_desc' } = searchParams; let p_typeid: number[] | null = null; @@ -206,8 +204,8 @@ export async function getReviewFiles(searchParams: DocumentSearchParams = {}, do // 并行执行获取数据和获取总数的请求 const [filesResponse, countResponse] = await Promise.all([ - postgrestPost('rpc/get_review_files_with_details', listParams, token), - postgrestPost('rpc/count_review_files', rpcParams, token) + postgrestPost('rpc/get_review_files_with_details', listParams), + postgrestPost('rpc/count_review_files', rpcParams) ]); // 处理获取文档列表的错误 @@ -318,10 +316,9 @@ export async function getReviewFiles(searchParams: DocumentSearchParams = {}, do * @param id 文件ID * @param auditStatus 审核状态 * @param userId 用户ID - * @param token JWT token (可选) * @returns 更新结果 */ -export async function updateDocumentAuditStatus(id: string, auditStatus: number, userId: string, token?: string): Promise<{ +export async function updateDocumentAuditStatus(id: string, auditStatus: number, userId: string): Promise<{ success?: boolean; error?: string; status?: number; @@ -347,8 +344,7 @@ export async function updateDocumentAuditStatus(id: string, auditStatus: number, { id: parseInt(id), user_id: parseInt(userId) // 确保只能更新自己的文档 - }, - token + } ); console.log('📝 [updateDocumentAuditStatus] postgrestPut响应:', response); diff --git a/app/api/files/documents.ts b/app/api/files/documents.ts index 4d6bab6..70cb7df 100644 --- a/app/api/files/documents.ts +++ b/app/api/files/documents.ts @@ -93,6 +93,36 @@ export interface DocumentUI { updatedAt?: string; pageCount?: number; ocrResult?: unknown; + // 版本管理相关字段 + historyCount?: number; // 历史版本数量(不含当前版本) + previousIssues?: number | null; // 上一个版本的问题数量 + isExpanded?: boolean; // 是否展开历史版本(前端状态) + historyVersions?: DocumentVersionUI[]; // 历史版本列表 +} + +/** + * 文档历史版本结构 + */ +export interface DocumentVersionUI { + id: number; + name: string; + documentNumber: string; + type: string; + typeName: string; + size: number; + auditStatus: number; + fileStatus: string; + issues: number | null; + issuesDiff?: number; // 与上一个版本的问题数量差异(绝对值) + issuesDiffType?: 'increase' | 'decrease' | 'same'; // 差异类型 + uploadTime: string; + fileType: string; + path: string; + isTest: boolean; + updatedAt?: string; + pageCount?: number; + ocrResult?: unknown; + versionNumber?: number; // 版本号(v2, v3, v4...) } /** @@ -419,6 +449,8 @@ export async function getDocumentWithNoUserId(id: string, frontendJWT?: string): if (!id) { return { error: '文档ID不能为空', status: 400 }; } + + // console.log("get单个文档id", id) const response = await postgrestGet( 'documents', @@ -435,6 +467,7 @@ export async function getDocumentWithNoUserId(id: string, frontendJWT?: string): return { error: response.error, status: response.status }; } + // console.log("respose", response) const extractedData = extractApiData(response.data); if (!extractedData || extractedData.length === 0) { return { error: '文档不存在', status: 404 }; @@ -554,7 +587,7 @@ export async function updateDocument(id: string, document: Partial & // 获取更新后的完整文档数据 const updatedResponse = await getDocument(id, userId, frontendJWT); - return updatedResponse; + return updatedResponse; } catch (error) { console.error('更新文档信息失败:', error); return { @@ -562,4 +595,223 @@ export async function updateDocument(id: string, document: Partial & status: 500 }; } +} + +/** + * 获取文档列表(带版本信息)- 使用 RPC 函数 + * @param searchParams 搜索参数 + * @returns 文档列表和总数 + */ +export async function getDocumentsWithVersionInfo(searchParams: DocumentSearchParams = {}): Promise<{ + data?: { documents: DocumentUI[], total: number }; + error?: string; + status?: number; +}> { + try { + const { + page = 1, + pageSize = 10, + name, + documentNumber, + documentType, + auditStatus, + fileStatus, + dateFrom, + dateTo, + reviewType, + userId, + token + } = searchParams; + + // 确保userId必须存在 + if (!userId) { + return { error: '用户身份验证失败,无法获取文档列表', status: 401 }; + } + + // 处理文档类型 + let documentTypes: number[] | undefined; + if (documentType) { + documentTypes = [parseInt(documentType, 10)]; + } else if (reviewType) { + if (reviewType === 'contract') { + documentTypes = [1]; + } else if (reviewType === 'record') { + documentTypes = [2, 3, 155]; + } + } + + // 准备RPC调用参数 + const rpcParams = { + p_user_id: parseInt(userId, 10), + p_page: page, + p_page_size: pageSize, + p_search_name: name || null, + p_search_document_number: documentNumber || null, + p_search_document_types: documentTypes || null, + p_search_audit_status: auditStatus !== undefined ? parseInt(auditStatus, 10) : null, + p_search_file_status: fileStatus || null, + p_search_date_from: dateFrom || null, + p_search_date_to: dateTo || null + }; + + // 并行执行获取数据和获取总数的请求 + const [documentsResponse, countResponse] = await Promise.all([ + postgrestPost('rpc/documents_get_latest_documents_with_version_info', rpcParams, token), + postgrestPost('rpc/documents_count_latest_documents_with_filters', { + p_user_id: rpcParams.p_user_id, + p_search_name: rpcParams.p_search_name, + p_search_document_number: rpcParams.p_search_document_number, + p_search_document_types: rpcParams.p_search_document_types, + p_search_audit_status: rpcParams.p_search_audit_status, + p_search_file_status: rpcParams.p_search_file_status, + p_search_date_from: rpcParams.p_search_date_from, + p_search_date_to: rpcParams.p_search_date_to + }, token) + ]); + + // 处理获取文档列表的错误 + if (documentsResponse.error || !documentsResponse.data) { + return { error: documentsResponse.error || '获取文档数据失败', status: documentsResponse.status || 500 }; + } + + // 处理获取总数的错误 + if (countResponse.error || typeof countResponse.data !== 'number') { + console.error('获取文档总数失败:', countResponse.error); + } + + const totalCount = typeof countResponse.data === 'number' ? countResponse.data : 0; + + // 将RPC返回的数据转换为UI格式 + const documents: DocumentUI[] = documentsResponse.data.map((doc: any) => ({ + id: doc.id, + name: doc.name, + documentNumber: doc.document_number, + type: doc.type_id.toString(), + typeName: doc.type_name || '未知类型', + size: doc.file_size, + auditStatus: doc.audit_status ?? 0, + fileStatus: doc.status || '', + issues: doc.false_count ?? null, + uploadTime: formatDate(doc.updated_at), + fileType: getFileExtension(doc.name), + path: doc.path, + isTest: doc.is_test_document, + updatedAt: formatDate(doc.updated_at), + pageCount: doc.ocr_result?.__meta?.page_count || 0, + ocrResult: doc.ocr_result, + historyCount: doc.history_count || 0, + previousIssues: doc.previous_issues + })); + + return { + data: { + documents, + total: totalCount + } + }; + } catch (error) { + console.error('获取文档列表失败:', error); + return { + error: error instanceof Error ? error.message : '获取文档列表失败', + status: 500 + }; + } +} + +/** + * 获取文档历史版本列表 + * @param documentName 文档名称 + * @param userId 用户ID + * @param excludeId 排除的文档ID(当前最新版本的ID) + * @param token JWT token + * @returns 历史版本列表 + */ +export async function getDocumentHistory( + documentName: string, + userId: string, + excludeId: number, + token?: string +): Promise<{ + data?: DocumentVersionUI[]; + error?: string; + status?: number; +}> { + try { + if (!documentName) { + return { error: '文档名称不能为空', status: 400 }; + } + + if (!userId) { + return { error: '用户身份验证失败', status: 401 }; + } + + // 调用 RPC 函数获取历史版本 + const response = await postgrestPost( + 'rpc/documents_get_document_history', + { + p_document_name: documentName, + p_user_id: parseInt(userId, 10), + p_exclude_id: excludeId + }, + token + ); + + if (response.error || !response.data) { + return { error: response.error || '获取历史版本失败', status: response.status || 500 }; + } + + const historyDocs = response.data; + + // 转换为 UI 格式,并计算问题数量差异 + const documents: DocumentVersionUI[] = historyDocs.map((doc: any, index: number) => { + // 计算与下一个版本(更早的版本)的问题数量差异 + let issuesDiff: number | undefined; + let issuesDiffType: 'increase' | 'decrease' | 'same' | undefined; + + if (index < historyDocs.length - 1) { + const olderDoc = historyDocs[index + 1]; + if (doc.false_count != null && olderDoc.false_count != null) { + const diff = doc.false_count - olderDoc.false_count; + issuesDiff = Math.abs(diff); + if (diff > 0) { + issuesDiffType = 'increase'; + } else if (diff < 0) { + issuesDiffType = 'decrease'; + } else { + issuesDiffType = 'same'; + } + } + } + + return { + id: doc.id, + name: doc.name, + documentNumber: doc.document_number, + type: doc.type_id.toString(), + typeName: doc.type_name || '未知类型', + size: doc.file_size, + auditStatus: doc.audit_status ?? 0, + fileStatus: doc.status || '', + issues: doc.false_count ?? null, + issuesDiff, + issuesDiffType, + uploadTime: formatDate(doc.created_at), + fileType: getFileExtension(doc.name), + path: doc.path, + isTest: doc.is_test_document, + updatedAt: formatDate(doc.updated_at), + pageCount: doc.ocr_result?.__meta?.page_count || 0, + ocrResult: doc.ocr_result, + versionNumber: historyDocs.length - index + }; + }); + + return { data: documents }; + } catch (error) { + console.error('获取文档历史版本失败:', error); + return { + error: error instanceof Error ? error.message : '获取文档历史版本失败', + status: 500 + }; + } } \ No newline at end of file diff --git a/app/api/files/files-upload.ts b/app/api/files/files-upload.ts index 8b36025..b91e68d 100644 --- a/app/api/files/files-upload.ts +++ b/app/api/files/files-upload.ts @@ -175,9 +175,13 @@ export async function uploadContractTemplate( const headers: HeadersInit = { 'Accept': 'application/json' }; - - if (jwtToken) { - headers['Authorization'] = `Bearer ${jwtToken}`; + + // 从 localStorage 获取 token + if (typeof window !== 'undefined') { + const token = localStorage.getItem('access_token'); + if (token) { + headers['Authorization'] = `Bearer ${token}`; + } } // 发送请求 @@ -222,7 +226,6 @@ export async function uploadContractTemplate( * @param mergeMode 合并模式:'overwrite'(覆盖原文档)或 'new'(新建文档记录) * @param isReprocess 是否触发重新处理 * @param remark 备注 - * @param jwtToken JWT token * @returns 上传结果 */ export async function appendContractAttachments( @@ -230,8 +233,7 @@ export async function appendContractAttachments( files: File[], mergeMode: 'overwrite' | 'new' = 'overwrite', isReprocess: boolean = true, - remark?: string, - jwtToken?: string + remark?: string ): Promise<{data: FileUploadResponse; error?: never} | {data?: never; error: string; status?: number}> { try { console.log('【合同附件追加】开始追加附件:', { documentId, fileCount: files.length, mergeMode }); @@ -259,9 +261,13 @@ export async function appendContractAttachments( const headers: HeadersInit = { 'Accept': 'application/json' }; - - if (jwtToken) { - headers['Authorization'] = `Bearer ${jwtToken}`; + + // 从 localStorage 获取 token + if (typeof window !== 'undefined') { + const token = localStorage.getItem('access_token'); + if (token) { + headers['Authorization'] = `Bearer ${token}`; + } } // 发送请求 diff --git a/app/api/home/home.ts b/app/api/home/home.ts index e04daea..88e4851 100644 --- a/app/api/home/home.ts +++ b/app/api/home/home.ts @@ -436,72 +436,7 @@ export async function getHomeData(reviewType?: string | null,userId?: string | n lastMonthIssuesCount = lastMonthType2Count } - // 暂时不会存在没有指定类型得情况,暂不实现。 - // else { - // // 如果没有指定类型,则使用原来的查询方式获取所有类型的问题数量 - // const thisMonthIssuesParams: PostgrestParams = { - // select: 'count', - // filter: { - // and: `(created_at.gte.${startOfThisMonth},created_at.lte.${endOfThisMonth})`, - // 'evaluated_results->result': 'eq.false', - // user_id: `eq.${userId}` - // } - // }; - - // // 添加类型过滤条件 - // if (typeFilter) { - // if (typeFilter.startsWith('(')) { - // thisMonthIssuesParams.or = typeFilter; - // } else { - // const [field, op, value] = typeFilter.split('.'); - // if (!thisMonthIssuesParams.filter) { - // thisMonthIssuesParams.filter = {}; - // } - // thisMonthIssuesParams.filter[field] = `${op}.${value}`; - // } - // } - - // const thisMonthIssuesResponse = await handleApiResponse<{ count: number }[]>( - // postgrestGet('evaluation_results', thisMonthIssuesParams), - // '获取本月问题数据失败', - // [] - // ); - - // // 本月问题数量 - // thisMonthIssuesCount = thisMonthIssuesResponse[0]?.count || 0; - - // // 上月问题数量 - // const lastMonthIssuesParams: PostgrestParams = { - // select: 'count', - // filter: { - // and: `(created_at.gte.${startOfLastMonth},created_at.lte.${endOfLastMonth})`, - // 'evaluated_results->result': 'eq.false', - // user_id: `eq.${userId}` - // } - // }; - - // // 添加类型过滤条件 - // if (typeFilter) { - // if (typeFilter.startsWith('(')) { - // lastMonthIssuesParams.or = typeFilter; - // } else { - // const [field, op, value] = typeFilter.split('.'); - // if (!lastMonthIssuesParams.filter) { - // lastMonthIssuesParams.filter = {}; - // } - // lastMonthIssuesParams.filter[field] = `${op}.${value}`; - // } - // } - - // const lastMonthIssuesResponse = await handleApiResponse<{ count: number }[]>( - // postgrestGet('evaluation_results', lastMonthIssuesParams), - // '获取上月问题数据失败', - // [] - // ); - - // // 上月问题数量 - // lastMonthIssuesCount = lastMonthIssuesResponse[0]?.count || 0; - // } + // 计算问题数量同比增长 let issuesGrowthValue = 0; diff --git a/app/api/login/auth.server.ts b/app/api/login/auth.server.ts index b8b07d6..91ab66e 100644 --- a/app/api/login/auth.server.ts +++ b/app/api/login/auth.server.ts @@ -30,7 +30,7 @@ import { OAUTH_CONFIG, API_BASE_URL } from "~/config/api-config"; * @property {'common'} common - 普通用户,有基本的系统访问权限 * @property {'developer'} developer - 开发者/管理员,有完整的系统管理权限 */ -export type UserRole = 'common' | 'admin' | 'deptLeader' | 'groupLeader'; +export type UserRole = 'common' | 'admin' | 'deptLeader' | 'groupLeader' | string; /** * 用户信息接口,对应 sso_users 表结构 @@ -365,7 +365,7 @@ export async function getUserSession(request: Request) { */ export async function createUserSession(params: { isAuthenticated: boolean; - userRole: UserRole; + userRole: string; redirectTo: string; accessToken?: string; refreshToken?: string; diff --git a/app/api/login/login-client.ts b/app/api/login/login-client.ts new file mode 100644 index 0000000..fa5bc82 --- /dev/null +++ b/app/api/login/login-client.ts @@ -0,0 +1,154 @@ +/** + * 登录客户端 + * 调用后端 /auth/login 接口,传递 OAuth 用户信息,获取 JWT token + */ + +import { API_BASE_URL } from "~/config/api-config"; + +/** + * 登录请求参数(OAuth 方式) + */ +export interface LoginRequest { + userInfo: { + sub: string; + username?: string; + nickname?: string; + email?: string; + phone_number?: string; + ou_id?: string; + ou_name?: string; + is_leader?: boolean; + [key: string]: unknown; + }; + expiresIn: number; + area?: string; +} + +/** + * 登录响应 + */ +export interface LoginResponse { + success: boolean; + data?: { + access_token: string; + token_type: string; + expires_in: number; + user_info: { + user_id: string; + username: string; + nick_name: string; + email?: string; + phone_number?: string; + ou_id: string; + ou_name: string; + is_leader: boolean; + user_role: string; + sub: string; + }; + }; + error?: string; + message?: string; +} + +/** + * 调用后端登录接口(OAuth 方式) + * + * @param loginData 登录数据(OAuth 用户信息) + * @returns 登录响应(包含 JWT token) + */ +export async function loginWithOAuth(loginData: LoginRequest): Promise { + const loginUrl = `${API_BASE_URL}/auth/login`; + + console.log("📝 [Login Client] 调用后端 OAuth 登录接口:", loginUrl); + + try { + const response = await fetch(loginUrl, { + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + }, + body: JSON.stringify(loginData) + }); + + if (!response.ok) { + const errorData = await response.json().catch(() => ({})); + console.error("❌ [Login Client] OAuth 登录请求失败:", response.status, errorData); + + return { + success: false, + error: errorData.error || errorData.message || `登录失败: ${response.status}` + }; + } + + const data = await response.json(); + console.log("✅ [Login Client] OAuth 登录成功"); + + return data; + } catch (error) { + console.error("❌ [Login Client] OAuth 登录请求异常:", error); + return { + success: false, + error: error instanceof Error ? error.message : "网络请求失败" + }; + } +} + +/** + * 密码登录请求参数 + */ +export interface PasswordLoginRequest { + username: string; + password: string; +} + +/** + * 调用后端登录接口(密码方式) + * + * @param username 用户名 + * @param password 密码 + * @returns 登录响应(包含 JWT token) + */ +export async function loginWithPassword( + username: string, + password: string +): Promise { + const loginUrl = `${API_BASE_URL}/auth/login`; + + console.log("📝 [Login Client] 调用后端密码登录接口:", loginUrl); + + try { + const response = await fetch(loginUrl, { + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + }, + body: JSON.stringify({ + username, + password + }) + }); + + if (!response.ok) { + const errorData = await response.json().catch(() => ({})); + console.error("❌ [Login Client] 密码登录请求失败:", response.status, errorData); + + return { + success: false, + error: errorData.error || errorData.message || `登录失败: ${response.status}` + }; + } + + const data = await response.json(); + console.log("✅ [Login Client] 密码登录成功"); + + return data; + } catch (error) { + console.error("❌ [Login Client] 密码登录请求异常:", error); + return { + success: false, + error: error instanceof Error ? error.message : "网络请求失败" + }; + } +} diff --git a/app/api/postgrest-client.ts b/app/api/postgrest-client.ts index 5ee6eba..09b5be2 100644 --- a/app/api/postgrest-client.ts +++ b/app/api/postgrest-client.ts @@ -106,11 +106,11 @@ function mergeAuthHeaders( return headers; } - // 优先使用显式传入的 token,否则从上下文获取 - const token = explicitToken || 'undefined'; - - // 如果有 token(显式传入或从上下文获取),添加到 Authorization 头部 - if (token) { + // 优先使用显式传入的 token,否则尝试从客户端 localStorage 获取 + const token = explicitToken || (typeof window !== 'undefined' ? localStorage.getItem('access_token') : undefined); + + // 如果有有效的 token(显式传入或从客户端获取),添加到 Authorization 头部 + if (token && token !== 'undefined') { headers['Authorization'] = `Bearer ${token}`; } diff --git a/app/components/auth/ClientAuthGuard.tsx b/app/components/auth/ClientAuthGuard.tsx new file mode 100644 index 0000000..cd5e499 --- /dev/null +++ b/app/components/auth/ClientAuthGuard.tsx @@ -0,0 +1,57 @@ +/** + * 客户端认证守卫组件 + * + * 在客户端检查 localStorage 中的 token + * 如果未认证且访问的是需要认证的路径,则跳转到登录页 + */ + +import { useEffect } from 'react'; +import { useNavigate, useLocation } from '@remix-run/react'; +import { isAuthenticated } from '~/utils/auth-storage'; + +interface ClientAuthGuardProps { + isPublicPath: boolean; +} + +export function ClientAuthGuard({ isPublicPath }: ClientAuthGuardProps) { + const navigate = useNavigate(); + const location = useLocation(); + + useEffect(() => { + console.log('🔍 [Auth Guard] useEffect 触发', { + isPublicPath, + pathname: location.pathname + }); + + // 如果是公共路径,不需要检查认证 + if (isPublicPath) { + console.log('✅ [Auth Guard] 公共路径,跳过认证检查'); + return; + } + + // 检查客户端是否已认证(localStorage 中有 token) + const token = localStorage.getItem('access_token'); + const authenticated = isAuthenticated(); + + console.log('🔍 [Auth Guard] 认证检查', { + token: token ? `${token.substring(0, 20)}...` : null, + authenticated, + pathname: location.pathname + }); + + if (!authenticated) { + console.log('🔒 [Auth Guard] 未认证,重定向到登录页'); + + // 保存当前路径,登录后可以跳转回来 + const redirectTo = location.pathname !== '/login' ? location.pathname : '/'; + + // 跳转到登录页,并传递重定向目标 + navigate(`/login?redirect=${encodeURIComponent(redirectTo)}`, { replace: true }); + } else { + console.log('✅ [Auth Guard] 已认证,允许访问'); + } + }, [isPublicPath, navigate, location.pathname]); + + // 这个组件不渲染任何内容 + return null; +} diff --git a/app/components/layout/Layout.tsx b/app/components/layout/Layout.tsx index 93ca52c..afe5d7f 100644 --- a/app/components/layout/Layout.tsx +++ b/app/components/layout/Layout.tsx @@ -36,6 +36,8 @@ interface Match { export function Layout({ children, userRole = 'developer' as UserRole, frontendJWT = '' }: LayoutProps) { const [sidebarCollapsed, setSidebarCollapsed] = useState(false); const [selectedApp, setSelectedApp] = useState(''); + const [effectiveUserRole, setEffectiveUserRole] = useState(userRole); + const [effectiveFrontendJWT, setEffectiveFrontendJWT] = useState(frontendJWT); const matches = useMatches() as Match[]; const location = useLocation(); @@ -48,6 +50,39 @@ export function Layout({ children, userRole = 'developer' as UserRole, frontendJ match.handle && match.handle.hideBreadcrumb === true ); + // 从 localStorage 读取用户信息和 JWT 作为备用方案 + useEffect(() => { + if (typeof window === 'undefined') return; + + try { + // 如果服务端没有传递 userRole,从 localStorage 读取 + if (!userRole || userRole === '') { + const storedUserInfoStr = localStorage.getItem('user_info'); + if (storedUserInfoStr) { + const storedUserInfo = JSON.parse(storedUserInfoStr); + const storedUserRole = storedUserInfo.user_role || 'common'; + console.log('📖 [Layout] 从 localStorage 读取用户角色:', storedUserRole); + setEffectiveUserRole(storedUserRole as UserRole); + } + } else { + setEffectiveUserRole(userRole); + } + + // 如果服务端没有传递 frontendJWT,从 localStorage 读取 + if (!frontendJWT || frontendJWT === '') { + const storedToken = localStorage.getItem('access_token'); + if (storedToken) { + console.log('📖 [Layout] 从 localStorage 读取 JWT token'); + setEffectiveFrontendJWT(storedToken); + } + } else { + setEffectiveFrontendJWT(frontendJWT); + } + } catch (error) { + console.error('❌ [Layout] 读取 localStorage 失败:', error); + } + }, [userRole, frontendJWT]); + // 从sessionStorage中获取侧边栏状态和reviewType useEffect(() => { // 检查是否为移动端 @@ -62,7 +97,7 @@ export function Layout({ children, userRole = 'developer' as UserRole, frontendJ } else if (savedState) { setSidebarCollapsed(savedState === 'true'); } - + // 从sessionStorage获取reviewType并设置对应的应用模块 if (typeof window !== 'undefined') { try { @@ -111,12 +146,12 @@ export function Layout({ children, userRole = 'developer' as UserRole, frontendJ return (
{/* 侧边栏始终保留,不再使用条件渲染 */} -
diff --git a/app/components/layout/Sidebar.tsx b/app/components/layout/Sidebar.tsx index 79f4e04..7f879d2 100644 --- a/app/components/layout/Sidebar.tsx +++ b/app/components/layout/Sidebar.tsx @@ -11,11 +11,28 @@ interface SidebarProps { selectedApp?: string; // 添加所选应用模块参数 } -// 定义不同应用模块下显示的菜单项ID +// 定义不同应用模块下显示的菜单路径(使用路由路径进行匹配) const APP_MENU_MAP = { - 'contract': ['home', 'contract-template', 'file-management', 'rule-management', 'cross-checking', 'system-settings'], - 'record': ['home', 'file-management', 'rule-management', 'cross-checking', 'system-settings'], - 'model': ['chat-with-llm'] + 'contract': [ + '/home', // 系统概览 + '/documents', // 文档管理 + '/contract-template', // 合同模板 + '/rules', // 评查规则库 + '/cross-checking', // 交叉评查 + // '/chat-with-llm', // AI法务助手 + '/settings' // 系统设置 + ], + 'record': [ + '/home', // 系统概览 + '/documents', // 文档管理 + '/rules', // 评查规则库 + '/cross-checking', // 交叉评查 + // '/chat-with-llm', // AI法务助手 + '/settings' // 系统设置 + ], + 'model': [ + '/chat-with-llm' // AI法务助手 + ] }; // 应用模块名称映射 @@ -62,28 +79,43 @@ export function Sidebar({ onToggle, collapsed, userRole, frontendJWT = '', selec const fetchUserRoutes = async () => { setIsLoadingRoutes(true); try { - console.log('userRole', userRole); + // 优先使用传入的 frontendJWT,否则从 localStorage 读取 + let jwt = frontendJWT; + + if (!jwt && typeof window !== 'undefined') { + jwt = localStorage.getItem('access_token') || ''; + console.log('📖 [Sidebar] 从 localStorage 读取 JWT'); + } + + if (!jwt) { + console.error('❌ [Sidebar] JWT token 未找到'); + setMenuItems([]); + setIsLoadingRoutes(false); + return; + } + + console.log('🔍 [Sidebar] 当前用户角色:', userRole); const roleKey = mapUserRoleToRoleKey(userRole); - const result = await getUserRoutesByRole(roleKey, frontendJWT); - + const result = await getUserRoutesByRole(roleKey, jwt); + if (result.success && result.data) { setMenuItems(result.data); - console.log('用户路由权限加载成功:', result.data); + console.log('✅ [Sidebar] 用户路由权限加载成功:', result.data); } else { - console.error('获取用户路由权限失败:', result.error); - + console.error('❌ [Sidebar] 获取用户路由权限失败:', result.error); + // 如果需要重定向到首页 if (result.shouldRedirectToHome) { - console.log('重定向到首页'); + console.log('🔄 [Sidebar] 重定向到首页'); navigate('/'); return; } - + // 其他错误情况,使用空数组 setMenuItems([]); } } catch (error) { - console.error('获取用户路由权限时发生错误:', error); + console.error('❌ [Sidebar] 获取用户路由权限时发生错误:', error); // 发生异常时也重定向到首页 navigate('/'); return; @@ -93,7 +125,7 @@ export function Sidebar({ onToggle, collapsed, userRole, frontendJWT = '', selec }; fetchUserRoutes(); - }, [userRole, navigate]); + }, [userRole, frontendJWT, navigate]); // 组件挂载后从 sessionStorage 读取初始 reviewType useEffect(() => { @@ -225,37 +257,60 @@ export function Sidebar({ onToggle, collapsed, userRole, frontendJWT = '', selec // console.log('子菜单点击:', child.title, '路径:', child.path); }; - // 获取当前应用模式下应显示的菜单ID列表 - const visibleMenuIds = APP_MENU_MAP[currentApp as keyof typeof APP_MENU_MAP] || APP_MENU_MAP['contract']; - // const visibleMenuIds = APP_MENU_MAP[currentApp as keyof typeof APP_MENU_MAP] - // console.log('当前应用模式:', currentApp, '可见菜单ID:', visibleMenuIds); + // 获取当前应用模式下应显示的菜单路径列表 + const visibleMenuPaths = APP_MENU_MAP[currentApp as keyof typeof APP_MENU_MAP] || APP_MENU_MAP['contract']; + // console.log('当前应用模式:', currentApp, '可见菜单路径:', visibleMenuPaths); // 检查是否通过51707端口访问(省局) // const isPort51708 = typeof window !== 'undefined' && window.location.port === '51708'; const isPort51707 = typeof window !== 'undefined' && window.location.port === '51707'; // 根据当前应用模式过滤菜单项 - const filteredMenuItems = menuItems.filter(item => { - // 如果是51707端口,只显示交叉评查相关菜单 - if (isPort51707) { - // 如果当前应用是智慧法务大模型,只显示AI对话菜单 - if (currentApp === 'model') { - return item.id === 'chat-with-llm' || - (item.path && item.path.startsWith('/chat-with-llm')); - }else{ - return item.id === 'cross-checking' || - (item.path && item.path.startsWith('/cross-checking')) + const filteredMenuItems = menuItems + .filter(item => { + // 如果是51707端口,只显示交叉评查相关菜单 + if (isPort51707) { + // 如果当前应用是智慧法务大模型,只显示AI对话菜单 + if (currentApp === 'model') { + return item.path && item.path.startsWith('/chat-with-llm'); + } else { + return item.path && item.path.startsWith('/cross-checking'); + } } - } + // 检查当前菜单是否在所选应用模式中显示(使用路径匹配) + if (!visibleMenuPaths.includes(item.path)) { + return false; + } - // 检查当前菜单是否在所选应用模式中显示 - if (!visibleMenuIds.includes(item.id)) { - return false; - } + return true; + }) + .map(item => { + // 处理子菜单:过滤隐藏的子菜单 + if (item.children && item.children.length > 0) { + // 过滤掉 hideBreadcrumb=true 的子菜单(这些通常是隐藏菜单) + const visibleChildren = item.children.filter(child => !child.hideBreadcrumb); - return true; - }); + // 如果过滤后没有可见的子菜单,返回不带子菜单的父级(变成可点击的单级菜单) + if (visibleChildren.length === 0) { + const { children, ...itemWithoutChildren } = item; + return itemWithoutChildren; + } + + // 如果还有可见的子菜单,返回带过滤后子菜单的项 + return { ...item, children: visibleChildren }; + } + + // 处理空 children 数组或 undefined 的情况 + if (item.children !== undefined) { + // 如果 children 存在但为空数组,移除它(让父级变成可点击的单级菜单) + const { children, ...itemWithoutChildren } = item; + return itemWithoutChildren; + } + + // 没有子菜单的项直接返回 + return item; + }); // filteredMenuItems = filteredMenuItems.map(item => { // if(item.children && item.children.length > 0){ diff --git a/app/components/reviews/ReviewTabs.tsx b/app/components/reviews/ReviewTabs.tsx index f9e46ef..0b8553d 100644 --- a/app/components/reviews/ReviewTabs.tsx +++ b/app/components/reviews/ReviewTabs.tsx @@ -49,7 +49,7 @@ export function ReviewTabs({ activeTab, onTabChange, children, fileInfo, onConfi // 根据来源页面返回 const previousRoute = fileInfo.previousRoute || 'documents'; const returnTo = previousRoute === 'documents' - ? "/documents" + ? "/documents/list" : previousRoute === 'filesUpload' ? "/files/upload" : "/rules-files"; diff --git a/app/components/ui/IssuesDiff.tsx b/app/components/ui/IssuesDiff.tsx new file mode 100644 index 0000000..b7b43a8 --- /dev/null +++ b/app/components/ui/IssuesDiff.tsx @@ -0,0 +1,59 @@ +/** + * 问题数量差异显示组件 + * 用于显示文档版本之间的问题数量对比 + */ + +interface IssuesDiffProps { + currentIssues: number | null; + previousIssues?: number | null; + issuesDiff?: number; + issuesDiffType?: 'increase' | 'decrease' | 'same'; + className?: string; +} + +export function IssuesDiff({ + currentIssues, + previousIssues, + issuesDiff, + issuesDiffType, + className = '' +}: IssuesDiffProps) { + // 如果当前问题数量为 null,显示 "-" + if (currentIssues === null) { + return -; + } + + // 如果没有上一个版本或上一个版本问题数量为 null,只显示当前数量 + if (previousIssues === null || previousIssues === undefined || issuesDiffType === undefined) { + return {currentIssues}; + } + + // 显示当前数量 + 差异 + return ( +
+ {currentIssues} + {issuesDiff !== undefined && issuesDiffType && ( + + {issuesDiffType === 'increase' && ( + <> + + +{issuesDiff} + + )} + {issuesDiffType === 'decrease' && ( + <> + + -{issuesDiff} + + )} + {issuesDiffType === 'same' && ( + <> + + 0 + + )} + + )} +
+ ); +} diff --git a/app/components/ui/MultiCascader.tsx b/app/components/ui/MultiCascader.tsx index 9d57164..e5ff701 100644 --- a/app/components/ui/MultiCascader.tsx +++ b/app/components/ui/MultiCascader.tsx @@ -113,19 +113,24 @@ const MultiCascader: React.FC = ({
{ if (el) el.indeterminate = !allChecked && someChecked; }} onChange={e => handleItemCheck(option, e.target.checked)} id={`cascader-${option.value}`} /> -
-//
-//
-// - -//
-// -// -// -// -// -// -//
-// -// ); -// } diff --git a/app/routes/contract-search.tsx b/app/routes/contract-search.tsx deleted file mode 100644 index 5f6ec27..0000000 --- a/app/routes/contract-search.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Outlet } from "@remix-run/react"; -import { type MetaFunction } from "@remix-run/node"; - -export const meta: MetaFunction = () => { - return [ - { title: "智能搜索 - 中国烟草AI合同及卷宗审核系统" }, - { - name: "contract-search", - content: "智能搜索模块,包括智能搜索功能" - } - ]; -}; - -export const handle = { - breadcrumb: "智能搜索" -}; - -/** - * 配置列表路由布局 - */ -export default function ContractSearchLayout() { - return ; -} \ No newline at end of file diff --git a/app/routes/debug.tsx b/app/routes/debug.tsx deleted file mode 100644 index 882ee26..0000000 --- a/app/routes/debug.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { useLocation, Link } from "@remix-run/react"; - -export default function DebugPage() { - const location = useLocation(); - - return ( -
-

路由诊断页面

- -
-

当前路径信息

-
-          {JSON.stringify({
-            pathname: location.pathname,
-            search: location.search,
-            hash: location.hash,
-            key: location.key,
-            state: location.state
-          }, null, 2)}
-        
-
- -
-

测试链接

-
- 首页 - / - 评查点列表 - /rules - 评查点详情 - /rules/1 - 原生链接 - /rules -
-
- -
-

跳转测试

- - - -
-
- ); -} \ No newline at end of file diff --git a/app/routes/documents.edit.tsx b/app/routes/documents.edit.tsx index e3a286b..4b9f62e 100644 --- a/app/routes/documents.edit.tsx +++ b/app/routes/documents.edit.tsx @@ -468,10 +468,10 @@ export default function DocumentEdit() {

修改文档信息

- diff --git a/app/routes/documents._index.tsx b/app/routes/documents.list.tsx similarity index 79% rename from app/routes/documents._index.tsx rename to app/routes/documents.list.tsx index 9bbf5b5..ef562b7 100644 --- a/app/routes/documents._index.tsx +++ b/app/routes/documents.list.tsx @@ -10,7 +10,9 @@ import { FileTag } from "~/components/ui/FileTag"; import { FilterPanel, FilterSelect, SearchFilter, DateRangeFilter } from "~/components/ui/FilterPanel"; import { TableRowSkeleton, LoadingIndicator, NumberSkeleton } from '~/components/ui/SkeletonScreen'; import documentsIndexStyles from "~/styles/pages/documents_index.css?url"; -import { getDocuments, deleteDocument, type DocumentUI } from "~/api/files/documents"; +import documentVersionStyles from "~/styles/components/document-version.css?url"; +import { getDocuments, getDocumentsWithVersionInfo, getDocumentHistory, deleteDocument, type DocumentUI, type DocumentVersionUI } from "~/api/files/documents"; +import { IssuesDiff } from "~/components/ui/IssuesDiff"; import { getDocumentTypes } from "~/api/document-types/document-types"; import { updateDocumentAuditStatus } from "~/api/evaluation_points/rules-files"; import { appendContractAttachments, uploadContractTemplate } from "~/api/files/files-upload"; @@ -22,7 +24,8 @@ import { DOCUMENT_URL } from "~/api/axios-client"; // 导入样式 export function links() { return [ - { rel: "stylesheet", href: documentsIndexStyles } + { rel: "stylesheet", href: documentsIndexStyles }, + { rel: "stylesheet", href: documentVersionStyles } ]; } @@ -34,7 +37,7 @@ export const meta: MetaFunction = () => { ]; }; -// 数据加载器 +// 数据加载器 export const loader = async ({ request }: LoaderFunctionArgs) => { // 获取用户会话信息 const { getUserSession } = await import("~/api/login/auth.server"); @@ -45,7 +48,7 @@ export const loader = async ({ request }: LoaderFunctionArgs) => { const page = parseInt(url.searchParams.get("page") || "1", 10); const pageSize = parseInt(url.searchParams.get("pageSize") || "10", 10); - // 获取文档类型列表,用于筛选条件 + // 获取文档类型列表(服务端需要显式传递 token,客户端依赖 axios 拦截器) const typesResponse = await getDocumentTypes({ pageSize: 500 }, frontendJWT); const documentTypes = typesResponse.data?.types || []; const documentTypeOptions = documentTypes.map(type => ({ @@ -61,7 +64,6 @@ export const loader = async ({ request }: LoaderFunctionArgs) => { pageSize, documentTypeOptions, userInfo, // 传递用户信息到客户端 - frontendJWT, // 传递前端JWT到客户端 initialLoad: true // 标记这是初始加载 }); }; @@ -180,19 +182,40 @@ export default function DocumentsIndex() { const loaderData = useLoaderData(); const fetcher = useFetcher(); const navigate = useNavigate(); - + // 存储从 sessionStorage 获取的 reviewType const [reviewType, setReviewType] = useState(null); - + // 添加页面加载状态管理 const [isLoadingData, setIsLoadingData] = useState(true); const [documents, setDocuments] = useState([]); const [total, setTotal] = useState(0); const [filteredDocumentTypeOptions, setFilteredDocumentTypeOptions] = useState(loaderData.documentTypeOptions); const dataCache = useRef(null); - + // 添加一个状态来跟踪是否执行了删除操作 const [isDeleting, setIsDeleting] = useState(false); + + // 辅助函数:从 localStorage 获取用户ID(与 token 管理保持一致) + const getUserId = useCallback((): string | undefined => { + if (typeof window === 'undefined') return undefined; + + const userInfoStr = localStorage.getItem('user_info'); + if (!userInfoStr) return undefined; + + try { + const userInfoData = JSON.parse(userInfoStr); + return userInfoData.user_id?.toString(); + } catch (error) { + console.error('解析 localStorage 用户信息失败:', error); + return undefined; + } + }, []); + + // 版本管理:展开的文档行 + const [expandedRows, setExpandedRows] = useState>(new Set()); + // 版本管理:正在加载历史版本的文档 + const [loadingHistory, setLoadingHistory] = useState>(new Set()); // 附件追加和模板上传状态 const [showAttachmentUpload, setShowAttachmentUpload] = useState(false); @@ -240,12 +263,18 @@ export default function DocumentsIndex() { const fetchData = useCallback(async (storedReviewType: string) => { setIsLoadingData(true); loadingBarService.show(); - + try { - // 从loader data中获取用户ID - const userId = loaderData.userInfo?.user_id?.toString(); - - // 构建搜索参数 + // 从 localStorage 获取用户ID(与 token 管理保持一致) + const userId = getUserId(); + if (!userId) { + toastService.error('用户身份验证失败,无法获取文档列表'); + setIsLoadingData(false); + loadingBarService.hide(); + return; + } + + // 构建搜索参数(token 由 axios 拦截器自动从 localStorage 获取) const searchParams = { name: search || undefined, documentNumber: documentNumber || undefined, @@ -257,21 +286,20 @@ export default function DocumentsIndex() { reviewType: storedReviewType || undefined, userId: userId, // 添加用户ID筛选 page: currentPage, - pageSize, - token: loaderData.frontendJWT || undefined // 传递 JWT token + pageSize }; - // 获取文档列表 - const documentsResponse = await getDocuments(searchParams); + // 获取文档列表(带版本信息) + const documentsResponse = await getDocumentsWithVersionInfo(searchParams); if (documentsResponse.error) { throw new Error(documentsResponse.error); } - // 获取经过过滤的文档类型列表 - const filteredTypesResponse = await getDocumentTypes({ - pageSize: 500, - reviewType: storedReviewType || undefined - }, loaderData.frontendJWT || undefined); + // 获取经过过滤的文档类型列表(token 由 axios 拦截器自动获取) + const filteredTypesResponse = await getDocumentTypes({ + pageSize: 500, + reviewType: storedReviewType || undefined + }); const filteredDocumentTypes = filteredTypesResponse.data?.types || []; const filteredOptions = filteredDocumentTypes.map(type => ({ value: type.id, @@ -290,7 +318,7 @@ export default function DocumentsIndex() { setIsLoadingData(false); loadingBarService.hide(); } - }, [search, documentNumber, documentType, auditStatus, fileStatus, dateFrom, dateTo, currentPage, pageSize, loaderData.userInfo]); + }, [search, documentNumber, documentType, auditStatus, fileStatus, dateFrom, dateTo, currentPage, pageSize, getUserId]); // 在组件挂载时从 sessionStorage 获取 reviewType 并加载数据 useEffect(() => { @@ -707,17 +735,17 @@ export default function DocumentsIndex() { // 开始审核 const handleReviewFileClick = async (fileId: number, auditStatus: number | null) => { // 检查audit_status是否为0,如果是则更新为2 - if (auditStatus === 0 || auditStatus === null) { + if (auditStatus === 0 || auditStatus === null) { try { - // 从loader data中获取用户ID - const userId = loaderData.userInfo?.user_id?.toString(); + // 从 localStorage 获取用户ID(与 token 管理保持一致) + const userId = getUserId(); if (!userId) { toastService.error('用户身份验证失败'); return; } - + // console.log('开始审核',fileId,auditStatus) - const response = await updateDocumentAuditStatus(fileId.toString(), 2, userId, loaderData.frontendJWT as string | undefined); + const response = await updateDocumentAuditStatus(fileId.toString(), 2, userId); if (response.error) { console.error('更新文件审核状态失败:', response.error); toastService.error('更新文件审核状态失败:' + (response.error || '未知错误')); @@ -796,8 +824,7 @@ export default function DocumentsIndex() { attachmentFiles, attachmentMergeMode, true, // isReprocess - attachmentRemark || undefined, - loaderData.frontendJWT as string | undefined + attachmentRemark || undefined ); if (result.error) { @@ -868,8 +895,7 @@ export default function DocumentsIndex() { const result = await uploadContractTemplate( templateFile, selectedDocumentId, - undefined, // comparisonId - loaderData.frontendJWT as string | undefined + undefined // comparisonId ); if (result.error) { @@ -896,6 +922,165 @@ export default function DocumentsIndex() { } }; + // 展开/折叠历史版本 + const handleToggleExpand = async (doc: DocumentUI) => { + const newExpanded = new Set(expandedRows); + const newLoading = new Set(loadingHistory); + + if (expandedRows.has(doc.id)) { + // 折叠:移除展开状态 + newExpanded.delete(doc.id); + setExpandedRows(newExpanded); + + // 清空历史版本数据 + setDocuments(prevDocs => + prevDocs.map(d => + d.id === doc.id ? { ...d, historyVersions: undefined, isExpanded: false } : d + ) + ); + } else { + // 展开:加载历史版本 + newExpanded.add(doc.id); + setExpandedRows(newExpanded); + + // 如果还没有加载历史版本,则加载 + if (!doc.historyVersions && doc.historyCount && doc.historyCount > 0) { + newLoading.add(doc.id); + setLoadingHistory(newLoading); + + try { + // 从 localStorage 获取用户ID(与 token 管理保持一致) + const userId = getUserId(); + if (!userId) { + toastService.error('用户身份验证失败'); + newExpanded.delete(doc.id); + setExpandedRows(newExpanded); + newLoading.delete(doc.id); + setLoadingHistory(newLoading); + return; + } + + const result = await getDocumentHistory( + doc.name, + userId, + doc.id + ); + + if (result.data) { + // 更新文档的历史版本数据 + setDocuments(prevDocs => + prevDocs.map(d => + d.id === doc.id + ? { ...d, historyVersions: result.data, isExpanded: true } + : d + ) + ); + } else if (result.error) { + toastService.error(`加载历史版本失败: ${result.error}`); + // 加载失败时取消展开 + newExpanded.delete(doc.id); + setExpandedRows(newExpanded); + } + } catch (error) { + console.error('加载历史版本失败:', error); + toastService.error('加载历史版本失败'); + newExpanded.delete(doc.id); + setExpandedRows(newExpanded); + } finally { + newLoading.delete(doc.id); + setLoadingHistory(newLoading); + } + } else { + // 已经加载过,只更新展开状态 + setDocuments(prevDocs => + prevDocs.map(d => + d.id === doc.id ? { ...d, isExpanded: true } : d + ) + ); + } + } + }; + + // 渲染历史版本行的辅助函数 + const renderHistoryRow = (historyDoc: DocumentVersionUI, parentDoc: DocumentUI) => { + return ( + + + + + +
+ + + v{historyDoc.versionNumber} 版本 + +
+ + {historyDoc.documentNumber} + {formatFileSize(historyDoc.size)} + +
+ + {fileProcessingStatusOptions.find(s => s.value === historyDoc.fileStatus)?.label || '已完成'} +
+ + +
+ + {auditStatusMapping[historyDoc.auditStatus]?.label || '待审核'} +
+ + + + + {historyDoc.uploadTime} + +
+ + + 查看 + + + + 修改 + + + +
+ + + ); + }; + // 表格列定义 const columns = [ @@ -922,31 +1107,56 @@ export default function DocumentsIndex() { key: "name", width:'25%', render: (_: unknown, record: DocumentUI) => ( -
- + {/* 展开/折叠图标(仅在有历史版本时显示) */} + {record.historyCount && record.historyCount > 0 ? ( + loadingHistory.has(record.id) ? ( + + ) : ( + handleToggleExpand(record)} + title={expandedRows.has(record.id) ? '折叠历史版本' : '展开历史版本'} + > + ) + ) : ( + + )} + + -
- {record.name} -
- + + {record.name} + +
+ {record.isTest && ( - 测试 + 测试 )} -
+ {/* 版本徽章 - 始终显示 */} + {record.historyCount !== undefined && record.historyCount > 0 ? + + + v{record.historyCount + 1} {record.historyCount !== undefined && `(共${record.historyCount}个历史版本)`} + : "" + } +
) @@ -1004,9 +1214,26 @@ export default function DocumentsIndex() { { title: "问题数量", key: "issues", - width:"7%", + width:"10%", render: (_: unknown, record: DocumentUI) => ( - record.issues === null ? "-" : record.issues + record.previousIssues + ? 'increase' + : record.issues < record.previousIssues + ? 'decrease' + : 'same' + : undefined + } + /> ) }, { @@ -1236,13 +1463,57 @@ export default function DocumentsIndex() {
{isLoadingData && documents.length === 0 ? ( + ) : documents.length === 0 ? ( +
+ {isLoadingData ? "加载中..." : "暂无数据"} +
) : ( - +
+ + + {columns.map((col, index) => ( + + ))} + + + + {documents.map((doc) => ( + <> + {/* 主文档行 */} + + {columns.map((col, index) => ( + + ))} + + {/* 历史版本行 */} + {doc.isExpanded && doc.historyVersions && doc.historyVersions.length > 0 && ( + <> + {doc.historyVersions.map((historyDoc) => renderHistoryRow(historyDoc, doc))} + + )} + {/* 正在加载历史版本 */} + {doc.isExpanded && loadingHistory.has(doc.id) && ( + + + + )} + + ))} + +
+ {col.title} +
+ {col.render ? col.render(null, doc, index) : (doc as any)[col.key]} +
+
+ + 加载历史版本中... +
+
)}
diff --git a/app/routes/documents.upload.tsx b/app/routes/documents.upload.tsx deleted file mode 100644 index 9a7a88c..0000000 --- a/app/routes/documents.upload.tsx +++ /dev/null @@ -1,632 +0,0 @@ -import { useState, useRef, useCallback } from "react"; -import { type ActionFunctionArgs, type MetaFunction, json } from "@remix-run/node"; -import { Form, useActionData, useNavigation, useSubmit } from "@remix-run/react"; -import { Card } from "~/components/ui/Card"; -import { Button } from "~/components/ui/Button"; -import { Alert } from "~/components/ui/Alert"; -import { UploadArea, type UploadAreaRef } from "~/components/ui/UploadArea"; -import { FileProgress } from "~/components/ui/FileProgress"; -import { FileTag } from "~/components/ui/FileTag"; -import documentUploadStyles from "~/styles/pages/document-upload.css?url"; - -export const links = () => [ - { rel: "stylesheet", href: documentUploadStyles } -]; - -export const meta: MetaFunction = () => { - return [ - { title: "上传文档 - 中国烟草AI合同及卷宗审核系统" }, - { name: "description", content: "上传文档进行AI审核" } - ]; -}; - -export const handle = { - breadcrumb: "上传文档" -}; - -// 模拟API支持的文件类型 -const SUPPORTED_FILE_TYPES = [ - { id: "1", name: "销售合同" }, - { id: "2", name: "采购合同" }, - { id: "3", name: "专卖许可证" }, - { id: "4", name: "行政处罚决定书" }, - { id: "5", name: "承包协议" } -]; - -// 模拟API支持的存储类型 -const STORAGE_TYPES = [ - { id: "minio", name: "MinIO对象存储" }, - { id: "local", name: "本地文件系统" }, - { id: "s3", name: "Amazon S3" } -]; - -// 文件上传完成后的操作选项 -const AFTER_UPLOAD_OPTIONS = [ - { id: "list", name: "返回文档列表" }, - { id: "stay", name: "留在当前页面" }, - { id: "audit", name: "立即开始审核" } -]; - -// 定义接口 -interface UploadedFile { - id: string; - name: string; - size: number; - status: "waiting" | "uploading" | "success" | "error"; - progress: number; - error?: string; - newName?: string; - type: string; -} - -interface ActionData { - success?: boolean; - error?: string; - files?: UploadedFile[]; -} - -// Action函数处理表单提交 -export const action = async ({ request }: ActionFunctionArgs) => { - // 在实际应用中,这里应该处理文件上传逻辑 - // 例如使用FormData API获取文件并调用后端API - - try { - const formData = await request.formData(); - const docType = formData.get("docType") as string; - const docNumber = formData.get("docNumber") as string; - const docRemark = formData.get("docRemark") as string; - const isTestDocument = formData.get("isTestDocument") === "true"; - const storageType = formData.get("storageType") as string; - const afterUpload = formData.get("afterUpload") as string; - - // 在真实情况下,这里将处理文件上传 - // 由于Remix在服务器端不直接处理文件,我们将在客户端处理文件上传 - // 然后将文件信息发送给服务器 - - // 模拟处理过程 - await new Promise(resolve => setTimeout(resolve, 1000)); - - return json({ - success: true, - files: [] // 服务器处理的文件列表将返回这里 - }); - } catch (error) { - console.error("Upload error:", error); - return json( - { - success: false, - error: error instanceof Error ? error.message : "文件上传过程中发生错误" - }, - { status: 400 } - ); - } -}; - -// 格式化文件大小 -function formatFileSize(bytes: number): string { - if (bytes === 0) return "0 Bytes"; - - const k = 1024; - const sizes = ["Bytes", "KB", "MB", "GB"]; - const i = Math.floor(Math.log(bytes) / Math.log(k)); - - return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i]; -} - -// 获取文件扩展名 -function getFileExtension(filename: string): string { - return filename.split('.').pop()?.toLowerCase() || ""; -} - -// 检查文件类型是否支持 -function isFileTypeSupported(filename: string): boolean { - const ext = getFileExtension(filename); - return ["pdf", "doc", "docx", "txt"].includes(ext); -} - -export default function DocumentUpload() { - const actionData = useActionData(); - const navigation = useNavigation(); - const submit = useSubmit(); - const uploading = navigation.state === "submitting"; - - const [files, setFiles] = useState([]); - const [showAdvancedOptions, setShowAdvancedOptions] = useState(false); - const [isTestDocument, setIsTestDocument] = useState(false); - const [uploadComplete, setUploadComplete] = useState(false); - const [selectedFileIds, setSelectedFileIds] = useState([]); - - const uploadAreaRef = useRef(null); - const formRef = useRef(null); - - // 处理文件选择 - const handleFilesSelected = useCallback((fileList: FileList) => { - const newFiles: UploadedFile[] = []; - - Array.from(fileList).forEach(file => { - // 检查文件类型 - if (!isFileTypeSupported(file.name)) { - alert(`不支持的文件类型: ${file.name}\n请上传PDF、DOC、DOCX或TXT格式文件`); - return; - } - - // 检查文件大小 - if (file.size > 50 * 1024 * 1024) { // 50MB - alert(`文件过大: ${file.name}\n文件大小不能超过50MB`); - return; - } - - // 检查是否已添加 - const isDuplicate = files.some(f => f.name === file.name && f.size === file.size); - if (isDuplicate) { - alert(`文件已添加: ${file.name}`); - return; - } - - // 添加新文件 - newFiles.push({ - id: `file-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`, - name: file.name, - size: file.size, - status: "waiting", - progress: 0, - type: getFileExtension(file.name) - }); - }); - - setFiles(prev => [...prev, ...newFiles]); - // 重置文件输入,允许再次选择相同文件 - uploadAreaRef.current?.resetFileInput(); - }, [files]); - - // 移除文件 - const removeFile = useCallback((fileId: string) => { - setFiles(prev => prev.filter(file => file.id !== fileId)); - setSelectedFileIds(prev => prev.filter(id => id !== fileId)); - }, []); - - // 批量删除文件 - const removeSelectedFiles = useCallback(() => { - if (selectedFileIds.length === 0) return; - - if (confirm(`确定要删除选中的 ${selectedFileIds.length} 个文件吗?`)) { - setFiles(prev => prev.filter(file => !selectedFileIds.includes(file.id))); - setSelectedFileIds([]); - } - }, [selectedFileIds]); - - // 清空文件列表 - const clearAllFiles = useCallback(() => { - if (files.length === 0) return; - - if (confirm('确定要清空文件列表吗?')) { - setFiles([]); - setSelectedFileIds([]); - } - }, [files.length]); - - // 切换文件选择 - const toggleFileSelection = useCallback((fileId: string, selected: boolean) => { - if (selected) { - setSelectedFileIds(prev => [...prev, fileId]); - } else { - setSelectedFileIds(prev => prev.filter(id => id !== fileId)); - } - }, []); - - // 更新文件名 - const updateFileName = useCallback((fileId: string, newName: string) => { - setFiles(prev => - prev.map(file => - file.id === fileId - ? { ...file, newName: newName + '.' + getFileExtension(file.name) } - : file - ) - ); - }, []); - - // 提交表单 - const handleSubmit = useCallback((event: React.FormEvent) => { - event.preventDefault(); - - const form = event.currentTarget; - const docType = form.docType.value; - - // 表单验证 - if (!docType) { - alert('请选择文档类型'); - return; - } - - if (files.length === 0) { - alert('请至少上传一个文档'); - return; - } - - // 创建FormData对象 - const formData = new FormData(form); - formData.append("isTestDocument", isTestDocument.toString()); - - // 在实际应用中,这里应该处理文件上传 - // 如果Remix不能直接处理文件上传,可以考虑使用预签名URL或其他方法 - // 这里我们模拟文件上传进度 - simulateUpload(); - - // 提交表单 - submit(formData, { method: "post", encType: "multipart/form-data" }); - }, [files.length, isTestDocument, submit]); - - // 模拟文件上传进度 - const simulateUpload = useCallback(() => { - const updatedFiles = [...files]; - - // 设置所有文件为上传中状态 - updatedFiles.forEach(file => { - file.status = "uploading"; - file.progress = 0; - }); - - setFiles(updatedFiles); - - // 模拟进度更新 - const interval = setInterval(() => { - setFiles(prevFiles => { - const newFiles = [...prevFiles]; - let allComplete = true; - - newFiles.forEach(file => { - if (file.status === "uploading") { - // 增加进度 - file.progress += Math.random() * 10; - - if (file.progress >= 100) { - file.progress = 100; - - // 模拟有10%概率上传失败 - if (Math.random() > 0.9) { - file.status = "error"; - file.error = "上传失败,请重试"; - } else { - file.status = "success"; - } - } else { - allComplete = false; - } - } - }); - - // 如果所有文件都完成了,停止定时器 - if (allComplete) { - clearInterval(interval); - setTimeout(() => { - // 检查是否有文件上传错误 - const hasErrors = newFiles.some(file => file.status === "error"); - if (!hasErrors) { - setUploadComplete(true); - } - }, 1000); - } - - return newFiles; - }); - }, 200); - }, [files]); - - // 重新上传文件 - const retryUpload = useCallback((fileId: string) => { - setFiles(prev => - prev.map(file => - file.id === fileId - ? { ...file, status: "uploading", progress: 0, error: undefined } - : file - ) - ); - - // 模拟重新上传 - setTimeout(() => { - setFiles(prev => - prev.map(file => { - if (file.id === fileId) { - const success = Math.random() > 0.1; - return { - ...file, - status: success ? "success" : "error", - progress: 100, - error: success ? undefined : "上传失败,请重试" - }; - } - return file; - }) - ); - }, 2000); - }, []); - - // 重置表单,继续上传 - const resetForm = useCallback(() => { - setFiles([]); - setUploadComplete(false); - setSelectedFileIds([]); - formRef.current?.reset(); - }, []); - - return ( -
-
-

上传文档

-
- - -
-
- - - {!uploadComplete ? ( -
-
-
- - -
不同文档类型应用不同的评查规则
-
- -
- - -
如无编号可留空,系统将自动识别
-
-
- -
- - -
- -
- - - - -
- - 标记为测试文档(不计入正式统计) -
- - {files.length > 0 && ( -
-
- 已选择 {selectedFileIds.length} 个文件 -
-
- - -
-
- )} - -
- {files.map(file => ( -
- toggleFileSelection(file.id, e.target.checked)} - disabled={uploading || file.status === "uploading"} - className="mr-3" - /> - - - -
-
- {file.newName || file.name} - {file.status !== "uploading" && ( - - )} -
- -
- {formatFileSize(file.size)} - - {file.status === "waiting" && "等待上传"} - {file.status === "uploading" && "上传中..."} - {file.status === "success" && "上传成功"} - {file.status === "error" && ( - <> - {file.error} - - - )} - -
- -
-
-
-
- -
- -
-
- ))} -
-
- -
-
setShowAdvancedOptions(!showAdvancedOptions)} - > - 高级上传设置 - -
- -
-
-
- - -
选择文档的存储位置
-
- -
- - -
上传完成后自动执行的操作
-
-
-
-
-
- ) : ( -
- - 所有文件上传成功! - - -
- - - -
-
- )} -
-
- ); -} diff --git a/app/routes/examples/TooltipExample.tsx b/app/routes/examples/TooltipExample.tsx deleted file mode 100644 index 6c8c6ac..0000000 --- a/app/routes/examples/TooltipExample.tsx +++ /dev/null @@ -1,236 +0,0 @@ -import { Tooltip } from '../../components/ui/Tooltip'; - -/** - * Tooltip 组件示例 - * 展示不同主题、位置和风格的提示框 - */ -export function TooltipExample() { - return ( -
-

Tooltip 组件示例

- -
- {/* 基础提示框 */} -
-

基础提示框

-
- - - - - - - -
-
- - {/* 不同位置 */} -
-

不同位置

-
- - - - - - - - - - - - - - - -
-
- - {/* 不同主题 */} -
-

不同主题

-
- - - 深色 - - - - - - 浅色 - - - - - - 主题色 - - - - - - 成功 - - - - - - 警告 - - - - - - 错误 - - - - - - 信息 - - -
-
- - {/* 富文本提示框 */} -
-

富文本提示框

-
- -
- CPU使用率: - 32% -
-
- 内存使用率: - 76% -
-
- 磁盘空间: - 245GB/500GB -
-
- } - theme="light" - rich={true} - header="系统性能报告" - footer="更新时间: 2023-10-15 15:30:42" - showArrow={true} - > - - - - -
- 本月销售额: - ¥258,432 -
-
- 环比增长: - +15.8% -
-
- 销售热点: - 电子产品 -
-
- } - theme="dark" - rich={true} - header="销售数据分析" - footer="数据来源: 销售管理系统" - placement="bottom" - > - - -
-
- - {/* 条件渲染示例 */} -
-

状态提示示例

-
- - 95 - - - - 75 - - - - 45 - -
-
- - {/* 自定义样式示例 */} -
-

自定义样式

-
- - - 自定义宽度 - - - - - - 无箭头 - - - - - - 自定义类名 - - -
-
-
-
- ); -} - -export default TooltipExample; \ No newline at end of file diff --git a/app/routes/examples/message-modal.tsx b/app/routes/examples/message-modal.tsx deleted file mode 100644 index 7a8e958..0000000 --- a/app/routes/examples/message-modal.tsx +++ /dev/null @@ -1,204 +0,0 @@ -import { useState } from 'react'; -import { MessageModal, messageService, MessageModalProvider } from '~/components/ui/MessageModal'; -import type { MessageType } from '~/components/ui/MessageModal'; -import { LinksFunction } from '@remix-run/node'; -import messageModalStyles from '~/styles/components/message-modal.css?url'; - -export const links: LinksFunction = () => [ - { rel: "stylesheet", href: messageModalStyles }, -]; - -export default function MessageModalExample() { - const [isModalOpen, setIsModalOpen] = useState(false); - const [modalType, setModalType] = useState('info'); - const [modalTitle, setModalTitle] = useState(''); - const [modalMessage, setModalMessage] = useState(''); - const [withConfirm, setWithConfirm] = useState(false); - const [autoClose, setAutoClose] = useState(false); - - // 打开普通模态框 - const openModal = (type: MessageType, title: string, message: string) => { - setModalType(type); - setModalTitle(title); - setModalMessage(message); - setIsModalOpen(true); - }; - - // 打开各类型的服务提示框 - const showSuccessMessage = () => { - messageService.success('操作成功完成!', { - title: '成功提示', - autoClose: true - }); - }; - - const showErrorMessage = () => { - messageService.error('操作过程中发生错误,请重试。', { - title: '错误提示' - }); - }; - - const showWarningMessage = () => { - messageService.warning('此操作可能产生不可逆转的结果。', { - title: '警告提示', - onConfirm: () => { - messageService.success('您已确认继续操作') - }, - confirmText: '继续操作', - cancelText: '取消' - }); - }; - - const showInfoMessage = () => { - messageService.info('系统将于今晚10点进行升级维护。', { - title: '通知', - autoClose: true, - autoCloseDelay: 5000 - }); - }; - - const showCustomMessage = () => { - messageService.show({ - title: '自定义消息', - message: '这是一个带有自定义内容的消息', - type: 'info', - confirmText: '了解', - children: ( -
-

这里可以放置更复杂的自定义内容。

-
- - 比如详细的操作说明或其他信息。 -
-
- ) - }); - }; - - // 处理确认 - const handleConfirm = () => { - messageService.success('您点击了确认按钮!', { autoClose: true }); - setIsModalOpen(false); - }; - - return ( - -
-

消息模态框示例

- -
-

基本用法

-

您可以直接使用MessageModal组件来控制模态框的显示和隐藏。

- -
- - - - -
- -
- - - -
- - setIsModalOpen(false)} - title={modalTitle} - message={modalMessage} - type={modalType} - autoClose={autoClose} - onConfirm={withConfirm ? handleConfirm : undefined} - confirmText={withConfirm ? "确认" : "我知道了"} - cancelText="取消" - /> -
- -
-

全局消息服务

-

使用messageService可以在任何组件中方便地显示消息提示,而无需手动管理状态。

- -
- - - - - -
-
-
-
- ); -} \ No newline at end of file diff --git a/app/routes/examples/pdfview.tsx b/app/routes/examples/pdfview.tsx deleted file mode 100644 index 5f02fdd..0000000 --- a/app/routes/examples/pdfview.tsx +++ /dev/null @@ -1,192 +0,0 @@ -import React, { useEffect, useRef, useState, useCallback } from 'react'; -import { createPortal } from 'react-dom'; -import { Spin, Tooltip, Input } from 'antd'; -import { - LeftOutlined, - RightOutlined, - PlusCircleOutlined, - MinusCircleOutlined, - FullscreenExitOutlined, - FullscreenOutlined, - CloseCircleOutlined, - ExclamationCircleOutlined, - RotateLeftOutlined, - RotateRightOutlined, - UnorderedListOutlined, -} from '@ant-design/icons'; -import './index.less'; -import { Document, Page, pdfjs } from 'react-pdf'; -import pdfjsWorker from 'react-pdf/dist/esm/pdf.worker.entry'; - -pdfjs.GlobalWorkerOptions.workerSrc = pdfjsWorker; - -const PDFView = ({ - file, - parentDom, - onClose, -}: { - file?: string | null; - parentDom?: HTMLDivElement | null; - onClose?: () => void; -}) => { - const defaultWidth = 600; - const pageDiv = useRef(null); - const [numPages, setNumPages] = useState(0); - const [pageNumber, setPageNumber] = useState(1); - const [pageWidth, setPageWidth] = useState(defaultWidth); - const [fullscreen, setFullscreen] = useState(false); - const [rotation, setRotation] = useState(0); - const [showThumbnails, setShowThumbnails] = useState(false); - const [visiblePages, setVisiblePages] = useState([1]); // 控制可见页面 - - const parent = parentDom || document.body; - - // 加载 PDF 元信息,不渲染全部页面 - const onDocumentLoadSuccess = useCallback(({ numPages }: { numPages: number }) => { - setNumPages(numPages); - }, []); - - const lastPage = () => pageNumber > 1 && setPageNumber(pageNumber - 1); - const nextPage = () => pageNumber < numPages && setPageNumber(pageNumber + 1); - const onPageNumberChange = (e: { target: { value: string } }) => { - let value = Math.max(1, Math.min(numPages, Number(e.target.value) || 1)); - setPageNumber(value); - setVisiblePages([value]); // 只加载当前页 - }; - - const pageZoomIn = () => setPageWidth(pageWidth * 1.2); - const pageZoomOut = () => pageWidth > defaultWidth && setPageWidth(pageWidth * 0.8); - const pageFullscreen = () => { - setPageWidth(fullscreen ? defaultWidth : parent.offsetWidth - 50); - setFullscreen(!fullscreen); - }; - - const rotateLeft = () => setRotation((prev) => (prev - 90) % 360); - const rotateRight = () => setRotation((prev) => (prev + 90) % 360); - const toggleThumbnails = () => setShowThumbnails(!showThumbnails); - - // 动态更新可见页面 - useEffect(() => { - if (!showThumbnails) { - setVisiblePages([pageNumber]); - } else { - // 缩略图模式下限制加载数量,避免卡顿 - const start = Math.max(1, pageNumber - 2); - const end = Math.min(numPages, pageNumber + 2); - setVisiblePages(Array.from({ length: end - start + 1 }, (_, i) => start + i)); - } - }, [pageNumber, showThumbnails, numPages]); - - useEffect(() => setPageNumber(1), [file]); - useEffect(() => { - if( pageDiv.current){ - (pageDiv.current.scrollTop = 0) - } - }, [pageNumber]); - - const renderContent=()=>(
-
-
-
- - -
- } - loading={
} - > - {showThumbnails ? ( -
- {Array.from({ length: numPages }, (_, i) => i + 1).map((page) => ( -
{ - setPageNumber(page); - setShowThumbnails(false); - }} - > - {visiblePages.includes(page) ? ( - } - renderTextLayer={false} // 禁用文本层,提升性能 - renderAnnotationLayer={false} // 禁用注释层 - /> - ) : ( -
第 {page} 页
- )} - 第 {page} 页 -
- ))} -
- ) : ( - } - renderTextLayer={false} // 禁用文本层 - renderAnnotationLayer={false} // 禁用注释层 - error={() => setPageNumber(1)} - /> - )} - -
-
-
-
- - - - {' '} - / {numPages} - - - - - - - - - - - - - - - - - - - - {fullscreen ? : } - - {onClose && ( - - - - )} -
-
-
- ) - if(parentDom){ - return renderContent() - } - return createPortal( - renderContent(), - parent,) -}; - -export default PDFView; \ No newline at end of file diff --git a/app/routes/examples/toast.tsx b/app/routes/examples/toast.tsx deleted file mode 100644 index fe5108b..0000000 --- a/app/routes/examples/toast.tsx +++ /dev/null @@ -1,164 +0,0 @@ -import { useState } from 'react'; -import { Toast, toastService } from '~/components/ui/Toast'; -import type { ToastType } from '~/components/ui/Toast'; -import { LinksFunction } from '@remix-run/node'; -import toastStyles from '~/styles/components/toast.css?url'; - -export const links: LinksFunction = () => [ - { rel: "stylesheet", href: toastStyles }, -]; - -export default function ToastExample() { - const [isToastOpen, setIsToastOpen] = useState(false); - const [toastType, setToastType] = useState('info'); - const [toastMessage, setToastMessage] = useState(''); - const [autoClose, setAutoClose] = useState(true); - - // 打开普通通知 - const openToast = (type: ToastType, message: string) => { - setToastType(type); - setToastMessage(message); - setIsToastOpen(true); - }; - - // 使用服务显示不同类型通知 - const showSuccessToast = () => { - toastService.success('操作成功完成!'); - }; - - const showErrorToast = () => { - toastService.error('操作过程中发生错误,请重试。'); - }; - - const showWarningToast = () => { - toastService.warning('此操作可能产生不可逆转的结果。'); - }; - - const showInfoToast = () => { - toastService.info('系统将于今晚10点进行升级维护。'); - }; - - // 显示多行文本的长通知 - const showLongToast = () => { - toastService.info('这是一个具有很长内容的通知,将自动换行以适应容器宽度,并且最多显示三行,超出部分会被截断。系统会自动处理长文本的换行和截断,确保显示效果一致。'); - }; - - // 短时间内显示多个通知 - const showMultipleToasts = () => { - toastService.success('第一条通知'); - setTimeout(() => { - toastService.info('第二条通知'); - }, 300); - setTimeout(() => { - toastService.warning('第三条通知'); - }, 600); - setTimeout(() => { - toastService.error('第四条通知'); - }, 900); - }; - - return ( -
-

轻量级顶部通知示例

- -
-

基本用法

-

您可以直接使用Toast组件来控制通知的显示和隐藏。

- -
- - - - -
- -
- -
- - setIsToastOpen(false)} - message={toastMessage} - type={toastType} - autoClose={autoClose} - /> -
- -
-

全局通知服务

-

使用toastService可以在任何组件中方便地显示通知,而无需手动管理状态。

- -
- - - - -
- -
- - -
-
-
- ); -} \ No newline at end of file diff --git a/app/routes/home.tsx b/app/routes/home.tsx index dc5c5d5..5bd9c8e 100644 --- a/app/routes/home.tsx +++ b/app/routes/home.tsx @@ -366,17 +366,17 @@ export default function Home() {
- +
- + {/* 最近文档区域 */} - 查看全部} + 查看全部} className="mt-6" >
diff --git a/app/routes/login.tsx b/app/routes/login.tsx index 20833a3..a561092 100644 --- a/app/routes/login.tsx +++ b/app/routes/login.tsx @@ -1,9 +1,10 @@ import { useEffect, useState } from "react"; -import { useActionData, useLoaderData, Form } from "@remix-run/react"; +import { useLoaderData, useNavigate, useFetcher } from "@remix-run/react"; import { type MetaFunction, type LoaderFunctionArgs, type ActionFunctionArgs, redirect } from "@remix-run/node"; import { OAuthClient } from "~/api/login/oauth-client"; import { CLIENT_OAUTH_CONFIG } from "~/config/api-config"; -import { getUserSession, getSession, simpleRootLogin } from "~/api/login/auth.server"; +import { getUserSession, getSession, createUserSession } from "~/api/login/auth.server"; +import { loginWithPassword } from "~/api/login/login-client"; import styles from "~/styles/pages/login.css?url"; import { toastService } from "~/components/ui"; @@ -18,31 +19,24 @@ export const meta: MetaFunction = () => { ]; }; -// 加载器,获取当前会话状态 +// 加载器,获取重定向URL和错误信息 export async function loader({ request }: LoaderFunctionArgs) { - const { isAuthenticated } = await getUserSession(request); - - // 如果已登录,重定向到首页 - if (isAuthenticated) { - return redirect("/"); - } + // ⚠️ 不再检查服务端 session 认证 + // 认证检查改为在客户端通过 localStorage 进行 - // 获取重定向URL并保存到session + // 获取重定向URL const url = new URL(request.url); const redirectTo = url.searchParams.get("redirect") || "/"; - + const session = await getSession(request); - + // 读取 flash 消息(来自 callback 的错误) const loginError = session.get("loginError"); - - session.set("redirectTo", redirectTo); - + // 提交 session 以清除 flash 消息 if (loginError) { const { sessionStorage } = await import("~/api/login/auth.server"); - return Response.json({ - isAuthenticated: false, + return Response.json({ redirectTo, flashError: loginError }, { @@ -51,65 +45,141 @@ export async function loader({ request }: LoaderFunctionArgs) { } }); } - - return Response.json({ - isAuthenticated: false, + + return Response.json({ redirectTo, flashError: null }); } -// 处理表单提交的action函数 +// 处理管理员账密登录 export async function action({ request }: ActionFunctionArgs) { - const formData = await request.formData(); - const intent = formData.get("intent"); - const username = formData.get("username")?.toString().trim(); - const password = formData.get("password")?.toString().trim(); + try { + const formData = await request.formData(); + const username = formData.get("username") as string; + const password = formData.get("password") as string; + const redirectTo = formData.get("redirectTo") as string || "/"; - if (intent === "password_login") { - // 获取重定向目标 - const session = await getSession(request); - const redirectTo = session.get("redirectTo") || "/"; - - // 调用 simpleRootLogin 方法进行登录 - const response = await simpleRootLogin(username || "", password || "", redirectTo); - - // 检查响应状态 - if (response.status === 302) { - // 登录成功,直接返回重定向响应 - return response; - } else { - // 登录失败,返回错误信息(不再使用URL参数) - const errorData = await response.json(); + // 验证输入 + if (!username?.trim()) { return Response.json({ success: false, - error: errorData.error || "登录失败", - retryCount: errorData.retryCount || 0, - isLocked: errorData.isLocked || false, - remainingAttempts: errorData.remainingAttempts || 5 - }, { - status: response.status - }); + error: "请输入用户名" + }, { status: 400 }); } - } - return null; + if (!password?.trim()) { + return Response.json({ + success: false, + error: "请输入密码" + }, { status: 400 }); + } + + console.log("📝 [Login Action] 开始处理管理员登录:", { username }); + + // 调用后端登录接口 + const response = await loginWithPassword(username.trim(), password.trim()); + + if (!response.success || !response.data) { + console.error("❌ [Login Action] 登录失败:", response.error); + return Response.json({ + success: false, + error: response.error || "登录失败,请检查用户名和密码" + }, { status: 401 }); + } + + const { access_token, user_info } = response.data; + + // 验证返回数据 + if (!access_token) { + console.error("❌ [Login Action] 后端未返回 access_token"); + return Response.json({ + success: false, + error: "登录失败:未获取到认证令牌" + }, { status: 500 }); + } + + if (!user_info) { + console.error("❌ [Login Action] 后端未返回 user_info"); + return Response.json({ + success: false, + error: "登录失败:未获取到用户信息" + }, { status: 500 }); + } + + console.log("✅ [Login Action] 登录成功,准备创建 session"); + console.log("👤 [Login Action] 用户角色:", user_info.user_role); // 应该是 "admin" + + // 获取当前 URL 用于构建 callback URL + const url = new URL(request.url); + + // 🔑 重要:将 token 和用户信息作为 URL 参数传递给客户端 + // 复用 OAuth 登录的 callback 页面逻辑 + const callbackUrl = new URL('/callback', url.origin); + callbackUrl.searchParams.set('token', access_token); + callbackUrl.searchParams.set('userInfo', encodeURIComponent(JSON.stringify({ + user_id: user_info.user_id, + username: user_info.username, + nick_name: user_info.nick_name, + email: user_info.email, + phone_number: user_info.phone_number, + ou_id: user_info.ou_id, + ou_name: user_info.ou_name, + is_leader: user_info.is_leader, + user_role: user_info.user_role, + sub: user_info.sub + }))); + callbackUrl.searchParams.set('redirectTo', redirectTo); + + // ✅ 使用统一的 session 创建函数(和 OAuth 登录一样) + return createUserSession({ + isAuthenticated: true, + userRole: user_info.user_role, + redirectTo: callbackUrl.toString(), // 先跳转到 callback 页面保存 token + frontendJWT: access_token, // 保存到 Cookie Session + userInfo: { + user_id: user_info.user_id, + username: user_info.username, + nick_name: user_info.nick_name, + email: user_info.email, + phone_number: user_info.phone_number, + ou_id: user_info.ou_id, + ou_name: user_info.ou_name, + is_leader: user_info.is_leader, + user_role: user_info.user_role, + sub: user_info.sub + } + }); + + } catch (error) { + console.error("❌ [Login Action] 处理登录时发生异常:", error); + return Response.json({ + success: false, + error: error instanceof Error ? error.message : "登录失败,请稍后重试" + }, { status: 500 }); + } } export default function Login() { - const actionData = useActionData(); + const navigate = useNavigate(); const loaderData = useLoaderData(); + const fetcher = useFetcher<{ success: boolean; error?: string }>(); const [isFlipped, setIsFlipped] = useState(false); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); - - // 从 actionData 或 loaderData 中获取错误信息 - // actionData 的错误优先(来自密码登录) - // loaderData.flashError 次之(来自 OAuth 回调) - const error = actionData?.error || loaderData?.flashError; - const isLocked = actionData?.isLocked || false; - const retryCount = actionData?.retryCount || 0; - const remainingAttempts = actionData?.remainingAttempts || 5; + const [passwordLoginError, setPasswordLoginError] = useState(null); + + // 从 loaderData 中获取 OAuth 回调的错误信息 + const oauthError = loaderData?.flashError; + + // 显示的错误信息:密码登录错误优先,其次是 OAuth 错误 + const error = passwordLoginError || oauthError; + const isLocked = false; // 可以从后端响应中获取 + const retryCount = 0; + const remainingAttempts = 5; + + // 监听 fetcher 的状态 + const isLoading = fetcher.state === "submitting" || fetcher.state === "loading"; // 处理OAuth2.0登录 const handleOAuthLogin = () => { @@ -148,29 +218,55 @@ export default function Login() { // 处理账号密码登录表单提交 const handlePasswordLoginSubmit = (e: React.FormEvent) => { + e.preventDefault(); + + // 清除之前的错误 + setPasswordLoginError(null); + // 检查账户是否被锁定 if (isLocked) { - e.preventDefault(); toastService.error("账户已被锁定,请联系管理员"); return; } - + // 客户端验证 if (!username.trim()) { - e.preventDefault(); toastService.error("请输入用户名"); return; } - + if (!password.trim()) { - e.preventDefault(); toastService.error("请输入密码"); return; } - - // 验证通过,让表单正常提交 + + console.log("📝 [Login] 提交管理员登录表单"); + + // ✅ 使用 fetcher 提交表单到服务端 action + const formData = new FormData(); + formData.append("username", username.trim()); + formData.append("password", password.trim()); + formData.append("redirectTo", loaderData?.redirectTo || "/"); + + fetcher.submit(formData, { + method: "post", + action: "/login" + }); }; + // 处理 fetcher 响应 + useEffect(() => { + if (fetcher.data) { + if (!fetcher.data.success && fetcher.data.error) { + // 登录失败,显示错误 + console.error("❌ [Login] 登录失败:", fetcher.data.error); + setPasswordLoginError(fetcher.data.error); + toastService.error(fetcher.data.error); + } + // 登录成功的情况由 action 中的 redirect 处理,会自动跳转到 callback 页面 + } + }, [fetcher.data]); + useEffect(() => { // 检查OAuth配置是否完整(客户端不需要检查 clientSecret) if (!CLIENT_OAUTH_CONFIG.serverUrl || !CLIENT_OAUTH_CONFIG.clientId) { @@ -279,9 +375,7 @@ export default function Login() {
)} -
- - +
setUsername(e.target.value)} className="form-input" placeholder="请输入用户名" + disabled={isLoading} required />
- +
setPassword(e.target.value)} className="form-input" placeholder="请输入密码" + disabled={isLoading} required />
- - {isLocked && ( @@ -334,7 +430,7 @@ export default function Login() { 账户已被锁定,请联系管理员解锁 )} -
+
- - - - 下载文档 - -
- - - ) : fileType === "pdf" ? ( - /* PDF 文档渲染 */ - { - console.error("PDF加载错误:", error); - setLoadError("PDF文档加载失败:" + (error.message || "未知错误")); - }} - className="flex flex-col items-center" - error={
PDF文档加载失败,请检查链接或网络连接。
} - noData={
无数据
} - loading={
PDF加载中...
} - > - {renderAllPages()} -
- ) : ( - /* Word 文档渲染 */ - <> - {docxLoading ? ( - /* 加载状态显示 */ -
-
-
-
-

Word文档加载中...

- {debugInfo.length > 0 && ( -
-

加载过程:

- {debugInfo.map((info, index) => ( -
{info}
- ))} -
- )} -
- ) : ( - /* 本地渲染的Word文档 */ -
- )} - - )} -
- - - - {/* 抽取内容区域 - 始终显示,但DOCX模式下不交互 */} -
-

抽取内容

-
    - {extractedContent.map((item) => ( - - ))} -
-
- - {/* 添加自定义样式 */} - +``` + +--- + +## 3. RBAC动态路由对接 + +### 3.1 获取用户路由 + +**端点**: +- `GET /user/routes` (别名,推荐) +- `GET /rbac/user/routes` (完整路径) + +**请求头**: +``` +Authorization: Bearer {JWT_TOKEN} +``` + +**响应格式**: + +```typescript +interface RouteResponse { + code: number; // 200表示成功 + msg: string; // 操作消息 + data: { + user_id: number; + username: string; + routes: RouteInfo[]; // 路由树 + }; +} + +interface RouteInfo { + id: number; + route_path: string; // 路由路径,如 "/home" + route_name: string; // 路由名称,如 "Home" + component?: string; // 组件路径,如 "views/Home.vue" + parent_id?: number; // 父路由ID + route_title: string; // 路由标题,用于菜单显示 + icon?: string; // 图标,如 "el-icon-house" + sort_order: number; // 排序 + is_hidden: boolean; // 是否隐藏(不在菜单显示) + is_cache: boolean; // 是否缓存 + meta?: any; // 其他元信息 + children?: RouteInfo[]; // 子路由 +} +``` + +**响应示例**: + +```json +{ + "code": 200, + "msg": "操作成功", + "data": { + "user_id": 6, + "username": "001", + "routes": [ + { + "id": 1, + "route_path": "/", + "route_name": "Layout", + "component": "layout/index", + "route_title": "入口页", + "icon": "el-icon-s-home", + "sort_order": 1, + "is_hidden": false, + "is_cache": true, + "children": [ + { + "id": 2, + "route_path": "/home", + "route_name": "Home", + "component": "views/Home", + "parent_id": 1, + "route_title": "系统首页", + "icon": "el-icon-house", + "sort_order": 2, + "is_hidden": false, + "is_cache": true + }, + { + "id": 3, + "route_path": "/dashboard", + "route_name": "Dashboard", + "component": "views/Dashboard", + "parent_id": 1, + "route_title": "工作台", + "icon": "el-icon-data-line", + "sort_order": 3, + "is_hidden": false, + "is_cache": true + } + ] + } + ] + } +} +``` + +### 3.2 路由注册最佳实践 + +#### 3.2.1 路由守卫配置(router/index.ts) + +```typescript +import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'; +import { useUserStore } from '@/stores/user'; +import { ElMessage } from 'element-plus'; + +// 静态路由(不需要权限的页面) +const constantRoutes: RouteRecordRaw[] = [ + { + path: '/login', + name: 'Login', + component: () => import('@/views/Login.vue'), + meta: { title: '登录', hidden: true } + }, + { + path: '/404', + name: 'NotFound', + component: () => import('@/views/404.vue'), + meta: { title: '404', hidden: true } + } +]; + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: constantRoutes +}); + +// 白名单(不需要登录的页面) +const whiteList = ['/login', '/404']; + +// 全局前置守卫 +router.beforeEach(async (to, from, next) => { + const userStore = useUserStore(); + + // 恢复登录状态(从localStorage) + if (!userStore.isLoggedIn) { + userStore.restoreLoginState(); + } + + // 已登录 + if (userStore.isLoggedIn) { + if (to.path === '/login') { + // 已登录,访问登录页 → 跳转到首页 + next({ path: '/home' }); + } else { + // 检查是否已加载路由 + if (!userStore.hasLoadedRoutes) { + try { + // 获取用户路由 + await userStore.fetchUserRoutes(); + + // 重新导航到目标路由(因为路由刚刚动态注册) + next({ ...to, replace: true }); + } catch (error) { + console.error('获取路由失败:', error); + ElMessage.error('获取权限失败,请重新登录'); + userStore.logout(); + next({ path: '/login' }); + } + } else { + // 路由已加载,正常放行 + next(); + } + } + } else { + // 未登录 + if (whiteList.includes(to.path)) { + // 白名单内的页面,直接放行 + next(); + } else { + // 其他页面,跳转到登录 + next({ path: '/login', query: { redirect: to.fullPath } }); + } + } +}); + +// 全局后置钩子 +router.afterEach((to) => { + // 设置页面标题 + document.title = (to.meta.title as string) || '智慧法务系统'; +}); + +export default router; +``` + +### 3.3 菜单组件生成 + +#### 3.3.1 侧边栏菜单组件(components/Sidebar.vue) + +```vue + + + +``` + +#### 3.3.2 菜单项组件(components/SidebarItem.vue) + +```vue + + + +``` + +--- + +## 4. PostgREST数据访问 + +### 4.1 PostgREST基础 + +后端使用PostgREST提供RESTful API,所有数据库表都可以通过HTTP访问。 + +**特点**: +- 自动根据表结构生成API +- 支持强大的过滤、排序、分页 +- 前端请求会被后端全局异常处理器拦截并转发到PostgREST + +### 4.2 请求格式 + +#### 4.2.1 查询数据(GET) + +```typescript +// 基础查询 +GET /{table_name} + +// 示例:查询文档列表 +const fetchDocuments = async () => { + const response = await axios.get('/documents', { + headers: { + 'Authorization': `Bearer ${token}` + } + }); + return response.data; +}; + +// 带过滤条件 +GET /documents?user_id=eq.5 + +// 多个条件(AND) +GET /documents?user_id=eq.5&status=eq.0 + +// 选择字段 +GET /documents?select=id,title,created_at + +// 排序 +GET /documents?order=created_at.desc + +// 分页 +GET /documents?limit=20&offset=0 + +// 组合查询 +GET /documents?user_id=eq.5&status=eq.0&select=id,title,created_at&order=created_at.desc&limit=20 +``` + +#### PostgREST过滤操作符 + +| 操作符 | 说明 | 示例 | +|-------|------|------| +| `eq` | 等于 | `id=eq.5` | +| `neq` | 不等于 | `status=neq.1` | +| `gt` | 大于 | `created_at=gt.2025-01-01` | +| `gte` | 大于等于 | `id=gte.10` | +| `lt` | 小于 | `updated_at=lt.2025-12-31` | +| `lte` | 小于等于 | `id=lte.100` | +| `like` | 模糊匹配 | `title=like.*合同*` | +| `ilike` | 不区分大小写模糊匹配 | `title=ilike.*WORD*` | +| `in` | 在列表中 | `id=in.(1,2,3,4,5)` | +| `is` | 是NULL | `deleted_at=is.null` | +| `not.is` | 不是NULL | `deleted_at=not.is.null` | + +#### 4.2.2 创建数据(POST) + +```typescript +// 创建单条记录 +POST /{table_name} +Content-Type: application/json + +{ + "field1": "value1", + "field2": "value2" +} + +// 示例:创建文档 +const createDocument = async (data: any) => { + const response = await axios.post('/documents', data, { + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + } + }); + return response.data; +}; + +// 批量创建 +POST /documents +Content-Type: application/json + +[ + { "title": "文档1", "user_id": 5 }, + { "title": "文档2", "user_id": 5 } +] +``` + +#### 4.2.3 更新数据(PATCH) + +```typescript +// 更新记录(需要过滤条件) +PATCH /{table_name}?{filter} +Content-Type: application/json + +{ + "field1": "new_value" +} + +// 示例:更新文档 +const updateDocument = async (id: number, data: any) => { + const response = await axios.patch(`/documents?id=eq.${id}`, data, { + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + } + }); + return response.data; +}; +``` + +#### 4.2.4 删除数据(DELETE) + +```typescript +// 删除记录(需要过滤条件) +DELETE /{table_name}?{filter} + +// 示例:删除文档 +const deleteDocument = async (id: number) => { + const response = await axios.delete(`/documents?id=eq.${id}`, { + headers: { + 'Authorization': `Bearer ${token}` + } + }); + return response.data; +}; +``` + +### 4.3 Axios封装 + +#### 4.3.1 请求拦截器(utils/request.ts) + +```typescript +import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; +import { ElMessage } from 'element-plus'; +import { useUserStore } from '@/stores/user'; + +// 创建axios实例 +const service: AxiosInstance = axios.create({ + baseURL: import.meta.env.VITE_API_BASE_URL || 'http://172.16.0.55:8073', + timeout: 30000 +}); + +// 请求拦截器 +service.interceptors.request.use( + (config: AxiosRequestConfig) => { + const userStore = useUserStore(); + + // 自动添加Token + if (userStore.token) { + config.headers = config.headers || {}; + config.headers['Authorization'] = `Bearer ${userStore.token}`; + } + + return config; + }, + (error) => { + console.error('请求错误:', error); + return Promise.reject(error); + } +); + +// 响应拦截器 +service.interceptors.response.use( + (response: AxiosResponse) => { + const res = response.data; + + // PostgREST返回数组或对象,不是统一格式 + // 如果是数组或对象,直接返回 + if (Array.isArray(res) || typeof res === 'object' && !res.code) { + return response; + } + + // 统一格式的响应(code/msg/data) + if (res.code !== undefined) { + if (res.code === 200) { + return response; + } else { + ElMessage.error(res.msg || '操作失败'); + return Promise.reject(new Error(res.msg || 'Error')); + } + } + + return response; + }, + (error) => { + console.error('响应错误:', error); + + const userStore = useUserStore(); + + if (error.response) { + switch (error.response.status) { + case 401: + ElMessage.error('登录已过期,请重新登录'); + userStore.logout(); + break; + case 403: + ElMessage.error('没有权限访问'); + break; + case 404: + ElMessage.error('请求的资源不存在'); + break; + case 500: + ElMessage.error('服务器错误'); + break; + default: + ElMessage.error(error.response.data?.msg || '请求失败'); + } + } else { + ElMessage.error('网络错误,请检查网络连接'); + } + + return Promise.reject(error); + } +); + +export default service; +``` + +#### 4.3.2 API封装示例(api/documents.ts) + +```typescript +import request from '@/utils/request'; + +// 文档接口类型定义 +export interface Document { + id: number; + title: string; + user_id: number; + status: number; + created_at: string; + updated_at: string; +} + +export interface DocumentQuery { + user_id?: number; + status?: number; + keyword?: string; + limit?: number; + offset?: number; + order?: string; +} + +/** + * 查询文档列表 + */ +export const getDocuments = (query: DocumentQuery = {}) => { + const params: any = {}; + + // 过滤条件 + if (query.user_id !== undefined) { + params.user_id = `eq.${query.user_id}`; + } + if (query.status !== undefined) { + params.status = `eq.${query.status}`; + } + if (query.keyword) { + params.title = `like.*${query.keyword}*`; + } + + // 排序 + if (query.order) { + params.order = query.order; + } else { + params.order = 'created_at.desc'; + } + + // 分页 + if (query.limit) { + params.limit = query.limit; + } + if (query.offset) { + params.offset = query.offset; + } + + return request({ + url: '/documents', + method: 'get', + params + }); +}; + +/** + * 获取单个文档 + */ +export const getDocument = (id: number) => { + return request({ + url: '/documents', + method: 'get', + params: { + id: `eq.${id}` + } + }); +}; + +/** + * 创建文档 + */ +export const createDocument = (data: Partial) => { + return request({ + url: '/documents', + method: 'post', + data + }); +}; + +/** + * 更新文档 + */ +export const updateDocument = (id: number, data: Partial) => { + return request({ + url: `/documents?id=eq.${id}`, + method: 'patch', + data + }); +}; + +/** + * 删除文档 + */ +export const deleteDocument = (id: number) => { + return request({ + url: `/documents?id=eq.${id}`, + method: 'delete' + }); +}; +``` + +### 4.4 数据权限说明 + +**重要**: 后端已禁用自动数据隔离,前端需要手动添加过滤条件! + +#### 普通用户(uploader角色) + +普通用户只能访问自己的数据,前端需要手动添加 `user_id` 过滤: + +```typescript +// ❌ 错误:会查询所有用户的文档 +const docs = await axios.get('/documents'); + +// ✅ 正确:只查询当前用户的文档 +const userStore = useUserStore(); +const userId = userStore.userInfo?.user_id; +const docs = await axios.get(`/documents?user_id=eq.${userId}`); +``` + +#### 管理员用户 + +管理员可以访问所有数据,无需添加 `user_id` 过滤。 + +#### 最佳实践 + +```typescript +// 在API封装中自动处理权限 +export const getDocuments = (query: DocumentQuery = {}) => { + const userStore = useUserStore(); + const params: any = {}; + + // 非管理员自动添加user_id过滤 + if (!userStore.isAdmin) { + params.user_id = `eq.${userStore.userInfo?.user_id}`; + } + + // 其他过滤条件 + if (query.status !== undefined) { + params.status = `eq.${query.status}`; + } + + return request({ + url: '/documents', + method: 'get', + params + }); +}; +``` + +--- + +## 5. 完整代码示例 + +### 5.1 项目结构 + +``` +src/ +├── api/ # API接口封装 +│ ├── auth.ts # 认证接口 +│ ├── documents.ts # 文档接口 +│ └── ... +├── components/ # 组件 +│ ├── Sidebar.vue # 侧边栏 +│ ├── SidebarItem.vue # 菜单项 +│ └── ... +├── router/ # 路由 +│ └── index.ts +├── stores/ # Pinia状态管理 +│ └── user.ts # 用户Store +├── utils/ # 工具函数 +│ └── request.ts # Axios封装 +├── views/ # 页面 +│ ├── Login.vue # 登录页 +│ ├── Home.vue # 首页 +│ └── ... +├── App.vue +└── main.ts +``` + +### 5.2 完整示例:文档列表页面 + +```vue + + + + + +``` + +--- + +## 6. 常见问题FAQ + +### 6.1 登录相关 + +**Q: 登录后Token存在哪里?** + +A: Token存储在两个地方: +1. Pinia Store的内存状态(`userStore.token`) +2. localStorage持久化存储 + +```typescript +// 保存Token +localStorage.setItem('token', access_token); + +// 读取Token +const token = localStorage.getItem('token'); + +// 删除Token(登出) +localStorage.removeItem('token'); +``` + +**Q: Token过期如何处理?** + +A: 后端返回401状态码时,前端自动登出并跳转到登录页: + +```typescript +// 响应拦截器 +if (error.response?.status === 401) { + ElMessage.error('登录已过期,请重新登录'); + userStore.logout(); + router.push('/login'); +} +``` + +**Q: 如何实现自动登录?** + +A: 在应用启动时从localStorage恢复登录状态: + +```typescript +// main.ts +import { useUserStore } from '@/stores/user'; + +const app = createApp(App); +app.use(pinia); +app.use(router); + +// 恢复登录状态 +const userStore = useUserStore(); +userStore.restoreLoginState(); + +app.mount('#app'); +``` + +### 6.2 路由相关 + +**Q: 为什么要动态注册路由?** + +A: 因为不同用户有不同权限,看到的菜单和可访问的页面不同。通过动态注册路由: +1. 提高安全性(用户只能访问有权限的页面) +2. 减少打包体积(按需加载组件) +3. 灵活配置权限(后端控制) + +**Q: 动态路由何时加载?** + +A: 在用户登录成功后,通过路由守卫自动加载: + +```typescript +router.beforeEach(async (to, from, next) => { + if (userStore.isLoggedIn && !userStore.hasLoadedRoutes) { + await userStore.fetchUserRoutes(); // 加载路由 + next({ ...to, replace: true }); // 重新导航 + } +}); +``` + +**Q: `/user/routes` 和 `/rbac/user/routes` 有什么区别?** + +A: 两者功能完全相同,`/user/routes` 是别名路由,为了兼容前端直接调用。推荐使用 `/user/routes`。 + +### 6.3 数据访问相关 + +**Q: PostgREST查询如何分页?** + +A: 使用 `limit` 和 `offset` 参数: + +```typescript +// 第1页,每页20条 +GET /documents?limit=20&offset=0 + +// 第2页,每页20条 +GET /documents?limit=20&offset=20 + +// 第3页,每页20条 +GET /documents?limit=20&offset=40 +``` + +**Q: 如何获取总记录数?** + +A: PostgREST在响应头 `Content-Range` 返回总数: + +```typescript +const response = await axios.get('/documents?limit=20&offset=0'); +const contentRange = response.headers['content-range']; +// 格式: "0-19/156" 表示返回0-19条,总共156条 +const total = parseInt(contentRange.split('/')[1]); // 156 +``` + +**Q: 如何实现模糊搜索?** + +A: 使用 `like` 或 `ilike` 操作符: + +```typescript +// 搜索标题包含"合同"的文档 +GET /documents?title=like.*合同* + +// 不区分大小写 +GET /documents?title=ilike.*contract* +``` + +**Q: 普通用户只能看到自己的数据吗?** + +A: 是的!后端已禁用自动数据隔离,前端必须手动添加 `user_id` 过滤条件: + +```typescript +const userStore = useUserStore(); + +// 普通用户:只查询自己的数据 +if (!userStore.isAdmin) { + const docs = await axios.get(`/documents?user_id=eq.${userStore.userInfo.user_id}`); +} + +// 管理员:查询所有数据 +if (userStore.isAdmin) { + const docs = await axios.get('/documents'); +} +``` + +### 6.4 权限控制 + +**Q: 如何判断用户是否是管理员?** + +A: 通过 `user_role` 字段判断: + +```typescript +const userStore = useUserStore(); + +// 方式1:直接判断 +if (userStore.userInfo?.user_role === 'admin') { + console.log('管理员'); +} + +// 方式2:使用计算属性 +if (userStore.isAdmin) { + console.log('管理员'); +} +``` + +**Q: 如何控制按钮显示/隐藏?** + +A: 使用 `v-if` 指令: + +```vue + +``` + +**Q: 如何实现自定义权限指令?** + +A: 创建Vue自定义指令: + +```typescript +// directives/permission.ts +import { Directive } from 'vue'; +import { useUserStore } from '@/stores/user'; + +export const permission: Directive = { + mounted(el, binding) { + const userStore = useUserStore(); + const { value } = binding; + + // value 是权限代码,如 'document:delete' + if (value && !userStore.userInfo?.permissions?.includes(value)) { + el.parentNode?.removeChild(el); + } + } +}; + +// main.ts +import { permission } from '@/directives/permission'; +app.directive('permission', permission); + +// 使用 +删除 +``` + +--- + +## 7. 环境配置 + +### 7.1 开发环境配置(.env.development) + +```env +# API基础URL +VITE_API_BASE_URL=http://172.16.0.55:8073 + +# 应用端口 +VITE_PORT=5173 + +# 是否开启Mock +VITE_USE_MOCK=false +``` + +### 7.2 生产环境配置(.env.production) + +```env +# API基础URL(生产环境) +VITE_API_BASE_URL=https://api.example.com + +# 应用端口 +VITE_PORT=80 + +# 是否开启Mock +VITE_USE_MOCK=false +``` + +--- + +## 8. 测试清单 + +### 8.1 登录测试 + +- [ ] 密码登录成功 +- [ ] 密码登录失败(错误提示) +- [ ] OAuth登录成功 +- [ ] Token自动保存到localStorage +- [ ] 刷新页面后自动恢复登录状态 +- [ ] Token过期自动跳转登录页 + +### 8.2 路由测试 + +- [ ] 登录后自动加载路由 +- [ ] 侧边栏菜单正确显示 +- [ ] 无权限路由无法访问(跳转404或登录页) +- [ ] 路由跳转正常 +- [ ] 页面标题正确显示 + +### 8.3 数据访问测试 + +- [ ] 查询列表成功 +- [ ] 分页功能正常 +- [ ] 搜索过滤正常 +- [ ] 创建数据成功 +- [ ] 更新数据成功 +- [ ] 删除数据成功 +- [ ] 普通用户只能看到自己的数据 +- [ ] 管理员可以看到所有数据 + +--- + +## 9. 联系与支持 + +如有问题,请联系后端团队或查看以下文档: + +- **RBAC系统总结**: `docs/RBAC/RBAC系统使用总结.md` +- **用户管理指南**: `docs/RBAC/用户管理完整指南.md` +- **角色权限配置**: `docs/RBAC/角色路由权限分配表.md` + +--- + +**文档版本**: v2.0 +**创建时间**: 2025-11-17 +**维护者**: Claude Code +**状态**: ✅ 完整对接文档,包含RBAC和PostgREST所有功能 diff --git a/auth_doc/前端对接文档-API端点列表.md b/auth_doc/前端对接文档-API端点列表.md new file mode 100644 index 0000000..dc1e142 --- /dev/null +++ b/auth_doc/前端对接文档-API端点列表.md @@ -0,0 +1,121 @@ +# API端点列表 + +## PostgREST代理端点 + +所有PostgREST代理端点都位于 `/api/v1/postgrest/{table_name}` + +支持的HTTP方法:GET, POST, PATCH, DELETE + +### 文档管理模块 + +| 表名 | 端点 | 说明 | 所需权限 | +|------|------|------|---------| +| documents | /api/v1/postgrest/documents | 文档表 | document:document:view/create/update/delete | +| document_types | /api/v1/postgrest/document_types | 文档类型(公共数据) | document:type:view/create/update/delete | +| document_metadata | /api/v1/postgrest/document_metadata | 文档元数据 | document:metadata:view/create/update/delete | + +### 评查管理模块 + +| 表名 | 端点 | 说明 | 所需权限 | +|------|------|------|---------| +| evaluation_results | /api/v1/postgrest/evaluation_results | 评查结果 | evaluation:result:view/create/update/delete | +| evaluation_points | /api/v1/postgrest/evaluation_points | 评查点配置 | evaluation:point:view/create/update/delete | +| evaluation_point_categories | /api/v1/postgrest/evaluation_point_categories | 评查点分类 | evaluation:category:view/create/update/delete | +| evaluation_rules | /api/v1/postgrest/evaluation_rules | 评查规则 | evaluation:rule:view/create/update/delete | + +### 交叉评查模块 + +| 表名 | 端点 | 说明 | 所需权限 | +|------|------|------|---------| +| cross_examination_tasks | /api/v1/postgrest/cross_examination_tasks | 交叉评查任务 | crossreview:task:view/create/update/delete | +| cross_task_document_mapping | /api/v1/postgrest/cross_task_document_mapping | 任务-文档映射 | crossreview:mapping:view/create/update/delete | +| cross_scoring_proposals | /api/v1/postgrest/cross_scoring_proposals | 评分提案 | crossreview:proposal:view/create/update/delete | +| cross_proposal_votes | /api/v1/postgrest/cross_proposal_votes | 提案投票 | crossreview:vote:view/create/update/delete | + +### 用户管理模块 + +| 表名 | 端点 | 说明 | 所需权限 | +|------|------|------|---------| +| sso_users | /api/v1/postgrest/sso_users | 用户表 | system:user:view/create/update/delete | +| user_role | /api/v1/postgrest/user_role | 用户-角色关联 | system:user_role:view/create/update/delete | + +### 系统管理模块 + +| 表名 | 端点 | 说明 | 所需权限 | +|------|------|------|---------| +| roles | /api/v1/postgrest/roles | 角色表 | system:role:view/create/update/delete | +| sys_routes | /api/v1/postgrest/sys_routes | 系统路由(菜单) | system:route:view/create/update/delete | +| role_route | /api/v1/postgrest/role_route | 角色-路由关联 | system:role_route:view/create/update/delete | + +### RBAC权限管理模块 + +| 表名 | 端点 | 说明 | 所需权限 | +|------|------|------|---------| +| permissions | /api/v1/postgrest/permissions | 权限定义 | system:permission:view/create/update/delete | +| role_permissions | /api/v1/postgrest/role_permissions | 角色-权限关联 | system:role_permission:view/create/update/delete | +| user_permissions | /api/v1/postgrest/user_permissions | 用户-权限关联 | system:user_permission:view/create/update/delete | +| data_permission_rules | /api/v1/postgrest/data_permission_rules | 数据权限规则 | system:data_rule:view/create/update/delete | +| permission_audit_logs | /api/v1/postgrest/permission_audit_logs | 权限审计日志 | system:audit_log:view/create/update/delete | +| jwt_tokens | /api/v1/postgrest/jwt_tokens | JWT Token管理 | system:jwt_token:view/create/update/delete | + +### 报表统计模块 + +| 表名 | 端点 | 说明 | 所需权限 | +|------|------|------|---------| +| statistics_summary | /api/v1/postgrest/statistics_summary | 统计汇总 | report:summary:view/create/update/delete | + +## FastAPI业务端点 + +### 认证端点 + +| 端点 | 方法 | 说明 | 认证 | +|------|------|------|------| +| /api/v1/auth/login | POST | 用户登录 | 否 | +| /api/v1/auth/logout | POST | 用户登出 | 是 | +| /api/v1/auth/refresh | POST | 刷新Token | 是 | + +### 文档业务端点(示例) + +| 端点 | 方法 | 说明 | 认证 | +|------|------|------|------| +| /api/v1/documents/{id}/ocr | POST | 文档OCR处理 | 是 | +| /api/v1/documents/{id}/merge | POST | 合并PDF文档 | 是 | +| /api/v1/documents/{id}/extract | POST | AI提取信息 | 是 | + +## 请求示例 + +### GET请求示例 +```bash +GET /api/v1/postgrest/documents?status=eq.active&limit=10&order=created_at.desc +Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... +``` + +### POST请求示例 +```bash +POST /api/v1/postgrest/documents +Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... +Content-Type: application/json + +{ + "title": "新文档", + "content": "文档内容", + "status": "draft" +} +``` + +### PATCH请求示例 +```bash +PATCH /api/v1/postgrest/documents?id=eq.1936 +Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... +Content-Type: application/json + +{ + "status": "reviewed" +} +``` + +### DELETE请求示例 +```bash +DELETE /api/v1/postgrest/documents?id=eq.1936 +Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... +``` diff --git a/auth_doc/前端对接文档-PostgREST查询参考.md b/auth_doc/前端对接文档-PostgREST查询参考.md new file mode 100644 index 0000000..8ebcb3e --- /dev/null +++ b/auth_doc/前端对接文档-PostgREST查询参考.md @@ -0,0 +1,316 @@ +# PostgREST查询参考 + +## 过滤运算符完整列表 + +### 比较运算符 + +| 运算符 | 说明 | PostgREST语法 | JavaScript示例 | +|--------|------|---------------|----------------| +| eq | 等于 | `field=eq.value` | `{ field: 'eq.value' }` | +| neq | 不等于 | `field=neq.value` | `{ field: 'neq.value' }` | +| gt | 大于 | `field=gt.value` | `{ field: 'gt.100' }` | +| gte | 大于等于 | `field=gte.value` | `{ field: 'gte.100' }` | +| lt | 小于 | `field=lt.value` | `{ field: 'lt.100' }` | +| lte | 小于等于 | `field=lte.value` | `{ field: 'lte.100' }` | + +### 模式匹配运算符 + +| 运算符 | 说明 | PostgREST语法 | JavaScript示例 | +|--------|------|---------------|----------------| +| like | 模糊匹配(区分大小写) | `field=like.*pattern*` | `{ field: 'like.*测试*' }` | +| ilike | 模糊匹配(不区分大小写) | `field=ilike.*pattern*` | `{ field: 'ilike.*TEST*' }` | + +**模式匹配通配符**: +- `*`: 匹配任意字符(等同于SQL的`%`) +- `_`: 匹配单个字符 + +**示例**: +```javascript +// 查询标题以"合同"开头的文档 +{ title: 'like.合同*' } + +// 查询标题以"合同"结尾的文档 +{ title: 'like.*合同' } + +// 查询标题包含"合同"的文档 +{ title: 'like.*合同*' } + +// 不区分大小写查找 +{ title: 'ilike.*contract*' } +``` + +### 列表运算符 + +| 运算符 | 说明 | PostgREST语法 | JavaScript示例 | +|--------|------|---------------|----------------| +| in | 在列表中 | `field=in.(value1,value2,...)` | `{ field: 'in.(active,pending)' }` | +| cs | 包含(数组字段) | `field=cs.{value1,value2}` | `{ tags: 'cs.{重要,紧急}' }` | +| cd | 被包含(数组字段) | `field=cd.{value1,value2}` | `{ tags: 'cd.{重要,紧急}' }` | +| ov | 重叠(数组字段) | `field=ov.{value1,value2}` | `{ tags: 'ov.{重要,紧急}' }` | + +**示例**: +```javascript +// 查询状态为active或pending的文档 +{ status: 'in.(active,pending)' } + +// 查询ID在[1, 2, 3]中的文档 +{ id: 'in.(1,2,3)' } + +// 查询标签包含"重要"和"紧急"的文档(数组字段) +{ tags: 'cs.{重要,紧急}' } +``` + +### Null检查运算符 + +| 运算符 | 说明 | PostgREST语法 | JavaScript示例 | +|--------|------|---------------|----------------| +| is | 是null | `field=is.null` | `{ field: 'is.null' }` | +| nt | 不是null | `field=nt.null` (或 `is.not.null`) | `{ field: 'nt.null' }` | + +**示例**: +```javascript +// 查询deleted_at为null的文档(未删除) +{ deleted_at: 'is.null' } + +// 查询deleted_at不为null的文档(已删除) +{ deleted_at: 'nt.null' } +``` + +## 排序 + +### 单字段排序 + +```javascript +// 按创建时间升序 +{ order: 'created_at.asc' } + +// 按创建时间降序 +{ order: 'created_at.desc' } +``` + +### 多字段排序 + +```javascript +// 先按状态升序,再按创建时间降序 +{ order: 'status.asc,created_at.desc' } +``` + +## 分页 + +### Limit和Offset + +```javascript +// 每页10条,第1页 +{ limit: 10, offset: 0 } + +// 每页10条,第2页 +{ limit: 10, offset: 10 } + +// 每页20条,第3页 +{ limit: 20, offset: 40 } +``` + +### 获取总数 + +PostgREST会在响应头中返回`Content-Range`,包含总记录数: + +``` +Content-Range: 0-9/50 +``` +表示:返回第0-9条记录,总共50条记录。 + +**解析示例**: +```javascript +const response = await apiClient.get('/postgrest/documents', { + params: { limit: 10, offset: 0 } +}); + +const contentRange = response.headers['content-range']; +const total = parseInt(contentRange.split('/')[1]); // 50 +``` + +## 字段选择 + +### 选择特定字段 + +```javascript +// 只返回id, title, status字段 +{ select: 'id,title,status' } +``` + +### 嵌套查询(外键关联) + +PostgREST支持嵌套查询,但DocAuditAI暂未启用此功能。 + +## 高级查询 + +### 逻辑运算符 + +**注意**: 前端应避免使用`or`、`and`、`not`参数,这些参数由后端自动生成(用于数据范围和交叉评查权限)。 + +### 复杂查询示例 + +```javascript +// 查询状态为active且创建时间在2025年之后的文档,按创建时间降序,每页10条 +const params = { + status: 'eq.active', + created_at: 'gte.2025-01-01', + order: 'created_at.desc', + limit: 10, + offset: 0 +}; + +const response = await apiClient.get('/postgrest/documents', { params }); +``` + +## 完整示例 + +### 示例1:文档列表查询 + +```javascript +// 需求:查询标题包含"合同"、状态为active的文档, +// 按创建时间降序排列,每页20条,第2页 + +async function getDocumentList() { + const response = await apiClient.get('/postgrest/documents', { + params: { + title: 'ilike.*合同*', + status: 'eq.active', + order: 'created_at.desc', + limit: 20, + offset: 20 // 第2页 + } + }); + + return { + data: response.data, + total: parseInt(response.headers['content-range'].split('/')[1]) + }; +} +``` + +### 示例2:高级搜索 + +```javascript +// 需求:搜索2025年创建的、状态为active或pending的文档 + +async function advancedSearch() { + const response = await apiClient.get('/postgrest/documents', { + params: { + status: 'in.(active,pending)', + created_at: 'gte.2025-01-01', + created_at: 'lt.2026-01-01', // 注意:PostgREST会组合多个同名参数 + order: 'created_at.desc' + } + }); + + return response.data; +} +``` + +### 示例3:分页封装 + +```javascript +// 通用分页函数 +async function fetchPaginated(table, page, pageSize, filters = {}) { + const params = { + limit: pageSize, + offset: (page - 1) * pageSize, + ...filters + }; + + const response = await apiClient.get(`/postgrest/${table}`, { params }); + + const contentRange = response.headers['content-range']; + const total = contentRange ? parseInt(contentRange.split('/')[1]) : 0; + + return { + data: response.data, + total: total, + page: page, + pageSize: pageSize, + totalPages: Math.ceil(total / pageSize) + }; +} + +// 使用示例 +const result = await fetchPaginated('documents', 1, 10, { + status: 'eq.active', + order: 'created_at.desc' +}); + +console.log(`共${result.total}条记录,第${result.page}/${result.totalPages}页`); +``` + +## 性能优化建议 + +### 1. 始终使用分页 + +```javascript +// ✅ 好的做法 +{ limit: 10, offset: 0 } + +// ❌ 不好的做法(返回所有数据) +{} +``` + +### 2. 只查询需要的字段 + +```javascript +// ✅ 好的做法(只查询id和title) +{ select: 'id,title' } + +// ❌ 不好的做法(查询所有字段) +{} +``` + +### 3. 使用索引字段进行过滤 + +优先使用已建立索引的字段(如id, user_id, ou_id, status)进行过滤,提升查询性能。 + +### 4. 避免过度模糊查询 + +```javascript +// ✅ 好的做法(明确的过滤条件) +{ title: 'like.合同*' } + +// ❌ 不好的做法(前后通配符,性能差) +{ title: 'like.*合同*' } +``` + +## 常见错误 + +### 错误1:运算符拼写错误 + +```javascript +// ❌ 错误 +{ status: 'equal.active' } // 应该是 eq + +// ✅ 正确 +{ status: 'eq.active' } +``` + +### 错误2:日期格式错误 + +```javascript +// ❌ 错误 +{ created_at: 'gte.2025/01/01' } // 格式错误 + +// ✅ 正确 +{ created_at: 'gte.2025-01-01' } // ISO 8601格式 +``` + +### 错误3:in运算符语法错误 + +```javascript +// ❌ 错误 +{ status: 'in.active,pending' } // 缺少括号 + +// ✅ 正确 +{ status: 'in.(active,pending)' } +``` + +## 参考资料 + +- [PostgREST官方文档](https://postgrest.org/en/stable/) +- [PostgREST API查询语法](https://postgrest.org/en/stable/api.html#horizontal-filtering-rows) diff --git a/auth_doc/前端对接文档-权限列表.md b/auth_doc/前端对接文档-权限列表.md new file mode 100644 index 0000000..412383a --- /dev/null +++ b/auth_doc/前端对接文档-权限列表.md @@ -0,0 +1,338 @@ +# 权限列表 + +本文档列出DocAuditAI系统中所有权限及其对应的操作。 + +## 权限键格式 + +权限键格式:`{module}:{resource}:{action}` + +- **module**: 模块名称(如document, system, evaluation) +- **resource**: 资源名称(如document, user, role) +- **action**: 操作类型(view, create, update, delete等) + +## 文档管理模块 (document) + +| 权限键 | 说明 | 对应操作 | +|--------|------|---------| +| document:document:view | 查看文档 | GET /postgrest/documents | +| document:document:create | 创建文档 | POST /postgrest/documents | +| document:document:update | 更新文档 | PATCH /postgrest/documents | +| document:document:delete | 删除文档 | DELETE /postgrest/documents | +| document:type:view | 查看文档类型 | GET /postgrest/document_types | +| document:type:create | 创建文档类型 | POST /postgrest/document_types | +| document:type:update | 更新文档类型 | PATCH /postgrest/document_types | +| document:type:delete | 删除文档类型 | DELETE /postgrest/document_types | +| document:metadata:view | 查看文档元数据 | GET /postgrest/document_metadata | +| document:metadata:create | 创建文档元数据 | POST /postgrest/document_metadata | +| document:metadata:update | 更新文档元数据 | PATCH /postgrest/document_metadata | +| document:metadata:delete | 删除文档元数据 | DELETE /postgrest/document_metadata | + +## 评查管理模块 (evaluation) + +| 权限键 | 说明 | 对应操作 | +|--------|------|---------| +| evaluation:result:view | 查看评查结果 | GET /postgrest/evaluation_results | +| evaluation:result:create | 创建评查结果 | POST /postgrest/evaluation_results | +| evaluation:result:update | 更新评查结果 | PATCH /postgrest/evaluation_results | +| evaluation:result:delete | 删除评查结果 | DELETE /postgrest/evaluation_results | +| evaluation:point:view | 查看评查点 | GET /postgrest/evaluation_points | +| evaluation:point:create | 创建评查点 | POST /postgrest/evaluation_points | +| evaluation:point:update | 更新评查点 | PATCH /postgrest/evaluation_points | +| evaluation:point:delete | 删除评查点 | DELETE /postgrest/evaluation_points | +| evaluation:category:view | 查看评查点分类 | GET /postgrest/evaluation_point_categories | +| evaluation:category:create | 创建评查点分类 | POST /postgrest/evaluation_point_categories | +| evaluation:category:update | 更新评查点分类 | PATCH /postgrest/evaluation_point_categories | +| evaluation:category:delete | 删除评查点分类 | DELETE /postgrest/evaluation_point_categories | +| evaluation:rule:view | 查看评查规则 | GET /postgrest/evaluation_rules | +| evaluation:rule:create | 创建评查规则 | POST /postgrest/evaluation_rules | +| evaluation:rule:update | 更新评查规则 | PATCH /postgrest/evaluation_rules | +| evaluation:rule:delete | 删除评查规则 | DELETE /postgrest/evaluation_rules | + +## 交叉评查模块 (crossreview) + +| 权限键 | 说明 | 对应操作 | +|--------|------|---------| +| crossreview:task:view | 查看交叉评查任务 | GET /postgrest/cross_examination_tasks | +| crossreview:task:create | 创建交叉评查任务 | POST /postgrest/cross_examination_tasks | +| crossreview:task:update | 更新交叉评查任务 | PATCH /postgrest/cross_examination_tasks | +| crossreview:task:delete | 删除交叉评查任务 | DELETE /postgrest/cross_examination_tasks | +| crossreview:mapping:view | 查看任务文档映射 | GET /postgrest/cross_task_document_mapping | +| crossreview:mapping:create | 创建任务文档映射 | POST /postgrest/cross_task_document_mapping | +| crossreview:mapping:update | 更新任务文档映射 | PATCH /postgrest/cross_task_document_mapping | +| crossreview:mapping:delete | 删除任务文档映射 | DELETE /postgrest/cross_task_document_mapping | +| crossreview:proposal:view | 查看评分提案 | GET /postgrest/cross_scoring_proposals | +| crossreview:proposal:create | 创建评分提案 | POST /postgrest/cross_scoring_proposals | +| crossreview:proposal:update | 更新评分提案 | PATCH /postgrest/cross_scoring_proposals | +| crossreview:proposal:delete | 删除评分提案 | DELETE /postgrest/cross_scoring_proposals | +| crossreview:vote:view | 查看提案投票 | GET /postgrest/cross_proposal_votes | +| crossreview:vote:create | 创建提案投票 | POST /postgrest/cross_proposal_votes | +| crossreview:vote:update | 更新提案投票 | PATCH /postgrest/cross_proposal_votes | +| crossreview:vote:delete | 删除提案投票 | DELETE /postgrest/cross_proposal_votes | + +## 系统管理模块 (system) + +| 权限键 | 说明 | 对应操作 | +|--------|------|---------| +| system:user:view | 查看用户 | GET /postgrest/sso_users | +| system:user:create | 创建用户 | POST /postgrest/sso_users | +| system:user:update | 更新用户 | PATCH /postgrest/sso_users | +| system:user:delete | 删除用户 | DELETE /postgrest/sso_users | +| system:role:view | 查看角色 | GET /postgrest/roles | +| system:role:create | 创建角色 | POST /postgrest/roles | +| system:role:update | 更新角色 | PATCH /postgrest/roles | +| system:role:delete | 删除角色 | DELETE /postgrest/roles | +| system:route:view | 查看系统路由 | GET /postgrest/sys_routes | +| system:route:create | 创建系统路由 | POST /postgrest/sys_routes | +| system:route:update | 更新系统路由 | PATCH /postgrest/sys_routes | +| system:route:delete | 删除系统路由 | DELETE /postgrest/sys_routes | +| system:user_role:view | 查看用户-角色关联 | GET /postgrest/user_role | +| system:user_role:create | 创建用户-角色关联 | POST /postgrest/user_role | +| system:user_role:update | 更新用户-角色关联 | PATCH /postgrest/user_role | +| system:user_role:delete | 删除用户-角色关联 | DELETE /postgrest/user_role | +| system:role_route:view | 查看角色-路由关联 | GET /postgrest/role_route | +| system:role_route:create | 创建角色-路由关联 | POST /postgrest/role_route | +| system:role_route:update | 更新角色-路由关联 | PATCH /postgrest/role_route | +| system:role_route:delete | 删除角色-路由关联 | DELETE /postgrest/role_route | +| system:permission:view | 查看权限定义 | GET /postgrest/permissions | +| system:permission:create | 创建权限定义 | POST /postgrest/permissions | +| system:permission:update | 更新权限定义 | PATCH /postgrest/permissions | +| system:permission:delete | 删除权限定义 | DELETE /postgrest/permissions | +| system:role_permission:view | 查看角色-权限关联 | GET /postgrest/role_permissions | +| system:role_permission:create | 创建角色-权限关联 | POST /postgrest/role_permissions | +| system:role_permission:update | 更新角色-权限关联 | PATCH /postgrest/role_permissions | +| system:role_permission:delete | 删除角色-权限关联 | DELETE /postgrest/role_permissions | +| system:user_permission:view | 查看用户-权限关联 | GET /postgrest/user_permissions | +| system:user_permission:create | 创建用户-权限关联 | POST /postgrest/user_permissions | +| system:user_permission:update | 更新用户-权限关联 | PATCH /postgrest/user_permissions | +| system:user_permission:delete | 删除用户-权限关联 | DELETE /postgrest/user_permissions | +| system:data_rule:view | 查看数据权限规则 | GET /postgrest/data_permission_rules | +| system:data_rule:create | 创建数据权限规则 | POST /postgrest/data_permission_rules | +| system:data_rule:update | 更新数据权限规则 | PATCH /postgrest/data_permission_rules | +| system:data_rule:delete | 删除数据权限规则 | DELETE /postgrest/data_permission_rules | +| system:audit_log:view | 查看审计日志 | GET /postgrest/permission_audit_logs | +| system:audit_log:create | 创建审计日志 | POST /postgrest/permission_audit_logs | +| system:audit_log:update | 更新审计日志 | PATCH /postgrest/permission_audit_logs | +| system:audit_log:delete | 删除审计日志 | DELETE /postgrest/permission_audit_logs | +| system:jwt_token:view | 查看JWT Token | GET /postgrest/jwt_tokens | +| system:jwt_token:create | 创建JWT Token | POST /postgrest/jwt_tokens | +| system:jwt_token:update | 更新JWT Token | PATCH /postgrest/jwt_tokens | +| system:jwt_token:delete | 删除JWT Token | DELETE /postgrest/jwt_tokens | + +## 报表统计模块 (report) + +| 权限键 | 说明 | 对应操作 | +|--------|------|---------| +| report:summary:view | 查看统计汇总 | GET /postgrest/statistics_summary | +| report:summary:create | 创建统计汇总 | POST /postgrest/statistics_summary | +| report:summary:update | 更新统计汇总 | PATCH /postgrest/statistics_summary | +| report:summary:delete | 删除统计汇总 | DELETE /postgrest/statistics_summary | + +## 预定义角色及其权限 + +### 1. 系统管理员 +拥有所有权限(71个权限) + +### 2. 文档管理员 +- document:document:view +- document:document:create +- document:document:update +- document:document:delete +- document:type:view +- document:type:create +- document:type:update +- document:type:delete +- document:metadata:view +- document:metadata:create +- document:metadata:update +- document:metadata:delete + +### 3. 文档审查员 +- document:document:view +- document:document:update +- evaluation:result:view +- evaluation:result:create +- evaluation:result:update +- evaluation:point:view + +### 4. 交叉评查管理员 +- crossreview:task:view +- crossreview:task:create +- crossreview:task:update +- crossreview:task:delete +- crossreview:mapping:view +- crossreview:mapping:create +- crossreview:mapping:update +- crossreview:mapping:delete +- crossreview:proposal:view +- crossreview:proposal:create +- crossreview:proposal:update +- crossreview:vote:view +- crossreview:vote:create +- crossreview:vote:update + +### 5. 交叉评查参与者 +- crossreview:task:view +- crossreview:mapping:view +- crossreview:proposal:view +- crossreview:proposal:create +- crossreview:vote:view +- crossreview:vote:create + +### 6. 评价点管理员 +- evaluation:point:view +- evaluation:point:create +- evaluation:point:update +- evaluation:point:delete +- evaluation:category:view +- evaluation:category:create +- evaluation:category:update +- evaluation:category:delete +- evaluation:rule:view +- evaluation:rule:create +- evaluation:rule:update +- evaluation:rule:delete + +### 7. 报表查看员 +- report:summary:view +- document:document:view +- evaluation:result:view + +### 8. 普通用户 +- document:document:view +- document:type:view +- evaluation:point:view +- evaluation:category:view + +### 9. 审计员 +- system:audit_log:view +- document:document:view +- evaluation:result:view +- crossreview:task:view + +## 前端权限控制示例 + +### 示例1:按钮权限控制 + +```vue + +``` + +### 示例2:菜单权限控制 + +```javascript +// 菜单配置(根据权限动态生成) +const menuConfig = [ + { + name: '文档管理', + permission: 'document:document:view', + children: [ + { name: '文档列表', permission: 'document:document:view', path: '/documents' }, + { name: '新建文档', permission: 'document:document:create', path: '/documents/new' } + ] + }, + { + name: '评查管理', + permission: 'evaluation:point:view', + children: [ + { name: '评查点配置', permission: 'evaluation:point:view', path: '/evaluation/points' }, + { name: '评查结果', permission: 'evaluation:result:view', path: '/evaluation/results' } + ] + }, + { + name: '系统管理', + role: '系统管理员', // 只有系统管理员才能看到 + children: [ + { name: '用户管理', permission: 'system:user:view', path: '/system/users' }, + { name: '角色管理', permission: 'system:role:view', path: '/system/roles' } + ] + } +]; + +// 过滤菜单(根据用户权限) +function filterMenuByPermission(menu, userPermissions, userRoles) { + return menu.filter(item => { + // 检查角色 + if (item.role && !userRoles.includes(item.role)) { + return false; + } + + // 检查权限 + if (item.permission && !userPermissions.includes(item.permission)) { + return false; + } + + // 递归过滤子菜单 + if (item.children) { + item.children = filterMenuByPermission(item.children, userPermissions, userRoles); + } + + return true; + }); +} +``` + +### 示例3:路由守卫 + +```javascript +// router.js +import { createRouter, createWebHistory } from 'vue-router'; + +const router = createRouter({ + history: createWebHistory(), + routes: [ + { + path: '/documents', + component: DocumentList, + meta: { permission: 'document:document:view' } + }, + { + path: '/system/users', + component: UserManagement, + meta: { role: '系统管理员' } + } + ] +}); + +// 全局路由守卫 +router.beforeEach((to, from, next) => { + const userInfo = JSON.parse(localStorage.getItem('user_info') || '{}'); + + // 检查角色 + if (to.meta.role && !userInfo.roles?.includes(to.meta.role)) { + alert('无权访问此页面'); + next('/'); + return; + } + + // 检查权限(简化版,实际应维护权限列表) + if (to.meta.permission) { + // TODO: 检查用户是否有该权限 + } + + next(); +}); +``` + +## 注意事项 + +1. **权限检查由后端强制执行** + 即使前端绕过权限控制,后端也会拒绝无权请求。 + +2. **前端权限控制是为了提升用户体验** + 隐藏用户无权操作的按钮和菜单,避免用户点击后被拒绝。 + +3. **定期同步权限列表** + 登录时从后端获取用户的完整权限列表,存储到前端状态管理中。 + +4. **角色权限继承** + 用户通过角色继承权限,也可以直接分配权限(优先级高于角色)。 diff --git a/auth_doc/前端对接文档.md b/auth_doc/前端对接文档.md new file mode 100644 index 0000000..385862a --- /dev/null +++ b/auth_doc/前端对接文档.md @@ -0,0 +1,1562 @@ +# DocAuditAI 前端对接文档 + +**版本**: v1.0 +**最后更新**: 2025-11-17 +**适用范围**: 前端开发人员 + +--- + +## 目录 + +1. [系统概述](#1-系统概述) +2. [认证与授权](#2-认证与授权) +3. [PostgREST API使用](#3-postgrest-api使用) +4. [RBAC权限系统](#4-rbac权限系统) +5. [数据范围过滤](#5-数据范围过滤) +6. [交叉评查权限](#6-交叉评查权限) +7. [错误处理](#7-错误处理) +8. [常用示例](#8-常用示例) +9. [最佳实践](#9-最佳实践) +10. [故障排查](#10-故障排查) + +--- + +## 1. 系统概述 + +### 1.1 架构概览 + +DocAuditAI采用三层架构: + +``` +┌─────────────┐ +│ 前端应用 │ Vue.js / React / Angular +└─────────────┘ + ↓ HTTPS +┌─────────────┐ +│ FastAPI │ 认证、权限检查、业务逻辑 +│ (端口8000) │ +└─────────────┘ + ↓ +┌─────────────┐ +│ PostgREST │ 直接数据库访问(经过RBAC过滤) +│ (端口3000) │ +└─────────────┘ + ↓ +┌─────────────┐ +│ PostgreSQL │ 数据存储 +│ (端口5432) │ +└─────────────┘ +``` + +### 1.2 API端点 + +- **FastAPI主应用**: `http://localhost:8000/api/v1/` +- **PostgREST代理**: `http://localhost:8000/api/v1/postgrest/` +- **认证端点**: `http://localhost:8000/api/v1/auth/` + +### 1.3 技术栈要求 + +**前端推荐技术栈**: +- **HTTP客户端**: Axios (推荐) 或 Fetch API +- **状态管理**: Vuex / Pinia (Vue) 或 Redux (React) +- **UI框架**: Element Plus / Ant Design / Material-UI + +--- + +## 2. 认证与授权 + +### 2.1 JWT认证流程 + +DocAuditAI使用JWT(JSON Web Token)进行用户认证。 + +#### 登录流程 + +```mermaid +sequenceDiagram + participant 前端 + participant FastAPI + participant 数据库 + + 前端->>FastAPI: POST /api/v1/auth/login {username, password} + FastAPI->>数据库: 验证用户凭据 + 数据库-->>FastAPI: 用户信息 + 权限 + FastAPI-->>前端: {access_token, token_type, user_info} + 前端->>前端: 存储access_token到localStorage +``` + +#### 登录示例 + +**请求**: +```javascript +// JavaScript/TypeScript +import axios from 'axios'; + +const API_BASE_URL = 'http://localhost:8000/api/v1'; + +async function login(username, password) { + try { + const response = await axios.post(`${API_BASE_URL}/auth/login`, { + username, + password + }); + + // 保存Token + localStorage.setItem('access_token', response.data.access_token); + localStorage.setItem('user_info', JSON.stringify(response.data.user_info)); + + return response.data; + } catch (error) { + console.error('登录失败:', error.response?.data || error.message); + throw error; + } +} + +// 使用示例 +login('user@example.com', 'password123') + .then(data => { + console.log('登录成功:', data.user_info); + }) + .catch(err => { + console.error('登录失败'); + }); +``` + +**成功响应** (HTTP 200): +```json +{ + "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", + "token_type": "Bearer", + "user_info": { + "user_id": 9, + "username": "云浮测试", + "ou_id": "yunfu002", + "ou_name": "云浮测试用户账户", + "roles": ["文档审查员", "普通用户"] + } +} +``` + +**失败响应** (HTTP 401): +```json +{ + "detail": "用户名或密码错误" +} +``` + +### 2.2 请求认证 + +所有需要认证的API请求都必须在请求头中携带JWT Token。 + +#### Axios全局配置(推荐) + +```javascript +// axios-instance.js +import axios from 'axios'; + +const API_BASE_URL = 'http://localhost:8000/api/v1'; + +// 创建Axios实例 +const apiClient = axios.create({ + baseURL: API_BASE_URL, + headers: { + 'Content-Type': 'application/json' + } +}); + +// 请求拦截器:自动添加Token +apiClient.interceptors.request.use( + config => { + const token = localStorage.getItem('access_token'); + if (token) { + config.headers.Authorization = `Bearer ${token}`; + } + return config; + }, + error => Promise.reject(error) +); + +// 响应拦截器:处理认证错误 +apiClient.interceptors.response.use( + response => response, + error => { + if (error.response?.status === 401) { + // Token过期或无效,跳转到登录页 + localStorage.removeItem('access_token'); + localStorage.removeItem('user_info'); + window.location.href = '/login'; + } + return Promise.reject(error); + } +); + +export default apiClient; +``` + +**使用示例**: +```javascript +import apiClient from './axios-instance'; + +// 查询文档列表(自动携带Token) +async function getDocuments() { + const response = await apiClient.get('/postgrest/documents?limit=10'); + return response.data; +} +``` + +### 2.3 Token刷新 + +JWT Token有效期为24小时。Token过期后需要重新登录。 + +**检查Token是否过期**: +```javascript +function isTokenExpired() { + const token = localStorage.getItem('access_token'); + if (!token) return true; + + try { + const payload = JSON.parse(atob(token.split('.')[1])); + const exp = payload.exp * 1000; // 转换为毫秒 + return Date.now() >= exp; + } catch (e) { + return true; + } +} + +// 定期检查Token(可选) +setInterval(() => { + if (isTokenExpired()) { + alert('登录已过期,请重新登录'); + window.location.href = '/login'; + } +}, 60000); // 每分钟检查一次 +``` + +### 2.4 退出登录 + +```javascript +async function logout() { + try { + // 调用后端登出接口(可选,如果后端有黑名单机制) + await apiClient.post('/auth/logout'); + } catch (error) { + console.error('登出失败:', error); + } finally { + // 清除本地存储 + localStorage.removeItem('access_token'); + localStorage.removeItem('user_info'); + window.location.href = '/login'; + } +} +``` + +--- + +## 3. PostgREST API使用 + +### 3.1 PostgREST代理概述 + +PostgREST代理提供了对数据库表的直接RESTful访问,**自动集成RBAC权限检查和数据范围过滤**。 + +**基础URL**: `/api/v1/postgrest/{table_name}` + +**支持的HTTP方法**: +- `GET`: 查询数据 +- `POST`: 创建数据 +- `PATCH`: 更新数据 +- `DELETE`: 删除数据 + +### 3.2 查询操作 (GET) + +#### 3.2.1 查询所有记录 + +```javascript +// 查询所有文档(自动应用数据范围过滤) +async function getAllDocuments() { + const response = await apiClient.get('/postgrest/documents'); + return response.data; +} + +// 响应示例 +[ + { + "id": 1936, + "title": "测试文档1", + "status": "active", + "ou_id": "yunfu002", + "user_id": 9, + "created_at": "2025-11-15T10:30:00Z" + }, + { + "id": 1937, + "title": "测试文档2", + "status": "pending", + "ou_id": "yunfu002", + "user_id": 9, + "created_at": "2025-11-16T14:20:00Z" + } +] +``` + +#### 3.2.2 分页查询 + +PostgREST使用`limit`和`offset`参数实现分页。 + +```javascript +// 分页查询:每页10条,第2页 +async function getDocumentsPaginated(page = 1, pageSize = 10) { + const offset = (page - 1) * pageSize; + const response = await apiClient.get('/postgrest/documents', { + params: { + limit: pageSize, + offset: offset + } + }); + return response.data; +} + +// 使用示例 +const documents = await getDocumentsPaginated(2, 10); // 第2页,每页10条 +``` + +#### 3.2.3 过滤查询 + +PostgREST支持丰富的过滤运算符: + +| 运算符 | 说明 | 示例 | +|--------|------|------| +| `eq` | 等于 | `status=eq.active` | +| `neq` | 不等于 | `status=neq.deleted` | +| `gt` | 大于 | `created_at=gt.2025-01-01` | +| `gte` | 大于等于 | `score=gte.80` | +| `lt` | 小于 | `priority=lt.5` | +| `lte` | 小于等于 | `age=lte.30` | +| `like` | 模糊匹配 | `title=like.*测试*` | +| `ilike` | 不区分大小写模糊匹配 | `title=ilike.*TEST*` | +| `in` | 在列表中 | `status=in.(active,pending)` | +| `is` | 是null | `deleted_at=is.null` | + +**示例**: +```javascript +// 查询状态为active的文档 +async function getActiveDocuments() { + const response = await apiClient.get('/postgrest/documents', { + params: { + status: 'eq.active' + } + }); + return response.data; +} + +// 查询标题包含"合同"的文档 +async function searchDocuments(keyword) { + const response = await apiClient.get('/postgrest/documents', { + params: { + title: `ilike.*${keyword}*` + } + }); + return response.data; +} + +// 多条件查询:状态为active且创建时间在2025年之后 +async function getRecentActiveDocuments() { + const response = await apiClient.get('/postgrest/documents', { + params: { + status: 'eq.active', + created_at: 'gte.2025-01-01' + } + }); + return response.data; +} +``` + +#### 3.2.4 排序 + +使用`order`参数指定排序字段和方向。 + +```javascript +// 按创建时间降序排列 +async function getDocumentsSorted() { + const response = await apiClient.get('/postgrest/documents', { + params: { + order: 'created_at.desc' + } + }); + return response.data; +} + +// 多字段排序:先按状态升序,再按创建时间降序 +async function getDocumentsMultiSort() { + const response = await apiClient.get('/postgrest/documents', { + params: { + order: 'status.asc,created_at.desc' + } + }); + return response.data; +} +``` + +#### 3.2.5 字段选择 + +使用`select`参数指定返回的字段。 + +```javascript +// 只返回id、title、status字段 +async function getDocumentsPartial() { + const response = await apiClient.get('/postgrest/documents', { + params: { + select: 'id,title,status' + } + }); + return response.data; +} + +// 响应示例 +[ + { + "id": 1936, + "title": "测试文档1", + "status": "active" + } +] +``` + +### 3.3 创建操作 (POST) + +```javascript +// 创建新文档 +async function createDocument(documentData) { + const response = await apiClient.post('/postgrest/documents', documentData); + return response.data; +} + +// 使用示例 +const newDocument = await createDocument({ + title: '新文档', + content: '文档内容', + status: 'draft', + ou_id: 'yunfu002', // 后端会自动验证ou_id是否在用户权限范围内 + user_id: 9 +}); + +// 成功响应 (HTTP 201) +[ + { + "id": 2001, + "title": "新文档", + "content": "文档内容", + "status": "draft", + "ou_id": "yunfu002", + "user_id": 9, + "created_at": "2025-11-17T10:00:00Z" + } +] +``` + +**重要提示**: +- 创建文档时,后端会自动验证`ou_id`和`user_id`是否符合用户的数据范围权限 +- 如果尝试创建不在权限范围内的数据,会返回403 Forbidden + +### 3.4 更新操作 (PATCH) + +```javascript +// 更新文档状态 +async function updateDocumentStatus(documentId, newStatus) { + const response = await apiClient.patch('/postgrest/documents', + { status: newStatus }, + { + params: { + id: `eq.${documentId}` + } + } + ); + return response.data; +} + +// 使用示例 +const updated = await updateDocumentStatus(1936, 'reviewed'); + +// 成功响应 (HTTP 200) +[ + { + "id": 1936, + "title": "测试文档1", + "status": "reviewed", + "updated_at": "2025-11-17T11:00:00Z" + } +] +``` + +**重要提示**: +- 更新操作会自动应用数据范围过滤,用户只能更新自己权限范围内的数据 +- 对于交叉评查文档,如果用户参与了该文档的交叉评查任务,即使文档不在常规数据范围内,也可以更新 + +### 3.5 删除操作 (DELETE) + +```javascript +// 删除文档 +async function deleteDocument(documentId) { + const response = await apiClient.delete('/postgrest/documents', { + params: { + id: `eq.${documentId}` + } + }); + return response.status === 204; // 成功删除返回204 No Content +} + +// 使用示例 +const deleted = await deleteDocument(1936); +if (deleted) { + console.log('文档删除成功'); +} +``` + +### 3.6 完整示例:文档管理 + +```javascript +// document-service.js +import apiClient from './axios-instance'; + +class DocumentService { + // 查询文档列表 + async getDocuments(filters = {}) { + const params = { + limit: filters.pageSize || 10, + offset: ((filters.page || 1) - 1) * (filters.pageSize || 10), + ...filters.where + }; + + if (filters.orderBy) { + params.order = filters.orderBy; + } + + const response = await apiClient.get('/postgrest/documents', { params }); + return response.data; + } + + // 获取单个文档 + async getDocumentById(id) { + const response = await apiClient.get('/postgrest/documents', { + params: { id: `eq.${id}` } + }); + return response.data[0]; // PostgREST返回数组,取第一个 + } + + // 创建文档 + async createDocument(data) { + const response = await apiClient.post('/postgrest/documents', data); + return response.data[0]; + } + + // 更新文档 + async updateDocument(id, data) { + const response = await apiClient.patch( + '/postgrest/documents', + data, + { params: { id: `eq.${id}` } } + ); + return response.data[0]; + } + + // 删除文档 + async deleteDocument(id) { + await apiClient.delete('/postgrest/documents', { + params: { id: `eq.${id}` } + }); + return true; + } +} + +export default new DocumentService(); +``` + +**使用示例**: +```javascript +import DocumentService from './document-service'; + +// 1. 查询文档列表(分页、过滤、排序) +const documents = await DocumentService.getDocuments({ + page: 1, + pageSize: 10, + where: { + status: 'eq.active', + title: 'ilike.*合同*' + }, + orderBy: 'created_at.desc' +}); + +// 2. 获取单个文档 +const document = await DocumentService.getDocumentById(1936); + +// 3. 创建文档 +const newDoc = await DocumentService.createDocument({ + title: '采购合同', + content: '合同内容...', + status: 'draft' +}); + +// 4. 更新文档 +const updatedDoc = await DocumentService.updateDocument(1936, { + status: 'reviewed' +}); + +// 5. 删除文档 +await DocumentService.deleteDocument(1936); +``` + +--- + +## 4. RBAC权限系统 + +### 4.1 权限模型 + +DocAuditAI采用**RBAC(基于角色的访问控制)**模型,支持: + +- **用户-角色关联**: 一个用户可以有多个角色 +- **角色-权限关联**: 一个角色可以有多个权限 +- **用户-权限关联**: 用户可以直接拥有权限(绕过角色) +- **数据范围控制**: 细粒度的数据访问权限(ALL/DEPT/DEPT_AND_SUB/SELF/CUSTOM) + +#### 权限键格式 + +权限键格式为:`{module}:{resource}:{action}` + +**示例**: +- `document:document:view` - 查看文档 +- `document:document:create` - 创建文档 +- `document:document:update` - 更新文档 +- `document:document:delete` - 删除文档 +- `crossreview:task:view` - 查看交叉评查任务 + +### 4.2 自动权限检查 + +**所有通过PostgREST代理的请求都会自动进行权限检查**,前端无需手动调用权限检查接口。 + +**权限检查流程**: +1. 用户发起请求(携带JWT Token) +2. 后端解析Token,提取用户ID和角色 +3. 根据表名和HTTP方法映射到权限键 +4. 检查用户是否拥有该权限 +5. 如果有权限,继续处理请求;否则返回403 Forbidden + +**示例**: +```javascript +// GET /api/v1/postgrest/documents +// 后端自动检查权限: document:document:view + +// POST /api/v1/postgrest/documents +// 后端自动检查权限: document:document:create + +// PATCH /api/v1/postgrest/documents?id=eq.1936 +// 后端自动检查权限: document:document:update + +// DELETE /api/v1/postgrest/documents?id=eq.1936 +// 后端自动检查权限: document:document:delete +``` + +### 4.3 前端权限控制 + +虽然后端会自动检查权限,但前端也应该根据用户权限**隐藏或禁用**无权操作的按钮和菜单。 + +#### 4.3.1 获取当前用户权限 + +```javascript +// 从Token中解析用户信息(包含角色) +function getUserInfo() { + const userInfoStr = localStorage.getItem('user_info'); + if (!userInfoStr) return null; + return JSON.parse(userInfoStr); +} + +// 检查用户是否有特定角色 +function hasRole(roleName) { + const userInfo = getUserInfo(); + return userInfo?.roles?.includes(roleName) || false; +} + +// 使用示例 +if (hasRole('系统管理员')) { + // 显示管理员菜单 +} +``` + +#### 4.3.2 权限指令(Vue示例) + +```vue + + + + +``` + +**推荐做法**: +1. 登录时从后端获取用户的完整权限列表(包括通过角色继承的权限和直接分配的权限) +2. 将权限列表存储到Vuex/Pinia/Redux中 +3. 前端根据权限列表控制UI元素的显示/隐藏 + +--- + +## 5. 数据范围过滤 + +### 5.1 数据范围类型 + +DocAuditAI支持5种数据范围类型: + +| 数据范围 | 说明 | 过滤逻辑 | +|---------|------|---------| +| **ALL** | 全部数据 | 无过滤,可查看所有数据 | +| **DEPT** | 本部门数据 | `ou_id = 用户的ou_id` | +| **DEPT_AND_SUB** | 本部门及下级部门数据 | `ou_id IN (用户的ou_id_tree)` | +| **SELF** | 本人数据 | `user_id = 用户ID` | +| **CUSTOM** | 自定义规则 | 根据自定义SQL表达式过滤 | + +### 5.2 自动数据范围过滤 + +**所有通过PostgREST代理的查询请求都会自动应用数据范围过滤**,前端无需关心过滤逻辑。 + +**示例**: +```javascript +// 用户A(数据范围SELF,user_id=9) +// 请求: GET /api/v1/postgrest/documents +// 后端自动添加过滤: user_id=eq.9 + +// 用户B(数据范围DEPT,ou_id=yunfu002) +// 请求: GET /api/v1/postgrest/documents +// 后端自动添加过滤: ou_id=eq.yunfu002 + +// 用户C(数据范围ALL) +// 请求: GET /api/v1/postgrest/documents +// 后端无过滤,返回所有文档 +``` + +### 5.3 前端注意事项 + +1. **不要尝试绕过数据范围过滤** + 后端会强制覆盖前端提供的`ou_id`或`user_id`参数,尝试绕过会被拒绝或忽略。 + + ```javascript + // ❌ 错误示例:尝试访问其他部门数据 + const response = await apiClient.get('/postgrest/documents', { + params: { + ou_id: 'eq.guangzhou001' // 后端会覆盖为用户自己的ou_id + } + }); + + // ✅ 正确示例:正常查询,后端自动应用数据范围 + const response = await apiClient.get('/postgrest/documents'); + ``` + +2. **数据范围对不同操作的影响** + - **查询(GET)**: 自动过滤,只返回权限范围内的数据 + - **创建(POST)**: 验证ou_id/user_id是否在权限范围内 + - **更新(PATCH)**: 只能更新权限范围内的数据 + - **删除(DELETE)**: 只能删除权限范围内的数据 + +--- + +## 6. 交叉评查权限 + +### 6.1 交叉评查权限概述 + +交叉评查允许用户**跨部门访问**特定文档,即使这些文档不在其常规数据范围内。 + +**应用场景**: +- 用户A(云浮部门)参与了一个交叉评查任务,该任务包含来自梅州部门的文档 +- 用户A可以查看和评审这些梅州文档,尽管其常规数据范围是SELF(只能看自己的) + +### 6.2 交叉评查权限逻辑 + +对于配置了`special_handling='cross_review_mixed'`的表(如`documents`),后端会: + +1. **GET请求**: 扩展访问范围(常规数据范围 **OR** 交叉评查文档) + ``` + 常规过滤: user_id=eq.9 + 交叉评查扩展: id.in.(1936,1937) + 最终过滤: or=(id.in.(1936,1937),user_id.eq.9) + ``` + +2. **PATCH/DELETE请求**: 检查目标文档是否在交叉评查范围 + - 如果是交叉评查文档 → 移除常规数据范围限制,允许操作 + - 如果不是 → 保持常规数据范围限制 + +### 6.3 前端使用示例 + +前端无需特殊处理,后端会自动处理交叉评查权限。 + +```javascript +// 场景:用户9(数据范围SELF)参与了任务183的交叉评查 +// 任务183包含文档[1936, 1937](来自其他用户) + +// 1. 查询文档列表 +const documents = await apiClient.get('/postgrest/documents'); +// 返回: +// - 用户自己的文档(user_id=9) +// - 交叉评查文档[1936, 1937] + +// 2. 更新交叉评查文档 +const updated = await apiClient.patch( + '/postgrest/documents', + { status: 'reviewed' }, + { params: { id: 'eq.1936' } } +); +// 成功:后端检测到1936是交叉评查文档,允许更新 + +// 3. 尝试更新其他用户的非交叉评查文档 +try { + await apiClient.patch( + '/postgrest/documents', + { status: 'reviewed' }, + { params: { id: 'eq.9999' } } // 不在交叉评查范围 + ); +} catch (error) { + console.error('无权更新此文档'); // 403 Forbidden +} +``` + +### 6.4 获取交叉评查任务 + +```javascript +// 查询当前用户的交叉评查任务 +async function getCrossReviewTasks() { + const response = await apiClient.get('/postgrest/cross_examination_tasks'); + return response.data; +} + +// 响应示例 +[ + { + "id": 183, + "task_name": "2025年第一季度交叉评查", + "status": "in_progress", + "created_by": 5, + "user_ids": [9, 10, 11], // 参与用户 + "created_at": "2025-11-10T09:00:00Z" + } +] +``` + +--- + +## 7. 错误处理 + +### 7.1 HTTP状态码 + +| 状态码 | 说明 | 处理建议 | +|--------|------|---------| +| **200 OK** | 请求成功 | 正常处理数据 | +| **201 Created** | 创建成功 | 显示成功消息 | +| **204 No Content** | 删除成功 | 显示成功消息 | +| **400 Bad Request** | 请求参数错误 | 检查请求参数格式 | +| **401 Unauthorized** | 未认证或Token无效 | 跳转到登录页 | +| **403 Forbidden** | 无权限 | 显示"无权限"提示 | +| **404 Not Found** | 资源不存在 | 显示"资源不存在"提示 | +| **500 Internal Server Error** | 服务器错误 | 显示"服务器错误"提示 | + +### 7.2 错误响应格式 + +**标准错误响应**: +```json +{ + "detail": "错误描述" +} +``` + +**详细错误响应**(包含更多上下文): +```json +{ + "detail": "权限不足", + "error_code": "PERMISSION_DENIED", + "permission_required": "document:document:delete", + "user_id": 9 +} +``` + +### 7.3 全局错误处理 + +```javascript +// axios-instance.js +apiClient.interceptors.response.use( + response => response, + error => { + const status = error.response?.status; + const detail = error.response?.data?.detail || '未知错误'; + + switch (status) { + case 400: + // 请求参数错误 + console.error('请求参数错误:', detail); + alert(`请求参数错误: ${detail}`); + break; + + case 401: + // 未认证或Token无效 + console.error('认证失败,跳转到登录页'); + localStorage.removeItem('access_token'); + localStorage.removeItem('user_info'); + window.location.href = '/login'; + break; + + case 403: + // 无权限 + console.error('权限不足:', detail); + alert(`权限不足: ${detail}`); + break; + + case 404: + // 资源不存在 + console.error('资源不存在:', detail); + alert(`资源不存在: ${detail}`); + break; + + case 500: + // 服务器错误 + console.error('服务器错误:', detail); + alert(`服务器错误,请稍后重试`); + break; + + default: + console.error('未知错误:', error); + alert(`请求失败,请稍后重试`); + } + + return Promise.reject(error); + } +); +``` + +### 7.4 特定错误处理 + +```javascript +// 创建文档时处理权限错误 +async function createDocumentWithErrorHandling(data) { + try { + const response = await apiClient.post('/postgrest/documents', data); + alert('文档创建成功'); + return response.data[0]; + } catch (error) { + if (error.response?.status === 403) { + const detail = error.response.data?.detail || '权限不足'; + if (detail.includes('数据范围')) { + alert('您无权在此组织单位创建文档'); + } else { + alert('您没有创建文档的权限'); + } + } else { + alert('创建文档失败,请重试'); + } + throw error; + } +} +``` + +--- + +## 8. 常用示例 + +### 8.1 文档列表页面 + +```vue + + + +``` + +### 8.2 文档详情页面 + +```vue + + + +``` + +--- + +## 9. 最佳实践 + +### 9.1 安全最佳实践 + +1. **始终使用HTTPS** + 生产环境必须使用HTTPS传输,防止Token被窃取。 + +2. **安全存储Token** + - 使用`localStorage`或`sessionStorage`存储Token + - 不要将Token存储在Cookie中(避免CSRF攻击) + - 不要将Token暴露在URL参数中 + +3. **Token过期处理** + - 定期检查Token是否过期 + - Token过期后立即跳转到登录页 + - 提供Token刷新机制(如果后端支持) + +4. **不要绕过前端权限检查** + - 即使前端隐藏了按钮,用户仍可能通过开发者工具发起请求 + - 后端会强制执行权限检查,前端绕过无效 + +### 9.2 性能最佳实践 + +1. **分页查询** + 始终使用分页,避免一次性加载大量数据。 + + ```javascript + // ✅ 好的做法 + const response = await apiClient.get('/postgrest/documents', { + params: { limit: 10, offset: 0 } + }); + + // ❌ 不好的做法 + const response = await apiClient.get('/postgrest/documents'); // 返回所有数据 + ``` + +2. **字段选择** + 只查询需要的字段,减少数据传输量。 + + ```javascript + // ✅ 好的做法 + const response = await apiClient.get('/postgrest/documents', { + params: { select: 'id,title,status' } + }); + + // ❌ 不好的做法 + const response = await apiClient.get('/postgrest/documents'); // 返回所有字段 + ``` + +3. **缓存数据** + 对于不经常变化的数据(如字典表、配置表),使用前端缓存。 + + ```javascript + // 缓存字典数据 + let documentTypesCache = null; + + async function getDocumentTypes() { + if (documentTypesCache) { + return documentTypesCache; + } + + const response = await apiClient.get('/postgrest/document_types'); + documentTypesCache = response.data; + + // 5分钟后过期 + setTimeout(() => { + documentTypesCache = null; + }, 5 * 60 * 1000); + + return documentTypesCache; + } + ``` + +4. **批量操作** + 尽量减少请求次数,使用批量操作。 + + ```javascript + // ❌ 不好的做法:逐个删除 + for (const id of [1, 2, 3]) { + await apiClient.delete('/postgrest/documents', { + params: { id: `eq.${id}` } + }); + } + + // ✅ 好的做法:批量删除 + await apiClient.delete('/postgrest/documents', { + params: { id: `in.(1,2,3)` } + }); + ``` + +### 9.3 用户体验最佳实践 + +1. **加载状态** + 显示加载指示器,提升用户体验。 + + ```vue + + + + ``` + +2. **错误提示** + 友好的错误提示,避免显示技术细节。 + + ```javascript + // ❌ 不好的做法 + alert(error.message); // "Cannot read property 'data' of undefined" + + // ✅ 好的做法 + alert('加载数据失败,请稍后重试'); + ``` + +3. **操作确认** + 对于删除等危险操作,提供确认提示。 + + ```javascript + async function deleteDocument(id) { + if (!confirm('确定要删除此文档吗?此操作不可撤销。')) { + return; + } + + try { + await apiClient.delete('/postgrest/documents', { + params: { id: `eq.${id}` } + }); + alert('删除成功'); + } catch (error) { + alert('删除失败'); + } + } + ``` + +--- + +## 10. 故障排查 + +### 10.1 常见问题 + +#### 问题1:401 Unauthorized - Token无效 + +**症状**: 所有API请求返回401错误。 + +**原因**: +- Token已过期 +- Token格式错误 +- Token未正确携带在请求头中 + +**解决方法**: +1. 检查Token是否存在:`localStorage.getItem('access_token')` +2. 检查Token格式是否正确(应为`Bearer {token}`) +3. 检查Token是否过期 +4. 重新登录获取新Token + +#### 问题2:403 Forbidden - 权限不足 + +**症状**: 某些API请求返回403错误。 + +**原因**: +- 用户没有该操作的权限 +- 尝试访问不在数据范围内的数据 + +**解决方法**: +1. 确认用户是否有对应的权限(检查用户角色) +2. 确认数据是否在用户的数据范围内 +3. 联系管理员分配权限 + +#### 问题3:CORS错误 + +**症状**: 浏览器控制台显示CORS错误。 + +**原因**: +- 前端域名未在后端CORS白名单中 + +**解决方法**: +1. 联系后端开发人员将前端域名添加到CORS白名单 +2. 开发环境可以配置代理绕过CORS + +**Vue.js开发环境代理配置**: +```javascript +// vue.config.js +module.exports = { + devServer: { + proxy: { + '/api': { + target: 'http://localhost:8000', + changeOrigin: true + } + } + } +}; +``` + +#### 问题4:数据未按预期过滤 + +**症状**: 查询返回了不应该看到的数据。 + +**原因**: +- 后端数据范围配置错误 +- 前端缓存了旧数据 + +**解决方法**: +1. 清除浏览器缓存和localStorage +2. 检查用户的数据范围配置是否正确 +3. 联系后端开发人员检查RBAC配置 + +### 10.2 调试技巧 + +#### 1. 查看请求详情 + +使用浏览器开发者工具查看请求详情: +1. 打开开发者工具(F12) +2. 切换到Network标签 +3. 发起请求 +4. 点击请求查看Headers、Payload、Response + +#### 2. 查看Token内容 + +```javascript +// 解码JWT Token +function decodeToken(token) { + try { + const payload = JSON.parse(atob(token.split('.')[1])); + console.log('Token内容:', payload); + return payload; + } catch (e) { + console.error('Token解码失败:', e); + return null; + } +} + +// 使用示例 +const token = localStorage.getItem('access_token'); +decodeToken(token); +``` + +#### 3. 启用详细日志 + +```javascript +// axios-instance.js +apiClient.interceptors.request.use(config => { + console.log('[Request]', config.method.toUpperCase(), config.url, config.params); + return config; +}); + +apiClient.interceptors.response.use( + response => { + console.log('[Response]', response.status, response.data); + return response; + }, + error => { + console.error('[Error]', error.response?.status, error.response?.data); + return Promise.reject(error); + } +); +``` + +--- + +## 附录 + +### A. 完整API端点列表 + +详见:[API端点列表文档](./前端对接文档-API端点列表.md) + +### B. PostgREST过滤运算符完整列表 + +详见:[PostgREST查询参考](./前端对接文档-PostgREST查询参考.md) + +### C. 权限列表 + +详见:[权限列表文档](./前端对接文档-权限列表.md) + +--- + +## 联系支持 + +如有问题或建议,请联系: +- **技术支持**: support@docauditai.com +- **开发团队**: dev@docauditai.com + +--- + +**文档版本**: v1.0 +**最后更新**: 2025-11-17 +**维护者**: Claude Code diff --git a/auth_doc/前端快速开始_5分钟集成.md b/auth_doc/前端快速开始_5分钟集成.md new file mode 100644 index 0000000..0205862 --- /dev/null +++ b/auth_doc/前端快速开始_5分钟集成.md @@ -0,0 +1,333 @@ +# 前端快速开始 - 5分钟集成RBAC系统 + +**版本**: v1.0 +**日期**: 2025-11-17 +**目标**: 最快速度集成登录、动态路由和数据访问 + +--- + +## ⚡ 5分钟集成步骤 + +### 步骤1: 安装依赖(1分钟) + +```bash +npm install axios pinia vue-router@4 element-plus +``` + +### 步骤2: 配置环境变量(30秒) + +创建 `.env.development`: + +```env +VITE_API_BASE_URL=http://172.16.0.55:8073 +``` + +### 步骤3: 创建请求工具(1分钟) + +**文件**: `src/utils/request.ts` + +```typescript +import axios from 'axios'; +import { ElMessage } from 'element-plus'; + +const service = axios.create({ + baseURL: import.meta.env.VITE_API_BASE_URL || 'http://172.16.0.55:8073', + timeout: 30000 +}); + +// 请求拦截器:自动添加Token +service.interceptors.request.use(config => { + const token = localStorage.getItem('token'); + if (token) { + config.headers['Authorization'] = `Bearer ${token}`; + } + return config; +}); + +// 响应拦截器:统一错误处理 +service.interceptors.response.use( + response => response, + error => { + if (error.response?.status === 401) { + ElMessage.error('登录已过期'); + localStorage.clear(); + window.location.href = '/login'; + } + return Promise.reject(error); + } +); + +export default service; +``` + +### 步骤4: 创建用户Store(2分钟) + +**文件**: `src/stores/user.ts` + +```typescript +import { defineStore } from 'pinia'; +import { ref } from 'vue'; +import request from '@/utils/request'; +import router from '@/router'; + +export const useUserStore = defineStore('user', () => { + const token = ref(''); + const userInfo = ref(null); + const routes = ref([]); + + // 登录 + const login = async (username: string, password: string) => { + const res = await request.post('/auth/login', { username, password }); + + if (res.data.success) { + token.value = res.data.data.access_token; + userInfo.value = res.data.data.user_info; + + localStorage.setItem('token', token.value); + localStorage.setItem('userInfo', JSON.stringify(userInfo.value)); + + return true; + } + return false; + }; + + // 获取路由 + const fetchRoutes = async () => { + const res = await request.get('/user/routes'); + + if (res.data.code === 200) { + routes.value = res.data.data.routes; + + // 动态注册路由 + routes.value.forEach(route => { + router.addRoute({ + path: route.route_path, + name: route.route_name, + component: () => import(`@/views/${route.component}.vue`), + meta: { title: route.route_title } + }); + }); + + return routes.value; + } + }; + + // 登出 + const logout = () => { + token.value = ''; + userInfo.value = null; + routes.value = []; + localStorage.clear(); + router.push('/login'); + }; + + return { token, userInfo, routes, login, fetchRoutes, logout }; +}); +``` + +### 步骤5: 配置路由守卫(30秒) + +**文件**: `src/router/index.ts` + +```typescript +import { createRouter, createWebHistory } from 'vue-router'; +import { useUserStore } from '@/stores/user'; + +const router = createRouter({ + history: createWebHistory(), + routes: [ + { path: '/login', component: () => import('@/views/Login.vue') } + ] +}); + +router.beforeEach(async (to, from, next) => { + const userStore = useUserStore(); + const token = localStorage.getItem('token'); + + if (token && !userStore.token) { + userStore.token = token; + userStore.userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}'); + } + + if (to.path !== '/login' && !token) { + next('/login'); + } else if (token && !userStore.routes.length) { + await userStore.fetchRoutes(); + next({ ...to, replace: true }); + } else { + next(); + } +}); + +export default router; +``` + +### 步骤6: 创建登录页(30秒) + +**文件**: `src/views/Login.vue` + +```vue + + + +``` + +--- + +## ✅ 完成! + +现在你已经完成了基础集成,可以: + +1. ✅ 用户登录 +2. ✅ 动态加载路由 +3. ✅ 访问受保护的页面 + +--- + +## 🚀 下一步:数据访问 + +### 查询数据 + +```typescript +import request from '@/utils/request'; + +// 查询文档列表 +const fetchDocuments = async () => { + const res = await request.get('/documents', { + params: { + user_id: `eq.${userInfo.user_id}`, // 只查自己的数据 + limit: 20, + offset: 0 + } + }); + return res.data; +}; +``` + +### 创建数据 + +```typescript +const createDocument = async (data: any) => { + const res = await request.post('/documents', data); + return res.data; +}; +``` + +### 更新数据 + +```typescript +const updateDocument = async (id: number, data: any) => { + const res = await request.patch(`/documents?id=eq.${id}`, data); + return res.data; +}; +``` + +### 删除数据 + +```typescript +const deleteDocument = async (id: number) => { + const res = await request.delete(`/documents?id=eq.${id}`); + return res.data; +}; +``` + +--- + +## 📚 测试账号 + +| 用户名 | 密码 | 角色 | 说明 | +|--------|------|------|------| +| 000 | admin06111 | 超级管理员 | 所有权限(29个路由) | +| 001 | gdyc06111 | 普通用户 | 有限权限(19个路由) | +| jy001 | jyyc0814 | 系统管理员 | 所有权限(29个路由) | + +--- + +## 🔧 常见问题 + +### 1. Token过期怎么办? + +后端返回401时,自动清除Token并跳转登录页。 + +### 2. 路由404怎么办? + +检查组件路径是否正确: + +```typescript +// 后端返回: component: "views/Home" +// 前端import: @/views/views/Home.vue ❌ + +// 修改为: +component: () => import(`@/views/Home.vue`) +``` + +### 3. 普通用户能看到所有数据? + +前端必须手动添加 `user_id` 过滤: + +```typescript +// ❌ 错误 +const docs = await request.get('/documents'); + +// ✅ 正确 +const docs = await request.get('/documents', { + params: { user_id: `eq.${userInfo.user_id}` } +}); +``` + +--- + +## 📖 详细文档 + +完整API说明请查看: +- **完整对接文档**: `docs/RBAC/前端完整对接文档_RBAC与PostgREST.md` + +--- + +**创建时间**: 2025-11-17 +**维护者**: Claude Code diff --git a/auth_doc/角色-路由权限实现方案.md b/auth_doc/角色-路由权限实现方案.md new file mode 100644 index 0000000..3df0859 --- /dev/null +++ b/auth_doc/角色-路由权限实现方案.md @@ -0,0 +1,1180 @@ +# 角色-路由权限实现方案 + +**版本**: v1.0 +**日期**: 2025-11-17 +**状态**: 设计完成,待实现 + +--- + +## 目录 + +1. [功能概述](#功能概述) +2. [设计原则](#设计原则) +3. [架构设计](#架构设计) +4. [数据库设计](#数据库设计) +5. [后端实现](#后端实现) +6. [前端实现](#前端实现) +7. [安全策略](#安全策略) +8. [性能优化](#性能优化) +9. [实施步骤](#实施步骤) +10. [测试方案](#测试方案) + +--- + +## 功能概述 + +### 业务需求 + +实现**基于角色的前端路由权限控制**,使不同角色的用户登录后看到不同的菜单和页面: + +- ✅ **系统管理员** - 可访问所有路由(用户管理、角色管理、权限管理等) +- ✅ **文档管理员** - 可访问文档管理相关路由 +- ✅ **文档审查员** - 可访问文档查看和评查路由 +- ✅ **普通用户** - 仅可访问基础路由(首页、个人中心) + +### 核心功能 + +1. **路由定义管理** - 系统路由的增删改查 +2. **角色-路由关联** - 配置角色可访问的路由 +3. **用户路由查询** - 根据用户角色获取可访问路由列表 +4. **动态菜单生成** - 前端根据路由列表动态生成菜单 +5. **路由守卫** - 前端路由守卫拦截未授权访问 + +--- + +## 设计原则 + +### 1. 高可用性原则 + +- **缓存优先**: 路由权限数据缓存到 Redis(TTL: 30分钟) +- **降级策略**: Redis 不可用时直接查询数据库 +- **异步刷新**: 后台定时刷新缓存,避免缓存雪崩 + +### 2. 高性能原则 + +- **单次查询**: 用户登录时一次性获取所有可访问路由 +- **前端缓存**: 路由数据存储在前端 LocalStorage +- **懒加载**: 路由组件按需加载 + +### 3. 安全性原则 + +- **前后端双重验证**: 前端路由守卫 + 后端 API 权限校验 +- **最小权限**: 默认拒绝所有访问,显式授权 +- **审计日志**: 记录路由访问日志 + +### 4. 可维护性原则 + +- **配置化**: 路由通过数据库配置,无需修改代码 +- **层级结构**: 支持多级路由嵌套 +- **元信息**: 路由携带图标、标题等元信息 + +--- + +## 架构设计 + +### 整体架构 + +``` +┌─────────────────────────────────────────────────────────────┐ +│ 前端应用 │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ +│ │ 路由守卫 │ │ 动态菜单 │ │ 权限指令 │ │ +│ └──────────────┘ └──────────────┘ └──────────────┘ │ +└─────────────────────────────────────────────────────────────┘ + ↓ HTTP请求 +┌─────────────────────────────────────────────────────────────┐ +│ FastAPI 后端 │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ +│ │ 路由权限API │ │ 路由管理API │ │ 角色管理API │ │ +│ └──────────────┘ └──────────────┘ └──────────────┘ │ +│ ┌──────────────────────────────────────────────────┐ │ +│ │ RoutePermission 模块 │ │ +│ │ - get_user_routes() 获取用户可访问路由 │ │ +│ │ - get_role_routes() 获取角色可访问路由 │ │ +│ │ - check_route_access() 检查路由访问权限 │ │ +│ └──────────────────────────────────────────────────┘ │ +└─────────────────────────────────────────────────────────────┘ + ↓ +┌─────────────────────────────────────────────────────────────┐ +│ 数据层 │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ +│ │ sys_routes │ │ role_route │ │ Redis Cache │ │ +│ │ (路由定义) │ │ (角色-路由) │ │ (路由缓存) │ │ +│ └──────────────┘ └──────────────┘ └──────────────┘ │ +└─────────────────────────────────────────────────────────────┘ +``` + +### 数据流向 + +#### 用户登录流程 + +``` +1. 用户登录 + ↓ +2. 后端验证凭据 + ↓ +3. 查询用户角色 + ↓ +4. 根据角色查询可访问路由(优先从 Redis 缓存读取) + ↓ +5. 返回用户信息 + 路由列表 + ↓ +6. 前端存储路由数据到 LocalStorage + ↓ +7. Vue Router 动态注册路由 + ↓ +8. 根据路由生成侧边栏菜单 +``` + +#### 路由访问流程 + +``` +1. 用户访问路由(如 /system/users) + ↓ +2. 前端路由守卫拦截 + ↓ +3. 检查路由是否在可访问列表 + ↓ +4. [是] 允许访问 → 加载页面组件 + ↓ +5. [否] 拒绝访问 → 跳转 403 页面 +``` + +--- + +## 数据库设计 + +### 表结构 + +#### 1. sys_routes(系统路由表) + +已存在,需要确认字段: + +```sql +CREATE TABLE IF NOT EXISTS sys_routes ( + id SERIAL PRIMARY KEY, + route_path VARCHAR(255) NOT NULL, -- 路由路径 /system/users + route_name VARCHAR(100) NOT NULL, -- 路由名称 UserManagement + component VARCHAR(255), -- 组件路径 views/system/Users.vue + parent_id INTEGER, -- 父路由ID(支持多级路由) + route_title VARCHAR(100), -- 路由标题(中文) + icon VARCHAR(50), -- 图标名称 + sort_order INTEGER DEFAULT 0, -- 排序顺序 + is_hidden BOOLEAN DEFAULT FALSE, -- 是否隐藏(隐藏的路由不显示在菜单) + is_cache BOOLEAN DEFAULT TRUE, -- 是否缓存(KeepAlive) + meta JSONB, -- 元信息(扩展字段) + status INTEGER DEFAULT 0, -- 状态 0=启用 1=禁用 + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + deleted_at TIMESTAMP, + + CONSTRAINT fk_parent_route FOREIGN KEY (parent_id) REFERENCES sys_routes(id) ON DELETE CASCADE +); + +-- 索引 +CREATE INDEX idx_routes_parent_id ON sys_routes(parent_id); +CREATE INDEX idx_routes_status ON sys_routes(status); +CREATE UNIQUE INDEX idx_routes_path ON sys_routes(route_path) WHERE deleted_at IS NULL; +``` + +**字段说明**: +- `route_path`: 前端路由路径,如 `/system/users` +- `route_name`: 路由名称(唯一标识),如 `UserManagement` +- `component`: 组件路径,如 `views/system/Users.vue` +- `parent_id`: 父路由ID,支持多级嵌套菜单 +- `route_title`: 菜单显示的标题(中文) +- `icon`: 图标(Element Plus / Ant Design 图标名) +- `is_hidden`: 是否在菜单中隐藏(某些路由不显示在菜单,但可访问) +- `meta`: JSON 扩展字段,存储额外信息(如权限标识、面包屑等) + +#### 2. role_route(角色-路由关联表) + +已存在,需要确认字段: + +```sql +CREATE TABLE IF NOT EXISTS role_route ( + id SERIAL PRIMARY KEY, + role_id INTEGER NOT NULL, + route_id INTEGER NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT fk_role FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE CASCADE, + CONSTRAINT fk_route FOREIGN KEY (route_id) REFERENCES sys_routes(id) ON DELETE CASCADE, + CONSTRAINT uk_role_route UNIQUE (role_id, route_id) +); + +-- 索引 +CREATE INDEX idx_role_route_role_id ON role_route(role_id); +CREATE INDEX idx_role_route_route_id ON role_route(route_id); +``` + +### 数据示例 + +#### 系统路由数据 + +```sql +-- 一级路由:首页 +INSERT INTO sys_routes (id, route_path, route_name, component, route_title, icon, sort_order) +VALUES (1, '/dashboard', 'Dashboard', 'views/Dashboard.vue', '首页', 'el-icon-house', 1); + +-- 一级路由:系统管理(父菜单) +INSERT INTO sys_routes (id, route_path, route_name, component, route_title, icon, sort_order) +VALUES (2, '/system', 'System', 'Layout', '系统管理', 'el-icon-setting', 10); + +-- 二级路由:用户管理 +INSERT INTO sys_routes (id, route_path, route_name, component, parent_id, route_title, icon, sort_order) +VALUES (3, '/system/users', 'SystemUsers', 'views/system/Users.vue', 2, '用户管理', 'el-icon-user', 1); + +-- 二级路由:角色管理 +INSERT INTO sys_routes (id, route_path, route_name, component, parent_id, route_title, icon, sort_order) +VALUES (4, '/system/roles', 'SystemRoles', 'views/system/Roles.vue', 2, '角色管理', 'el-icon-user-filled', 2); + +-- 一级路由:文档管理 +INSERT INTO sys_routes (id, route_path, route_name, component, route_title, icon, sort_order) +VALUES (10, '/documents', 'Documents', 'Layout', '文档管理', 'el-icon-document', 20); + +-- 二级路由:文档列表 +INSERT INTO sys_routes (id, route_path, route_name, component, parent_id, route_title, icon, sort_order) +VALUES (11, '/documents/list', 'DocumentList', 'views/documents/List.vue', 10, '文档列表', 'el-icon-tickets', 1); +``` + +#### 角色-路由关联数据 + +```sql +-- 系统管理员 - 拥有所有路由 +INSERT INTO role_route (role_id, route_id) +SELECT 1, id FROM sys_routes WHERE deleted_at IS NULL; + +-- 文档管理员 - 拥有首页 + 文档管理路由 +INSERT INTO role_route (role_id, route_id) +VALUES (2, 1), (2, 10), (2, 11); + +-- 普通用户 - 只有首页 +INSERT INTO role_route (role_id, route_id) +VALUES (8, 1); +``` + +--- + +## 后端实现 + +### 文件结构 + +``` +app/ +├── rbac/ +│ ├── route_permission.py # 路由权限检查模块(新建) +│ ├── permission_checker.py # 现有权限检查模块 +│ └── data_scope_injector.py # 现有数据范围注入模块 +├── routes/ +│ └── rbac_routes.py # RBAC 路由管理接口(新建) +``` + +### 核心模块:route_permission.py + +```python +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +路由权限检查模块 + +提供基于角色的路由权限检查功能 +""" + +from typing import List, Dict, Optional, Set +import asyncpg +from core.database import get_asyncpg_pool +from core.redis_client import get_redis_client +from core.logger import rbac_logger +import json + +class RoutePermission: + """路由权限管理器""" + + # Redis 缓存键前缀 + CACHE_PREFIX = "rbac:routes" + CACHE_TTL = 1800 # 30分钟 + + @classmethod + async def get_user_routes( + cls, + user_id: int, + use_cache: bool = True + ) -> List[Dict]: + """ + 获取用户可访问的路由列表 + + Args: + user_id: 用户ID + use_cache: 是否使用缓存 + + Returns: + 路由列表(树形结构) + """ + # 1. 尝试从缓存获取 + if use_cache: + cached = await cls._get_routes_from_cache(user_id) + if cached is not None: + rbac_logger.info(f"路由权限缓存命中: user={user_id}") + return cached + + # 2. 查询用户角色 + pool = await get_asyncpg_pool() + async with pool.acquire() as conn: + roles = await conn.fetch( + """ + SELECT r.id, r.role_key, r.role_name + FROM user_role ur + JOIN roles r ON ur.role_id = r.id + WHERE ur.user_id = $1 + """, + user_id + ) + + if not roles: + rbac_logger.warning(f"用户无角色: user={user_id}") + return [] + + role_ids = [role['id'] for role in roles] + + # 3. 查询角色可访问的路由 + routes = await conn.fetch( + """ + SELECT DISTINCT + sr.id, + sr.route_path, + sr.route_name, + sr.component, + sr.parent_id, + sr.route_title, + sr.icon, + sr.sort_order, + sr.is_hidden, + sr.is_cache, + sr.meta + FROM role_route rr + JOIN sys_routes sr ON rr.route_id = sr.id + WHERE rr.role_id = ANY($1) + AND sr.status = 0 + AND sr.deleted_at IS NULL + ORDER BY sr.sort_order, sr.id + """, + role_ids + ) + + # 4. 转换为字典列表 + route_list = [dict(route) for route in routes] + + # 5. 构建树形结构 + route_tree = cls._build_route_tree(route_list) + + # 6. 缓存结果 + if use_cache: + await cls._cache_routes(user_id, route_tree) + + rbac_logger.info(f"查询用户路由: user={user_id}, routes={len(route_list)}") + return route_tree + + @classmethod + async def get_role_routes( + cls, + role_id: int, + use_cache: bool = True + ) -> List[Dict]: + """ + 获取角色可访问的路由列表 + + Args: + role_id: 角色ID + use_cache: 是否使用缓存 + + Returns: + 路由列表 + """ + # 缓存键 + cache_key = f"{cls.CACHE_PREFIX}:role:{role_id}" + + # 1. 尝试从缓存获取 + if use_cache: + redis = await get_redis_client() + try: + cached = await redis.get(cache_key) + if cached: + rbac_logger.info(f"角色路由缓存命中: role={role_id}") + return json.loads(cached) + except Exception as e: + rbac_logger.warning(f"读取路由缓存失败: {e}") + + # 2. 查询数据库 + pool = await get_asyncpg_pool() + async with pool.acquire() as conn: + routes = await conn.fetch( + """ + SELECT + sr.id, + sr.route_path, + sr.route_name, + sr.route_title + FROM role_route rr + JOIN sys_routes sr ON rr.route_id = sr.id + WHERE rr.role_id = $1 + AND sr.status = 0 + AND sr.deleted_at IS NULL + ORDER BY sr.sort_order + """, + role_id + ) + + route_list = [dict(route) for route in routes] + + # 3. 缓存结果 + if use_cache: + redis = await get_redis_client() + try: + await redis.setex( + cache_key, + cls.CACHE_TTL, + json.dumps(route_list, ensure_ascii=False) + ) + except Exception as e: + rbac_logger.warning(f"缓存路由失败: {e}") + + return route_list + + @classmethod + async def check_route_access( + cls, + user_id: int, + route_path: str + ) -> bool: + """ + 检查用户是否有访问指定路由的权限 + + Args: + user_id: 用户ID + route_path: 路由路径 + + Returns: + 是否有权限 + """ + routes = await cls.get_user_routes(user_id, use_cache=True) + + # 递归检查路由树 + def check_in_tree(routes_list: List[Dict]) -> bool: + for route in routes_list: + if route['route_path'] == route_path: + return True + if route.get('children'): + if check_in_tree(route['children']): + return True + return False + + has_access = check_in_tree(routes) + + rbac_logger.info( + f"路由访问检查: user={user_id}, route={route_path}, " + f"result={has_access}" + ) + + return has_access + + @classmethod + def _build_route_tree(cls, routes: List[Dict]) -> List[Dict]: + """ + 构建路由树形结构 + + Args: + routes: 路由列表(扁平) + + Returns: + 路由树(嵌套) + """ + # 按 parent_id 分组 + route_map = {} + root_routes = [] + + for route in routes: + route_id = route['id'] + route_map[route_id] = route + route['children'] = [] + + # 构建父子关系 + for route in routes: + parent_id = route.get('parent_id') + if parent_id and parent_id in route_map: + route_map[parent_id]['children'].append(route) + else: + root_routes.append(route) + + # 移除空 children + def remove_empty_children(routes_list): + for route in routes_list: + if not route['children']: + del route['children'] + else: + remove_empty_children(route['children']) + + remove_empty_children(root_routes) + + return root_routes + + @classmethod + async def _get_routes_from_cache(cls, user_id: int) -> Optional[List[Dict]]: + """从缓存获取路由列表""" + cache_key = f"{cls.CACHE_PREFIX}:user:{user_id}" + redis = await get_redis_client() + + try: + cached = await redis.get(cache_key) + if cached: + return json.loads(cached) + except Exception as e: + rbac_logger.warning(f"读取路由缓存失败: {e}") + + return None + + @classmethod + async def _cache_routes(cls, user_id: int, routes: List[Dict]): + """缓存路由列表""" + cache_key = f"{cls.CACHE_PREFIX}:user:{user_id}" + redis = await get_redis_client() + + try: + await redis.setex( + cache_key, + cls.CACHE_TTL, + json.dumps(routes, ensure_ascii=False) + ) + except Exception as e: + rbac_logger.warning(f"缓存路由失败: {e}") + + @classmethod + async def clear_user_routes_cache(cls, user_id: int): + """清除用户路由缓存""" + cache_key = f"{cls.CACHE_PREFIX}:user:{user_id}" + redis = await get_redis_client() + + try: + await redis.delete(cache_key) + rbac_logger.info(f"清除路由缓存: user={user_id}") + except Exception as e: + rbac_logger.warning(f"清除路由缓存失败: {e}") + + @classmethod + async def clear_role_routes_cache(cls, role_id: int): + """清除角色路由缓存""" + cache_key = f"{cls.CACHE_PREFIX}:role:{role_id}" + redis = await get_redis_client() + + try: + await redis.delete(cache_key) + rbac_logger.info(f"清除角色路由缓存: role={role_id}") + except Exception as e: + rbac_logger.warning(f"清除角色路由缓存失败: {e}") +``` + +### API 接口:rbac_routes.py + +```python +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +RBAC 路由管理接口 + +提供路由权限相关的 API 端点 +""" + +from fastapi import APIRouter, Depends, Query +from typing import List, Dict, Optional +from pydantic import BaseModel, Field + +from app.rbac.route_permission import RoutePermission +from app.auth.auth import verify_token, User +from app.base_api import unified_resp +from core.logger import api_logger + +router_rbac = APIRouter(prefix="/rbac", tags=["RBAC-路由权限"]) + + +class RouteResponse(BaseModel): + """路由响应模型""" + id: int + route_path: str + route_name: str + component: Optional[str] + parent_id: Optional[int] + route_title: str + icon: Optional[str] + sort_order: int + is_hidden: bool + is_cache: bool + meta: Optional[Dict] + children: Optional[List['RouteResponse']] = None + + +class UserRoutesResponse(BaseModel): + """用户路由响应""" + user_id: int + username: str + routes: List[RouteResponse] + + +@router_rbac.get("/user/routes", summary="获取当前用户可访问路由") +@unified_resp +async def get_current_user_routes( + current_user: User = Depends(verify_token) +) -> Dict: + """ + 获取当前用户可访问的路由列表(树形结构) + + 返回数据用于前端动态路由和菜单生成 + """ + try: + routes = await RoutePermission.get_user_routes( + user_id=current_user.id, + use_cache=True + ) + + api_logger.info(f"获取用户路由: user={current_user.id}, count={len(routes)}") + + return { + 'user_id': current_user.id, + 'username': current_user.username, + 'routes': routes + } + + except Exception as e: + api_logger.error(f"获取用户路由失败: {e}", exc_info=True) + raise + + +@router_rbac.get("/roles/{role_id}/routes", summary="获取角色可访问路由") +@unified_resp +async def get_role_routes( + role_id: int, + current_user: User = Depends(verify_token) +) -> Dict: + """ + 获取指定角色可访问的路由列表 + + 用于角色管理页面展示角色权限 + """ + try: + routes = await RoutePermission.get_role_routes( + role_id=role_id, + use_cache=True + ) + + api_logger.info(f"获取角色路由: role={role_id}, count={len(routes)}") + + return { + 'role_id': role_id, + 'routes': routes + } + + except Exception as e: + api_logger.error(f"获取角色路由失败: {e}", exc_info=True) + raise + + +@router_rbac.get("/check-route", summary="检查路由访问权限") +@unified_resp +async def check_route_access( + route_path: str = Query(..., description="路由路径"), + current_user: User = Depends(verify_token) +) -> Dict: + """ + 检查当前用户是否有访问指定路由的权限 + + 前端可用此接口动态控制按钮/链接显示 + """ + try: + has_access = await RoutePermission.check_route_access( + user_id=current_user.id, + route_path=route_path + ) + + return { + 'route_path': route_path, + 'has_access': has_access + } + + except Exception as e: + api_logger.error(f"检查路由权限失败: {e}", exc_info=True) + raise +``` + +--- + +## 前端实现 + +### 1. 路由配置(Vue3 + Vue Router 4) + +```javascript +// router/index.js +import { createRouter, createWebHistory } from 'vue-router' +import { useUserStore } from '@/stores/user' + +// 静态路由(无需权限) +const constantRoutes = [ + { + path: '/login', + name: 'Login', + component: () => import('@/views/Login.vue'), + meta: { title: '登录' } + }, + { + path: '/403', + name: 'Forbidden', + component: () => import('@/views/error/403.vue'), + meta: { title: '无权限' } + }, + { + path: '/404', + name: 'NotFound', + component: () => import('@/views/error/404.vue'), + meta: { title: '页面不存在' } + } +] + +const router = createRouter({ + history: createWebHistory(), + routes: constantRoutes +}) + +// 全局路由守卫 +router.beforeEach(async (to, from, next) => { + const userStore = useUserStore() + const token = localStorage.getItem('access_token') + + // 白名单路由 + const whiteList = ['/login', '/403', '/404'] + + if (token) { + if (to.path === '/login') { + next('/') + return + } + + // 检查是否已加载动态路由 + if (!userStore.hasLoadedRoutes) { + try { + // 获取用户路由 + await userStore.loadUserRoutes() + + // 动态添加路由 + const dynamicRoutes = userStore.routes + dynamicRoutes.forEach(route => { + router.addRoute(route) + }) + + // 标记已加载 + userStore.hasLoadedRoutes = true + + // 重新导航到目标路由 + next({ ...to, replace: true }) + return + } catch (error) { + console.error('加载路由失败:', error) + // 清除 token,跳转登录 + localStorage.removeItem('access_token') + next('/login') + return + } + } + + // 检查路由权限 + if (!userStore.hasRoute(to.path)) { + next('/403') + return + } + + next() + } else { + // 未登录 + if (whiteList.includes(to.path)) { + next() + } else { + next(`/login?redirect=${to.path}`) + } + } +}) + +export default router +``` + +### 2. Pinia Store(用户状态管理) + +```javascript +// stores/user.js +import { defineStore } from 'pinia' +import { ref, computed } from 'vue' +import apiClient from '@/utils/request' + +export const useUserStore = defineStore('user', () => { + const userInfo = ref(null) + const routes = ref([]) + const hasLoadedRoutes = ref(false) + + // 加载用户路由 + async function loadUserRoutes() { + try { + const response = await apiClient.get('/rbac/user/routes') + const data = response.data + + userInfo.value = { + user_id: data.user_id, + username: data.username + } + + // 转换后端路由为 Vue Router 格式 + routes.value = convertRoutes(data.routes) + + // 存储到 LocalStorage + localStorage.setItem('user_routes', JSON.stringify(data.routes)) + + return routes.value + } catch (error) { + console.error('加载用户路由失败:', error) + throw error + } + } + + // 转换路由格式 + function convertRoutes(backendRoutes) { + return backendRoutes.map(route => { + const vueRoute = { + path: route.route_path, + name: route.route_name, + component: () => import(`@/views/${route.component}`), + meta: { + title: route.route_title, + icon: route.icon, + hidden: route.is_hidden, + keepAlive: route.is_cache, + ...route.meta + } + } + + // 递归处理子路由 + if (route.children && route.children.length > 0) { + vueRoute.children = convertRoutes(route.children) + } + + return vueRoute + }) + } + + // 检查是否有指定路由权限 + function hasRoute(path) { + const checkInRoutes = (routeList) => { + for (const route of routeList) { + if (route.path === path) { + return true + } + if (route.children && checkInRoutes(route.children)) { + return true + } + } + return false + } + + return checkInRoutes(routes.value) + } + + // 清除路由数据 + function clearRoutes() { + routes.value = [] + hasLoadedRoutes.value = false + localStorage.removeItem('user_routes') + } + + return { + userInfo, + routes, + hasLoadedRoutes, + loadUserRoutes, + hasRoute, + clearRoutes + } +}) +``` + +### 3. 动态菜单生成 + +```vue + + + + +``` + +```vue + + + + +``` + +--- + +## 安全策略 + +### 1. 前后端双重验证 + +``` +前端路由守卫(第一层防护) + ↓ +后端 API 权限校验(第二层防护) + ↓ +PostgREST 数据权限(第三层防护) +``` + +### 2. Token 防篡改 + +- JWT 签名验证 +- Token 有效期控制(24小时) +- Token 刷新机制 + +### 3. 路由访问审计 + +记录所有路由访问日志: + +```python +# 在路由守卫中记录审计日志 +await AuditLogger.log_route_access( + user_id=user_id, + route_path=route_path, + is_allowed=has_access, + ip_address=request.client.host +) +``` + +### 4. 最小权限原则 + +- 默认拒绝所有访问 +- 显式授权才能访问 +- 未配置的路由一律返回 403 + +--- + +## 性能优化 + +### 1. 缓存策略 + +| 缓存层级 | 存储位置 | TTL | 说明 | +|---------|---------|-----|------| +| 用户路由缓存 | Redis | 30分钟 | 用户可访问路由列表 | +| 角色路由缓存 | Redis | 30分钟 | 角色可访问路由列表 | +| 前端路由缓存 | LocalStorage | 登录期间 | 前端动态路由数据 | + +### 2. 懒加载 + +```javascript +// 路由组件按需加载 +component: () => import('@/views/system/Users.vue') +``` + +### 3. 数据库优化 + +- 索引优化:`parent_id`、`role_id`、`route_id` +- 查询优化:使用 JOIN 减少查询次数 +- 连接池:复用数据库连接 + +--- + +## 实施步骤 + +### 阶段一:数据库准备(第1天) + +1. ✅ 检查 `sys_routes` 和 `role_route` 表结构 +2. ✅ 添加缺失字段(如 `icon`、`is_hidden` 等) +3. ✅ 创建索引 +4. ✅ 编写初始化数据 SQL(系统路由 + 角色-路由关联) + +### 阶段二:后端实现(第2天) + +1. ✅ 实现 `RoutePermission` 模块 +2. ✅ 实现 `/rbac/user/routes` 接口 +3. ✅ 实现 `/rbac/roles/{role_id}/routes` 接口 +4. ✅ 实现 `/rbac/check-route` 接口 +5. ✅ 集成到现有认证流程 + +### 阶段三:前端对接文档(第2天) + +1. ✅ 编写接口文档 +2. ✅ 编写前端集成示例(Vue3) +3. ✅ 编写路由守卫示例 +4. ✅ 编写动态菜单示例 + +### 阶段四:测试验证(第3天) + +1. ✅ 编写单元测试 +2. ✅ 编写集成测试 +3. ✅ 性能测试(缓存命中率、响应时间) +4. ✅ 安全测试(未授权访问、Token 篡改) + +--- + +## 测试方案 + +### 1. 单元测试 + +```python +# tests/test_route_permission.py +async def test_get_user_routes(): + """测试获取用户路由""" + routes = await RoutePermission.get_user_routes(user_id=5) + assert len(routes) > 0 + assert routes[0]['route_path'] == '/dashboard' + + +async def test_check_route_access_allowed(): + """测试路由访问权限(有权限)""" + has_access = await RoutePermission.check_route_access( + user_id=5, + route_path='/system/users' + ) + assert has_access == True + + +async def test_check_route_access_denied(): + """测试路由访问权限(无权限)""" + has_access = await RoutePermission.check_route_access( + user_id=9, + route_path='/system/roles' + ) + assert has_access == False +``` + +### 2. 集成测试 + +```python +# tests/test_rbac_routes_api.py +async def test_get_current_user_routes_api(): + """测试获取当前用户路由接口""" + response = await client.get( + '/rbac/user/routes', + headers={'Authorization': f'Bearer {token}'} + ) + assert response.status_code == 200 + data = response.json() + assert 'routes' in data + assert len(data['routes']) > 0 +``` + +### 3. 性能测试 + +- 缓存命中率 > 95% +- 接口响应时间 < 100ms +- 并发 1000 QPS 无压力 + +--- + +## 风险评估与应对 + +### 风险1:Redis 不可用 + +**应对**:降级策略,直接查询数据库 + +### 风险2:路由数据量大(>1000条) + +**应对**: +- 分页加载 +- 按需加载子菜单 +- 前端虚拟滚动 + +### 风险3:缓存一致性 + +**应对**: +- 更新路由时清除相关缓存 +- 设置合理的 TTL(30分钟) +- 提供手动刷新缓存接口 + +--- + +**文档版本**: v1.0 +**最后更新**: 2025-11-17 +**维护者**: DocAuditAI Team diff --git a/tmp/交叉评查-提出意见.png b/tmp/交叉评查-提出意见.png deleted file mode 100644 index ddca6a9fdf6e8482447212c3e5c94d4748635241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322739 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�ik${?W2z9qd-JuEC<4+g~K>=nAs$G|QmV8qq%h>b2ZD zld_o#+n``*!i1t``s{B5PRV+%A;i=(hPoH#Ttq5L-Al3RP835*JwY|D6_wtBtI)I! z9jam3>$N;m@r99v7Y4;h+z&#Q6(dqSKjHi>M;UiSYe`{xtF_p*nA70|NZOHx61@_9 z@v)X*jMo_X>ofHw3WI0!1}^_Q+ZRR@H>2t3Xd${Vu~guSS}gHS!;Kzh2#!4qwKqq62 zO`5b7Ja}jJ3-Je6FeD&%pt~>`qf2d8q{n}mOuG=2wiitVeAK^nuoQbGzNq$2UVT)J zf;#4FQ?QzH-s;R@zJ8PA>zZ@BIQQ^o_JZ5QRXofd{_39g%}?3Pcq9Bg`yY#nZDZ!l zO8$(<4o(`9~Z$vibaPrE1PP8J4`m?>g zksANfSUufr&shudBGo`Tti9rq5e%-X<}?cz$~&uI6c(xT7q!o3dV1IO@|MZ;#535L z9Huw;krbAn8KUifA9b?tnIY+ktRvbU@B0kNh+CNFvnQwlJUFy z^V;Tu*Bh`RVK!lEiFpZ-C=SFWnO#qb3&}u(sw|h^NPF8DkV%ir^p}M9=s)oI(iWIy z?M%J$+?fhrHk)@dbS{_?gQ`h5Gsj7;Rc|z1x(h$eXw+ccIbDKBq#&cZx~7M%v`Ovc zOK}{1<^?_aQU(*%`7+Fz67+=YLC{Ng<;1Y{2ebMwlcG+ntnDV0g@+eQrA&PP3QpKr z1`d3A9Z(fijctofAt!Zz7*kbM!!osJ57idh$Zl;}%7jh{e@qd4)aWPp1#y;Q5|h>H z`8p5|`GD^7zwe@9ZqlVcN0MTN)dfoiRuXJ_A1uI3U{Z0M+e~D4^Xmg;1J*L$Ouncy z$|pPr3U*$)l)4zZ{30ajO7%Av`+e26T5GLs!8Ypr4N}5K0Ux{cPthPYp$XZ(Sh!Iz zA85b+T2Yak0@+k>TIp1}TH7#6P1T%%9DaVK1E$iEdR}i?rdBo1xNikM?A%HyR;eSh2cI~ig{9ZcDfM6Z(v_|4#~vJ{r#d~v~YhNgUy z)o|4PIQpvd)SQl>H0m<^Mw_TL)MCN7_)o6X35+@fRZxwxqDM({!qAk_7}PyQ=03F6 z>)3)EM{693E+jx0I~hA7vLL^4G=F7P%HT$-GMVUz zZTL8QTRvYHaN*&4tsdk2vqts5i9Le|9ut2=W7JbZiUS`4UlPM)pCVfXX`K^21R+!~ z(SEH-_Qr2E2Qb{33F3g96mqU6*Oj{LrxjiSXZ-R9SCbd?6jU;$`TXgKRA=uIg!=ZwD^w->Y}MF~rf{W6Y!M zm(#S0=8Pw&es$cEoCzfcF^xCpJx6WWZ=C|wICGxISv$632zVHSa%Y(&Cb`y+pXU{y ze)EjtH+G1L?dp0yKEk@@62Ixddhk?9M=nf7-r7Mn_xk!R6H_d$Qf4{AGI*7V*?j&) zMZwQOv0|s;IgEm!P;{O|qc5OsttdsKKo8SHAqOU186@JewF4OrV$oD0rw9IeL?u)S0a^7eJbqDS{^zS zT_=y?Q)jXQYLth&ib}`11s-1S$zK`z7fU#Y_Kwet16pNeO8zja+%^F>@mYPs+uS3C z100L~=s^7julE63u-dF`ei%G&OfJuNGZ2`>O6@9tD?xpdy0w)Glq}YH%Rp8K^lDgM z7lF|f!rUyi2XhnmxR-F_S0f{mWsd>&P{8;gVLZ5r=!Cu{{T^>vso5oY!*Z^C>vieR z>>!>jrG?jB;l>F+H8|z%L`w(75Bm1>YC�mSOTH|EaB_;il95e{HbiamC3NIAUd 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℘GpQ~5K9Lmm2C3o+wD|e{Tk&C1I@Uive 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 DN>MtE diff --git a/tmp/交叉评查上传文件页面.png b/tmp/交叉评查上传文件页面.png deleted file mode 100644 index dc1389f24daf496b3c34d7fc7f4e623739deeb88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115572 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%0AI(pc#}L@_2q8!^6(#d%@arCG)-2}vNR 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%0De-! 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 z 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
>Pkym*`4 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