# pawlog
**Repository Path**: fgszt/pawlog
## Basic Information
- **Project Name**: pawlog
- **Description**: 爪迹PawLog——开源公益猫咪救助管理平台。
- **Primary Language**: Unknown
- **License**: GPL-3.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-09-12
- **Last Updated**: 2026-09-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 🐾 PawLog · 爪迹
**Every paw leaves a story. 每一个爪印,都值得被记录。**
开源公益猫咪救助管理平台 —— 猫咪档案 · 救助时间线 · 医疗记录 · 领养流程 · 志愿者协作






---
PawLog(爪迹)面向个人救助者与流浪猫救助团队,把分散在聊天记录和备忘录里的救助信息,变成一份份完整的**猫咪生命档案**:
- 📖 以时间线记录每只猫从「发现 → 救助 → 治疗 → 康复 → 领养」的生命轨迹
- 🏥 管理就诊、用药、疫苗、绝育等医疗记录与花费
- 🏡 跟进领养申请的完整流程:申请 → 沟通 → 家访 → 回访
- 🤝 志愿者分工协作、待办任务提醒
- 📱 微信小程序让救助现场的记录、传播与领养触手可及
## ✨ 功能特性
### Web 管理后台
| 模块 | 说明 |
| --- | --- |
| 数据看板 | 救助总数、在照顾数量、领养成功率、状态分布图表(ECharts) |
| 猫咪档案 | 编号建档、状态流转、健康状态、性格/饮食/注意事项、相册管理 |
| 救助时间线 | 手动发布图文/视频动态;医疗记录、任务完成**自动同步**为动态 |
| 医疗管理 | 就诊 / 用药 / 疫苗 / 绝育 / 体检记录与费用统计 |
| 领养管理 | 申请登记、阶段流转(沟通中 → 家访 → 已领养/拒绝)、跟进记录 |
| 任务协作 | 喂食、喂药、清洁、就医、拍摄等任务指派与优先级 |
| 志愿者 | 志愿者账号、照护分配(日常照护 / 医疗协助 / 拍摄记录) |
| 系统设置 | 修改密码、站点信息等键值配置 |
### 微信小程序(救助者 + 粉丝两端)🚧
> **注意**:小程序端当前为开发中版本,功能尚未完善,**暂不可正式使用**。以下为开发中的功能规划,仅可通过开发者工具本地调试体验。
- 🏠 **首页**:公益数据总览、最新救助动态、待领养推荐猫咪、救助者快捷入口
- 🐱 **猫咪**:猫咪列表(搜索 + 状态筛选)、**生命故事详情页**(时间线 + 成长相册 + 健康状态 + 领养入口)
- 📝 **快速记录**:拍照 → 选猫 → 一句话记录,适用于外出救助、医院现场
- ❤️ **动态**:猫咪朋友圈式内容流,支持点赞、收藏、分享
- 🏡 **领养**:待领养猫咪展示与在线提交申请
- 🔌 支持 Mock 数据独立运行,无需后端即可完整体验
## 📷 截图
| 首页看板 | 猫咪管理 | 猫咪档案 | 领养管理 |
| --- | --- | --- | --- |
|  |  |  |  |
| 小程序 · 首页 | 小程序 · 猫咪详情 | 小程序 · 动态 |
| --- | --- | --- |
|  |  |  |
## 🧱 技术栈与架构
```
pawlog/
├── server/ # 后端:NestJS 11 + Prisma 6 + SQLite,JWT 鉴权,微信 code2session
├── web/ # 管理后台:Vue 3 + Vite + TypeScript + Element Plus + Pinia + ECharts
├── uniapp/ # 微信小程序:uni-app (Vue3) + TypeScript + uView Plus
└── docs/ # 项目文档与截图
```
| 端 | 技术 | 说明 |
| --- | --- | --- |
| `server` | NestJS · Prisma · SQLite · JWT | REST API 统一前缀 `/api`,本地文件上传存储于 `server/uploads` 并经 `/uploads/**` 静态访问;SQLite 便于开箱即用,后续可平滑迁移 PostgreSQL |
| `web` | Vue 3 · Element Plus · ECharts | 开发端口 `5173`,已配置 `/api`、`/uploads` 代理到后端 |
| `uniapp` | uni-app · uView Plus | 微信小程序,静默 `wx.login` 登录;内置 Mock 回落机制 |
## 🚀 快速开始
### 环境要求
- Node.js ≥ 18
- npm
- 微信开发者工具(仅小程序端需要)
### 1️⃣ 启动后端
```bash
cd server
npm install
# 配置环境变量
cp .env .env.local # 或直接编辑 .env,参考下方说明
# 初始化数据库并写入示例数据
npm run db:push
npm run db:seed
npm run start:dev # 默认运行在 http://localhost:3000/api
```
种子数据内置示例账号(密码均为 `admin123`):
| 账号 | 角色 |
| --- | --- |
| `admin` | 管理员/救助者 |
| `xiaoyu` / `ajie` | 志愿者 |
> ⚠️ 生产环境请务必修改默认密码与 `JWT_SECRET`。
### 2️⃣ 启动 Web 管理后台
```bash
cd web
npm install
npm run dev # http://localhost:5173,API 已代理到 3000 端口
```
使用 `admin / admin123` 登录即可。
### 3️⃣ 运行微信小程序
> ⚠️ 小程序端当前为**开发版本**,尚未上架微信平台,**无法正式使用**,仅供开发者本地调试与预览。正式发布请等待后续版本。
```bash
cd uniapp
npm install
npm run dev:mp-weixin # 产物输出到 dist/dev/mp-weixin
```
1. 打开**微信开发者工具** → 导入项目 → 目录选择 `uniapp/dist/dev/mp-weixin`
2. 在「详情 → 本地设置」勾选**不校验合法域名**
3. 后端地址在 `uniapp/src/config/index.ts` 中配置,真机预览请改为电脑局域网 IP
**独立体验(无后端)**:`src/config/index.ts` 中将 `FORCE_MOCK` 设为 `true`,所有接口与上传均走本地 Mock。默认模式下请求真实后端失败时也会自动回落 Mock。
## ⚙️ 环境变量(server/.env)
| 变量 | 说明 | 示例 |
| --- | --- | --- |
| `DATABASE_URL` | Prisma 数据库连接 | `file:./dev.db` |
| `JWT_SECRET` | JWT 签名密钥 | 修改为随机长字符串 |
| `JWT_EXPIRES_IN` | Token 有效期 | `7d` |
| `PORT` | 服务端口 | `3000` |
| `UPLOAD_DIR` | 上传文件目录 | `./uploads` |
| `WX_APPID` | 微信小程序 AppID,配置后启用真实登录 | 测试号即可 |
| `WX_SECRET` | 微信小程序 AppSecret | — |
## 🗂️ 数据模型概览
```
User 用户(管理员/救助者、志愿者,支持微信 openid 绑定)
Cat 猫咪档案(编号、状态、健康、救助信息、照护信息)
CatPhoto 猫咪相册
Timeline 救助时间线(支持图片/视频,医疗与任务自动同步)
MedicalRecord 医疗记录(就诊/用药/疫苗/绝育/体检与费用)
CatCareAssignment 志愿者照护分配
AdoptionApplication 领养申请(阶段流转 + 跟进记录)
Task 任务(喂食/喂药/就医/拍摄等)
Setting 系统设置(键值存储)
```
猫咪状态流转:`发现 FOUND → 救助中 RESCUING → 治疗中 TREATING → 康复中 RECOVERING → 待领养 ADOPTABLE → 已领养 ADOPTED`
## 🗺️ Roadmap
- [ ] 迁移 PostgreSQL,状态字段改用原生 enum
- [ ] 对象存储(OSS/COS)替代本地文件上传
- [ ] 小程序互动增强:评论、消息通知
- [ ] 救助物资/捐赠管理
- [ ] 多租户支持(多个救助团队独立空间)
## 🤝 参与贡献
欢迎任何形式的贡献!
1. Fork 本仓库并创建特性分支:`git checkout -b feature/awesome`
2. 提交更改:`git commit -m "feat: add awesome feature"`
3. 推送分支并发起 Pull Request
也欢迎通过 [Issue](../../issues) 反馈 Bug 或提出新想法。如果你正在做流浪猫救助,PawLog 能帮到你就是我们最大的心愿 🐱
## 📄 License
本项目基于 [GNU GPL-3.0](LICENSE) 协议开源。
你可以自由地使用、学习、修改和分发本项目,但根据 GPL-3.0 协议要求,基于本项目的二次开发成果在分发时也必须以 GPL-3.0 协议开源,并保留相应的版权声明。
---
**每一个爪印,都值得被记录。** 🐾