Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

daily-task-agent

daily-task-agent 是一个本地运行的每日计划管理 Web 应用。用户可以维护长期目标、中期目标、每日任务和固定打卡项,后端 Planner Service 会结合目标、任务、打卡记录与最近完成情况生成每日建议。

当前版本采用前后端分离:

  • Frontend: Vue 3 + Vite + Vue Router + Pinia + Axios + Element Plus
  • Backend: Django + Django REST Framework + SimpleJWT
  • Database: MySQL
  • AI: OpenAI Python SDK 调用外部 API,未配置或调用失败时回落到规则版 Planner

核心功能

  • 用户注册、登录、JWT 鉴权。
  • 长期目标 CRUD。
  • 中期目标 CRUD,并可关联长期目标。
  • 每日任务创建、编辑、删除、勾选完成。
  • 每日固定任务打卡,例如工作、刷题、读论文。
  • 打卡贡献热力图和基础统计概览。
  • 本地文件夹导入,使用 LLM 生成目标、任务、打卡草稿。
  • Planner 根据目标、最近任务和固定打卡生成每日建议。
  • 用户可采纳建议生成每日任务,也可手动修改任务。

当前不做什么

  • 不做多 Agent 协作。
  • 不做自动日历同步。
  • 不做移动端 App。
  • 不做团队协作。
  • 不做复杂项目管理功能,例如甘特图、依赖关系、工时统计。
  • 不做 Docker Compose 生产化部署。
  • 不自动把 LLM 导入结果写入数据库,必须人工确认后应用。

本地运行

前置依赖:

  • Python 3.14+
  • Node.js 20+ 和 npm
  • MySQL 8+
  • OpenAI API key,可选;没有 key 时 Planner 和导入会使用规则/启发式回落
  • 兼容 OpenAI SDK 的外部模型服务,可选;通过 OPENAI_BASE_URL 配置

1. 初始化 MySQL

mysql -uroot -p < backend/db/init-mysql.sql

2. 启动后端

cd backend
python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python manage.py migrate
python manage.py runserver 0.0.0.0:8080

后端默认运行在 http://localhost:8080

常用环境变量写在 backend/.env

DJANGO_SECRET_KEY=replace-with-a-long-random-secret
DB_NAME=daily_task_agent
DB_USERNAME=daily_task_agent
DB_PASSWORD=daily_task_agent
DB_HOST=127.0.0.1
DB_PORT=3306
JWT_EXPIRATION_MS=604800000
CORS_ALLOWED_ORIGINS=http://localhost:5173
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4o-mini
OPENAI_BASE_URL=
PLANNER_RECENT_DAYS=7
PLANNER_MAX_SUGGESTIONS=5
IMPORT_ALLOWED_ROOTS=
IMPORT_MAX_FILE_BYTES=200000
IMPORT_MAX_FILES=30

3. 启动前端

cd frontend
npm install
npm run dev

前端默认运行在 http://localhost:5173,Vite 会将 /api 代理到 http://localhost:8080

API 约定

API 前缀:/api/v1

需要登录的接口使用:

Authorization: Bearer <token>

主要接口:

  • POST /auth/register
  • POST /auth/login
  • GET /auth/me
  • GET|POST|PUT|DELETE /goals/long-term
  • GET|POST|PUT|DELETE /goals/mid-term
  • GET|POST|PUT|PATCH|DELETE /tasks
  • GET /tasks/summary?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD
  • GET|POST|PUT|DELETE /habits
  • GET /habits/today?date=YYYY-MM-DD
  • PATCH /habits/{id}/checkins/{date}
  • GET /habits/contributions?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD
  • POST /imports/folder
  • GET /imports/{jobId}
  • POST /imports/{jobId}/apply
  • POST /planner/suggestions
  • POST /planner/suggestions/adopt

Planner 和导入

Planner 是 Django 后端内部服务,不单独部署。

生成建议时:

  1. 读取当前用户的活跃长期目标、中期目标、最近任务和固定打卡记录。
  2. 如果配置了 OPENAI_API_KEY,使用 OpenAI Python SDK 调用 Responses API,并要求模型返回结构化 JSON。
  3. 如果配置了 OPENAI_BASE_URL,会把它传给 OpenAI SDK,用于兼容 OpenAI SDK 的外部服务。
  4. 如果没有配置 key、外部 API 调用失败、或返回内容不可用,则回落到规则版 Planner。

文件夹导入默认读取后端本机路径:

  • 支持 .md.txt
  • 自动忽略 .gitnode_modules.venv、隐藏目录、构建产物和过大文件。
  • IMPORT_ALLOWED_ROOTS 为空时允许读取任意本机目录;配置后只允许读取指定根目录下的路径。
  • LLM 结果会保存为导入草稿,用户在前端确认后才会写入正式数据。

测试

后端:

cd backend
. .venv/bin/activate
python manage.py test apps

前端:

cd frontend
npm run build

文档

About

基于LangGraph的每日任务管理系统

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages