Skip to content

51|需求分析与项目结构

前面 50 篇把前端基础、后端基础、后端进阶的知识点逐个拆开讲。从这篇开始,把这些能力合到一个真实项目里——一个运维管理平台(ops-console),管理服务器资产、执行任务、记录事件、做权限控制。不追求功能多,核心是把全栈链路串起来:前端页面 → HTTP 请求 → 后端接口 → 数据库 → 返回数据 → 前端渲染。

一、功能范围

模块功能涉及知识点
用户认证登录、Token、权限控制JWT、依赖注入、密码哈希
资产管理服务器增删改查CRUD、分页、搜索
任务管理对资产执行操作后台任务、状态追踪
事件记录谁在什么时间做了什么审计日志、关联查询
前端界面登录页、列表页、表单页、详情页Vue 组件、路由、状态管理

不做复杂功能:没有实时通知、没有图表可视化、没有多租户。每个模块用到的知识都在前面 50 篇覆盖过,这里是把它们组装起来。

二、技术选型

技术选型理由
后端框架FastAPI前面基础篇一直在用,类型提示 + 自动文档
数据库SQLite(开发)/ PostgreSQL(生产)开发用 SQLite 省事,生产换 PostgreSQL
ORMSQLAlchemyPython 最主流的 ORM
前端框架Vue 3前端基础篇学的,组件化 + 数据驱动
前端构建Vite开发服务器 + 打包
HTTP 请求fetch前端 18 篇封装的 request 函数
认证JWT后端 38 篇的方案
部署Docker + Nginx58 篇详细讲

三、项目目录结构

前后端在同一个代码仓库,各自独立目录:

text
ops-console/
├── backend/                 # 后端
│   ├── app/
│   │   ├── main.py          # FastAPI 应用入口
│   │   ├── config.py        # 配置(pydantic-settings)
│   │   ├── database.py      # 数据库引擎和会话
│   │   ├── models.py        # SQLAlchemy 模型
│   │   ├── schemas.py       # Pydantic 请求/响应模型
│   │   ├── auth.py          # 认证(JWT、密码哈希)
│   │   └── routers/         # 路由分模块
│   │       ├── __init__.py
│   │       ├── assets.py    # 资产接口
│   │       ├── tasks.py     # 任务接口
│   │       ├── events.py    # 事件接口
│   │       └── users.py     # 用户接口(登录)
│   ├── alembic/             # 数据库迁移
│   ├── tests/               # 测试
│   ├── pyproject.toml
│   └── .env                 # 配置(不进 Git)

├── frontend/                # 前端
│   ├── src/
│   │   ├── main.js          # Vue 入口
│   │   ├── App.vue          # 根组件
│   │   ├── api/             # API 封装
│   │   │   ├── request.js   # 基础请求函数
│   │   │   ├── assets.js    # 资产相关接口
│   │   │   └── tasks.js     # 任务相关接口
│   │   ├── components/      # 通用组件
│   │   │   ├── DataTable.vue
│   │   │   ├── SearchForm.vue
│   │   │   └── Pagination.vue
│   │   ├── views/           # 页面组件
│   │   │   ├── LoginView.vue
│   │   │   ├── AssetList.vue
│   │   │   ├── AssetForm.vue
│   │   │   ├── TaskList.vue
│   │   │   └── EventLog.vue
│   │   ├── router/          # Vue Router 配置
│   │   ├── stores/          # Pinia 状态管理
│   │   └── assets/          # 静态资源
│   ├── index.html
│   ├── package.json
│   └── vite.config.js

├── docker-compose.yml       # 编排配置
├── nginx.conf               # Nginx 配置
└── README.md

四、API 设计概览

方法路径功能认证
POST/api/login登录
GET/api/me当前用户信息
GET/api/assets资产列表
POST/api/assets创建资产
GET/api/assets/{id}资产详情
PUT/api/assets/{id}更新资产
DELETE/api/assets/{id}删除资产是(管理员)
GET/api/tasks任务列表
POST/api/tasks创建任务
GET/api/tasks/{id}任务详情
GET/api/events事件日志是(管理员)

五、开发启动方式

后端:

bash
cd backend
uv run uvicorn app.main:app --reload --port 8000

前端:

bash
cd frontend
npm run dev   # 端口 5173

浏览器打开 http://localhost:5173,前端通过 fetch 调用 http://localhost:8000/api/*