# 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. 每一个爪印,都值得被记录。** 开源公益猫咪救助管理平台 —— 猫咪档案 · 救助时间线 · 医疗记录 · 领养流程 · 志愿者协作 ![NestJS](https://img.shields.io/badge/NestJS-11-E0234E?logo=nestjs&logoColor=white) ![Vue](https://img.shields.io/badge/Vue-3-4FC08D?logo=vue.js&logoColor=white) ![uni-app](https://img.shields.io/badge/uni--app-微信小程序-2B9939) ![Prisma](https://img.shields.io/badge/Prisma-ORM-2D3748?logo=prisma&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6?logo=typescript&logoColor=white) ![License](https://img.shields.io/badge/License-GPLv3-blue)
--- PawLog(爪迹)面向个人救助者与流浪猫救助团队,把分散在聊天记录和备忘录里的救助信息,变成一份份完整的**猫咪生命档案**: - 📖 以时间线记录每只猫从「发现 → 救助 → 治疗 → 康复 → 领养」的生命轨迹 - 🏥 管理就诊、用药、疫苗、绝育等医疗记录与花费 - 🏡 跟进领养申请的完整流程:申请 → 沟通 → 家访 → 回访 - 🤝 志愿者分工协作、待办任务提醒 - 📱 微信小程序让救助现场的记录、传播与领养触手可及 ## ✨ 功能特性 ### Web 管理后台 | 模块 | 说明 | | --- | --- | | 数据看板 | 救助总数、在照顾数量、领养成功率、状态分布图表(ECharts) | | 猫咪档案 | 编号建档、状态流转、健康状态、性格/饮食/注意事项、相册管理 | | 救助时间线 | 手动发布图文/视频动态;医疗记录、任务完成**自动同步**为动态 | | 医疗管理 | 就诊 / 用药 / 疫苗 / 绝育 / 体检记录与费用统计 | | 领养管理 | 申请登记、阶段流转(沟通中 → 家访 → 已领养/拒绝)、跟进记录 | | 任务协作 | 喂食、喂药、清洁、就医、拍摄等任务指派与优先级 | | 志愿者 | 志愿者账号、照护分配(日常照护 / 医疗协助 / 拍摄记录) | | 系统设置 | 修改密码、站点信息等键值配置 | ### 微信小程序(救助者 + 粉丝两端)🚧 > **注意**:小程序端当前为开发中版本,功能尚未完善,**暂不可正式使用**。以下为开发中的功能规划,仅可通过开发者工具本地调试体验。 - 🏠 **首页**:公益数据总览、最新救助动态、待领养推荐猫咪、救助者快捷入口 - 🐱 **猫咪**:猫咪列表(搜索 + 状态筛选)、**生命故事详情页**(时间线 + 成长相册 + 健康状态 + 领养入口) - 📝 **快速记录**:拍照 → 选猫 → 一句话记录,适用于外出救助、医院现场 - ❤️ **动态**:猫咪朋友圈式内容流,支持点赞、收藏、分享 - 🏡 **领养**:待领养猫咪展示与在线提交申请 - 🔌 支持 Mock 数据独立运行,无需后端即可完整体验 ## 📷 截图 | 首页看板 | 猫咪管理 | 猫咪档案 | 领养管理 | | --- | --- | --- | --- | | ![首页](docs/首页.png) | ![猫咪管理](docs/猫咪管理.png) | ![猫咪档案](docs/猫咪档案.png) | ![领养](docs/领养.png) | | 小程序 · 首页 | 小程序 · 猫咪详情 | 小程序 · 动态 | | --- | --- | --- | | ![小程序首页](docs/小程序/首页.png) | ![猫咪详情](docs/小程序/详情.png) | ![动态](docs/小程序/动态.png) | ## 🧱 技术栈与架构 ``` 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 协议开源,并保留相应的版权声明。 ---
**每一个爪印,都值得被记录。** 🐾