19. 图书馆图书管理系统(technical-architecture)
1. 架构设计
2. 技术描述
- 前端框架:React@18 + TypeScript + Vite
- UI组件库:Ant Design@5 (配合自定义主题实现"文化"风格)
- 状态管理:Zustand + React Query
- 图表库:Recharts (用于排行榜和统计)
- 样式方案:Tailwind CSS + Styled Components (用于特殊纹理背景)
- 后端服务:Supabase
- 数据库:PostgreSQL
- 日期处理:Day.js
3. 路由定义
| 路由路径 | 页面名称 | 功能描述 |
|---|---|---|
| / | 首页/检索页 | 图书搜索入口,推荐展示 |
| /book/:id | 图书详情页 | 图书详细信息,馆藏状态 |
| /rankings | 借阅排行榜 | 热门图书和读者排行 |
| /admin/borrow | 借阅管理 | 管理员借还书操作台 |
| /admin/books | 图书管理 | 图书录入、编辑、上下架 |
| /admin/categories | 分类管理 | 图书分类维护 |
| /admin/readers | 读者管理 | 读者信息与权限管理 |
| /profile | 个人中心 | 借阅记录,个人信息 |
| /login | 登录页 | 用户/管理员登录 |
4. API定义 (Supabase Integration)
4.1 核心数据交互
前端主要通过 @supabase/supabase-js 客户端直接与数据库交互,部分复杂逻辑可通过 Postgres Functions (RPC) 实现。
图书查询
- 表名:
books - 常用筛选:
title,author,isbn,category_id
借阅操作
- 表名:
borrow_records - 动作:
insert(借出),update(归还)
4.2 RPC 函数示例 (伪代码)
检查逾期
CREATE OR REPLACE FUNCTION check_overdue()
RETURNS void AS $$
BEGIN
-- 逻辑:查找所有 status='borrowed' 且 due_date < now() 的记录
-- 插入通知表或发送邮件
END;
$$ LANGUAGE plpgsql;
5. 数据模型
5.1 ER图
5.2 数据库Schema定义
Books Table
CREATE TABLE books (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
title TEXT NOT NULL,
author TEXT NOT NULL,
isbn TEXT,
publisher TEXT,
summary TEXT,
cover_url TEXT,
category_id UUID REFERENCES categories(id),
total_stock INT DEFAULT 1,
available_stock INT DEFAULT 1,
location TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
Borrow Records Table
CREATE TABLE borrow_records (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES auth.users(id),
book_id UUID REFERENCES books(id),
borrow_date TIMESTAMPTZ DEFAULT NOW(),
due_date TIMESTAMPTZ NOT NULL,
return_date TIMESTAMPTZ,
status TEXT DEFAULT 'borrowed', -- borrowed, returned, overdue
fine_amount DECIMAL(10, 2) DEFAULT 0.00
);
Categories Table
CREATE TABLE categories (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT NOT NULL,
code TEXT UNIQUE,
parent_id UUID REFERENCES categories(id)
);
20大项目拆解:从PRD到架构 文章被收录于专栏
想独立做出一个完整的项目却不知从何下手?本专栏是你的终极路线图。我们由浅入深,通过20个经典项目案例,手把手带你走过产品构思、需求撰写、功能设计、技术选型、架构搭建的全过程。从“音乐播放器”到“企业后台”,你将逐步建立对软件系统的完整认知,完成从理论到实践、从单一技能到复合能力的飞跃。
