城市更新与规划设计方案资料检索
核心原则
先出清单,再批量下载。 成套资料任务先给可勾选清单,确认后再动手——不让用户收到一堆无关文件。
HTTP 200 不算成功。 文件头 + 完整长度 + 内容对得上才算。
资料站一律不走。 筑龙、帅猫土木、土木在线、道客、百度文库——大多有登录/积分墙,且常是残缺扫描件。只走政府官方渠道。
工作流
① 明确需求 → ② 选渠道(见 channels.md) → ③ 出清单待确认
→ ④ 判定体例(见 document-types.md) → ⑤ 核现行有效(见 validity.md)
→ ⑥ 下载(见 download.md) → ⑦ 归档(见 archive.md) → ⑧ 语义检索(见 search.md)
关键:第 ③ 步必须停下来给清单。用户确认后再进第 ④ 步。
第 ① 步:明确需求
必须先确认清楚,缺一项就问:
| 要素 | 示例 | 缺失后果 |
|---|---|---|
| 地域 | 广东省 / 大湾区 / 全国 | 渠道选错,返工 |
| 主题 | 城市更新 / 老旧小区 / 城中村 / 完整社区 | 检索式太宽,噪声爆炸 |
| 体例 | 控规 / 修规 / 设计方案 / 初设 / 政策文件 | 拿到一堆不是他要的 |
| 数量与时间 | 近三年 / 10 个城市 / 不限 | 数量失控 |
一次问完,不要挤牙膏式追问。
第 ② 步:选渠道
读 channels.md 获取实测可访问的渠道清单与检索套路。
核心口诀:
- 找政策文件 → 政府部门官网「政策文件」栏目
- 找规划文本/设计方案 → 住建局、规划资源局的「规划公示」「批前公示」「控制性详细规划」栏目
- 找失效判定依据 → 「现行有效规范性文件」目录
- 不确定就先抓首页,从首页链接里找真实路径,别猜深层路径
⚠️ 绝不凭记忆写 URL。政府网站改版频繁,深层路径极易 404。正确做法:
curl -sL --max-time 30 -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0 Safari/537.36" \
"<首页URL>" -o home.html
grep -oE 'href="[^"]*"' home.html | sed 's/href="//;s/"//' | grep -iE 'zhengce|gk|xxgk|gh' | sort -u
已实测失效的路径(不要使用):
- mohurd.gov.cn/gongkai/zhengce/zhengcefilelib/ → 404
- mnr.gov.cn/zt/ch/zcfg/ → 404
- mohurd.gov.cn/xytj/ → 404
第 ③ 步:出清单(必做,不可跳过)
把候选资料整理成可勾选清单,每条含:
- 标题 + 发文机关
- 文号(如有)
- 发布日期
- URL(先验证 200 再列出)
- 体例判定(方案文本/规划文本/政策文件…)
- 时长或页数(若已知)
- 是否现行有效(若已核)
同时说明没找到什么——哪些渠道查了但没有结果,让用户知道边界。
第 ④ 步:判定体例
读 document-types.md。核心是分清四类:
| 体例 | 特征 | 用途 |
|---|---|---|
| 方案文本 | 有设计方案、文本说明书、图纸 | 核心参考 |
| 规划文本 | 控规/修规/总规/专项规划 | 上位依据 |
| 初步设计/施工图 | 有投资概算、工程量 | 落地参考 |
| 政策文件 | 通知/办法/意见/导则 | 依据与约束 |
别把批前公示当正式成果——公示版和批准版往往有实质差异,必须标注版本状态。
第 ⑤ 步:核现行有效性
读 validity.md。要点:
- 「现行有效规范性文件」目录是权威依据
- 注意标注"废止/失效/已修订"的文件
- 规划成果要看批复文件,公示版 ≠ 生效版
- 引用时必须标明版本与日期
第 ⑥ 步:下载
读 download.md。必须做到:
- 查 Content-Length 真实大小
- 循环断点续传直到完整
- 校验文件头(PDF 必须是
%PDF-) - 多附件必须哈希不同(防同名覆盖)
大文件(>20MB)用 run_in_background: true。
可复用:scripts/fetch.py 已内置断流检测与续传逻辑。
第 ⑦ 步:归档
读 archive.md。目录命名:
<主题>/<城市>(<年份>)/N.<原文件名>.<ext>
中文文件名在 bash 里易编码出错,用 Python shutil.move 重命名,不要用 mv。
第 ⑧ 步:语义检索
读 search.md。已归档原文的检索方案:
- 小规模(<200 份):直接抽取文本 + grep
- 大规模:用
ima或mcp__ima-mcp__add_knowledge导入做语义检索 - PDF 文本抽取用 pypdf,Word 用 python-docx
脚本
| 脚本 | 用途 |
|---|---|
scripts/fetch.py |
断流检测 + 断点续传 + 完整性校验 |
scripts/extract.py |
PDF/Word 批量文本抽取,供检索 |
scripts/archive.py |
规范化归档命名 |
全部只依赖标准库 + requests(可选)。PDF 文本抽取需 pypdf。
交付
用 present_files 展示文件,并在回复中给出:
- 清单表格:标题 / 机关 / 文号 / 日期 / 体例 / 时效 / 本地路径
- 官方发布页 URL
- 完整性证据:页数、文件大小、校验结果
- 诚实说明:哪些没找到、哪些撞了墙、哪些需要人工补
合规提醒
- 公开政府文件可下载使用
- 不得用于商业牟利或批量转载牟利
- 涉密/内部文件不碰,只走公开渠道
- 引用必须标明来源与文号