- 数据: 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:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user