地点输入:补地址联想,下拉带详细地址好区分同名地点 laoyang/FamilyBook#36
用户 2026-10-30:「在所有调用高德显示详细地址的地方…不能只把地点告诉我, 一定要把详细地址也放在后面。因为同一个地址可能有好几个, 我根本不知道应该选哪一个。」 网页端(addr_suggest.js)已经是这个行为,端上原本**连联想都没有**(纯文本框)。 本次把能力补到端上: - 新增 FbGeoRepo.ets:调服务端 /api/v1/geo/tips,最少 2 字才查 - 新增 FbAddrInput.ets:候选每行两行字(地名 14px 深色 + 详细地址 12px 灰), 同名地点靠第二行区分;防抖 260ms(与网页端同节奏);用 seq 丢弃过期响应 - 日程编辑、行程节点两处地点接入 🔴 走服务端代理而不是端上直连高德:高德 Web 服务 key 是服务端密钥, 打进安装包等于公开(反编译/抓包即得,配额会被跑光、key 可能被封)。 网页端用的 JS API key + 安全密钥是域名白名单那套,原生端没有等价机制。 ⚠️ 必须是 @ComponentV2 组件而不是 @Builder:@Builder 的值类型参数 不参与状态观察(SDK r/quick-rules/05-state.md),候选列表/展开态写在 @Builder 里会数据变了界面不重建。本项目在 FbEventChip/FbTagChip/ FbCalOptionRow 上各踩过一次。 ⚠️ 联想失败一律返回空候选 ⇒ 退化成普通文本框,手敲照常保存 (接口挂/没网/没配 key 都不能拖垮主流程)。 编译通过(33 tasks,17 executed)。
This commit is contained in:
@@ -690,6 +690,37 @@ export interface FbCalBook {
|
||||
// 任务(tasks)
|
||||
// ============================================================
|
||||
|
||||
/* ═══════════════════════════════════════════════════════════════
|
||||
地址联想(高德输入提示,走服务端代理)
|
||||
═══════════════════════════════════════════════════════════════ */
|
||||
|
||||
/**
|
||||
* 一条地址联想候选(`GET /api/v1/geo/tips`)。
|
||||
*
|
||||
* 🔴 2026-10-30(工单 #36)用户原话:
|
||||
* 「在所有调用高德显示详细地址的地方…不能只把地点告诉我,
|
||||
* 一定要把详细地址也放在后面。因为同一个地址可能有好几个,
|
||||
* 我根本不知道应该选哪一个。」
|
||||
* ⇒ `detail` 就是那个"作为参考"的详细地址,**必须画在名字下面**。
|
||||
*/
|
||||
export interface FbGeoTip {
|
||||
/** 地点名(如「星巴克(万象城店)」)—— 用户认的是这个名字 */
|
||||
name: string;
|
||||
/**
|
||||
* 详细地址(省市区 + 门牌),**用来区分同名地点**。
|
||||
* ⚠️ 纯行政区划条目高德不给 address,这时它就是省市区本身。
|
||||
*/
|
||||
detail: string;
|
||||
/** 省市区 */
|
||||
district: string;
|
||||
/** 门牌 */
|
||||
address: string;
|
||||
/** 经度(字符串;没有时为空串) */
|
||||
lng: string;
|
||||
/** 纬度 */
|
||||
lat: string;
|
||||
}
|
||||
|
||||
/** 任务卡片(tasks/index.php 看板) */
|
||||
export interface FbTaskItem {
|
||||
id: number;
|
||||
|
||||
Reference in New Issue
Block a user