|
|
@@ -8,6 +8,25 @@
|
|
|
* 而不是复制一份——复制会漂移,测的就不是真代码了。
|
|
|
*/
|
|
|
|
|
|
+/** 政策详情页地址前缀(一网通办·青浦惠企政策专区) */
|
|
|
+export const POLICY_DETAIL_URL_BASE =
|
|
|
+ "https://zwdt.sh.gov.cn/qykj/shell_oc_policy_zq/policy/policy-detail";
|
|
|
+
|
|
|
+/**
|
|
|
+ * 由库条目的「市级政策id」拼出政策详情页地址。
|
|
|
+ *
|
|
|
+ * 背景:`policies_public.v1.json` 里 `apply_link` 字段 262 条**全为空**,
|
|
|
+ * 而 `资源申请备注` 里的 URL 是按申报事项零散对应、且混有内网地址,不能作为主要来源。
|
|
|
+ * `data.市级政策id` 则有 261/262 条(40 个不同 id),是可靠来源。
|
|
|
+ *
|
|
|
+ * 没有 id 时返回空串 —— **不猜**:宁可没有链接,也不给一个打不开的地址。
|
|
|
+ */
|
|
|
+export const buildPolicyDetailUrl = (item: any): string => {
|
|
|
+ const id = item?.data?.["市级政策id"];
|
|
|
+ const value = String(id ?? "").trim();
|
|
|
+ return value ? `${POLICY_DETAIL_URL_BASE}?id=${encodeURIComponent(value)}` : "";
|
|
|
+};
|
|
|
+
|
|
|
/** 政策名归一化:库里带《》,卡片标题不带,另有全半角括号、连接符、空白等差异 */
|
|
|
export const normPolicyName = (text: unknown): string =>
|
|
|
String(text || "")
|