☰
深入核心:RubberDuck Playground的Flask+SQLite演示应用架构解析
2026/10/14 17:46:19 网站建设 项目流程

【免费下载链接】rubberduck-use-case-playground

Try all the 10 use cases and see what the Rubber Duck can do!

项目地址:https://gitcode.com/gh_mirrors/ru/rubberduck-use-case-playground
点击查看免费下载

RubberDuck Playground(rubberduck-use-case-playground)是一个围绕 Rubber Duck Pizzeria 披萨店演示应用打造的开源项目:它用Flask + SQLite搭建了一个结构完整、可一键启动的餐厅管理后台,并内置了 UC-01 到 UC-10 共十个 AI 实战用例。本文带你快速看懂这个 Flask+SQLite 演示应用的架构分层、数据设计与启动流程,适合新手和普通用户上手参考。

一、项目速览:一个"有剧本"的演示应用

这个仓库只有一条清晰路径:demo-projects/下的启动 Hub + 披萨店演示应用。各部分职责如下:

模块路径职责
启动 Hubdemo-projects/launcher.py提供 5055 端口控制台,一键 Launch/停止演示应用并实时看日志
应用入口package/main.py6 行代码:调用create_app()后在 5000 端口启动
核心包rubber_duck_pizzeria/routes / api / db / queries / services / config 六层模块
前端资源static/图标、图片、样式与 JS 静态资源
页面模板templates/Jinja2 页面模板(仪表盘、订单、邮件、图表等)
用例提示词demo-projects/prompts.jsonUC-01…UC-10 的专属 Prompt 与预期结果

💡 注意:代码中的安全弱点与逻辑 Bug 是有意埋设的实验点(lab sinks),只用于学习,切勿当作生产代码。

二、快速上手:三步跑起 Flask+SQLite 演示应用

第 1 步:克隆仓库

git clone https://gitcode.com/gh_mirrors/ru/rubberduck-use-case-playground cd rubberduck-use-case-playground/demo-projects

第 2 步:打开启动 Hub

  • Windows:双击start-hub.bat
  • Linux/macOS:执行./start-hub.sh

浏览器访问http://127.0.0.1:5055/,选择Rubber Duck Pizzeria并点击 Launch,健康检查会依次点亮 venv → deps → DB → API → UI 五个环节。

第 3 步:直接启动(可选)

也可以跳过 Hub,在演示应用目录执行python setup_and_run.py。setup_and_run.py 会按顺序完成四件事:

  1. ensure_venv()— 创建/复用.venv虚拟环境
  2. install_deps()— 按 requirements.txt 安装 Flask 3.0.2 等依赖
  3. init_database()— 初始化 SQLite 并写入种子数据
  4. start_server()— 启动前端(http://127.0.0.1:5000/)与 Kitchen API(/api/health)

完整图文流程见官方指南 GUIDE.md。

三、分层架构:入口 → 蓝图 → 数据层

整个后端只有 6 个 Python 模块,分层非常清晰,是学习 Flask 项目组织方式的好样本:

  • 入口层:main.py 仅 6 行,把职责交给工厂函数create_app()
  • 应用工厂:init.py 创建 Flask 实例、初始化数据库、注册两个蓝图
  • 页面路由层:routes.py 中的main蓝图,负责 50+ 个页面路由(Dashboard、Order List、Email、Charts 等),全部只做"渲染模板"一件事
  • 接口层:api.py 中的kitchen_api蓝图,挂载在/api前缀下,处理订单、菜单、评论、登录等数据接口
  • 数据层:db.py 封装 SQLite 连接、建表、种子数据与查询函数
  • 业务辅助层:queries.py(聚合计算)、services.py(配置消费方)、config.py(运行时配置)

请求流向可以概括为:

浏览器 → Flask →main/kitchen_api蓝图 →db.py/queries.py→data/pizzeria.db(SQLite)

四、数据层解剖:SQLite 七张表与种子数据

db.py 的init_db()负责建库建表,一共 7 张表,覆盖了一家披萨店的完整业务模型:

表名内容亮点
staff员工账号内置 admin / kitchen / demo 三个账号
customers客户含 VIP 客户与"内部员工镜像"记录
menu_items菜单7 道菜品,关联图片路径与销量
orders订单外键关联客户,带状态与配送地址
order_items订单明细外键关联订单与菜品
reviews用户评论供/api/reviews读写
app_settings键值配置kitchen_target、discount_mode 等

两个值得新手关注的设计细节:

  • 幂等初始化:若staff表已有数据则直接跳过种子写入,重复启动不会报错或重复插数据
  • 单文件数据库:SQLite 库文件生成在 data/pizzeria.db,随data/目录自动创建,零配置

菜单种子数据中的意式辣肉酱意面(Medium Spicy Spagethi Italiano)对应的就是应用内展示的真实菜品图片:

五、Kitchen API:接口清单与"内埋"的实验点

api.py 是十个用例的主要"靶场",核心接口一览:

接口方法说明
/api/healthGET健康检查,Hub 的 Launch 流程靠它判断 API 就绪
/api/searchGET客户搜索,演示参数化查询对照(UC-06/09)
/api/reviewsGET/POST评论读写
/api/orders/<id>GET订单详情
/api/menu、/api/orders、/api/customersGET列表查询
/api/loginPOST员工登录与 session 管理
/api/discount/previewPOST折扣预览,暴露聚合逻辑 Bug(UC-03/08)
/api/admin/statsGET管理员统计
/api/reportGET厨房报表

每个实验点命中时都会返回形如FLAG{...}的标记,方便你在 AI 助手的分析结果中快速对答案。配套的逻辑 Bug 藏在 queries.py 的get_aggregation()中:discount掩码在处理第一笔金额后即被移除,导致折扣永远为 0——这正是"定位并修复 Bug"用例的目标。

六、十大用例如何落在架构上

Hub 的 Generate prompts 页会按 prompts.json 生成项目专属提示词,十个用例与架构模块的对应关系如下:

用例名称对应架构位置
UC-01理解代码main.py→create_app→ 蓝图 →init_db全链路
UC-02安全审计api.py 各接口内埋的漏洞点
UC-03定位并修复 Bugqueries.py 的聚合掩码 Bug
UC-04代码审查api.py中 raw SQL 搜索附近代码
UC-05变更影响重命名 config.py 的config_values波及面
UC-06规划新功能设计参数化的safe_search_customers
UC-07生成匹配风格代码实现安全搜索 + 测试
UC-08检查代码逻辑include_discount=True是否真正生效
UC-09版本对比raw SQL 搜索 vs 参数化搜索
UC-10快速检查get_aggregation的返回值与证据

七、关键文件导航

资料路径
完整使用指南GUIDE.md
项目说明README.md
MCP 接入配置SETUP.md
应用工厂rubber_duck_pizzeria/init.py
数据库模块rubber_duck_pizzeria/db.py
依赖清单package/requirements.txt
依赖项与运行脚本demo-projects/rubberduck_pizzeria-demoapp/

写在最后

Rubber Duck Playground 用一个轻量但完整的披萨店系统,把Flask 蓝图分层、SQLite 种子数据、Jinja2 模板渲染这三个新手最需要的知识点串在了一起:入口 6 行、后端 6 个模块、数据库 1 个文件,却五脏俱全。建议先按本文"三步启动"把应用跑起来,再对照 UC-01 让 AI 助手沿main.py→ 蓝图 →db.py走一遍代码链路——这比单读文档快得多。

⚠️ 再次提醒:项目内的"漏洞"与 Bug 均为教学用途的实验设计,请勿将api.py中的处理方式用于任何生产环境。

【免费下载链接】rubberduck-use-case-playground

Try all the 10 use cases and see what the Rubber Duck can do!

项目地址:https://gitcode.com/gh_mirrors/ru/rubberduck-use-case-playground
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询