zhi 9e22c97ae8 refactor: update milestone/task status enums to new state machine values
Milestone: open/freeze/undergoing/completed/closed (was open/pending/deferred/progressing/closed)
Task: open/pending/undergoing/completed/closed (was open/pending/progressing/closed)

- Add MilestoneStatusEnum to schemas with typed validation
- Add started_at field to Milestone model
- Update all router/CLI references from progressing->undergoing
- Add completed status handling in task transition logic
2026-03-17 00:04:29 +00:00

HarborForge Backend

Agent/人类协同任务管理平台 - FastAPI 后端

API Endpoints (38)

Auth

  • POST /auth/token - 登录获取 JWT token
  • GET /auth/me - 获取当前用户信息

Issues

Issues 和 Search 列表接口返回分页格式:{items, total, page, page_size, total_pages} Issues 支持排序参数:sort_by (created_at/priority/title/due_date/status), sort_order (asc/desc) Issues 支持额外过滤:assignee_id, tag

Issues 和 Search 列表接口返回分页格式: Issues 支持排序参数: (created_at/priority/title/due_date/status), (asc/desc) Issues 支持额外过滤:,

  • POST /issues - 创建 issue支持 resolution 决议案类型)
  • GET /issues - 列表(分页、排序、按 assignee/tag 过滤)(支持按 project/status/type 过滤)
  • GET /issues/{id} - 详情
  • PATCH /issues/{id} - 更新
  • DELETE /issues/{id} - 删除
  • POST /issues/{id}/transition - 状态变更(触发 webhook
  • GET /search/issues?q=keyword - 搜索

Comments

  • POST /comments - 创建评论
  • GET /issues/{id}/comments - 列表
  • PATCH /comments/{id} - 更新
  • DELETE /comments/{id} - 删除

Projects

  • POST /projects - 创建
  • GET /projects - 列表
  • GET /projects/{id} - 详情
  • PATCH /projects/{id} - 更新
  • DELETE /projects/{id} - 删除

Project Members

  • POST /projects/{id}/members - 添加成员
  • GET /projects/{id}/members - 列表
  • DELETE /projects/{id}/members/{user_id} - 移除

Users

  • POST /users - 注册
  • GET /users - 列表
  • GET /users/{id} - 详情
  • PATCH /users/{id} - 更新

Webhooks

  • POST /webhooks - 创建
  • GET /webhooks - 列表
  • GET /webhooks/{id} - 详情
  • PATCH /webhooks/{id} - 更新
  • DELETE /webhooks/{id} - 删除
  • GET /webhooks/{id}/logs - 投递日志

System

  • GET /health - 健康检查
  • GET /version - 版本信息
  • GET /dashboard/stats - 统计面板

Milestones

  • POST /milestones - 创建里程碑
  • GET /milestones - 列表(支持按 project/status 过滤)
  • GET /milestones/{id} - 详情
  • PATCH /milestones/{id} - 更新
  • DELETE /milestones/{id} - 删除
  • GET /milestones/{id}/issues - 里程碑下的 issue 列表
  • GET /milestones/{id}/progress - 里程碑完成进度

Notifications

  • GET /notifications - 列表(支持 user_id, unread_only 过滤)
  • GET /notifications/count - 未读通知计数
  • POST /notifications/{id}/read - 标记已读
  • POST /notifications/read-all - 全部标记已读

Issue Assignment

  • POST /issues/{id}/assign - 指派 issue自动发送通知

Webhook Retry

  • POST /webhooks/{id}/retry/{log_id} - 重试失败的 webhook 投递

Time Tracking (Work Logs)

  • POST /worklogs - 记录工时
  • GET /issues/{id}/worklogs - 某 issue 的工时记录
  • GET /issues/{id}/worklogs/summary - 某 issue 工时汇总
  • GET /users/{id}/worklogs - 某用户的工时记录
  • DELETE /worklogs/{id} - 删除工时记录
  • GET /projects/{id}/worklogs/summary - 项目工时汇总(按用户分组)

Export

  • GET /export/issues - 导出 issues CSV
  • GET /issues/overdue - 逾期未完成的 issue

CLI

# 环境变量
export HARBORFORGE_URL=http://localhost:8000
export HARBORFORGE_TOKEN=<your-token>

# 命令
python3 cli.py login <username> <password>
python3 cli.py issues [-p project_id] [-t type] [-s status]
python3 cli.py create-issue "title" -p 1 -r 1 [-t resolution --summary "..." --positions "..." --pending "..."]
python3 cli.py search "keyword"
python3 cli.py transition <issue_id> <new_status>
python3 cli.py stats [-p project_id]
python3 cli.py projects
python3 cli.py users
python3 cli.py milestones [-p project_id]
python3 cli.py milestone-progress <milestone_id>
python3 cli.py notifications -u <user_id> [--unread]
python3 cli.py overdue [-p project_id]
python3 cli.py log-time <issue_id> <user_id> <hours> [-d "description"]
python3 cli.py worklogs <issue_id>
python3 cli.py health
python3 cli.py version

技术栈

  • Python 3.11 + FastAPI
  • SQLAlchemy + MySQL
  • JWT (python-jose)
  • Docker

Issue Types

Type 用途
task 普通任务
story 用户故事
test 测试用例
resolution 决议案Agent 僵局提交)
Description
HarborForge Backend - FastAPI
Readme 1.3 MiB
Languages
Python 99.8%