PROJECT INFO
StageIdea
Prioritymedium
CreatedMar 22
UpdatedMar 22
ACTIVITY TREND
Commits per week (8 wk)
About This Project
An AI-powered medical diagnostic assistant that analyzes patient data, assesses symptoms, and generates treatment recommendations. Built with a React frontend and Python AI backend, it processes medical records, lab results, and patient histories to provide clinical decision support. Designed for healthcare professionals to accelerate diagnosis workflows while maintaining evidence-based medical standards.
README
医美 AI SaaS 平台 - API 后端
基于 Hono + TypeScript + Prisma 的医美 SaaS 平台 API 服务。
技术栈
- 框架: Hono (轻量高性能 Web 框架)
- 语言: TypeScript
- ORM: Prisma
- 数据库: PostgreSQL
- 认证: JWT + API Key
- 验证: Zod
快速开始
1. 环境要求
- Node.js 20+
- PostgreSQL 16+
- npm 或 pnpm
2. 安装依赖
npm install
3. 配置环境变量
复制 .env.example 到 .env 并修改配置:
cp .env.example .env
主要配置项:
DATABASE_URL="postgresql://postgres:password@localhost:5432/med_ai?schema=public"
JWT_SECRET="your-super-secret-jwt-key"
PORT=3000
4. 初始化数据库
# 生成 Prisma Client
npm run db:generate
# 同步数据库结构
npm run db:push
# 初始化种子数据
npm run db:seed
5. 启动开发服务
npm run dev
服务启动后访问: http://localhost:3000
演示账号
- 邮箱: admin@demo.com
- 密码: 123456
项目结构
src/
├── index.ts # 入口文件
├── app.ts # Hono 应用配置
├── core/ # 核心基础设施
│ ├── middleware/ # 中间件
│ │ ├── auth.ts # JWT + API Key 认证
│ │ ├── tenant.ts # 多租户隔离
│ │ ├── validator.ts # 请求验证工具
│ │ └── error.ts # 错误处理
│ ├── response.ts # 统一响应格式
│ ├── errors.ts # 错误类定义
│ ├── context.ts # Context 类型
│ └── db.ts # Prisma Client
│
└── modules/ # 业务模块
├── auth/ # 认证模块
├── tenant/ # 租户管理 (平台级)
├── customer/ # 客户管理
├── project/ # 项目管理
├── appointment/ # 预约管理
└── order/ # 订单管理
API 概览
认证接口 /api/auth
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /login | 账号密码登录 |
| POST | /refresh | 刷新 Token |
| POST | /logout | 登出 |
| GET | /me | 获取当前用户 |
| PATCH | /me | 更新当前用户 |
| GET | /me/permissions | 获取权限列表 |
| POST | /password/change | 修改密码 |
| GET | /sessions | 获取会话列表 |
| DELETE | /sessions/:id | 踢出会话 |
客户管理 /api/customers
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | / | 获取客户列表 |
| POST | / | 创建客户 |
| GET | /:id | 获取客户详情 |
| PATCH | /:id | 更新客户 |
| DELETE | /:id | 删除客户 |
| POST | /:id/assign | 分配客户 |
| POST | /batch/assign | 批量分配 |
| GET | /:id/appointments | 获取客户预约 |
| GET | /:id/orders | 获取客户订单 |
项目管理 /api/projects
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | / | 获取项目列表 |
| POST | / | 创建项目 |
| GET | /categories | 获取分类 |
| GET | /categories/tree | 获取分类树 |
| GET | /:id | 获取项目详情 |
| PATCH | /:id | 更新项目 |
| DELETE | /:id | 删除项目 |
| PATCH | /:id/status | 更新状态 |
| POST | /:id/copy | 复制项目 |
预约管理 /api/appointments
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | / | 获取预约列表 |
| POST | / | 创建预约 |
| GET | /today | 获取今日预约 |
| GET | /calendar | 获取日历数据 |
| GET | /:id | 获取预约详情 |
| PATCH | /:id | 更新预约 |
| POST | /:id/confirm | 确认预约 |
| POST | /:id/cancel | 取消预约 |
| POST | /:id/reschedule | 改约 |
| POST | /:id/checkin | 签到 |
| POST | /:id/complete | 完成 |
| POST | /:id/noshow | 标记爽约 |
订单管理 /api/orders
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | / | 获取订单列表 |
| POST | / | 创建订单 |
| GET | /:id | 获取订单详情 |
| PATCH | /:id | 更新订单 |
| POST | /:id/pay | 支付订单 |
| POST | /:id/cancel | 取消订单 |
| POST | /:id/complete | 完成订单 |
| GET | /:id/items | 获取订单明细 |
| GET | /:id/payments | 获取支付记录 |
租户管理 /api/platform/tenants (平台管理员)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | / | 获取租户列表 |
| POST | / | 创建租户 |
| GET | /:id | 获取租户详情 |
| PATCH | /:id | 更新租户 |
| DELETE | /:id | 删除租户 |
| POST | /:id/suspend | 停用租户 |
| POST | /:id/activate | 启用租户 |
| GET | /:id/stats | 获取租户统计 |
响应格式
成功响应
{
"code": 0,
"message": "success",
"data": { ... },
"timestamp": 1705747200000
}
分页响应
{
"code": 0,
"data": {
"list": [...],
"pagination": {
"page": 1,
"pageSize": 20,
"total": 100,
"totalPages": 5
}
},
"timestamp": 1705747200000
}
错误响应
{
"code": 400,
"message": "请求参数错误",
"errors": [
{ "field": "phone", "message": "手机号格式不正确" }
],
"timestamp": 1705747200000
}
错误码
| 错误码 | 说明 |
|---|---|
| 0 | 成功 |
| 400 | 请求参数错误 |
| 401 | 未认证 |
| 403 | 无权限 |
| 404 | 资源不存在 |
| 409 | 资源冲突 |
| 422 | 业务逻辑错误 |
| 429 | 请求过于频繁 |
| 500 | 服务器错误 |
开发脚本
npm run dev # 开发模式 (热重载)
npm run build # 构建
npm run start # 生产模式启动
npm run db:generate # 生成 Prisma Client
npm run db:push # 同步数据库结构
npm run db:migrate # 数据库迁移
npm run db:studio # Prisma Studio
npm run db:seed # 初始化种子数据
文档
License
MIT
Leave Feedback
STATS
Commits108
Open Issues2
Progress0%
ACTIVITY
RELEASE
Latest: idea
Mar 22
LABELS
Idea
CONTRIBUTORS
1 contributor