Skip to content

Latest commit

 

History

History
55 lines (35 loc) · 6.46 KB

city-design.md

File metadata and controls

55 lines (35 loc) · 6.46 KB

城市页:一份可以拿来计划的目的地指南

城市页先回答「这个地方怎么样、花钱在哪、几月去、工作日怎么安排」,再提供可展开的来源。它沿用排行页的中性色与森林绿,不另起一套品牌。

页面从真实城市照片开始,接四项简明事实:本城消费样本数、原推荐月份、入境标签、当地时区。生活预算、出发季节、远程工作、工作地图、停留入境使用页内导航,滚动时更新当前位置。桌面侧栏只保留城市自己的提醒和旅行小秘书入口;手机将提醒放在正文之后。

视觉约定

项目 约定
页面 #FAFAFA,内容最大宽度 1184 px
正文 #202323;次级文字 #626767
强调 森林绿 #237A57
轻底色 #F0F4F1,用于用户可填写的预算工具
分隔 #E4E7E5,用于内容层级,不给每段包卡片
字体 现有 Inter 与中文无衬线字体;数字等宽
间距 4 / 8 px 网格;主段间隔 32 / 40 px
控件 至少 44 px 高;手机输入字号 16 px

设计中最醒目的部分是城市照片,其余地方让信息本身建立层级。首次审图后删去了城市页原有的统一提示块与大段说明。预算使用一块轻底色来表达可编辑区域;价格、气候和工位按内容排列,避免将它们做成同样大小的装饰卡片。

交互与证据边界

消费数据读取 readCityCosts。城市页先展示单人、30天的开销参考和现有消费样本,计算器默认收在“按我的报价调整”中。首屏直接显示已知开销小计、未计入项目及修改入口。住宿采用合格一居室月租挂牌样本,优先中心区外;单人平价餐按每天3顿估算,公共交通优先采用月票,没有月票时按每天2次单程票,手机套餐按月。数量是明确写出的规划假设,不是供应商提供的完整旅行预算。

默认值仅采用有可用人民币换算的本城CostCompass样本。全国居民支出、区域监测、多人餐、三居室或85平方米水电不自动带入。待复核住房、非月租和缺少挂牌标记的住房也不预填。其他日常开销默认留空;缺项在概览和计算结果旁直接显示,填写0作为用户明确假设。原币、样本日期及来源保留在消费参考中。旧城市月成本继续作为历史记录,不用来倒推各项价格。

用户可选择停留天数,展开修改每项报价、采用下方合格住房样本或恢复本城默认参考。月支出按30天折算仅作规划估算,不是短租报价。人民币、美元、日元切换以内部人民币金额为基准,避免反复换币累计误差;界面注明哪些是样本推算、哪些由用户调整。往返交通、押金、保险及签证费用需要另行核对,小计不冒充完整旅行总预算。预算与报价编辑本身不会调用模型。

可选的总费用上限与已知开销小计计算余额,并就近提醒缺项和往返交通等费用。报价、上限、月份和会议安排只保存在本机。用户原币报价与换算快照分别保留;参考资料更新时更新参考值,明确清空的项目继续留空。未完成金额不会覆盖上次有效报价。

季节区域有全年均温曲线和月雨量柱。选择月份后,均温、降雨、季节标签和图中位置一起更新。缺失温度与真实 0 mm 降雨分别处理。源数据表、历史采样口径和来源放进原生展开控件。

会议工具以用户选择的上海会议日期和小时为起点,通过城市 IANA 时区计算当地时间,处理目的地夏令时和跨日。未记录时区时不猜测。AI 官方地域名单、工位报价限制和政策全文均按主题展开。“检查这份预算有没有漏项”入口预填本城、当前月份、天数、币种及五项开销,区分默认推算、用户修改和未填项目;用户确认发送才调用模型。预算和日历交互本身不触发模型。

标题、canonical、Place JSON-LD 和草稿 noindex 沿用现有外壳。没有 JavaScript 时,参考价格、默认月份气候、默认会议时差和原生来源展开仍可使用。

本地验收,2026-10-18

node --test tests/city-page.test.js tests/render.test.js:14 项通过,覆盖全国住房统计与待复核样本禁止采用、全国单位随币种正确展示、预算遗漏项、零值、缺失气候、币种方向、全国口径、跨季夏令时、跨日、日期无效、注入转义与 SEO。

使用隔离的 Playwright WebKit 浏览器完成真实页面验证,未占用共享桌面浏览器:

  • 320 / 390 / 844 / 1440 px 无页面横向溢出;320 px 展开日本家庭支出和来源数据表后仍无页面横向溢出,表格在自己的区域滚动。
  • 清迈租金样本填入,加餐费 100 CNY / 天、其他 600 CNY / 月,15 天结果为 3294 CNY;切换美元、日元后输入和结果联动。非法天数显示明确反馈。
  • 1 月按「上一个月」回到 12 月;月份数值和图中高亮更新。
  • 里斯本 2027-01-15 上海 09:00 对应当地 01:00;2027-07-15 对应 02:00。纽约同年 1 月上海 01:00 对应前日 12:00。
  • 原生 WebKit 下拉控件原先实际只有约 25 px 高,已明确设置为 44 px,并实测全部可见城市表单控件和按钮均不低于 44 px。
  • 禁用 JavaScript 后验证清迈价格、会议时间与来源展开可读。交互过程没有模型请求或页面脚本错误。

截图放在 .data/new-city/。它们记录本地预览,不代表已经部署,也不证明网络、住宿成交或个人签证资格。

另在共享Chromium实测人民币1800元预算切换美元再切回、月份联动与助手预填;本地select箭头替换为同源SVG,消除CSP拒绝data URI的控制台错误。WebKit再次验证编辑→预填→取消/Esc,无自动模型请求;证据.data/new-city/current-plan-prefill-evidence.json。

独立复审修复后,再次在真实东京、第比利斯与清迈页面验证:东京仅 4 个城市挂牌租金保留按钮,全国住房支出与实际房租支出均没有采用入口;第比利斯异常低价明确标记「样本待复核」并移除按钮,用户仍能自主填写预算;清迈保留 2 个合格住房样本。全国金额切换人民币、美元、日元时,单位只保留「单身家庭 / 月」,不混入原币。预算说明明确按天折算只作规划估算,不是短租报价。证据为 .data/new-city/review-rent-evidence.json 与 review-rent-*-390.png。