行程:#47~#51 打包 —— 双轨状态、动态类型、动作按钮、去提示 (#51)
#47 编辑浮层居中、类型换行、去掉手动状态选择、按钮改胶囊 #48 计划/实际双轨:完成即转实际行程,取消≠删除,记真实开始/结束时间 #50 类型点击无反应(@Builder 值传参不建立依赖) #51 节点类型动态加载(服务端9种,原端上硬编码5种)+ 地址结构化回调 API 新增:GET /trips/<id>/node-types、PATCH /trips/<id>/nodes/action DB 新增:trip_nodes.actual_started_at / actual_ended_at
This commit is contained in:
@@ -1542,6 +1542,22 @@ SQL,
|
||||
"ADD COLUMN `revised_at` DATETIME DEFAULT NULL COMMENT '最后一次修正时间' AFTER `stage`");
|
||||
self::addColumn($db, 'trip_nodes', 'revision_n',
|
||||
"ADD COLUMN `revision_n` INT NOT NULL DEFAULT 0 COMMENT '修正次数' AFTER `revised_at`");
|
||||
|
||||
/* 🔴 #48(2026-11-05):**真实开始 / 结束时间**。
|
||||
用户:「我计划今天 8:00 到 10:00 开车去公园,但我可能出门晚了,
|
||||
8:10 或 8:30 才点『开始』按钮。这时候就要记录住 8:30 这个时间,
|
||||
因为 8:30 会成为实际行程的开始时间。也就是说,
|
||||
**原来计划的时间和现在真正开始的时间都要记录**。」
|
||||
|
||||
⚠️ 不能复用 `starts_at` / `ends_at`(那是**计划**时间),
|
||||
改掉等于把计划丢了。两者并存才能"计划 8:00–10:00 / 实际 8:30–10:30"。
|
||||
⚠️ 列名带 `actual_` 前缀,与 `starts_at` 形成清晰对照。 */
|
||||
self::addColumn($db, 'trip_nodes', 'actual_started_at',
|
||||
"ADD COLUMN `actual_started_at` DATETIME DEFAULT NULL
|
||||
COMMENT '真实开始时间(点「开始」那一刻;NULL=还没开始)' AFTER `ends_at`");
|
||||
self::addColumn($db, 'trip_nodes', 'actual_ended_at',
|
||||
"ADD COLUMN `actual_ended_at` DATETIME DEFAULT NULL
|
||||
COMMENT '真实结束时间(点「完成」那一刻;NULL=还没完成)' AFTER `actual_started_at`");
|
||||
// ② 建修正历史表(老库没有)
|
||||
self::tryStep('建行程修正历史表', static function () use ($db) {
|
||||
$db->exec(<<<'SQL'
|
||||
|
||||
Reference in New Issue
Block a user