9.0 KiB
9.0 KiB
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 指定当前用户可写的数据库文件,例如:
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。
当前前端路由:
/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 创建。 - 后端启动命令:
DATABASE_PATH=/tmp/py-web.sqlite3 .venv/bin/uvicorn index:app --reload
- 前端启动命令:
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 模型、
/usersCRUD 接口、前端用户表格与表单;新增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 模型和/productsCRUD,前端重做商品列表与详情编辑,支持规格表格行编辑、商品详情编辑和微信分享配置。验证:后端编译通过,商品详情 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.pyOSS 配置占位,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通过,真实预下单和支付通知待填写微信商户配置后联调。