Metadata-Version: 2.4
Name: panzr
Version: 0.3.0
Summary: Armored Analytics in Your Terminal — 终端数据分析驾驶舱
Author-email: Song <song@example.com>
License: MIT
Keywords: cli,csv,data-analysis,duckdb,polars,sql,terminal,tui
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Scientific/Engineering :: Visualization
Requires-Python: >=3.10
Requires-Dist: duckdb>=1.0.0
Requires-Dist: openai>=1.0.0
Requires-Dist: plotext>=5.0.0
Requires-Dist: polars>=1.0.0
Requires-Dist: rich>=13.0.0
Requires-Dist: textual>=0.52.0
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Provides-Extra: full
Requires-Dist: harlequin; extra == 'full'
Requires-Dist: jq; extra == 'full'
Requires-Dist: visidata; extra == 'full'
Provides-Extra: harlequin
Requires-Dist: harlequin; extra == 'harlequin'
Provides-Extra: visidata
Requires-Dist: visidata; extra == 'visidata'
Description-Content-Type: text/markdown

# 🐼🔧 Panzr v0.3.0

**Armored Analytics in Your Terminal.** 终端里的装甲数据分析。

> Panzr 是你的终端数据分析驾驶舱。
> *"Your Terminal Data Cockpit."*

---

## 产品定位

Panzr 是一个 **TUI (Terminal User Interface)** 数据分析工具箱。底层整合 DuckDB、Polars、plotext 等成熟引擎，Panzr 本身只负责：菜单导航、参数拼装、流程串联、结果展示。

**v0.3.0** 新增：AI 多轮对话、可拖动分隔条、右键全选复制、快捷键调节编辑器高度。

---

## 功能矩阵

| Tab | 功能 | 底层引擎 |
|:---|:---|:---|
| 🔌 **连接** | 扫描目录、关键词搜索分组、多选加载、DuckDB View 注册 | DuckDB + Polars |
| 🔍 **探查** | Polars 管道 (筛选→排序→去重→选列), 懒加载, 三段式布局 | Polars Lazy |
| 📝 **SQL** | DuckDB 查询, DataCatalog + 编辑器 + 结果, 可拖动分隔条 | DuckDB |
| 💬 **AI 对话** | 多轮 SQL 讨论, 上下文感知 (表结构+当前SQL), 历史持久化 | DeepSeek LLM |
| 📊 **聚合** | 跨文件 GROUP BY, 多聚合函数, DuckDB 全量扫描 | DuckDB |
| 📈 **可视化** | 柱状图/折线图/散点图/直方图, 终端渲染 | plotext |
| 📋 **报告** | 一键数据诊断报告 (Data Profile) | DuckDB + Rich |

---

## 安装

```bash
pip install panzr
```

依赖: `textual` `duckdb` `polars` `plotext` `rich` `openai`

外部工具 (可选): `visidata` `harlequin` `jq`

### LLM 配置

```bash
export DEEPSEEK_API_KEY=sk-你的key
```

---

## 使用

```bash
panzr
# 自动加载目录
panzr --load ~/FinData/资金结算
# 加载 siku 插件
panzr --siku
```

### 典型工作流

```
扫描目录 → 多选分组 → DuckDB View 注册 (全量零内存)
  → SQL (AI 多轮对话或手写, 全量查询)
  → 聚合 (跨文件 GROUP BY)
  → 可视化
```

---

## 快捷键

| 快捷键 | 功能 |
|:---|:---|
| `Ctrl+Q` / `Ctrl+C` | 退出 Panzr |
| `Ctrl+T` | 下一个 Tab |
| `Ctrl+P` | 上一个 Tab |
| `Ctrl+Enter` | 执行 SQL 查询 |
| `Ctrl+Up` / `Ctrl+Down` | 调整 SQL 编辑器高度 |

### 鼠标操作

| 操作 | 功能 |
|:---|:---|
| 拖动分隔条 `═` | 调整编辑器与结果区比例 |
| 右键 (编辑器/输入框) | 全选 + 复制到系统剪贴板 |

---

## 项目结构

```
panzr/
├── app.py                    # 主 App + CSS + 快捷键
├── state.py                  # 全局数据上下文 (AppState)
├── startup_check.py          # 启动环境检测器
├── clipboard.py              # OSC 52 系统剪贴板
├── engines/
│   ├── loader.py             # 文件扫描 + 分组
│   ├── duckdb_engine.py      # DuckDB 查询引擎
│   ├── harlequin_launcher.py # Harlequin 子进程启动
│   ├── llm.py                # LLM SQL 生成 + 多轮对话 (DeepSeek)
│   ├── history.py            # 查询历史 + 聊天记录持久化
│   └── exporter.py           # 导出
├── tabs/
│   ├── connect.py            # 连接 Tab (扫描+多选+DuckDB)
│   ├── explore.py            # 探查 Tab (Polars lazy 管道)
│   ├── query.py              # SQL Tab + AI 对话面板
│   ├── aggregate.py          # 聚合 Tab (DuckDB GROUP BY)
│   ├── vision.py             # 可视化 Tab (plotext)
│   └── report.py             # 报告 Tab (Rich)
└── widgets/
    ├── splitter.py            # 可拖动分隔条 (纵向/横向)
    ├── resizable.py           # Ctrl+Up/Down 调节高度 TextArea
    ├── ai_chat.py             # AI 多轮对话面板
    └── context_menu.py        # 右键菜单 (可复用)
```

---

## Changelog

### v0.3.0
- ✨ 新增 AI 多轮对话面板 (底部 Tab 切换, 上下文感知, 聊天记录持久化)
- ✨ 新增可拖动分隔条 (鼠标拖动调整编辑器高度)
- ✨ 新增 `Ctrl+Up`/`Ctrl+Down` 调节编辑器高度
- ✨ 新增右键全选复制 (OSC 52 系统剪贴板, 支持 Kitty/Ghostty/WezTerm)
- ✨ 新增聊天记录本地持久化 (`~/.panzr/history.json`)
- 🐛 修复 LIMIT 500 追加时 SQL 末尾分号导致的语法错误
- 🐛 修复 LIMIT 检测误判 (列名/注释中含 "limit" 子串)

### v0.2.7
- 启动环境检测器、siku 插件支持

### v0.2.6
- DuckDB 成为唯一数据引擎、LLM 自然语言生成 SQL

---

## License

MIT
