# 基于多维表格的敏捷项目周期管理 [使用说明](https://open.feishu.cn/document/home/agile-project-cycle-management-based-on-bitable/introduction) ## 配置说明 本项目依赖环境变量来进行飞书应用授权和数据表定位。你需要根据 `.env.example`(或直接新建一个 `.env` 文件),配置以下环境变量: ### 核心凭证配置 (必填) * `APP_ID`: 你的飞书应用的 App ID。 * `APP_SECRET`: 你的飞书应用的 App Secret。 * `LARK_HOST`: 飞书开放平台 API 地址,默认为 `https://open.feishu.cn`。 ### 单表查询配置 (get_records, batch_get_records) * `DEFAULT_APP_TOKEN`: 默认读取的飞书多维表格的 App Token。 * `DEFAULT_TABLE_ID`: `get_records.py` 默认查询的 Table ID。 * `BATCH_TABLE_ID`: `batch_get_records.py` 默认批量查询的 Table ID。 ### 导出可视化视图配置 (export_web_view) * `WEB_VIEW_TABS`: 导出 HTML 时使用的多标签页配置,必须为严格的 **JSON 数组字符串**。例如: `[{"name": "开发组", "app_token": "token1", "table_id": "id1"}, {"name": "测试组", "app_token": "token2", "table_id": "id2"}]` * **AI 总结配置**(可选,用于网页自带的 AI 分板): * `AI_API_KEY`: 大模型 API Key。 * `AI_BASE_URL`: 大模型 API 请求 Base URL。 * `AI_MODEL`: 大模型模型名称(如 `gpt-4o`, `MiniMaxAI` 等)。 ### 多表合并功能配置 (merge_bitables, append_bitables) * `MERGE_SOURCE_APP_TOKEN_1` / `MERGE_SOURCE_TABLE_ID_1`: 第一个数据源。 * `MERGE_SOURCE_APP_TOKEN_2` / `MERGE_SOURCE_TABLE_ID_2`: 第二个数据源。 * `MERGE_TARGET_APP_TOKEN`: 数据合并后的目标 App Token。 ## 快速开始模板 (`.env` 文件配置) 你可以直接在项目根目录创建一个 `.env` 文件,然后复制以下内容并替换成你的真实配置: ```env # 核心凭证配置 (必填) APP_ID=your_app_id APP_SECRET=your_app_secret LARK_HOST=https://open.feishu.cn # 单表查询配置 (get_records, batch_get_records) DEFAULT_APP_TOKEN=your_default_app_token DEFAULT_TABLE_ID=your_default_table_id BATCH_TABLE_ID=your_batch_table_id # 导出网页视图配置 (严格 JSON 数组格式) WEB_VIEW_TABS=[{"name": "默认分组", "app_token": "your_app_token", "table_id": "your_table_id"}] # AI 总结配置 (可选,用于 outline_view.html 生成摘要) AI_API_KEY=your_ai_api_key AI_BASE_URL=https://api.openai.com/v1 AI_MODEL=gpt-4o # 多表合并功能配置 (可选) MERGE_SOURCE_APP_TOKEN_1=source_token_1 MERGE_SOURCE_TABLE_ID_1=source_id_1 MERGE_SOURCE_APP_TOKEN_2=source_token_2 MERGE_SOURCE_TABLE_ID_2=source_id_2 MERGE_TARGET_APP_TOKEN=target_token ``` ## 快速开始 ```bash uv sync uv run export_web_view.py uv run server.py ``` 服务启动后,可以通过浏览器直接访问查看交互式数据看板: 🔗 **[http://localhost:18080](http://localhost:18080)**