feat(任务模块): 任务归档 T-ARC-01~08 实现
Docker Build and Push / build-image (push) Successful in 1m27s

- 数据: Project.autoArchive + Task.archived/archivedAt/archiveSource,
  迁移 20261026000000_task_archive (两索引)
- 领域: server/task-domain/archive.js —— hiddenAtOf 与保留口径精确同源,
  autoArchiveDue 到期判定, runAutoArchiveForProject (读时惰性) +
  runAutoArchiveSweep (每小时 cron 兜底)
- 接口: POST /tasks/:id/archive|unarchive (连带子任务, 幂等);
  GET /projects/:id/tasks/archived (keyword/kind/columnId/from/to 过滤,
  archivedAt+id 游标分页); 项目 PUT 收 autoArchive (枚举校验);
  主列表/子任务/项目 taskCount 全部排除归档
- 前端: ⋯ 菜单「归档」(确认含子任务条数); 项目栏「已归档」入口 →
  ArchivedTasks 弹层 (关键词/类型/列/归档时段过滤 + 加载更多 + 恢复/删除);
  项目管理「归档设置」四档 Picker
This commit is contained in:
jif2.zhang
2026-10-25 23:09:52 +08:00
parent 39282b9633
commit 368e99a380
10 changed files with 606 additions and 99 deletions
+6
View File
@@ -396,6 +396,7 @@ model Project {
notes Json @default("[]") // 项目信息块 [{ title, content }] (T-PJ-13)
taskKinds Json? // 任务类型标签列表 (未配置时服务端回落默认四类)
icon String? @db.Text // 项目图标 (data URL, 客户端裁剪为 96x96 JPEG)
autoArchive String @default("never") @db.VarChar(8) // 自动归档档位: 3d/1w/1m/never (T-ARC-02)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@ -461,6 +462,9 @@ model Task {
extras Json @default("[]")
sortOrder Int @default(0)
archived Boolean @default(false)
archivedAt DateTime?
archiveSource String? @db.VarChar(8) // manual | auto (T-ARC)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@ -471,6 +475,8 @@ model Task {
@@index([projectId, status])
@@index([parentId])
@@index([projectId, doneAt])
@@index([projectId, archived, archivedAt])
@@index([projectId, status, archived])
}
model TaskMember {