16. 律师事务所案件管理系统(technical-architecture)

alt

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 Key
  • case_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 Key
  • case_id: Foreign Key
  • title: Varchar, 节点标题 (e.g. "第一次开庭")
  • description: Text, 详细描述
  • event_date: DateTime, 发生时间
  • related_files: Json, 关联文件ID列表
  • type: Enum (Milestone, Record, Note)

3.3 日程表 (schedules)

  • id: Primary Key
  • user_id: Foreign Key, 所属用户
  • case_id: Foreign Key, 关联案件 (Optional)
  • title: Varchar, 日程标题
  • start_time: DateTime
  • end_time: DateTime
  • type: Enum (Court, Meeting, Deadline, Personal)
  • is_all_day: Boolean
  • remind_setting: Json, 提醒设置

3.4 文档表 (documents)

  • id: Primary Key
  • case_id: Foreign Key
  • name: Varchar, 文件名
  • file_path: Varchar, 存储路径/Key
  • file_type: Varchar, 文件扩展名
  • version: Integer, 版本号
  • uploader_id: Foreign Key
  • upload_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个经典项目案例,手把手带你走过产品构思、需求撰写、功能设计、技术选型、架构搭建的全过程。从“音乐播放器”到“企业后台”,你将逐步建立对软件系统的完整认知,完成从理论到实践、从单一技能到复合能力的飞跃。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务