关于这个项目

从命令行工具到网页应用,同一份数据,两种使用方式。

项目说明

第 4—7 章完成了命令行版“个人知识库助手”,实现了卡片的增删改查、分类与关键词统计,以及四张统计图表。本章在此基础上增加 FastAPI 接口和四个网页页面,把原有能力搬到浏览器中。命令行版与网页版共用 data/cards.json,数据只保存一份,两边看到的始终是同一批卡片。

项目结构

文件 / 目录职责来源
web_app.pyFastAPI 应用:11 个接口、四个页面路由、静态与图表挂载本章新增
card_service.py卡片读写与增删改查,生成编号和时间戳第 8 章从命令行逻辑抽出的服务层
stats_service.py概览、分类、趋势、高频词统计与图表文件清单第 8 章从命令行逻辑抽出的服务层
main.py第 4—7 章的命令行入口,现复用两个服务层第 7 章,仅做最小导入适配
data/cards.json卡片数据,命令行版与网页版共用第 6 章
charts/第七章生成的四张 PNG 图表第 7 章
docs/api_contract.md统一响应信封、11 个接口与 data 形状约定本章新增
docs/ui_contract.md配色、字体、页面结构、固定 id 与类名约定本章新增
requirements.txtPython 依赖清单,含 FastAPI 与 Uvicorn第 7 章,本章补充
chapter_versions/第 4—7 章源码存档,逐章可回溯历史归档
static/index.html首页:项目概览、功能入口、分类分布本章新增
static/home.js首页脚本:概览与分类分布数据渲染本章新增
static/cards.html卡片管理页:工具栏、卡片列表、编辑弹窗本章新增
static/app.js卡片管理脚本:搜索、筛选、新增、修改、删除本章新增
static/charts.html统计图表页:图表与三组统计表本章新增
static/charts.js图表页脚本:图表、分类、趋势、高频词渲染本章新增
static/about.html关于页:项目说明、结构、接口清单与运行方式本章新增
static/style.css全站唯一样式表,四个页面共用本章新增

接口清单

方法路径
GET/api/cards
POST/api/cards
PUT/api/cards/{id}
DELETE/api/cards/{id}
GET/api/cards/meta
GET/api/stats/summary
GET/api/stats/category
GET/api/stats/trend
GET/api/stats/keywords
GET/api/stats/charts
GET/api/charts/{name}

所有接口统一返回 {"ok": true/false, "data": ..., "message": "中文提示"},失败时 message 为中文。

运行方式

  1. 安装依赖:pip install -r requirements.txt
  2. 启动服务:python -m uvicorn web_app:app --host 127.0.0.1 --port 8000
  3. 访问地址:http://127.0.0.1:8000