首次提交by MimoCode

This commit is contained in:
tang1219
2026-06-15 14:50:15 +08:00
parent 584b31da50
commit ead13f863c
166 changed files with 14908 additions and 1 deletions
+253 -1
View File
@@ -1 +1,253 @@
# 药箱 · YaoXiang
# 药箱 · YaoXiang
家庭药品与应急物资管理系统
## 功能介绍
### 核心功能
- **药品管理**: 添加、编辑、删除药品信息,支持通用名、商品名、规格等
- **批次管理**: 每个药品可有多个批次,独立管理库存和有效期
- **分类管理**: 二级分类(药品/医疗器械/应急用品/消耗品)
- **智能搜索**: 支持按名称、症状搜索,AI 自然语言搜索
- **AI 识别**: 拍照识别药盒、有效期、说明书,自动建档
- **到期提醒**: 90天/30天/7天过期提醒,支持有效期宽限(最多60天)
- **库存提醒**: 低库存自动提醒
- **用户管理**: 多用户支持,角色权限划分(管理员/普通用户/只读)
- **通知系统**: 支持 Server酱、PushPlus、Bark 等多种通知渠道
- **大屏模式**: 平板快速取药,大按钮方便操作
### 技术特性
- **前端**: React 18 + TypeScript + Vite + Ant Design Mobile
- **后端**: FastAPI + SQLAlchemy + SQLite
- **AI**: 支持 OpenAI、Gemini、Claude、DeepSeek、Ollama
- **部署**: Docker 单容器部署
## 项目结构
```
YaoXiang/
├── frontend/ # 前端代码
│ ├── src/
│ │ ├── api/ # API 调用层
│ │ ├── components/ # 公共组件
│ │ ├── pages/ # 页面组件
│ │ ├── stores/ # 状态管理
│ │ ├── hooks/ # 自定义 Hooks
│ │ ├── types/ # TypeScript 类型
│ │ └── utils/ # 工具函数
│ └── package.json
├── backend/ # 后端代码
│ ├── app/
│ │ ├── api/ # API 路由
│ │ ├── models/ # 数据模型
│ │ ├── schemas/ # Pydantic 模式
│ │ ├── services/ # 业务逻辑
│ │ ├── repositories/ # 数据访问
│ │ ├── ai/ # AI Provider
│ │ └── notifications/ # 通知系统
│ └── requirements.txt
├── docs/ # 开发文档
├── start.ps1 # Windows 启动脚本
├── start.sh # Linux/Mac 启动脚本
└── README.md
```
## 安装与运行
### 前置要求
- Node.js 18+
- Python 3.11+
- npm
### 快速开始
**Windows:**
```powershell
# 安装依赖
.\start.ps1 install
# 启动服务
.\start.ps1 start
```
**Linux / Mac:**
```bash
# 赋予执行权限(首次)
chmod +x start.sh
# 安装依赖
./start.sh install
# 启动服务
./start.sh start
```
**手动安装:**
```bash
# 安装前端依赖
cd frontend
npm install
# 安装后端依赖
cd ../backend
python -m venv venv
source venv/bin/activate # Windows: .\venv\Scripts\activate
pip install -r requirements.txt
# 启动后端
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
# 启动前端(新终端)
cd frontend
npm run dev
```
### 访问地址
- 前端: http://localhost:5173
- 后端 API: http://localhost:8000
- API 文档: http://localhost:8000/docs
### 默认账号
首次启动会自动创建管理员账号:
- 用户名: admin
- 密码: admin123
## 配置说明
`backend/` 目录下创建 `.env` 文件:
```bash
cp .env.example .env
```
### AI API 配置
支持多种 AI Provider,选择一种配置即可:
**OpenAI:**
```bash
AI_PROVIDER=openai
OPENAI_API_KEY=sk-your-api-key
OPENAI_MODEL=gpt-4o
```
**Gemini:**
```bash
AI_PROVIDER=gemini
GEMINI_API_KEY=your-api-key
GEMINI_MODEL=gemini-pro-vision
```
**DeepSeek:**
```bash
AI_PROVIDER=deepseek
DEEPSEEK_API_KEY=your-api-key
DEEPSEEK_MODEL=deepseek-chat
```
**Ollama (本地部署):**
```bash
AI_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=llava
```
### 通知配置
配置通知渠道,药品过期和库存不足时会发送提醒:
**Server酱:**
1. 访问 https://sct.ftqq.com/ 注册获取 SendKey
2. 配置:
```bash
NOTIFICATION_PROVIDERS=serverchan
SERVERCHAN_KEY=your-send-key
```
**PushPlus:**
1. 访问 https://www.pushplus.plus/ 注册获取 Token
2. 配置:
```bash
NOTIFICATION_PROVIDERS=pushplus
PUSHPLUS_TOKEN=your-token
```
**多渠道同时启用:**
```bash
NOTIFICATION_PROVIDERS=serverchan,pushplus
SERVERCHAN_KEY=your-key
PUSHPLUS_TOKEN=your-token
```
### 其他配置
```bash
# 安全配置(请修改为自己的密钥)
JWT_SECRET_KEY=your-secret-key
# 数据库配置(默认 SQLite
DATABASE_URL=sqlite+aiosqlite:///./data/yaoxiang.db
# 文件上传配置
UPLOAD_DIR=./data/uploads
MAX_UPLOAD_SIZE=10485760 # 10MB
```
## 常用命令
```powershell
# Windows
.\start.ps1 install # 安装依赖
.\start.ps1 start # 启动所有服务
.\start.ps1 start:f # 仅启动前端
.\start.ps1 start:b # 仅启动后端
.\start.ps1 build # 构建生产版本
.\start.ps1 clean # 清理缓存
.\start.ps1 help # 显示帮助
```
```bash
# Linux / Mac
./start.sh install # 安装依赖
./start.sh start # 启动所有服务
./start.sh start:f # 仅启动前端
./start.sh start:b # 仅启动后端
./start.sh build # 构建生产版本
./start.sh clean # 清理缓存
./start.sh help # 显示帮助
```
## 开发文档
详细文档请查看 `docs/` 目录:
- [系统架构设计](docs/architecture.md)
- [数据库设计](docs/database.md)
- [前端开发文档](frontend/DEVELOPMENT.md)
- [后端开发文档](backend/DEVELOPMENT.md)
- [API 接口文档](docs/api.md)
## 许可证
MIT License
## 声明
本项目由 [小米 MiMoCode]([mimo.xiaomi.com/zh/mimocode](https://mimo.xiaomi.com/zh/mimocode)) 助生成。