招投标实体地图看板记录
用户目标
将已经抽取好的招投标 Excel 实体表作为数据库内容,结合已有项目资料,生成一个前端 HTML 展示页面。页面需要用地图展示各地项目金额和项目数,并支持点击中国地图继续展开到省、市或北京区县层级,右侧展示对应报表详情。
交付结果
已生成地图看板:docs/deliverables/20260617-entity-map-dashboard/招投标实体地图看板.html。
页面将 原始Excel招投标实体抽取表.xlsx 中的项目、招标公司、投标公司、产品和资质占位表转换成内嵌 JSON 数据,打开 HTML 即可读取本地数据。地图底图和图表库使用 ECharts 与阿里 DataV 在线 GeoJSON,联网时显示地图,加载失败时自动降级为地区柱状图。
数据概况
| 指标 | 结果 |
|---|---|
| 项目数 | 345 |
| 招标公司数 | 267 |
| 投标公司数 | 218 |
| 产品记录数 | 345 |
| 总金额 | 319245.1971 万元 |
页面能力
- 全国地图按省汇总项目金额和项目数。
- 指标可在“金额”和“项目数”之间切换。
- 点击省份进入省内明细;直辖市优先按区县聚合,例如北京有区县字段时显示北京各区金额。
- 右侧同步显示所选区域的项目数、金额、采购方、供应商、项目列表和详情链接。
- 下方补充地区排行、供应商排行和需求类型分布。
参考与取舍
检查了 /Users/jack/code/099-github/jiangyang118/deltafstation,当前未发现可直接复用的中国地图/ECharts 地图模块。因此本次复用了其“静态前端 + 图表 + 详情面板”的工作台组织思路,地图实现单独写在本项目脚本中,避免引入 deltafstation 的业务依赖。
文件变更
scripts/build_entity_map_dashboard.py:从实体 Excel 读取数据并生成 HTML 地图看板。docs/deliverables/20260617-entity-map-dashboard/招投标实体地图看板.html:可交互地图看板。docs/runs/20260617-entity-map-dashboard.html:本次工作记录。
验证结果
已运行 python3 scripts/build_entity_map_dashboard.py 重新生成页面,输出统计为 345 个项目、267 个招标公司、218 个投标公司、345 条产品记录、总金额 319245.1971 万元。已解析 HTML 中内嵌 JSON 并确认页面脚本包含地图加载、地图注册、点击下钻和降级图表逻辑。
下一步
如果要继续增强,建议把 Excel 实体表同步入 SQLite 或 DuckDB,并让 HTML 由数据库导出的 JSON 生成,这样后续可以增加公司关系图、资质覆盖率、产品-供应商关联图和项目原文证据跳转。
追加记录:TODO 控制面
用户要求判断后续还能做什么,并生成 todolist.markdown。已在仓库根目录创建该文件,把当前地图看板作为已完成基线,并将下一步拆成数据库化、去重校验、地图增强、公司关系与竞品分析、评分与中标原因、附件证据链、采集流程、skill 与 workflow 沉淀、页面产品化和高级分析等任务。
核心判断:后续不应只美化页面,而应先把 Excel 数据变成可追溯的关系型数据库,再围绕“地图看机会、项目看证据、公司看竞争力、评分看中标原因”四条线扩展。
追加记录:首页入口
用户要求把招投标实体地图看板放到首页,方便直接查看。已更新根目录 index.html,将 docs/deliverables/20260617-entity-map-dashboard/招投标实体地图看板.html 设置为首页第一张主入口卡片,并保留原有业务报告、项目说明和运行记录入口。
追加记录:全量数据浏览页
用户反馈地图看板细节仍不够清晰,希望把 Excel 里面的所有数据都通过一个 HTML 页面加大量超链接展示。已新增 scripts/build_full_excel_data_browser.py,从 原始Excel招投标实体抽取表.xlsx 读取全部 10 个 sheet,生成 docs/deliverables/20260617-full-excel-data-browser/招投标实体全量数据浏览.html。
该页面内嵌 2454 行数据,包含 345 个项目、267 个招标公司、218 个投标公司、345 条产品记录、322 条招标投标关系、160 条联系人记录、345 条来源链接。页面支持全局搜索、sheet 切换、项目详情、项目 ID 跳转、公司 ID 跳转、来源链接跳转,并已接入首页第一张主入口卡片。
验证结果:使用 Python 解析 HTML 和内嵌 JSON 成功;使用 Playwright 打开本地 HTML 成功,确认 10 个 sheet 标签、项目表 345 行、点击 P0001 可展开右侧详情并显示来源证据,页面无前端错误。