星线支持中心技术概览
支持中心由静态帮助文章、浏览器搜索、地区选择和回电申请组成。文章阅读不要求登录;回电申请另由独立接收服务校验并持久写入待处理队列。申请已接收不等于电话已拨出,也不承诺自动回电时间。
入口与内容模型
公开入口为 星线支持。前端使用 HTML、CSS 和原生 ES modules,构建脚本从 data.mjs 与模板生成首页、搜索页、联系页、产品页、文章页和真正的 404 页面。
产品目录当前包含 Account、Cloud、Pay、Email 和 App。文章记录包括 slug、product、标题、摘要、关键词和分节正文;分节可以包含段落和步骤。新增文章需要同时核对 slug 唯一性、产品归属、链接和内容准确性。支持文章说明如何使用产品,不能作为其他产品能力已经验收的替代证据。
搜索在浏览器执行,将文本 NFKC 规范化、转为小写并按空白及常见中英文标点分词;可先按产品筛选。精确关键词、标题、关键词部分匹配、产品名、摘要和正文分别计分,所有查询词都需要获得正分才进入结果,再按总分排序。当前没有服务端全文搜索、语义向量检索或根据账号资料个性化排序。
地区选择与联系行为
地区数据覆盖 250 个国家或地区,中国选项继续提供 34 个省级选项。地区偏好使用 starline-support-region-v1 保存到本机。它用于联系流程展示,不能证明用户地理位置、产品授权地域或已取得特定国家经营许可。
更改地区后,申请表需要以当前选择重新校验。地区、联系语言和手机号是不同字段,不能仅根据国家码猜测用户希望使用的语言。当前回电语言只允许 zh、en。公开企业联系入口由站点提供,技术文档不复制联系人资料或二维码内容。
回电申请接口
前端向同源 POST /api/callback-requests 提交 JSON,不向第三方表单平台传输。服务端使用 Python 标准库实现接收和队列,不属于静态构建产物。
| 字段 | 类型与约束 |
|---|---|
requestId |
标准 UUID;用作重试去重标识 |
phone |
国际格式字符串,+ 后为 7–15 位数字,首位不能为 0 |
region |
白名单国家或地区 code;CN 必须含已知 province,其他地区不能带该字段 |
language |
zh 或 en |
consent |
必须为布尔值 true |
website |
必须为空字符串的诱捕字段 |
服务端拒绝缺失或额外字段、重复 JSON 键、非有限数值、无效地区及未经同意的提交。请求体最多 4096 字节,校验精确 Origin、内容类型、方法与读取时限。前端只有在 HTTP 成功、响应 status 为 received 且 requestId 与本次请求一致时,才显示成功。
持久化、幂等和失败
有效申请以 JSONL 写入私有队列,记录申请 ID、联系方式、地区、语言、UTC 创建时间、pending 状态和同意标志。目录及文件采用受限权限;日志刻意省略请求路径、请求头、申请内容和异常值。队列文件不进入静态站点,也不提供公开读取或管理接口。
写入过程使用线程锁及文件锁,先读取并验证既有队列,写入后同步文件与必要的目录状态,完成持久化才返回成功。同一 ID 与同一有效载荷重试返回 200;首次写入返回 201;相同 ID 携带不同内容返回 409。网络超时后应复用原 ID确认结果,不能通过不断生成 ID规避重试约束。
默认同一来源 15 分钟最多接受 5 份新申请,重复申请不重复计数;限流状态保存在进程内,重启会重置该窗口。超限返回 429 和 Retry-After,格式错误为 400,Origin 不符为 403,请求过大为 413,不支持的内容类型为 415。队列损坏或写入不可用时保留原文件并返回 503,不能先显示成功再丢弃申请。
扩展与验证边界
仅部署静态文件不会自动启用回电申请,必须同时连接接收服务与受保护的持久存储。当前服务只承担接收,不包含自动拨号、客服派单后台、公开查询进度或通话录音。增加后续处理时应保留申请 ID和状态更新审计,并按正式隐私规则处理联系方式。
资料依据 2026-10-23 源码整理。部署仍需验证同源接收路由、持久化、重试去重、限流、损坏队列和前端成功判断;后续人工联系需要单独确认。产品技术边界见 Email、Cloud 与 Pay,政策见 隐私中心。
源码依据
主要文件为 support/data.mjs、search.mjs、templates.mjs、build.mjs、app.mjs、regions.mjs、region-picker.mjs、callback-form.mjs 和 server/callback_server.py。公开内容构建与申请接收服务须分别检查。