miklcct/journey_recorder

将您的公共交通出行记录到数据库中

1.6.0 2024-03-30 23:05 UTC

README

此应用程序可以帮助您在途中记录您的公共交通出行。

系统要求

  • PHP: ^8.1 (带有 mysqli 扩展)
  • Composer
  • Yarn

安装

作为独立应用程序

  1. 运行 composer create-project miklcct/journey_recorder
  2. resource/base.sql 中提供的模式和 resource/migrations/up 中的所有迁移加载到 MariaDB 数据库中。
  3. 配置您的 web 服务器以将 public 作为文档根,或将文档根下的子文件夹链接到 public 文件夹。

作为 PHP 应用程序中使用的库

  1. 在您的 PHP 应用程序中运行 composer require miklcct/journey_recorder
  2. resource/base.sql 中提供的模式和 resource/migrations/up 中的所有迁移加载到 MariaDB 数据库中。
  3. 提供您的 JourneyResponseFactoryInterface 实现,以便 UI 适合您的网站。 JourneyView 类和 journey_main.xhtml.php 模板是一个好的起点。如果您正在使用它们,将 scripts/journey.jsstylesheets/journey.css 链接到您的公共文件夹,并将 Web 路径传递给 JourneyView 构造函数。
  4. 如果需要离线功能,请将 journey_service_worker.js 也链接到您的公共文件夹,并在脚本中注册它。提供的 scripts/journey.js 就是这样做的,在这种情况下,它必须放在公共文件夹的根目录下。
  5. 在您的网站上添加一个路由,使 JourneyApplication 作为控制器,该控制器符合 PSR-15。

用法

此应用程序仅用于记录行程。它不提供任何后续检索(除了最新的一个)或分析工具的接口。

它允许您输入公共交通行程的信息,包括距离、票价和车票。它支持多张车票和分割车票。如果没有提供距离,它将尝试从先前的相同行程中填充它。

车票列表是从先前的提交中填充的。如果没有显示车票,请使用“获取最后一个插入的行程”按钮来加载它们。

提供了“推入队列”和“从队列中弹出”按钮,以保存表单并在以后提交前加载它,或在您暂时缺少互联网访问(如在地铁中)的情况下。

如果浏览器支持服务工作者并且使用默认脚本,脚本将注册一个服务工作者来缓存应用程序所需的资源,以便在离线时可用。此外,离线时禁用提交按钮。

数据库迁移

迁移文件组织在 byjg/migration 包所需的结构中。但是,无需使用库。如果您想为您的数据库(s)使用它,请通过运行 composer global require byjg/migration-cli 安装 CLI 接口。

缺陷

一些数据库列名可能具有误导性。但是,为了避免兼容性问题,它们将在下一个主要版本中修复。

  • 数据库应该对距离具有单元无关性,但某些列假设使用公里作为距离的单位

    • tickets view每公里价格
    • journeys fare每公里票价

    这些都应表示每距离而不是每公里,以便使用替代的距离单位。

  • 车票查看。其中distance travelled表示个人行驶的距离,而segments travelled则表示不管使用该车票的人数,所行驶的段数。

  • 提前购买选项不能充分覆盖所有预先购买的需求。

    • 配额控制车票是根据配额销售的。它们不能保证有货。
      • 如果车票必须针对特定服务购买且不能在其他服务上使用(即使价格不变,因为即兴旅行没有保证),则该车票是配额控制的。
    • 非配额控制的提前购买车票在指定的最后期限前总是有货,但不是在旅行前的即时。
    • 即兴购票在旅行时间保证有货。
  • 登机时间戳下机时间戳代表UTC时区的时刻。由于在尝试计算存储列中的本地时间时存在时区问题,这些不再是自1.6.0版本以来的时间戳列。

演示

以下演示可用于测试,但由于隐私问题(数据将通过作者控制的服务器传输),不建议在生产环境中使用。