16. 律师事务所案件管理系统(technical-architecture)
1. 系统架构设计
1.1 总体架构
本系统采用高可用、高安全性的分层架构设计,确保数据的机密性和系统的稳定性。
- 前端 (Frontend): 基于现代Web框架构建的SPA应用,专注于复杂的交互逻辑(如日历、文档预览)。
- 后端 (Backend): 提供RESTful API接口,负责业务逻辑、权限校验和数据处理。
- 数据库 (Database): 关系型数据库存储结构化数据,对象存储存储非结构化文档。
- 安全层 (Security): 独立的权限网关和加密服务。
1.2 模块划分
- Auth Service: 统一认证与授权,支持多因素认证(2FA)。
- Case Service: 案件核心业务逻辑,包括立案、进度更新、状态流转。
- Client Service: 客户信息管理及利益冲突检索。
- Document Service: 文档上传、版本管理、预览转换服务。
- Calendar Service: 日程管理、提醒任务调度。
- Finance Service: 费用记录、账单计算、报表生成。
2. 技术栈选型
2.1 前端
- 核心框架: React (推荐) 或 Vue 3
- UI 组件库: Ant Design Pro (React) / Element Plus (Vue) - 风格稳重,适合企业级后台。
- 状态管理: Redux Toolkit / Pinia
- 日历组件: FullCalendar - 功能最强大的Web日历库,支持拖拽、多视图。
- 文档预览:
- PDF: PDF.js
- Word/Excel: Mammoth.js (简单预览) 或 Microsoft Office Online / OnlyOffice (企业级预览方案)。
- 时间线组件: Ant Design Timeline 或 自定义封装组件。
- 图表库: ECharts / AntV
2.2 后端
- 开发语言: Java (Spring Boot) / Go (Gin) / Node.js (NestJS)
- 推荐: Java (Spring Boot) - 在企业级应用中生态最成熟,适合复杂业务逻辑和强类型约束。
- 数据库: PostgreSQL / MySQL
- ORM: JPA / MyBatis-Plus / GORM
- 文档存储: MinIO (自建对象存储) 或 阿里云OSS/AWS S3。
- 全文检索: Elasticsearch (用于案件和文档内容的全文检索)。
2.3 基础设施与安全
- 容器化: Docker & Kubernetes
- SSL/TLS: 强制全站HTTPS。
- 数据加密: 敏感字段(如客户身份信息)数据库加密存储。
3. 数据库设计 (核心表结构示例)
3.1 案件表 (cases)
id: Primary Keycase_no: Varchar, 案号 (Unique)name: Varchar, 案件名称client_id: Foreign Key, 委托人lawyer_id: Foreign Key, 主办律师status: Enum (Consulting, Filed, Trial, Closed, Archived)court_info: Json, 法院及法官信息created_at: DateTime
3.2 案件进度/时间线表 (case_timelines)
id: Primary Keycase_id: Foreign Keytitle: Varchar, 节点标题 (e.g. "第一次开庭")description: Text, 详细描述event_date: DateTime, 发生时间related_files: Json, 关联文件ID列表type: Enum (Milestone, Record, Note)
3.3 日程表 (schedules)
id: Primary Keyuser_id: Foreign Key, 所属用户case_id: Foreign Key, 关联案件 (Optional)title: Varchar, 日程标题start_time: DateTimeend_time: DateTimetype: Enum (Court, Meeting, Deadline, Personal)is_all_day: Booleanremind_setting: Json, 提醒设置
3.4 文档表 (documents)
id: Primary Keycase_id: Foreign Keyname: Varchar, 文件名file_path: Varchar, 存储路径/Keyfile_type: Varchar, 文件扩展名version: Integer, 版本号uploader_id: Foreign Keyupload_time: DateTime
4. 关键技术实现方案
4.1 时间线 (Timeline) 实现
- 前端: 使用垂直布局的时间轴组件。按
event_date倒序排列。 - 交互: 节点支持展开/收起。对于重要节点(如开庭),使用不同颜色的图标高亮显示。
- 数据结构: API返回按日期排序的数组,前端直接渲染。
4.2 文档在线预览
- PDF: 直接使用浏览器内置PDF查看器或集成PDF.js,支持翻页、缩放。
- Office文档 (Word/Excel):
- 方案A (轻量): 后端使用LibreOffice或Pandoc将Office文档转换为PDF,前端统一按PDF预览。
- 方案B (专业): 部署OnlyOffice Document Server或使用微软Office 365 WOPI协议,实现原样高清预览。
4.3 日历集成 (FullCalendar)
- 视图: 默认展示“月视图”,支持切换到“周视图”查看具体时间段。
- 数据源: 后端提供
/api/schedules?start=xxx&end=xxx接口,前端按需加载当前视图时间范围内的数据。 - 拖拽: 启用FullCalendar的拖拽插件,拖拽日程后调用后端API更新时间。
- 冲突提示: 在新增日程时,前端预先判断当前时间段是否有重叠日程,并给出警告。
4.4 权限控制 (RBAC + ABAC)
- 除了基础的角色权限(RBAC),需引入基于属性的权限控制(ABAC)。
- 规则示例:
Allow READ case WHERE case.lawyer_id == current_user.id OR current_user.role == 'Partner'。 - 确保律师只能看到自己负责或授权可见的案件,保护客户隐私。
5. 部署架构
- 采用Docker Compose或K8s进行微服务编排。
- 文档服务与业务服务分离,确保大文件上传下载不影响核心业务响应。
- 数据库定期冷备 + 热备,防止数据丢失。
20大项目拆解:从PRD到架构 文章被收录于专栏
想独立做出一个完整的项目却不知从何下手?本专栏是你的终极路线图。我们由浅入深,通过20个经典项目案例,手把手带你走过产品构思、需求撰写、功能设计、技术选型、架构搭建的全过程。从“音乐播放器”到“企业后台”,你将逐步建立对软件系统的完整认知,完成从理论到实践、从单一技能到复合能力的飞跃。