Skip to main content

AI Project Manager Server - REST API backend for project and task management with notification support

Project description

AIPM - AI Project Manager

版本:0.1.0 (Phase 1 MVP) 描述:基于 FastAPI + SQLite 的项目管理后台 REST API


功能概述

AIPM 是一个完全独立的项目管理后台系统,提供:

  • 项目管理:创建、查询、更新项目
  • 任务管理:添加、查询、更新任务进展
  • 进展收集:定时启动进展收集,发送提醒
  • 预警检查:自动检查即将逾期的任务
  • 周报生成:自动生成项目周报
  • 定时任务:内置 APScheduler,支持三种定时任务

架构设计

┌──────────────────────────────────────────┐
│  aipm Backend(完全独立)                │
│  ├── REST API                            │
│  ├── Scheduler(定时任务)               │
│  ├── SQLite 数据库                       │
│  └── Business Logic                      │
└──────────────────────────────────────────┘

关键原则

  • Backend 完全独立,不绑定任何客户端
  • 通知只返回内容,不负责发送
  • 任何支持 HTTP 的客户端都能调用

快速开始

安装

# 从源码安装
pip install -e .

# 或从 git 安装
pip install git+https://github.com/yourname/aipm.git

启动

# 默认启动(端口 8000)
aipm

# 指定端口
aipm --port 9000

# 网络访问
aipm --host 0.0.0.0

# 使用自定义数据库
aipm --db sqlite:///custom.db

# 禁用定时任务
aipm --no-scheduler

# 开发模式(自动重载)
aipm --reload

访问 API 文档

启动后访问:

  • Swagger UI:http://localhost:8000/docs
  • ReDoc:http://localhost:8000/redoc

API 接口

项目管理

接口 方法 描述
/api/v1/projects POST 创建项目
/api/v1/projects/{id} GET 查询项目详情
/api/v1/projects GET 查询项目列表
/api/v1/projects/{id} PATCH 更新项目
/api/v1/projects/{id} DELETE 删除项目

任务管理

接口 方法 描述
/api/v1/tasks POST 添加任务
/api/v1/tasks GET 查询任务列表
/api/v1/tasks/{id} GET 查询任务详情
/api/v1/tasks/{id}/progress PATCH 更新进展
/api/v1/tasks/{id} DELETE 删除任务

进展收集

接口 方法 描述
/api/v1/collection/start POST 启动进展收集
/api/v1/collection/check POST 检查并发送提醒
/api/v1/collection/status/{session_id} GET 查看收集状态
/api/v1/collection/feedback/chat POST 群聊反馈
/api/v1/collection/feedback/form/{session_id}/{task_id} POST 表单提交

报表与预警

接口 方法 描述
/api/v1/reports POST 生成报表
/api/v1/reports/overdue GET 查询预警任务

定时任务

接口 方法 描述
/api/v1/scheduled/check-overdue POST 执行预警检查
/api/v1/scheduled/weekly-report POST 生成周报
/api/v1/scheduled/collect-progress POST 启动进展收集
/api/v1/scheduled/config GET 查看定时任务配置
/api/v1/scheduled/config/{task_id} PATCH 修改定时任务配置

数据库表

核心表

表名 描述
users 用户表
user_channels 用户渠道绑定表
projects 项目表
tasks 任务表
progress_history 进展历史表
progress_collect_sessions 收集会话表
progress_collect_details 收集明细表

辅助表

表名 描述
scheduled_task_configs 定时任务配置表

定时任务

三种定时任务

任务 ID 名称 默认触发时间
daily_check 每日预警检查 周一至周五 09:00
progress_collect 进展收集 周三 09:00
weekly_report 周报生成 周五 17:00

配置修改

通过 API 修改定时任务配置:

# 修改预警检查时间
curl -X PATCH http://localhost:8000/api/v1/scheduled/config/daily_check \
  -H "Content-Type: application/json" \
  -d '{"trigger_time": "08:00", "params": {"days_threshold": 5}}'

# 禁用定时任务
curl -X PATCH http://localhost:8000/api/v1/scheduled/config/weekly_report \
  -H "Content-Type: application/json" \
  -d '{"enabled": false}'

使用示例

创建项目

curl -X POST http://localhost:8000/api/v1/projects \
  -H "Content-Type: application/json" \
  -d '{
    "name": "智慧城市项目",
    "channel": "wecom",
    "group_id": "group_001",
    "webhook_url": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx",
    "background": "打造智慧城市管理平台",
    "objective": "完成一期建设",
    "deadline": "2026-06-30"
  }'

添加任务

curl -X POST http://localhost:8000/api/v1/tasks \
  -H "Content-Type: application/json" \
  -d '{
    "project_id": "proj_xxx",
    "title": "数据采集模块",
    "assignee": "user_001",
    "deadline": "2026-04-20",
    "priority": "high"
  }'

启动进展收集

curl -X POST http://localhost:8000/api/v1/collection/start \
  -H "Content-Type: application/json" \
  -d '{"project_id": "proj_xxx"}'

# 返回:
{
  "session_id": "session_xxx",
  "tasks_count": 5,
  "notifications": [
    {
      "target": "user",
      "channel": "wecom",
      "user_id": "user_001",
      "message": "请更新进展..."
    }
  ]
}

更新进展

curl -X PATCH http://localhost:8000/api/v1/tasks/task_xxx/progress \
  -H "Content-Type: application/json" \
  -d '{
    "progress": 60,
    "note": "已完成数据采集框架",
    "user_id": "user_001",
    "feedback_method": "chat"
  }'

生成周报

curl -X POST http://localhost:8000/api/v1/reports \
  -H "Content-Type: application/json" \
  -d '{
    "project_id": "proj_xxx",
    "report_type": "weekly"
  }'

通知系统(2026-04-15 新增)

核心功能

功能 说明
用户系统 User + UserChannel 表,支持多渠道
Webhook @ 人 通过群机器人 webhook + mentioned_list 实现
消息推送 定时推送 + 实时推送,都通过 webhook 发送

重要:webhook_url 是必填参数,创建项目时必须提供。

用户管理 API

接口 方法 描述
/api/v1/users POST 创建用户
/api/v1/users GET 查询用户列表
/api/v1/users/channels POST 绑定 userid
/api/v1/users/{id}/channels GET 查询用户渠道绑定

通知发送 API

接口 方法 描述
/api/v1/notifications/notify POST 实时发送通知(人工/AI 触发)

架构说明

场景 发送方式
定时推送 Backend APScheduler → 直接 webhook
实时推送 用户/AI 触发 /notify → 直接 webhook

依赖:所有消息推送都依赖 webhook_url,创建项目时必须配置。

消息格式

主动发送通知(POST /notifications/notify):

{
  "target_name": "通哥",    // 可选,不填则不 @ 人
  "project_id": "proj_xxx", // 必填
  "message": "消息内容",    // 必填
  "channel": "wecom"        // 可选,默认企业微信
}

消息显示格式:

有 target_name:
To: 通哥
内容: 今天记得跑步

无 target_name:
大家好,这是群消息

特殊值:target_name = "ALL"

To: ALL
内容: 全体成员请注意

(不 @ 人,仅显示全员消息格式)

数据表扩展

Project 表新增字段:

字段 类型 说明
webhook_url VARCHAR 群机器人 webhook URL(必填)

重要:webhook_url 是必填参数,创建项目时必须提供。

消息发送流程

Backend APScheduler(定时推送)
  每天 09:00 → 检测逾期任务 → 直接 webhook 发送

实时推送(人工/AI 触发)
  用户/AI → /notifications/notify → 直接 webhook 发送

重要:webhook_url 是必填参数,创建项目时必须提供,否则无法发送消息。

Webhook 消息格式

{
  "msgtype": "text",
  "text": {
    "content": "⚠️ 【张三】任务即将逾期!...",
    "mentioned_list": ["HuangMingTong"]
  }
}

消息模板

逾期预警:

⚠️ 【张三】任务即将逾期!

📌 任务:完成 5 公里跑步
👤 责任人:张三
📁 项目:通哥家庭生活和学习任务跟踪项目
⏰ 剩余:0天
📊 进度:0%

🔥 请尽快处理!

任务预警:

⏰ 【通哥】任务预警

📌 任务:完成作业
👤 责任人:通哥
📁 项目:xxx
⏰ 剩余:3天
📊 进度:50%

💡 请注意进度!

环境变量

所有配置可通过环境变量设置,格式为 AIPM_<section>__<key>

# 数据库配置
export AIPM_DATABASE__DATABASE_URL="sqlite:///./aipm.db"

# 定时任务配置
export AIPM_SCHEDULER__SCHEDULER_ENABLED="true"
export AIPM_SCHEDULER__SCHEDULER_TIMEZONE="Asia/Shanghai"

# API 配置
export AIPM_API_PREFIX="/api/v1"

配置文件

配置文件可选,默认使用内置配置:

# ~/.aipm/config.json(未来支持)
{
  "database": {
    "database_url": "sqlite:///./aipm.db"
  },
  "scheduler": {
    "scheduler_enabled": true,
    "scheduler_timezone": "Asia/Shanghai"
  }
}

技术栈

组件 技术 版本
Web 框架 FastAPI ≥0.104.0
数据库 SQLite 默认
ORM SQLAlchemy ≥2.0.23
数据验证 Pydantic ≥2.5.0
定时任务 APScheduler ≥3.10.4
ASGI 服务器 Uvicorn ≥0.24.0

项目结构

code/
├── src/aipm/
│   ├── __init__.py           # 包入口
│   ├── config.py             # 配置管理
│   ├── database.py           # 数据库连接
│   ├── models.py             # 数据模型
│   ├── schemas.py            # API schemas
│   ├── scheduler.py          # 定时任务
│   ├── main.py               # FastAPI 应用
│   ├── cli.py                # CLI 入口
│   ├── api/                  # API 路由
│   │   ├── __init__.py
│   │   ├── projects.py
│   │   ├── tasks.py
│   │   ├── collection.py
│   │   ├── reports.py
│   │   └── scheduled.py
│   └── services/             # 业务逻辑
│       ├── __init__.py
│       ├── project_service.py
│       ├── task_service.py
│       ├── collection_service.py
│       └── report_service.py
├── pyproject.toml            # 项目配置
├── requirements.txt          # 依赖列表
└── README.md                 # 本文档

Phase 1 MVP 验收

已完成功能

  • aipm Python package 结构(可 pip install)
  • FastAPI 后台 + SQLite 数据库
  • 项目管理 API(5个接口)
  • 任务管理 API(6个接口)
  • 进展收集功能(5个接口)
  • 预警检查 API
  • 周报生成 API
  • 定时任务(APScheduler)
  • 三种定时任务可配置
  • CLI 启动命令
  • 用户系统(User + UserChannel)(2026-04-15)
  • Webhook @ 人功能(2026-04-15)
  • webhook_url 必填参数(2026-04-15)
  • 消息推送架构(定时推送 + 实时推送都通过 webhook)

📋 后续 Phase 2

  • 认证机制(API token)
  • 多用户支持
  • PostgreSQL 迁移
  • OpenClaw Skill
  • 云服务器部署
  • PyPI 发布

开发指南

本地开发

# 安装开发依赖
pip install -e ".[dev]"

# 启动开发服务器
aipm --reload

# 运行测试(未来添加)
pytest

代码结构

  • models.py:数据库模型定义
  • schemas.py:Pydantic 数据验证模型
  • services/:业务逻辑层,与数据库交互
  • api/:API 路由层,处理 HTTP 请求响应
  • scheduler.py:定时任务调度器

API 设计原则

  1. RESTful 风格
  2. 清晰的请求/响应模型
  3. 错误处理统一
  4. 通知只返回内容,不发送

License

MIT License


文档位置/Users/hmt/.openclaw/workspace/pm/shared/aipm/code/README.md

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aipm_backend-0.2.1.tar.gz (34.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aipm_backend-0.2.1-py3-none-any.whl (38.5 kB view details)

Uploaded Python 3

File details

Details for the file aipm_backend-0.2.1.tar.gz.

File metadata

  • Download URL: aipm_backend-0.2.1.tar.gz
  • Upload date:
  • Size: 34.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for aipm_backend-0.2.1.tar.gz
Algorithm Hash digest
SHA256 1a05985234d4a70c8d708200a04710263b8e6fc4eeeec7e530f469a2f58abb46
MD5 41fa02429e3b397a9218c89a4310fcbf
BLAKE2b-256 fe11f7f693094dc8e1ef496c6c9f34d8bfd415e57bfec1e57201eacd40b333e7

See more details on using hashes here.

File details

Details for the file aipm_backend-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: aipm_backend-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 38.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for aipm_backend-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 24c0d5f21bff44ed40ba58fc45152f4444c0c8f4a2fef26d47acd948de88ef2f
MD5 46ca66c07cbd11bbbfd694587a2cfd72
BLAKE2b-256 3e776431b5e946cfdb75e74a49c1b1c55de0e88882ddff857223c0e1e03c8f28

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page