@qq33357486/oh-my-task 1.4.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -236
- package/dist/__tests__/auth-admin.test.d.ts +2 -0
- package/dist/__tests__/auth-admin.test.d.ts.map +1 -0
- package/dist/__tests__/auth-admin.test.js +440 -0
- package/dist/__tests__/auth-admin.test.js.map +1 -0
- package/dist/__tests__/auth-login-logout.test.d.ts +2 -0
- package/dist/__tests__/auth-login-logout.test.d.ts.map +1 -0
- package/dist/__tests__/auth-login-logout.test.js +400 -0
- package/dist/__tests__/auth-login-logout.test.js.map +1 -0
- package/dist/__tests__/auth-password.test.d.ts +2 -0
- package/dist/__tests__/auth-password.test.d.ts.map +1 -0
- package/dist/__tests__/auth-password.test.js +419 -0
- package/dist/__tests__/auth-password.test.js.map +1 -0
- package/dist/__tests__/auth-register.test.d.ts +2 -0
- package/dist/__tests__/auth-register.test.d.ts.map +1 -0
- package/dist/__tests__/auth-register.test.js +379 -0
- package/dist/__tests__/auth-register.test.js.map +1 -0
- package/dist/__tests__/auth-tokens.test.d.ts +2 -0
- package/dist/__tests__/auth-tokens.test.d.ts.map +1 -0
- package/dist/__tests__/auth-tokens.test.js +392 -0
- package/dist/__tests__/auth-tokens.test.js.map +1 -0
- package/dist/__tests__/db-schema.test.d.ts +2 -0
- package/dist/__tests__/db-schema.test.d.ts.map +1 -0
- package/dist/__tests__/db-schema.test.js +245 -0
- package/dist/__tests__/db-schema.test.js.map +1 -0
- package/dist/__tests__/express-server.test.d.ts +2 -0
- package/dist/__tests__/express-server.test.d.ts.map +1 -0
- package/dist/__tests__/express-server.test.js +119 -0
- package/dist/__tests__/express-server.test.js.map +1 -0
- package/dist/__tests__/fix-hcaptcha-dev-bypass.test.d.ts +2 -0
- package/dist/__tests__/fix-hcaptcha-dev-bypass.test.d.ts.map +1 -0
- package/dist/__tests__/fix-hcaptcha-dev-bypass.test.js +270 -0
- package/dist/__tests__/fix-hcaptcha-dev-bypass.test.js.map +1 -0
- package/dist/__tests__/mcp/mcp-tools.test.d.ts +2 -0
- package/dist/__tests__/mcp/mcp-tools.test.d.ts.map +1 -0
- package/dist/__tests__/mcp/mcp-tools.test.js +547 -0
- package/dist/__tests__/mcp/mcp-tools.test.js.map +1 -0
- package/dist/__tests__/projects.test.d.ts +2 -0
- package/dist/__tests__/projects.test.d.ts.map +1 -0
- package/dist/__tests__/projects.test.js +406 -0
- package/dist/__tests__/projects.test.js.map +1 -0
- package/dist/__tests__/schedule.test.d.ts +2 -0
- package/dist/__tests__/schedule.test.d.ts.map +1 -0
- package/dist/__tests__/schedule.test.js +587 -0
- package/dist/__tests__/schedule.test.js.map +1 -0
- package/dist/__tests__/tasks-crud.test.d.ts +2 -0
- package/dist/__tests__/tasks-crud.test.d.ts.map +1 -0
- package/dist/__tests__/tasks-crud.test.js +606 -0
- package/dist/__tests__/tasks-crud.test.js.map +1 -0
- package/dist/__tests__/tasks-lifecycle.test.d.ts +2 -0
- package/dist/__tests__/tasks-lifecycle.test.d.ts.map +1 -0
- package/dist/__tests__/tasks-lifecycle.test.js +712 -0
- package/dist/__tests__/tasks-lifecycle.test.js.map +1 -0
- package/dist/__tests__/versions.test.d.ts +2 -0
- package/dist/__tests__/versions.test.d.ts.map +1 -0
- package/dist/__tests__/versions.test.js +613 -0
- package/dist/__tests__/versions.test.js.map +1 -0
- package/dist/api/middleware/auth.d.ts +1 -2
- package/dist/api/middleware/auth.d.ts.map +1 -1
- package/dist/api/middleware/auth.js +5 -12
- package/dist/api/middleware/auth.js.map +1 -1
- package/dist/api/middleware/captcha.d.ts +8 -0
- package/dist/api/middleware/captcha.d.ts.map +1 -1
- package/dist/api/middleware/captcha.js +29 -4
- package/dist/api/middleware/captcha.js.map +1 -1
- package/dist/api/middleware/ownerCheck.d.ts +0 -5
- package/dist/api/middleware/ownerCheck.d.ts.map +1 -1
- package/dist/api/middleware/ownerCheck.js +15 -49
- package/dist/api/middleware/ownerCheck.js.map +1 -1
- package/dist/api/routes/{sops.d.ts → admin.d.ts} +1 -1
- package/dist/api/routes/admin.d.ts.map +1 -0
- package/dist/api/routes/admin.js +20 -0
- package/dist/api/routes/admin.js.map +1 -0
- package/dist/api/routes/auth.d.ts.map +1 -1
- package/dist/api/routes/auth.js +65 -14
- package/dist/api/routes/auth.js.map +1 -1
- package/dist/api/routes/config.d.ts.map +1 -1
- package/dist/api/routes/config.js +6 -1
- package/dist/api/routes/config.js.map +1 -1
- package/dist/api/routes/projects.d.ts.map +1 -1
- package/dist/api/routes/projects.js +29 -18
- package/dist/api/routes/projects.js.map +1 -1
- package/dist/api/routes/tasks.d.ts.map +1 -1
- package/dist/api/routes/tasks.js +79 -104
- package/dist/api/routes/tasks.js.map +1 -1
- package/dist/api/routes/tokens.d.ts.map +1 -1
- package/dist/api/routes/tokens.js +11 -8
- package/dist/api/routes/tokens.js.map +1 -1
- package/dist/api/routes/users.d.ts.map +1 -1
- package/dist/api/routes/users.js +7 -59
- package/dist/api/routes/users.js.map +1 -1
- package/dist/api/routes/versions.d.ts.map +1 -1
- package/dist/api/routes/versions.js +63 -34
- package/dist/api/routes/versions.js.map +1 -1
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +23 -14
- package/dist/api/server.js.map +1 -1
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +40 -118
- package/dist/db/connection.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +15 -64
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/activate-task.d.ts.map +1 -1
- package/dist/mcp/tools/activate-task.js +3 -17
- package/dist/mcp/tools/activate-task.js.map +1 -1
- package/dist/mcp/tools/{get-next-task.d.ts → auto-schedule.d.ts} +3 -3
- package/dist/mcp/tools/auto-schedule.d.ts.map +1 -0
- package/dist/mcp/tools/auto-schedule.js +59 -0
- package/dist/mcp/tools/auto-schedule.js.map +1 -0
- package/dist/mcp/tools/complete-task.d.ts.map +1 -1
- package/dist/mcp/tools/complete-task.js +2 -12
- package/dist/mcp/tools/complete-task.js.map +1 -1
- package/dist/mcp/tools/create-task.d.ts.map +1 -1
- package/dist/mcp/tools/create-task.js +33 -38
- package/dist/mcp/tools/create-task.js.map +1 -1
- package/dist/mcp/tools/create-version.d.ts.map +1 -1
- package/dist/mcp/tools/create-version.js +2 -17
- package/dist/mcp/tools/create-version.js.map +1 -1
- package/dist/mcp/tools/{get-task-context.d.ts → get-current-task.d.ts} +3 -3
- package/dist/mcp/tools/get-current-task.d.ts.map +1 -0
- package/dist/mcp/tools/get-current-task.js +85 -0
- package/dist/mcp/tools/get-current-task.js.map +1 -0
- package/dist/mcp/tools/get-task.d.ts.map +1 -1
- package/dist/mcp/tools/get-task.js +7 -12
- package/dist/mcp/tools/get-task.js.map +1 -1
- package/dist/mcp/tools/init-project.d.ts +0 -2
- package/dist/mcp/tools/init-project.d.ts.map +1 -1
- package/dist/mcp/tools/init-project.js +39 -75
- package/dist/mcp/tools/init-project.js.map +1 -1
- package/dist/mcp/tools/list-tasks.d.ts.map +1 -1
- package/dist/mcp/tools/list-tasks.js +8 -33
- package/dist/mcp/tools/list-tasks.js.map +1 -1
- package/dist/mcp/tools/list-versions.d.ts.map +1 -1
- package/dist/mcp/tools/list-versions.js +16 -25
- package/dist/mcp/tools/list-versions.js.map +1 -1
- package/dist/mcp/tools/utils/config.js +1 -1
- package/dist/mcp/tools/utils/config.js.map +1 -1
- package/dist/services/admin.service.d.ts +27 -0
- package/dist/services/admin.service.d.ts.map +1 -0
- package/dist/services/admin.service.js +88 -0
- package/dist/services/admin.service.js.map +1 -0
- package/dist/services/config.service.d.ts +1 -0
- package/dist/services/config.service.d.ts.map +1 -1
- package/dist/services/config.service.js +7 -0
- package/dist/services/config.service.js.map +1 -1
- package/dist/services/project.service.d.ts +7 -7
- package/dist/services/project.service.d.ts.map +1 -1
- package/dist/services/project.service.js +47 -40
- package/dist/services/project.service.js.map +1 -1
- package/dist/services/schedule.service.d.ts +6 -0
- package/dist/services/schedule.service.d.ts.map +1 -1
- package/dist/services/schedule.service.js +36 -12
- package/dist/services/schedule.service.js.map +1 -1
- package/dist/services/task.service.d.ts +6 -18
- package/dist/services/task.service.d.ts.map +1 -1
- package/dist/services/task.service.js +161 -194
- package/dist/services/task.service.js.map +1 -1
- package/dist/services/token.service.d.ts +1 -0
- package/dist/services/token.service.d.ts.map +1 -1
- package/dist/services/token.service.js +5 -2
- package/dist/services/token.service.js.map +1 -1
- package/dist/services/user.service.d.ts +0 -32
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +13 -110
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/version.service.d.ts +26 -8
- package/dist/services/version.service.d.ts.map +1 -1
- package/dist/services/version.service.js +149 -41
- package/dist/services/version.service.js.map +1 -1
- package/dist/types/index.d.ts +17 -60
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +4 -13
- package/src/db/schema.sql +113 -70
- package/dist/api/routes/sops.d.ts.map +0 -1
- package/dist/api/routes/sops.js +0 -155
- package/dist/api/routes/sops.js.map +0 -1
- package/dist/mcp/tools/add-task-note.d.ts +0 -10
- package/dist/mcp/tools/add-task-note.d.ts.map +0 -1
- package/dist/mcp/tools/add-task-note.js +0 -46
- package/dist/mcp/tools/add-task-note.js.map +0 -1
- package/dist/mcp/tools/approve-task.d.ts +0 -10
- package/dist/mcp/tools/approve-task.d.ts.map +0 -1
- package/dist/mcp/tools/approve-task.js +0 -59
- package/dist/mcp/tools/approve-task.js.map +0 -1
- package/dist/mcp/tools/archive-version.d.ts +0 -10
- package/dist/mcp/tools/archive-version.d.ts.map +0 -1
- package/dist/mcp/tools/archive-version.js +0 -57
- package/dist/mcp/tools/archive-version.js.map +0 -1
- package/dist/mcp/tools/assign-task.d.ts +0 -10
- package/dist/mcp/tools/assign-task.d.ts.map +0 -1
- package/dist/mcp/tools/assign-task.js +0 -53
- package/dist/mcp/tools/assign-task.js.map +0 -1
- package/dist/mcp/tools/create-sop.d.ts +0 -10
- package/dist/mcp/tools/create-sop.d.ts.map +0 -1
- package/dist/mcp/tools/create-sop.js +0 -90
- package/dist/mcp/tools/create-sop.js.map +0 -1
- package/dist/mcp/tools/get-my-tasks.d.ts +0 -10
- package/dist/mcp/tools/get-my-tasks.d.ts.map +0 -1
- package/dist/mcp/tools/get-my-tasks.js +0 -88
- package/dist/mcp/tools/get-my-tasks.js.map +0 -1
- package/dist/mcp/tools/get-next-task.d.ts.map +0 -1
- package/dist/mcp/tools/get-next-task.js +0 -84
- package/dist/mcp/tools/get-next-task.js.map +0 -1
- package/dist/mcp/tools/get-sop.d.ts +0 -10
- package/dist/mcp/tools/get-sop.d.ts.map +0 -1
- package/dist/mcp/tools/get-sop.js +0 -67
- package/dist/mcp/tools/get-sop.js.map +0 -1
- package/dist/mcp/tools/get-task-context.d.ts.map +0 -1
- package/dist/mcp/tools/get-task-context.js +0 -114
- package/dist/mcp/tools/get-task-context.js.map +0 -1
- package/dist/mcp/tools/helpers.d.ts +0 -10
- package/dist/mcp/tools/helpers.d.ts.map +0 -1
- package/dist/mcp/tools/helpers.js +0 -17
- package/dist/mcp/tools/helpers.js.map +0 -1
- package/dist/mcp/tools/list-sops.d.ts +0 -10
- package/dist/mcp/tools/list-sops.d.ts.map +0 -1
- package/dist/mcp/tools/list-sops.js +0 -57
- package/dist/mcp/tools/list-sops.js.map +0 -1
- package/dist/mcp/tools/reject-task.d.ts +0 -10
- package/dist/mcp/tools/reject-task.d.ts.map +0 -1
- package/dist/mcp/tools/reject-task.js +0 -63
- package/dist/mcp/tools/reject-task.js.map +0 -1
- package/dist/mcp/tools/reschedule.d.ts +0 -17
- package/dist/mcp/tools/reschedule.d.ts.map +0 -1
- package/dist/mcp/tools/reschedule.js +0 -107
- package/dist/mcp/tools/reschedule.js.map +0 -1
- package/dist/mcp/tools/start-task.d.ts +0 -10
- package/dist/mcp/tools/start-task.d.ts.map +0 -1
- package/dist/mcp/tools/start-task.js +0 -42
- package/dist/mcp/tools/start-task.js.map +0 -1
- package/dist/mcp/tools/submit-for-review.d.ts +0 -10
- package/dist/mcp/tools/submit-for-review.d.ts.map +0 -1
- package/dist/mcp/tools/submit-for-review.js +0 -64
- package/dist/mcp/tools/submit-for-review.js.map +0 -1
- package/dist/mcp/tools/update-sop.d.ts +0 -10
- package/dist/mcp/tools/update-sop.d.ts.map +0 -1
- package/dist/mcp/tools/update-sop.js +0 -113
- package/dist/mcp/tools/update-sop.js.map +0 -1
- package/dist/mcp/tools/update-task-doc.d.ts +0 -10
- package/dist/mcp/tools/update-task-doc.d.ts.map +0 -1
- package/dist/mcp/tools/update-task-doc.js +0 -70
- package/dist/mcp/tools/update-task-doc.js.map +0 -1
- package/dist/mcp/tools/update-task.d.ts +0 -10
- package/dist/mcp/tools/update-task.d.ts.map +0 -1
- package/dist/mcp/tools/update-task.js +0 -106
- package/dist/mcp/tools/update-task.js.map +0 -1
- package/dist/services/sop.service.d.ts +0 -53
- package/dist/services/sop.service.d.ts.map +0 -1
- package/dist/services/sop.service.js +0 -275
- package/dist/services/sop.service.js.map +0 -1
|
@@ -44,23 +44,10 @@ export declare function getAllUsers(page?: number, pageSize?: number): {
|
|
|
44
44
|
users: User[];
|
|
45
45
|
total: number;
|
|
46
46
|
};
|
|
47
|
-
/**
|
|
48
|
-
* 管理员创建用户(带邮箱和密码)
|
|
49
|
-
*/
|
|
50
|
-
export declare function createUserByAdmin(params: {
|
|
51
|
-
name: string;
|
|
52
|
-
email: string;
|
|
53
|
-
password: string;
|
|
54
|
-
role?: string;
|
|
55
|
-
}): Promise<User>;
|
|
56
47
|
/**
|
|
57
48
|
* 修改密码
|
|
58
49
|
*/
|
|
59
50
|
export declare function changePassword(params: ChangePasswordParams): Promise<boolean>;
|
|
60
|
-
/**
|
|
61
|
-
* 强制修改密码(首次登录)
|
|
62
|
-
*/
|
|
63
|
-
export declare function forceChangePassword(userId: string, newPassword: string): Promise<boolean>;
|
|
64
51
|
/**
|
|
65
52
|
* 生成密码重置令牌
|
|
66
53
|
*/
|
|
@@ -69,27 +56,8 @@ export declare function generateResetToken(email: string): string | null;
|
|
|
69
56
|
* 使用重置令牌重置密码
|
|
70
57
|
*/
|
|
71
58
|
export declare function resetPassword(params: ResetPasswordParams): Promise<boolean>;
|
|
72
|
-
/**
|
|
73
|
-
* 清除首次登录标记
|
|
74
|
-
*/
|
|
75
|
-
export declare function clearFirstLoginFlag(userId: string): void;
|
|
76
|
-
/**
|
|
77
|
-
* 创建用户(仅名字,用于旧 API)
|
|
78
|
-
*/
|
|
79
|
-
export declare function createUserByName(name: string, role?: string): User;
|
|
80
|
-
/**
|
|
81
|
-
* 更新用户
|
|
82
|
-
*/
|
|
83
|
-
export declare function updateUser(id: string, data: {
|
|
84
|
-
name?: string;
|
|
85
|
-
role?: string;
|
|
86
|
-
}): User | null;
|
|
87
59
|
/**
|
|
88
60
|
* 删除用户
|
|
89
61
|
*/
|
|
90
62
|
export declare function deleteUser(id: string): boolean;
|
|
91
|
-
/**
|
|
92
|
-
* 重新生成 API Key
|
|
93
|
-
*/
|
|
94
|
-
export declare function regenerateApiKey(id: string): User | null;
|
|
95
63
|
//# sourceMappingURL=user.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.service.d.ts","sourceRoot":"","sources":["../../src/services/user.service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAID;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"user.service.d.ts","sourceRoot":"","sources":["../../src/services/user.service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAID;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCxE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBlE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAInD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAIzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,eAAe,GAAG,aAAa,GAAG,qBAAqB,CAAC,CAS5G;AAID;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAU,EAAE,QAAQ,GAAE,MAAW,GAAG;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAWrG;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BnF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiB/D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CA6BjF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAI9C"}
|
|
@@ -28,10 +28,13 @@ export async function createUser(params) {
|
|
|
28
28
|
const passwordHash = await hashPassword(password);
|
|
29
29
|
// 创建用户
|
|
30
30
|
const id = uuidv4();
|
|
31
|
+
// 第一个注册的用户自动成为 admin
|
|
32
|
+
const userCount = db.prepare('SELECT COUNT(*) as count FROM users').get();
|
|
33
|
+
const role = userCount.count === 0 ? 'admin' : 'member';
|
|
31
34
|
db.prepare(`
|
|
32
35
|
INSERT INTO users (id, name, email, password_hash, role)
|
|
33
|
-
VALUES (?, ?, ?, ?,
|
|
34
|
-
`).run(id, name.trim(), normalizedEmail, passwordHash);
|
|
36
|
+
VALUES (?, ?, ?, ?, ?)
|
|
37
|
+
`).run(id, name.trim(), normalizedEmail, passwordHash, role);
|
|
35
38
|
return getUserById(id);
|
|
36
39
|
}
|
|
37
40
|
/**
|
|
@@ -79,14 +82,12 @@ export function toPublicUser(user) {
|
|
|
79
82
|
id: user.id,
|
|
80
83
|
name: user.name,
|
|
81
84
|
email: user.email,
|
|
82
|
-
api_key: user.api_key,
|
|
83
85
|
role: user.role,
|
|
84
|
-
is_first_login: user.is_first_login,
|
|
85
86
|
created_at: user.created_at,
|
|
86
87
|
updated_at: user.updated_at
|
|
87
88
|
};
|
|
88
89
|
}
|
|
89
|
-
// ==========
|
|
90
|
+
// ========== 用户管理相关 ==========
|
|
90
91
|
/**
|
|
91
92
|
* 获取所有用户(分页)
|
|
92
93
|
*/
|
|
@@ -99,32 +100,6 @@ export function getAllUsers(page = 1, pageSize = 10) {
|
|
|
99
100
|
const countResult = db.prepare('SELECT COUNT(*) as total FROM users').get();
|
|
100
101
|
return { users, total: countResult.total };
|
|
101
102
|
}
|
|
102
|
-
/**
|
|
103
|
-
* 管理员创建用户(带邮箱和密码)
|
|
104
|
-
*/
|
|
105
|
-
export async function createUserByAdmin(params) {
|
|
106
|
-
const { name, email, password, role = 'member' } = params;
|
|
107
|
-
if (!validateEmail(email)) {
|
|
108
|
-
throw new Error('邮箱格式无效');
|
|
109
|
-
}
|
|
110
|
-
const passwordCheck = validatePasswordStrength(password);
|
|
111
|
-
if (!passwordCheck.valid) {
|
|
112
|
-
throw new Error(passwordCheck.errors.join(', '));
|
|
113
|
-
}
|
|
114
|
-
const normalizedEmail = normalizeEmail(email);
|
|
115
|
-
const db = getDb();
|
|
116
|
-
const existing = db.prepare('SELECT id FROM users WHERE email = ?').get(normalizedEmail);
|
|
117
|
-
if (existing) {
|
|
118
|
-
throw new Error('邮箱已被使用');
|
|
119
|
-
}
|
|
120
|
-
const passwordHash = await hashPassword(password);
|
|
121
|
-
const id = uuidv4();
|
|
122
|
-
db.prepare(`
|
|
123
|
-
INSERT INTO users (id, name, email, password_hash, role, is_first_login)
|
|
124
|
-
VALUES (?, ?, ?, ?, ?, 1)
|
|
125
|
-
`).run(id, name.trim(), normalizedEmail, passwordHash, role);
|
|
126
|
-
return getUserById(id);
|
|
127
|
-
}
|
|
128
103
|
/**
|
|
129
104
|
* 修改密码
|
|
130
105
|
*/
|
|
@@ -145,26 +120,7 @@ export async function changePassword(params) {
|
|
|
145
120
|
}
|
|
146
121
|
const passwordHash = await hashPassword(newPassword);
|
|
147
122
|
db.prepare(`
|
|
148
|
-
UPDATE users SET password_hash = ?,
|
|
149
|
-
`).run(passwordHash, userId);
|
|
150
|
-
return true;
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* 强制修改密码(首次登录)
|
|
154
|
-
*/
|
|
155
|
-
export async function forceChangePassword(userId, newPassword) {
|
|
156
|
-
const db = getDb();
|
|
157
|
-
const user = getUserById(userId);
|
|
158
|
-
if (!user) {
|
|
159
|
-
throw new Error('用户不存在');
|
|
160
|
-
}
|
|
161
|
-
const passwordCheck = validatePasswordStrength(newPassword);
|
|
162
|
-
if (!passwordCheck.valid) {
|
|
163
|
-
throw new Error(passwordCheck.errors.join(', '));
|
|
164
|
-
}
|
|
165
|
-
const passwordHash = await hashPassword(newPassword);
|
|
166
|
-
db.prepare(`
|
|
167
|
-
UPDATE users SET password_hash = ?, is_first_login = 0, updated_at = CURRENT_TIMESTAMP WHERE id = ?
|
|
123
|
+
UPDATE users SET password_hash = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?
|
|
168
124
|
`).run(passwordHash, userId);
|
|
169
125
|
return true;
|
|
170
126
|
}
|
|
@@ -192,66 +148,25 @@ export async function resetPassword(params) {
|
|
|
192
148
|
const { token, newPassword } = params;
|
|
193
149
|
const db = getDb();
|
|
194
150
|
const user = db.prepare(`
|
|
195
|
-
SELECT * FROM users WHERE reset_token = ?
|
|
151
|
+
SELECT * FROM users WHERE reset_token = ?
|
|
196
152
|
`).get(token);
|
|
197
153
|
if (!user) {
|
|
198
154
|
throw new Error('重置令牌无效或已过期');
|
|
199
155
|
}
|
|
156
|
+
// 检查 token 是否过期(使用 JavaScript Date 比较,避免 SQLite 字符串格式差异)
|
|
157
|
+
if (!user.reset_token_expires || new Date(user.reset_token_expires) <= new Date()) {
|
|
158
|
+
throw new Error('重置令牌无效或已过期');
|
|
159
|
+
}
|
|
200
160
|
const passwordCheck = validatePasswordStrength(newPassword);
|
|
201
161
|
if (!passwordCheck.valid) {
|
|
202
162
|
throw new Error(passwordCheck.errors.join(', '));
|
|
203
163
|
}
|
|
204
164
|
const passwordHash = await hashPassword(newPassword);
|
|
205
165
|
db.prepare(`
|
|
206
|
-
UPDATE users SET password_hash = ?, reset_token = NULL, reset_token_expires = NULL,
|
|
166
|
+
UPDATE users SET password_hash = ?, reset_token = NULL, reset_token_expires = NULL, updated_at = CURRENT_TIMESTAMP WHERE id = ?
|
|
207
167
|
`).run(passwordHash, user.id);
|
|
208
168
|
return true;
|
|
209
169
|
}
|
|
210
|
-
/**
|
|
211
|
-
* 清除首次登录标记
|
|
212
|
-
*/
|
|
213
|
-
export function clearFirstLoginFlag(userId) {
|
|
214
|
-
const db = getDb();
|
|
215
|
-
db.prepare('UPDATE users SET is_first_login = 0 WHERE id = ?').run(userId);
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* 创建用户(仅名字,用于旧 API)
|
|
219
|
-
*/
|
|
220
|
-
export function createUserByName(name, role) {
|
|
221
|
-
const db = getDb();
|
|
222
|
-
const id = uuidv4();
|
|
223
|
-
const apiKey = `omt-${uuidv4()}`;
|
|
224
|
-
db.prepare(`
|
|
225
|
-
INSERT INTO users (id, name, api_key, role)
|
|
226
|
-
VALUES (?, ?, ?, ?)
|
|
227
|
-
`).run(id, name.trim(), apiKey, role || 'member');
|
|
228
|
-
return getUserById(id);
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* 更新用户
|
|
232
|
-
*/
|
|
233
|
-
export function updateUser(id, data) {
|
|
234
|
-
const db = getDb();
|
|
235
|
-
const user = getUserById(id);
|
|
236
|
-
if (!user)
|
|
237
|
-
return null;
|
|
238
|
-
const updates = [];
|
|
239
|
-
const values = [];
|
|
240
|
-
if (data.name !== undefined) {
|
|
241
|
-
updates.push('name = ?');
|
|
242
|
-
values.push(data.name.trim());
|
|
243
|
-
}
|
|
244
|
-
if (data.role !== undefined) {
|
|
245
|
-
updates.push('role = ?');
|
|
246
|
-
values.push(data.role);
|
|
247
|
-
}
|
|
248
|
-
if (updates.length === 0)
|
|
249
|
-
return user;
|
|
250
|
-
updates.push('updated_at = CURRENT_TIMESTAMP');
|
|
251
|
-
values.push(id);
|
|
252
|
-
db.prepare(`UPDATE users SET ${updates.join(', ')} WHERE id = ?`).run(...values);
|
|
253
|
-
return getUserById(id);
|
|
254
|
-
}
|
|
255
170
|
/**
|
|
256
171
|
* 删除用户
|
|
257
172
|
*/
|
|
@@ -260,16 +175,4 @@ export function deleteUser(id) {
|
|
|
260
175
|
const result = db.prepare('DELETE FROM users WHERE id = ?').run(id);
|
|
261
176
|
return result.changes > 0;
|
|
262
177
|
}
|
|
263
|
-
/**
|
|
264
|
-
* 重新生成 API Key
|
|
265
|
-
*/
|
|
266
|
-
export function regenerateApiKey(id) {
|
|
267
|
-
const db = getDb();
|
|
268
|
-
const user = getUserById(id);
|
|
269
|
-
if (!user)
|
|
270
|
-
return null;
|
|
271
|
-
const newApiKey = `omt-${uuidv4()}`;
|
|
272
|
-
db.prepare('UPDATE users SET api_key = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?').run(newApiKey, id);
|
|
273
|
-
return getUserById(id);
|
|
274
|
-
}
|
|
275
178
|
//# sourceMappingURL=user.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.service.js","sourceRoot":"","sources":["../../src/services/user.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAyBvE,6BAA6B;AAE7B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAwB;IACvD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAEzC,OAAO;IACP,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,SAAS;IACT,MAAM,aAAa,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IAEnB,YAAY;IACZ,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACzF,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO;IACP,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAElD,OAAO;IACP,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACpB,EAAE,CAAC,OAAO,CAAC;;;GAGV,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"user.service.js","sourceRoot":"","sources":["../../src/services/user.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,29 +38,47 @@ export interface UpdateVersionParams {
|
|
|
38
38
|
/**
|
|
39
39
|
* 获取项目的所有版本(验证归属)
|
|
40
40
|
*/
|
|
41
|
-
export declare function listVersions(projectId: string, userId
|
|
41
|
+
export declare function listVersions(projectId: string, userId: string): Version[];
|
|
42
42
|
/**
|
|
43
43
|
* 根据 ID 获取版本(验证归属)
|
|
44
44
|
*/
|
|
45
|
-
export declare function getVersionById(id: string, userId
|
|
45
|
+
export declare function getVersionById(id: string, userId: string): Version | null;
|
|
46
|
+
/**
|
|
47
|
+
* 内部使用:根据 ID 获取版本(不验证归属,仅供已通过权限校验的内部调用)
|
|
48
|
+
*/
|
|
49
|
+
export declare function getVersionByIdInternal(id: string): Version | null;
|
|
50
|
+
/**
|
|
51
|
+
* 内部使用:更新版本字段(不验证归属)
|
|
52
|
+
*/
|
|
53
|
+
export declare function updateVersionInternal(id: string, params: UpdateVersionParams): Version | null;
|
|
46
54
|
/**
|
|
47
55
|
* 创建版本(验证归属)
|
|
48
56
|
*/
|
|
49
|
-
export declare function createVersion(params: CreateVersionParams, userId
|
|
57
|
+
export declare function createVersion(params: CreateVersionParams, userId: string): Version | null;
|
|
50
58
|
/**
|
|
51
59
|
* 更新版本(验证归属)
|
|
52
60
|
*/
|
|
53
|
-
export declare function updateVersion(id: string, params: UpdateVersionParams, userId
|
|
61
|
+
export declare function updateVersion(id: string, params: UpdateVersionParams, userId: string): Version | null;
|
|
54
62
|
/**
|
|
55
63
|
* 删除版本(验证归属)
|
|
56
64
|
*/
|
|
57
|
-
export declare function deleteVersion(id: string, userId
|
|
65
|
+
export declare function deleteVersion(id: string, userId: string): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* 重新排序版本(验证归属)
|
|
68
|
+
*/
|
|
69
|
+
export declare function reorderVersions(versionIds: string[], userId: string): void;
|
|
70
|
+
/**
|
|
71
|
+
* 开始版本(锁定为活跃状态)
|
|
72
|
+
* 同一项目同一时间只能有一个未归档的活跃版本
|
|
73
|
+
*/
|
|
74
|
+
export declare function startVersion(versionId: string): Version;
|
|
58
75
|
/**
|
|
59
|
-
*
|
|
76
|
+
* 完成版本
|
|
77
|
+
* 所有任务必须完成,空版本不能完成
|
|
60
78
|
*/
|
|
61
|
-
export declare function
|
|
79
|
+
export declare function completeVersion(versionId: string): Version;
|
|
62
80
|
/**
|
|
63
|
-
*
|
|
81
|
+
* 锁定版本(标记规划完成,进入执行阶段)— 内部使用
|
|
64
82
|
*/
|
|
65
83
|
export declare function lockVersion(versionId: string): Version | null;
|
|
66
84
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.service.d.ts","sourceRoot":"","sources":["../../src/services/version.service.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"version.service.d.ts","sourceRoot":"","sources":["../../src/services/version.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,14 +6,12 @@ import { ensureHolidaysLoaded, formatDate, parseDate, addWorkdaysSync } from './
|
|
|
6
6
|
*/
|
|
7
7
|
export function listVersions(projectId, userId) {
|
|
8
8
|
const db = getDb();
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return []; // 无权限时返回空数组
|
|
16
|
-
}
|
|
9
|
+
// 验证项目归属
|
|
10
|
+
const project = db.prepare(`
|
|
11
|
+
SELECT id FROM projects WHERE id = ? AND owner_id = ?
|
|
12
|
+
`).get(projectId, userId);
|
|
13
|
+
if (!project) {
|
|
14
|
+
return []; // 无权限时返回空数组
|
|
17
15
|
}
|
|
18
16
|
return db.prepare('SELECT * FROM versions WHERE project_id = ? ORDER BY sort_order ASC, created_at ASC').all(projectId);
|
|
19
17
|
}
|
|
@@ -22,31 +20,63 @@ export function listVersions(projectId, userId) {
|
|
|
22
20
|
*/
|
|
23
21
|
export function getVersionById(id, userId) {
|
|
24
22
|
const db = getDb();
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
23
|
+
const version = db.prepare(`
|
|
24
|
+
SELECT v.* FROM versions v
|
|
25
|
+
JOIN projects p ON v.project_id = p.id
|
|
26
|
+
WHERE v.id = ? AND p.owner_id = ?
|
|
27
|
+
`).get(id, userId);
|
|
28
|
+
return version || null;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 内部使用:根据 ID 获取版本(不验证归属,仅供已通过权限校验的内部调用)
|
|
32
|
+
*/
|
|
33
|
+
export function getVersionByIdInternal(id) {
|
|
34
|
+
const db = getDb();
|
|
34
35
|
const version = db.prepare('SELECT * FROM versions WHERE id = ?').get(id);
|
|
35
36
|
return version || null;
|
|
36
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* 内部使用:更新版本字段(不验证归属)
|
|
40
|
+
*/
|
|
41
|
+
export function updateVersionInternal(id, params) {
|
|
42
|
+
const db = getDb();
|
|
43
|
+
const version = getVersionByIdInternal(id);
|
|
44
|
+
if (!version)
|
|
45
|
+
return null;
|
|
46
|
+
const now = new Date().toISOString();
|
|
47
|
+
const updates = ['updated_at = ?'];
|
|
48
|
+
const values = [now];
|
|
49
|
+
if (params.name !== undefined) {
|
|
50
|
+
updates.push('name = ?');
|
|
51
|
+
values.push(params.name);
|
|
52
|
+
}
|
|
53
|
+
if (params.description !== undefined) {
|
|
54
|
+
updates.push('description = ?');
|
|
55
|
+
values.push(params.description);
|
|
56
|
+
}
|
|
57
|
+
if (params.start_date !== undefined) {
|
|
58
|
+
updates.push('start_date = ?');
|
|
59
|
+
values.push(params.start_date);
|
|
60
|
+
}
|
|
61
|
+
if (params.due_date !== undefined) {
|
|
62
|
+
updates.push('due_date = ?');
|
|
63
|
+
values.push(params.due_date);
|
|
64
|
+
}
|
|
65
|
+
values.push(id);
|
|
66
|
+
db.prepare(`UPDATE versions SET ${updates.join(', ')} WHERE id = ?`).run(...values);
|
|
67
|
+
return getVersionByIdInternal(id);
|
|
68
|
+
}
|
|
37
69
|
/**
|
|
38
70
|
* 创建版本(验证归属)
|
|
39
71
|
*/
|
|
40
72
|
export function createVersion(params, userId) {
|
|
41
73
|
const db = getDb();
|
|
42
74
|
// 验证项目归属
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return null; // 无权限
|
|
49
|
-
}
|
|
75
|
+
const project = db.prepare(`
|
|
76
|
+
SELECT id FROM projects WHERE id = ? AND owner_id = ?
|
|
77
|
+
`).get(params.project_id, userId);
|
|
78
|
+
if (!project) {
|
|
79
|
+
return null; // 无权限
|
|
50
80
|
}
|
|
51
81
|
const id = uuidv4();
|
|
52
82
|
const now = new Date().toISOString();
|
|
@@ -57,7 +87,7 @@ export function createVersion(params, userId) {
|
|
|
57
87
|
INSERT INTO versions (id, project_id, name, description, start_date, due_date, sort_order, created_at, updated_at)
|
|
58
88
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
59
89
|
`).run(id, params.project_id, params.name, params.description || null, params.start_date || null, params.due_date || null, sortOrder, now, now);
|
|
60
|
-
return getVersionById(id);
|
|
90
|
+
return getVersionById(id, userId);
|
|
61
91
|
}
|
|
62
92
|
/**
|
|
63
93
|
* 更新版本(验证归属)
|
|
@@ -88,7 +118,7 @@ export function updateVersion(id, params, userId) {
|
|
|
88
118
|
}
|
|
89
119
|
values.push(id);
|
|
90
120
|
db.prepare(`UPDATE versions SET ${updates.join(', ')} WHERE id = ?`).run(...values);
|
|
91
|
-
return getVersionById(id);
|
|
121
|
+
return getVersionById(id, userId);
|
|
92
122
|
}
|
|
93
123
|
/**
|
|
94
124
|
* 删除版本(验证归属)
|
|
@@ -96,15 +126,13 @@ export function updateVersion(id, params, userId) {
|
|
|
96
126
|
export function deleteVersion(id, userId) {
|
|
97
127
|
const db = getDb();
|
|
98
128
|
// 验证归属
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
return false; // 无权限
|
|
107
|
-
}
|
|
129
|
+
const version = db.prepare(`
|
|
130
|
+
SELECT v.id FROM versions v
|
|
131
|
+
JOIN projects p ON v.project_id = p.id
|
|
132
|
+
WHERE v.id = ? AND p.owner_id = ?
|
|
133
|
+
`).get(id, userId);
|
|
134
|
+
if (!version) {
|
|
135
|
+
return false;
|
|
108
136
|
}
|
|
109
137
|
// 先将该版本下的任务的 version_id 设为 null
|
|
110
138
|
db.prepare('UPDATE tasks SET version_id = NULL WHERE version_id = ?').run(id);
|
|
@@ -112,34 +140,114 @@ export function deleteVersion(id, userId) {
|
|
|
112
140
|
return result.changes > 0;
|
|
113
141
|
}
|
|
114
142
|
/**
|
|
115
|
-
*
|
|
143
|
+
* 重新排序版本(验证归属)
|
|
116
144
|
*/
|
|
117
|
-
export function reorderVersions(versionIds) {
|
|
145
|
+
export function reorderVersions(versionIds, userId) {
|
|
118
146
|
const db = getDb();
|
|
119
147
|
const now = new Date().toISOString();
|
|
148
|
+
// 校验所有 version 属于当前用户的项目
|
|
149
|
+
for (const versionId of versionIds) {
|
|
150
|
+
const version = db.prepare(`
|
|
151
|
+
SELECT v.id FROM versions v
|
|
152
|
+
JOIN projects p ON v.project_id = p.id
|
|
153
|
+
WHERE v.id = ? AND p.owner_id = ?
|
|
154
|
+
`).get(versionId, userId);
|
|
155
|
+
if (!version) {
|
|
156
|
+
throw new Error('无权操作该版本');
|
|
157
|
+
}
|
|
158
|
+
}
|
|
120
159
|
versionIds.forEach((versionId, index) => {
|
|
121
160
|
db.prepare('UPDATE versions SET sort_order = ?, updated_at = ? WHERE id = ?').run(index, now, versionId);
|
|
122
161
|
});
|
|
123
162
|
}
|
|
124
163
|
/**
|
|
125
|
-
*
|
|
164
|
+
* 开始版本(锁定为活跃状态)
|
|
165
|
+
* 同一项目同一时间只能有一个未归档的活跃版本
|
|
166
|
+
*/
|
|
167
|
+
export function startVersion(versionId) {
|
|
168
|
+
const db = getDb();
|
|
169
|
+
const version = getVersionByIdInternal(versionId);
|
|
170
|
+
if (!version) {
|
|
171
|
+
const err = new Error('版本不存在');
|
|
172
|
+
err.statusCode = 404;
|
|
173
|
+
throw err;
|
|
174
|
+
}
|
|
175
|
+
// 已锁定的版本幂等返回
|
|
176
|
+
if (version.locked_at) {
|
|
177
|
+
return version;
|
|
178
|
+
}
|
|
179
|
+
// 检查同一项目是否已有未归档的活跃版本
|
|
180
|
+
const activeVersion = db.prepare(`
|
|
181
|
+
SELECT id FROM versions
|
|
182
|
+
WHERE project_id = ? AND locked_at IS NOT NULL AND archived_at IS NULL AND id != ?
|
|
183
|
+
`).get(version.project_id, versionId);
|
|
184
|
+
if (activeVersion) {
|
|
185
|
+
const err = new Error('该项目已有活跃版本,请先归档当前活跃版本');
|
|
186
|
+
err.statusCode = 409;
|
|
187
|
+
throw err;
|
|
188
|
+
}
|
|
189
|
+
const now = new Date().toISOString();
|
|
190
|
+
db.prepare('UPDATE versions SET locked_at = ?, updated_at = ? WHERE id = ?')
|
|
191
|
+
.run(now, now, versionId);
|
|
192
|
+
return getVersionByIdInternal(versionId);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* 完成版本
|
|
196
|
+
* 所有任务必须完成,空版本不能完成
|
|
197
|
+
*/
|
|
198
|
+
export function completeVersion(versionId) {
|
|
199
|
+
const db = getDb();
|
|
200
|
+
const version = getVersionByIdInternal(versionId);
|
|
201
|
+
if (!version) {
|
|
202
|
+
const err = new Error('版本不存在');
|
|
203
|
+
err.statusCode = 404;
|
|
204
|
+
throw err;
|
|
205
|
+
}
|
|
206
|
+
if (!version.locked_at) {
|
|
207
|
+
const err = new Error('版本尚未启动,无法完成');
|
|
208
|
+
err.statusCode = 400;
|
|
209
|
+
throw err;
|
|
210
|
+
}
|
|
211
|
+
// 获取版本下所有未删除的任务
|
|
212
|
+
const tasks = db.prepare('SELECT id, status FROM tasks WHERE version_id = ? AND deleted_at IS NULL').all(versionId);
|
|
213
|
+
// 空版本不能完成
|
|
214
|
+
if (tasks.length === 0) {
|
|
215
|
+
const err = new Error('版本下无任务,无法完成');
|
|
216
|
+
err.statusCode = 400;
|
|
217
|
+
throw err;
|
|
218
|
+
}
|
|
219
|
+
// 检查是否所有任务都已完成
|
|
220
|
+
const allDone = tasks.every(t => t.status === 'done');
|
|
221
|
+
if (!allDone) {
|
|
222
|
+
const undone = tasks.filter(t => t.status !== 'done').length;
|
|
223
|
+
const err = new Error(`版本下有 ${undone} 个未完成的任务`);
|
|
224
|
+
err.statusCode = 400;
|
|
225
|
+
throw err;
|
|
226
|
+
}
|
|
227
|
+
const now = new Date().toISOString();
|
|
228
|
+
db.prepare('UPDATE versions SET completed_at = ?, updated_at = ? WHERE id = ?')
|
|
229
|
+
.run(now, now, versionId);
|
|
230
|
+
return getVersionByIdInternal(versionId);
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* 锁定版本(标记规划完成,进入执行阶段)— 内部使用
|
|
126
234
|
*/
|
|
127
235
|
export function lockVersion(versionId) {
|
|
128
236
|
const db = getDb();
|
|
129
|
-
const version =
|
|
237
|
+
const version = getVersionByIdInternal(versionId);
|
|
130
238
|
if (!version || version.locked_at)
|
|
131
239
|
return version;
|
|
132
240
|
const now = new Date().toISOString();
|
|
133
241
|
db.prepare('UPDATE versions SET locked_at = ?, updated_at = ? WHERE id = ?')
|
|
134
242
|
.run(now, now, versionId);
|
|
135
|
-
return
|
|
243
|
+
return getVersionByIdInternal(versionId);
|
|
136
244
|
}
|
|
137
245
|
/**
|
|
138
246
|
* 获取版本统计信息(异步版本,基于工时计算实际预期日期)
|
|
139
247
|
*/
|
|
140
248
|
export async function getVersionStats(versionId) {
|
|
141
249
|
const db = getDb();
|
|
142
|
-
const version =
|
|
250
|
+
const version = getVersionByIdInternal(versionId);
|
|
143
251
|
if (!version)
|
|
144
252
|
return null;
|
|
145
253
|
// 递归获取所有任务(含子任务)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.service.js","sourceRoot":"","sources":["../../src/services/version.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"version.service.js","sourceRoot":"","sources":["../../src/services/version.service.ts"],"names":[],"mappings":"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"}
|