fix(kin,movies): 家谱连线重构为单一网格 + 观影设置统一页头

需求三点:
1. 观影模块「⚙ 设置」与「记一场电影」按钮高度不一致 → 统一页头动作区
   四个选择器的 padding/font-size(.btn 与 .btn-sm 混用是根因);并把设置
   下拉推广到观影全部页面(详情/影院/搜索/统计/报告/表单),落在返回按钮旁。
2. 家谱连线「线乱」→ 根因三条:每代各建一个网格(列宽最小值由内容决定,
   各代不一致,窄屏实测 93.5px vs 164/78/78/78px);落点用百分比算而 grid
   间距不参与百分比;连线行与卡片行不是同一套列。
   改法:整棵树只留一个网格,辈分行/卡片行/连线行全是它的行,连线元素本身
   也是网格项(靠 justify-self 落位);列宽固定为一卡之宽(不用 minmax/1fr,
   否则宽屏卡片中心 ≠ 列中心)。
3. 亲属关系接口改白名单(parent/child/spouse)——原先未知 kind 被静默记成
   配偶,夹具传 kind=sibling 让家谱断言长期拿错数据自证。

设置下拉抽成可复用片段 _settings_menu.php($setCurrent 高亮当前页、
$setCanWrite 控「影院管理」显隐),六七个页头不再各抄一份。

验证:e2e 456/0、桌面几何 268/0、移动端几何 504/0、交互 97/0、
家谱连线诊断 0 失败、静态空跑 exit=0、静态断言证伪 13/13、
反向验证 68/68 全抓住。
This commit is contained in:
2026-10-01 17:42:15 +08:00
parent e9b3b8666b
commit 4060c18f86
11 changed files with 262 additions and 153 deletions
+5 -13
View File
@@ -26,19 +26,11 @@ $fmtNum = static function ($v): string {
<?php if ($canWrite): ?>
<a class="btn" href="<?= e(url('movies/new')) ?>">记一场电影</a>
<?php endif; ?>
<?php /* v11:右侧的「设置」按钮 —— 影院管理与从 MovieLog 迁来的
高级搜索 / 统计 / 年度报告都收在这里(顶栏不再单放「影院」)。 */ ?>
<details class="movie-set menu">
<summary class="btn btn-ghost btn-sm" title="观影设置">⚙ 设置</summary>
<div class="menu-list">
<?php if ($canWrite): ?>
<a href="<?= e(url('movies/cinemas')) ?>">影院管理</a>
<?php endif; ?>
<a href="<?= e(url('movies/search')) ?>">高级搜索</a>
<a href="<?= e(url('movies/stats')) ?>">统计</a>
<a href="<?= e(url('movies/report')) ?>">年度报告</a>
</div>
</details>
<?php /* 右侧的「⚙ 设置」—— 影院管理与从 MovieLog 迁来的
高级搜索 / 统计 / 年度报告都收在这里(顶栏不再单放「影院」)。
⚠️ 片段里的按钮**不带 btn-sm**:页头动作区必须同高,见 app.css 的
「页头动作统一尺寸」一节(用户明确要求这两个按钮高度一致)。 */ ?>
<?php $setCurrent = 'list'; $setCanWrite = $canWrite; require __DIR__ . '/_settings_menu.php'; ?>
</div>
</div>