Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,22 @@

本项目所有的核心重构与功能更新将记录在此。

## [v5.9.0] - 2026-07-07
### 🧭 动态重点地块、GIS 处理管线与多版式图纸生成重构

**重点地块内容动态化**:
* 新增 `KeyPlotEngine` 重点更新单元读取与目录生成能力,Stage 10、Stage 13、诊断卡片、图纸目录和提示词链路不再假设固定 5 个地块,而是按当前 `Key_Plots_District.json` / GeoJSON 记录自动展开 N 个地块;
* 增强场地诊断与图纸目录测试,覆盖空数据、单地块、多地块、字段缺失、排序、面积与诊断 fallback 等边界情况。

**GIS 空间数据处理内置化**:
* 新增 `scripts/process_key_plots.py`,支持原始重点地块 GeoJSON/Shapefile 的 CRS 归一、无效几何修复、研究范围裁切、投影/测地面积测算、字段标准化与 WGS84 GeoJSON 输出;
* 补齐 `tests/test_process_key_plots.py`,验证裁切、空结果、字段保留、面积计算和命令行入口行为。

**多版式 A3 图纸生成链路**:
* 新增 `drawing_layout_engine.py`,内置 `map_legend_right`、`dual_compare`、`analysis_dashboard`、`matrix_storyboard`、`full_bleed_effect`、`chapter_cover` 六类 A3 版式,并提供版式推荐、图例映射、标题栏与注记区排版能力;
* 将版式选择接入 `frame_generator.py`、`tools/draw_scope_map.py`、`pages/13_成果表达.py`、`drawing_prompt_engine.py` 与 `drawing_prompt_templates.py`,确保用户选择的版式同时影响图框封装、最终输出和 AIGC 提示词;
* 更新 README、README_EN、WORKFLOW、GITHUB_PREPARATION、GLOSSARY 与新增专项说明文档,明确动态地块、GIS 处理脚本、多版式输出和 CI 验证流程。

## [v5.8.0] - 2026-06-19
### 🧹 工具目录净化、全局隐私脱敏与工作流对齐重构

Expand Down
15 changes: 13 additions & 2 deletions GITHUB_PREPARATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,32 @@ python tools/check_env.py
---

### 第二步:运行全量单元测试
上传前,必须确保所有核心算法和业务逻辑全部通过本地测试,目前项目包含 **238 项单元测试**。
上传前,必须确保所有核心算法和业务逻辑全部通过本地测试。重点地块、GIS 处理、提示词解耦和多版式图纸链路应先跑聚焦回归,再跑全量套件。
```powershell
# 重点回归:动态重点地块 / GIS 处理 / 多版式图纸 / 提示词链路
python -m pytest tests/test_key_plot_engine.py tests/test_process_key_plots.py tests/test_drawing_layout_engine.py tests/test_drawing_prompt_engine.py tests/test_drawing_prompt_templates.py tests/test_site_diagnostic_engine.py tests/test_prompt_decoupling.py tests/test_frame_generator.py -v

# 执行全量单元测试
python -m pytest
python -m pytest -q
```
> [!IMPORTANT]
> 必须确保测试通过率为 100%。如果存在失败用例,请参照 [BUG_REPORT.md](./BUG_REPORT.md) 的排查思路修复后再进行上传。

> [!NOTE]
> `tests/test_prompt_decoupling.py` 会临时写入测试配置,和其他包含同一 fixture 的套件并行运行时容易造成配置文件脏写;建议按上述命令串行执行并在测试后确认 `git status --short` 为空。

---

### 第三步:敏感凭据扫描与清理
为防止百度地图 AK 或 DeepSeek API KEY 等私密凭证泄露至公共代码仓库,必须运行内置的静态凭据扫描器。
```powershell
# 扫描敏感泄露信息
python tools/secret_scan.py

# 与 GitHub Actions smoke job 对齐
python tools/check_env.py
python tools/startup_smoke.py
python tools/data_quality_check.py
```
#### 凭证清理与轮换标准:
1. **本地配置文件**:确保根目录下仅有本地专用的 `.env`,该文件已被 `.gitignore` 排除在外,绝对不会被提交。
Expand Down
3 changes: 3 additions & 0 deletions GLOSSARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
| **GCJ-02 / WGS-84** | 坐标系标准 | **GCJ-02** 是国内特有的火星坐标系;**WGS-84** 是国际标准坐标系。平台所有获取的 POI 数据、边界数据均被底层系统强制执行纠偏清洗,统一并轨为 WGS-84 / EPSG:3857 以对齐国际标准。 |
| **国标用地色值** | GB Landuse Color Palette | 平台强制遵循《城市用地分类与规划建设用地标准 (GB 50137-2011)》。引擎层预置了居住用地 (黄)、商业用地 (红)、绿地 (绿) 等十余种 16 进制标准色表,渲染图纸时严格映射。 |
| **矢量裁切** | Vector Clipping | 空间处理脚本 (`clip_city_data.py`) 的核心动作。将城市级几 GB 级的庞大路网与水系,按项目设定的 150 公顷红线多边形进行布尔求交裁切,大幅降低前端显存消耗。 |
| **重点更新单元** | Dynamic Key Plot | 平台重点深化设计的最小空间对象,由 `Key_Plots_District.json` / GeoJSON 当前记录动态决定数量,不再绑定固定 5 个地块。Stage 10、Stage 13、诊断卡片、提示词与图纸目录均按该清单自动展开。 |
| **重点地块 GIS 处理** | Key Plot GIS Processing | `scripts/process_key_plots.py` 提供的空间数据清洗管线,包含 CRS 归一、无效几何修复、研究范围裁切、投影/测地面积测算、字段标准化与 WGS84 GeoJSON 输出。 |

---

Expand All @@ -51,6 +53,7 @@
|---|---|---|
| **Stage Data Bus** | 跨阶段数据总线 | 贯穿全生命周期的神经枢纽。所有页面共用 `st.session_state["stage_bus"]`。前一个阶段的推演成果(如 Stage 05 的痛点报告)会被无损持久化,并直接投喂给后一个阶段(如 Stage 12 生成导则、Stage 14 生成视频分镜脚本)作为 AI 的历史记忆。 |
| **自动红头图框封装** | Automated Title Block Framing | 利用 `PIL` (Python Imaging Library) 构建的工程排版引擎 (`frame_generator.py`)。它接收原始底图或重绘后的高清图,全自动嵌入学术级 A3 图框中,生成包含 AI 智能摘要、自定义标题与比例尺、指北针的成品图板。 |
| **多版式图纸引擎** | Multi-Layout Sheet Engine | `drawing_layout_engine.py` 提供的 A3 排版配置系统,内置图例右栏、双图对比、分析仪表盘、矩阵分镜、满版效果图、章节封面等版式,并将版式约束同步传递给提示词与图框生成链路。 |
| **智能分镜脚本系统** | Dynamic Storyboard Director | 彻底取代笨重且高容错率的第三方视频渲染库,转而在 Stage 14 为用户动态生成基于其真实推演数据的“马克飞象 / Markdown 录屏分镜指导书”,明确每分钟的鼠标动作与解说台词。 |
| **Deck.GL** | 空间可视化框架 | Uber 开源的高性能 WebGL 数据可视化引擎,承载平台主页面及分析页面中 150 公顷尺度的建筑白模、热力图及三维空间底座交互。 |
| **`@st.fragment`** | 局部重绘装饰器 | Streamlit 1.30+ 引入的关键性能特性。用于将复杂的 3D 地图组件隔离,使得用户在操作表单控件时无需触发整个页面的昂贵重绘。 |
Expand Down
25 changes: 17 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

[![Python 3.12+](https://img.shields.io/badge/Python-3.12%2B-blue?logo=python)](https://python.org)
[![Streamlit](https://img.shields.io/badge/Streamlit-1.55-FF4B4B?logo=streamlit)](https://streamlit.io)
[![Tests](https://img.shields.io/badge/Tests-238%20passed-brightgreen?logo=pytest)](./tests/)
[![Tests](https://img.shields.io/badge/Tests-CI%20suite-brightgreen?logo=pytest)](./tests/)
[![License](https://img.shields.io/badge/License-Academic-orange)]()

</div>
Expand All @@ -28,7 +28,9 @@ UltimateDESIGN 是面向城乡规划与城市设计的 **Streamlit 全栈智慧
| 能力 | 说明 |
|---|---|
| **15 页面精简工作流** | 包含主入口 app.py 及 14 个功能页面(其中 3 组页面合并),聚焦核心设计流程 |
| **26 张专业图纸模板** | 基于 Python 空间矢量绘图与 PIL 自动排版引擎,高精度生成符合国标与工程规范 of A3 图册 |
| **专业图纸模板与多版式图册** | 基于 Python 空间矢量绘图、PIL 图框封装与多版式排版引擎,高精度生成符合国标与工程规范的 A3 图册 |
| **动态重点更新单元** | 从 `Key_Plots_District.json` / GeoJSON 当前记录读取 N 个重点地块,自动展开图纸目录、诊断卡片与深化提示词 |
| **内置 GIS 处理管线** | `scripts/process_key_plots.py` 支持重点地块清洗、拓扑修复、边界裁切、面积测算和 WGS84 GeoJSON 输出 |
| **GIS → AIGC 空间对齐** | 首创「矢量→光栅→ControlNet」管线,消除 AI 制图的空间幻觉 |
| **DesignContext 设计纲要** | 统一提取 19 个阶段 AI 文本输出,LLM 合成结构化设计纲要,驱动图纸生产 |
| **策略驱动 AIGC 渲染** | 6 种设计策略风格(历史保护/微更新/功能置换/TOD/生态/文创)自动匹配渲染参数 |
Expand All @@ -37,7 +39,7 @@ UltimateDESIGN 是面向城乡规划与城市设计的 **Streamlit 全栈智慧
| **后台缓存预加载** | daemon 线程静默预热 37MB GeoJSON、RAG 模型等,页面切换秒开 |
| **引擎懒加载** | `__getattr__` 模式延迟加载 pandas/numpy/PIL,启动速度提升 |
| **录屏自动滑动组件** | 页面右下角常驻防穿帮录屏控制器,支持帧率级平滑像素滚动与快捷键交互 |
| **238 项自动化测试** | Pytest 全覆盖 + CI 集成 lint / 密钥扫描 / 冒烟测试 / 数据质量检查 |
| **CI 自动化测试套件** | Pytest 全覆盖 + CI 集成 lint / 密钥扫描 / 冒烟测试 / 数据质量检查 |

---

Expand All @@ -58,6 +60,8 @@ UltimateDESIGN 是面向城乡规划与城市设计的 **Streamlit 全栈智慧
### 3. 📊 数据-逻辑分离与 MPI/GVI 循证诊断系统 (Evidence-Based Assessment System)
本系统遵循现代软件工程规范,实现了“空间数据与分析逻辑的彻底解耦”。
* **多维指标融合诊断**:通过动态层次分析法(AHP)与更新潜力模型(MPI),将 GVI(街景绿视率)、SVF(天空可视率)、POI 商业活力指数与社交媒体舆情(NLP 情感分析得分)有机叠合,为每个重点更新单元出具全方位的“诊断报告”。
* **动态重点更新单元**:`KeyPlotEngine` 从重点地块 GeoJSON 中读取当前记录数,不再假设固定 5 个地块;Stage 10、Stage 13、提示词模板和图册目录都会按 N 个地块动态展开。
* **内置空间处理脚本**:`scripts/process_key_plots.py` 对原始重点地块边界执行拓扑修复、研究范围裁切、投影面积测算、字段归一和 WGS84 GeoJSON 输出,保证上传数据可直接进入诊断与制图链路。
* **一键跨城市迁移**:当需要将平台应用到全新的地块时,用户无需修改任何前端界面或分析逻辑代码,只需按照 `data/` 目录规范替换 GeoJSON 矢量文件和相关的 CSV 指标数据。系统在启动时会自动读取并刷新 3D 数字孪生底座及各阶段的分析表单,实现极低成本的平台复用与业务拓展。

---
Expand Down Expand Up @@ -92,7 +96,7 @@ streamlit run app.py
### 🩺 3. 健康自检

```powershell
python -m pytest # 238 项单元测试
python -m pytest # 全量单元测试
python tools/check_env.py # 15 页面完整性校验
python tools/data_quality_check.py # 数据质量评级
python tools/secret_scan.py # 敏感信息扫描
Expand Down Expand Up @@ -144,7 +148,7 @@ data/
├── shp/
│ ├── Boundary_Scope.geojson # 研究范围红线 (必须)
│ ├── Building_Footprints.geojson # 建筑基底 (含 Floor 字段)
│ ├── Key_Plots_District.json # 5 个重点更新地块边界
│ ├── Key_Plots_District.json # N 个重点更新单元边界(由当前 GeoJSON 动态读取)
│ ├── landuse_clipped.geojson # 裁切后的用地分类 (含国标 RGB 色值)
│ ├── road_network_clipped.geojson # 裁切后的三级道路网络
│ └── rail_network_clipped.geojson # 裁切后的轨道交通网络
Expand All @@ -165,6 +169,7 @@ data/
python scripts/fetch_real_estate_data.py # 建筑年代 / 房价
python scripts/fetch_supplementary_data.py --all # 日照 / 交通等
python scripts/clip_city_data.py # 裁切城市级数据至研究范围
python scripts/process_key_plots.py --input data/raw/key_plots.geojson --boundary data/shp/Boundary_Scope.geojson --output data/shp/Key_Plots_District.json
python scripts/render_gis_assets.py # 矢量光栅化 (AIGC 底稿)
```

Expand Down Expand Up @@ -201,7 +206,7 @@ python scripts/render_gis_assets.py # 矢量光栅化 (AIGC 底稿
| 10 | 重点地段深化 | 诊断雷达图、控规指标反推、微观人群画像、地块深化方案 |
| 11 | 实施路径 | 六种更新模式、三期时序甘特图 |
| 12 | 城市设计导则 | 两步法导则生成、RAG 政策检索、控制图则 |
| 13 | 成果表达 | Python 空间底图渲染、Web LLM 重绘提示词、PIL 自动红头图框封装 |
| 13 | 成果表达 | Python 空间底图渲染、Web LLM 重绘提示词、六类 A3 版式选择、PIL 自动图框封装 |
| 14 | 数据大屏 | 三维宏观决策大屏、规划指标统计看板、时空演化动态可视化 |

### 🟣 深化与集成:AIGC 与智能体技能(Stage 15-16)
Expand Down Expand Up @@ -231,7 +236,9 @@ ultimateDESIGN/
│ │ ├── drawing_pipeline.py # DrawingPipeline 端到端编排器
│ │ ├── drawing_prompt_engine.py # 41 图纸提示词构建器
│ │ ├── drawing_prompt_templates.py # 图纸模板元数据库
│ │ ├── drawing_layout_engine.py # A3 图纸多版式排版引擎
│ │ ├── frame_generator.py # A3 图框图纸组装引擎
│ │ ├── key_plot_engine.py # 动态重点更新单元读取 / 诊断 / 图纸目录
│ │ ├── urban_image_segmentation.py # 街景图像分割引擎
│ │ ├── engine_registry.py # AI/AIGC 引擎注册表
│ │ ├── quality_assessor.py # 双重质量评估 (Gemma + DeepSeek)
Expand Down Expand Up @@ -261,6 +268,7 @@ ultimateDESIGN/
├── scripts/ # 自动化脚本
│ ├── setup_env.bat # 环境自动安装 (Windows)
│ ├── clip_city_data.py # 城市级数据裁切至研究范围
│ ├── process_key_plots.py # 重点地块拓扑修复 / 边界裁切 / 面积测算
│ ├── render_gis_assets.py # GIS 矢量光栅化 (AIGC 底稿)
│ ├── run_drawing_export.py # 高精度图纸批量导出
│ ├── fetch_supplementary_data.py # 补充数据获取
Expand All @@ -275,7 +283,7 @@ ultimateDESIGN/
│ ├── secret_scan.py # 敏感信息扫描
│ ├── startup_smoke.py # 启动冒烟测试
│ └── video_generator/ # HyperFrames 视频工具 (Node.js)
├── tests/ # 40 个测试模块 / 238 项用例
├── tests/ # Pytest 自动化测试套件
├── data/ # 数据资产 (数据与逻辑解耦)
├── static/ # Streamlit 静态资源代理
├── assets/ # CSS 样式 / WebGL 模板
Expand Down Expand Up @@ -305,7 +313,7 @@ GeoJSON 矢量数据 Stable Diffusion WebUI
└──────────┬──────────┘
DrawingPipeline 编排 │
│ ▼
├── 提示词构建 (41 模板) 生成专业图纸
├── 提示词构建 (41 模板 + 版式约束) 生成专业图纸
├── 质量评估 (A/B/C/D) (地理空间对齐)
├── 自动修正 & 重生成
└── VersionStore 版本归档
Expand Down Expand Up @@ -351,6 +359,7 @@ git push origin main
| [BUG_REPORT.md](./BUG_REPORT.md) | 已识别问题与修复日志 |
| [PROJECT_INSPECTION_REPORT.md](./PROJECT_INSPECTION_REPORT.md) | 系统级架构体检报告 |
| [GLOSSARY.md](./GLOSSARY.md) | 核心术语释义 (MPI / GVI / ControlNet 等) |
| [docs/DYNAMIC_KEY_PLOTS_AND_LAYOUTS.md](./docs/DYNAMIC_KEY_PLOTS_AND_LAYOUTS.md) | 动态重点地块、GIS 处理脚本与多版式图纸生成说明 |
| [README_EN.md](./README_EN.md) | English Documentation |

---
Expand Down
Loading
Loading