霖雨寺

This commit is contained in:
wenfp
2026-07-27 09:57:35 +08:00
commit 6e531cf7af
57 changed files with 7529 additions and 0 deletions
+115
View File
@@ -0,0 +1,115 @@
# py-web 项目协作说明
## 项目概览
这是一个 FastAPI + SQLite 后端和 Vue 3 + Ant Design Vue + VueQuill 前端组成的玩具管理系统。
模块目录可以包含自己的 `AGENTS.md`,更靠近代码的说明优先约束对应目录内的改动。
## 后端模块
- `app/main.py`:创建 FastAPI 应用,注册 CORS、健康检查和业务路由。
- `app/database.py`:管理 SQLite 数据库路径、建表逻辑和 `Database` 依赖注入。
- `app/schemas.py`:集中定义 Pydantic 请求体和响应体模型。
- `app/routers/auth.py`:认证接口,提供验证码、登录、当前用户和退出登录。
- `app/routers/users.py`:用户管理接口,提供 `/users` 的增删改查。
- `app/routers/todos.py`Todo 接口,提供 `/todos` 的增删改查。
- `app/routers/temples.py`:寺院管理接口,提供 `/temples` 的增删改查。
- `app/routers/products.py`:商品管理接口,提供 `/products` 的增删改查。
- `app/routers/orders.py`:订单管理接口,提供 `/orders` 的增删改查。
- `app/routers/payments.py`:微信支付接口,提供 JSAPI 预下单和支付通知处理。
- `app/routers/rituals.py`:法事管理接口,提供 `/ritual-services` 的增删改查。
- `app/routers/uploads.py`:图片上传接口,提供 `/uploads/images` 并上传到阿里云 OSS。
- `app/config.py`:项目运行配置,目前预留阿里云 OSS 配置。
- `index.py`:兼容启动入口,导出 `app.main` 中的 `app`
后端默认数据库文件是 `app.sqlite3`。开发时可以使用 `DATABASE_PATH` 指定当前用户可写的数据库文件,例如:
```bash
DATABASE_PATH=/tmp/py-web.sqlite3 .venv/bin/uvicorn index:app --reload
```
## 前端模块
- `front/src/main.ts`:创建 Vue 应用,注册 `vue-router` 和 Ant Design Vue。
- `front/src/router/index.ts`:按后端功能模块划分路由。
- `front/src/layouts/AdminLayout.vue`:后台主布局,承载业务模块页面。
- `front/src/views/login/LoginPage.vue`:登录页面,调用后端认证接口。
- `front/src/views/temples/TempleManagement.vue`:寺院管理页面。
- `front/src/views/products/ProductManagement.vue`:商品管理页面。
- `front/src/views/products/ProductDetail.vue`:商品新建和编辑页面。
- `front/src/views/orders/OrderManagement.vue`:订单管理页面。
- `front/src/views/rituals/RitualManagement.vue`:法事管理页面。
- `front/src/views/users/UserManagement.vue`:用户管理页面,调用后端 `/users` 接口。
- `front/src/views/todos/TodoManagement.vue`Todo 模块占位页,后续接入后端 `/todos` 接口。
- `front/src/api/http.ts`:统一前端请求封装。
- `front/src/api/auth.ts`:登录认证接口封装。
- `front/src/api/users.ts`:用户接口封装。
- `front/src/api/uploads.ts`:图片上传接口封装。
- `front/src/api/payments.ts`:微信支付接口封装。
前端更细的模块约定见 `front/AGENTS.md`,后端更细的模块约定见 `app/AGENTS.md`
当前前端路由:
```text
/login 静态登录页
/temples 寺院管理
/products 商品管理
/products/create 新建商品
/products/:productId/edit 编辑商品
/orders 订单管理
/ritual-services 法事管理
/users 用户管理
/todos Todo 管理占位页
```
前端通过 Vite 代理把 `/api/*` 转发到 FastAPI 后端,默认目标是 `http://127.0.0.1:8000`
商品、订单、法事属于寺院隔离数据。前端通过顶部寺院选择器维护当前寺院,并在请求头 `X-Temple-Id` 中传给后端;后端按该寺院过滤数据。
## 依赖与运行约定
- Python 包写入根目录 `requirements.txt`,由用户在本地安装。
- 前端包写入 `front/package.json`,由用户在 `front` 目录执行 `pnpm install`
- 不使用 `sudo` 启动开发服务,避免 SQLite 文件被 root 创建。
- 后端启动命令:
```bash
DATABASE_PATH=/tmp/py-web.sqlite3 .venv/bin/uvicorn index:app --reload
```
- 前端启动命令:
```bash
cd front
pnpm dev
```
## 改动边界
- 新增后端业务模块时,优先新增 `app/routers/<module>.py` 和对应 `app/schemas.py` 模型。
- 新增前端业务模块时,优先新增 `front/src/views/<module>/``front/src/api/<module>.ts`,并在 `front/src/router/index.ts` 注册路由。
- 登录认证已接入,后台路由由前端守卫检查登录状态;认证令牌由后端 HttpOnly Cookie 管理,前端不保存 token。
## 修改记录约定
- 以后只有较重要的代码、配置、依赖、目录结构、路由、数据模型、接口、认证权限或协作规则变更,才同步更新本文件的“修改记录”。
- 修改记录使用简体中文,包含日期、改动范围、核心内容和验证情况。
- 只记录实际完成的改动,不把待办计划写成已完成事项。
- 纯样式微调、文案微调和无行为影响的小改动通常不记录,以节省协作时间。
## 修改记录
- 2026-07-22:新增项目级协作说明,记录 FastAPI 后端模块、Vue 前端模块、运行命令和改动边界;同时约定后续修改都同步到本文件。
- 2026-07-22:用户管理模型变更为注册时间、姓名、手机号、昵称、头像、是否管理员、总消费;同步更新后端 SQLite 表结构迁移、Pydantic 模型、`/users` CRUD 接口、前端用户表格与表单;新增 `app/AGENTS.md``front/AGENTS.md` 记录模块级约定。验证:后端临时 pycache 编译通过,用户 CRUD 冒烟测试通过,旧用户表迁移测试通过,前端 `pnpm typecheck``pnpm build` 通过。
- 2026-07-22:前端应用名称改为可配置,默认值为“自在福田”,新增 `front/src/config/app.ts` 并替换布局与登录页写死名称;后台布局新增基于路由 `meta.title` 的导航面包屑。验证:`pnpm typecheck``pnpm build` 通过,构建仅保留 Ant Design Vue 首包体积提示。
- 2026-07-22:用户管理新增手机号查询能力,后端 `/users` 支持 `phone` 查询参数,前端用户管理页增加手机号查询与重置操作。验证:后端编译通过,手机号查询接口测试通过,前端 `pnpm typecheck``pnpm build` 通过。
- 2026-07-22:新增寺院管理、商品管理、订单管理、法事管理模块;后端增加 `temples``products``orders``ritual_services` 表和 CRUD 路由,商品/订单/法事通过 `X-Temple-Id` 做寺院级数据隔离;前端新增对应 API、路由、管理页面和顶部寺院选择器。验证:后端编译通过,寺院隔离接口测试通过,前端 `pnpm typecheck``pnpm build` 通过。
- 2026-07-23:商品详情模型变更为完整详情结构,后端扩展 `products` 表、Pydantic 模型和 `/products` CRUD,前端重做商品列表与详情编辑,支持规格表格行编辑、商品详情编辑和微信分享配置。验证:后端编译通过,商品详情 CRUD 测试通过,旧商品表迁移测试通过,前端 `pnpm typecheck``pnpm build` 通过。
- 2026-07-23:商品新建和编辑从列表弹窗调整为独立页面,新增 `/products/create``/products/:productId/edit` 路由,详情页通过路由 `meta.module = products` 保持商品管理菜单高亮。验证:`pnpm typecheck``pnpm build` 通过。
- 2026-07-23:商品封面和商品图片改为上传组件,后端新增 `/uploads/images` 阿里云 OSS 上传接口和 `app/config.py` OSS 配置占位,`requirements.txt` 新增 `oss2``python-multipart`。验证:后端编译通过,未配置 OSS 上传接口提示测试通过,前端 `pnpm typecheck``pnpm build` 通过。
- 2026-07-23:商品详情编辑器从内置 `contenteditable` 替换为 VueQuill`front/package.json` 新增 `@vueup/vue-quill` 依赖,详情内容继续以 HTML 保存到 `details_html`。验证:待安装依赖后执行。
- 2026-07-23:新增登录认证功能,后端支持动态验证码、bcrypt 密码哈希、失败次数限制、账号临时锁定、HttpOnly/Secure Cookie 会话、退出登录和登录 IP/设备日志;前端登录页支持用户名、密码、验证码、自动聚焦、账号 trim、密码显示/隐藏、提交 loading、友好错误提示和路由守卫;`requirements.txt` 新增 `bcrypt`。验证:后端编译通过,前端 `pnpm typecheck``pnpm build` 通过,运行态登录测试待安装 `bcrypt` 后执行。
- 2026-07-23:商品模型新增商品描述字段,后端补充 `products.description` 迁移、Pydantic 模型和 CRUD 读写,前端商品 API 类型与商品编辑基础信息表单同步。验证:后端编译通过,前端 `pnpm typecheck``pnpm build` 通过,运行态接口测试待安装 `bcrypt` 后执行。
- 2026-07-23:新增微信支付 JSAPI 预下单和支付通知处理,后端增加 `payment_transactions` 支付流水表、微信支付 API v3 签名/通知验签/回调解密工具和配置占位,前端订单管理页增加微信预下单入口;`requirements.txt` 新增 `cryptography`。验证:后端编译通过,前端 `pnpm typecheck``pnpm build` 通过,真实预下单和支付通知待填写微信商户配置后联调。