# vibe-coding-SHU **Repository Path**: vibe-coding-2026-3/vibe-coding-shu ## Basic Information - **Project Name**: vibe-coding-SHU - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-09 - **Last Updated**: 2026-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🥬 诸葛菜 · 个人能效管理 > 专注当下,掌控全局。一款基于 **Streamlit + SQLite** 的轻量个人任务管理工具。 ![Python](https://img.shields.io/badge/Python-3.10+-blue?logo=python) ![Streamlit](https://img.shields.io/badge/Streamlit-1.32+-red?logo=streamlit) ![SQLite](https://img.shields.io/badge/数据库-SQLite-lightblue?logo=sqlite) ![License](https://img.shields.io/badge/License-MIT-green) --- ## 📸 界面预览 - 顶部展示总任务数、**按分类甜甜圈图**、**按象限甜甜圈图**(Plotly 交互图表) - 左侧侧边栏快速添加任务,支持分类 & 四象限选择 - 主区域支持状态 / 分类 / 象限三重筛选,以及多维度分组展示 - 网页背景使用品牌插画,主内容区半透明蒙版确保可读性 --- ## ✨ 功能一览 | 功能模块 | 说明 | |---------|------| | **任务增删改查** | 添加、编辑、删除任务,即时写入 SQLite 数据库 | | **数据持久化** | 使用本地 SQLite 文件存储,刷新页面或重启后数据不丢失 | | **四象限管理** | 重要且紧急 🔴 / 重要不紧急 🟡 / 紧急不重要 🟢 / 不重要不紧急 ⚪ | | **任务分类** | 工作 💼 / 学习 📚 / 生活 🏠 / 健康 ❤️ | | **状态流转** | 待办 → 进行中 → 已完成,下拉框即改即存 | | **多维筛选** | 按状态、分类、象限三重条件组合过滤 | | **分组展示** | 按象限 / 按分类 / 按状态三种分组方式切换 | | **统计可视化** | 顶部 Plotly 甜甜圈图,直观展示各分类/象限任务占比 | | **标题验证** | 实时验证标题长度(2~50字符),超限给出错误/警告提示 | | **品牌背景** | 品牌插画作为网页背景,半透明蒙版保证内容可读性 | --- ## 🗂️ 项目结构 ``` 诸葛菜/ ├── app.py # 主应用(Streamlit 页面 + 数据库操作) ├── test_app_2.py # 性能测试套件(12 个测试用例) ├── productivity_manager.db # SQLite 数据库(自动生成,首次启动创建) ├── requirements.txt # Python 依赖清单 └── README.md # 项目说明文档 ``` --- ## 🗄️ 数据库设计 **数据库文件:** `productivity_manager.db` ### tasks 表 | 字段 | 类型 | 说明 | |------|------|------| | `id` | INTEGER PK AUTOINCREMENT | 主键,自动递增 | | `title` | TEXT NOT NULL | 任务标题(2~50字符) | | `description` | TEXT | 任务描述,可为空 | | `category` | TEXT NOT NULL | 分类:工作 / 学习 / 生活 / 健康 | | `quadrant` | INTEGER NOT NULL | 象限:1~4(对应四象限) | | `status` | TEXT NOT NULL | 状态:待办 / 进行中 / 已完成 | | `created_at` | TIMESTAMP | 创建时间(本地时间) | | `updated_at` | TIMESTAMP | 最后更新时间(本地时间) | ### 索引 | 索引名 | 字段 | 用途 | |--------|------|------| | `idx_tasks_category` | `category` | 按分类筛选/统计加速 | | `idx_tasks_quadrant` | `quadrant` | 按象限筛选/统计加速 | | `idx_tasks_created_at` | `created_at` | 按时间排序加速 | --- ## 🚀 快速启动 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` 依赖清单: ``` streamlit>=1.32.0 plotly>=5.22.0 ``` ### 2. 启动应用 ```bash # 进入项目目录 cd 诸葛菜 # 启动 Streamlit streamlit run app.py ``` ### 3. 浏览器访问 启动后终端会显示本地地址,默认为: ``` Local URL: http://localhost:8501 Network URL: http://<你的IP>:8501 ``` > ⚠️ 请确保使用 `streamlit run app.py` 启动,直接 `python app.py` 无法运行。 --- ## 🧪 运行性能测试 ```bash python test_app_2.py ``` 测试套件包含 **12 个性能用例**,每个用例使用独立临时数据库,测后自动清理: | 用例 | 测试内容 | 阈值 | |------|---------|------| | 01 | 单条 INSERT 写入响应时间 | < 50ms | | 02 | 批量 100 条写入吞吐量 | < 500ms | | 03 | 批量 1000 条压力写入 | < 3000ms | | 04 | 全量 SELECT(500条数据集)| < 100ms | | 05 | 按 `category` 索引查询(1000条)| < 100ms | | 06 | 按 `quadrant` 索引查询(1000条)| < 100ms | | 07 | 统计聚合 GROUP BY(1000条)| < 200ms | | 08 | 单条 UPDATE + updated_at 刷新 | < 50ms | | 09 | 单条 DELETE + 数据一致性验证 | < 50ms | | 10 | 5线程并发写入 100 条(安全性)| 无数据丢失 | | 11 | `validate_title` 边界逻辑 × 10000次 | < 200ms | | 12 | 三重复合条件筛选(2000条)| < 100ms | --- ## 📐 四象限说明 本工具采用**艾森豪威尔矩阵**对任务进行优先级管理: ``` 紧急 不紧急 ┌──────────┬──────────────┐ 重要 │ 🔴 第一象限 │ 🟡 第二象限 │ │ 立即处理 │ 计划安排 │ ├──────────┼──────────────┤ 不重要 │ 🟢 第三象限 │ ⚪ 第四象限 │ │ 委托他人 │ 尽量减少 │ └──────────┴──────────────┘ ``` --- ## 🛠️ 技术栈 | 技术 | 版本 | 用途 | |------|------|------| | Python | 3.10+ | 核心语言 | | Streamlit | 1.32+ | Web 应用框架 | | SQLite3 | 内置 | 本地持久化存储 | | Plotly | 5.22+ / 6.x | 交互式图表(甜甜圈图)| --- ## 📝 开发说明 - 所有数据库操作均使用**占位符 `?`** 防止 SQL 注入 - 使用 `@st.cache_resource` 确保数据库初始化在应用生命周期内只执行一次 - `st.set_page_config()` 必须是脚本中第一个 Streamlit 命令,数据库初始化紧随其后 - 背景图片以 **base64** 编码内嵌于 CSS,无需外部文件路径依赖 --- *🥬 诸葛菜 —— 像诸葛亮运筹帷幄一样,把每件事安排得井井有条。*