personalac 1.3.0 → 1.4.0

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.
Files changed (90) hide show
  1. package/bin/personalac.js +121 -1
  2. package/dist/agent/index.d.ts +12 -0
  3. package/dist/agent/index.d.ts.map +1 -1
  4. package/dist/agent/index.js +98 -0
  5. package/dist/agent/index.js.map +1 -1
  6. package/dist/database/index.d.ts.map +1 -1
  7. package/dist/database/index.js +38 -0
  8. package/dist/database/index.js.map +1 -1
  9. package/dist/index.js +3 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/routes/agent.routes.d.ts.map +1 -1
  12. package/dist/routes/agent.routes.js +23 -0
  13. package/dist/routes/agent.routes.js.map +1 -1
  14. package/dist/routes/auth.routes.d.ts.map +1 -1
  15. package/dist/routes/auth.routes.js +42 -8
  16. package/dist/routes/auth.routes.js.map +1 -1
  17. package/dist/routes/todo.routes.d.ts +3 -0
  18. package/dist/routes/todo.routes.d.ts.map +1 -0
  19. package/dist/routes/todo.routes.js +47 -0
  20. package/dist/routes/todo.routes.js.map +1 -0
  21. package/dist/services/auth.service.d.ts +13 -0
  22. package/dist/services/auth.service.d.ts.map +1 -1
  23. package/dist/services/auth.service.js +98 -31
  24. package/dist/services/auth.service.js.map +1 -1
  25. package/dist/services/thought.service.d.ts +21 -0
  26. package/dist/services/thought.service.d.ts.map +1 -0
  27. package/dist/services/thought.service.js +27 -0
  28. package/dist/services/thought.service.js.map +1 -0
  29. package/dist/services/todo.service.d.ts +42 -0
  30. package/dist/services/todo.service.d.ts.map +1 -0
  31. package/dist/services/todo.service.js +114 -0
  32. package/dist/services/todo.service.js.map +1 -0
  33. package/dist/tools/chat-tools.js +104 -0
  34. package/dist/tools/chat-tools.js.map +1 -1
  35. package/package.json +1 -1
  36. package/public/assets/{_baseUniq-DiHtXYsr.js → _baseUniq-CxJoAIZr.js} +1 -1
  37. package/public/assets/{arc-Bv1zbXf7.js → arc-D03kFPEj.js} +1 -1
  38. package/public/assets/{architectureDiagram-Q4EWVU46-EbiUvXBr.js → architectureDiagram-Q4EWVU46-D8O9LVoU.js} +1 -1
  39. package/public/assets/{blockDiagram-DXYQGD6D-B-4wwQNT.js → blockDiagram-DXYQGD6D-M7jlK4Ii.js} +1 -1
  40. package/public/assets/{c4Diagram-AHTNJAMY-brLyKMPJ.js → c4Diagram-AHTNJAMY-g4ZpKJxM.js} +1 -1
  41. package/public/assets/channel-DAJYqcDB.js +1 -0
  42. package/public/assets/{chunk-4BX2VUAB-DMh-4Nye.js → chunk-4BX2VUAB-DbYNB5w3.js} +1 -1
  43. package/public/assets/{chunk-4TB4RGXK-CSr1z2CQ.js → chunk-4TB4RGXK-oDruTxtV.js} +1 -1
  44. package/public/assets/{chunk-55IACEB6-xN0xmcvD.js → chunk-55IACEB6-86o123sF.js} +1 -1
  45. package/public/assets/{chunk-EDXVE4YY-CkCM3j5E.js → chunk-EDXVE4YY-CwGCC2ua.js} +1 -1
  46. package/public/assets/{chunk-FMBD7UC4-B-mDgsjM.js → chunk-FMBD7UC4-CFvrNuR2.js} +1 -1
  47. package/public/assets/{chunk-OYMX7WX6-DK8dg9K4.js → chunk-OYMX7WX6-DA1Codj2.js} +1 -1
  48. package/public/assets/{chunk-QZHKN3VN-BZGbFOdK.js → chunk-QZHKN3VN-C1i2zxsK.js} +1 -1
  49. package/public/assets/{chunk-YZCP3GAM-BTmFmMer.js → chunk-YZCP3GAM-B8WdIQrJ.js} +1 -1
  50. package/public/assets/classDiagram-6PBFFD2Q-CZOcMbPI.js +1 -0
  51. package/public/assets/classDiagram-v2-HSJHXN6E-CZOcMbPI.js +1 -0
  52. package/public/assets/clone-DEBaCCnF.js +1 -0
  53. package/public/assets/{cose-bilkent-S5V4N54A-BBqCwo63.js → cose-bilkent-S5V4N54A-0QSxqQ61.js} +1 -1
  54. package/public/assets/{dagre-KV5264BT-DLeQYvAA.js → dagre-KV5264BT-rbP39_-d.js} +1 -1
  55. package/public/assets/{diagram-5BDNPKRD-D85z2LaM.js → diagram-5BDNPKRD-BggmJ2I6.js} +1 -1
  56. package/public/assets/{diagram-G4DWMVQ6-4AvBmvcP.js → diagram-G4DWMVQ6-Cjwh0FM-.js} +1 -1
  57. package/public/assets/{diagram-MMDJMWI5-DRNEGNZA.js → diagram-MMDJMWI5-q1GbH15W.js} +1 -1
  58. package/public/assets/{diagram-TYMM5635-C_oGwrmX.js → diagram-TYMM5635-6A9FJpM-.js} +1 -1
  59. package/public/assets/{erDiagram-SMLLAGMA-DDSp8ANa.js → erDiagram-SMLLAGMA-DWSuOvWg.js} +1 -1
  60. package/public/assets/{flowDiagram-DWJPFMVM-B1Wy36da.js → flowDiagram-DWJPFMVM-Hff-KBUO.js} +1 -1
  61. package/public/assets/{ganttDiagram-T4ZO3ILL-CQ7VWheo.js → ganttDiagram-T4ZO3ILL-C9k5gCfU.js} +1 -1
  62. package/public/assets/{gitGraphDiagram-UUTBAWPF-BhvM7s41.js → gitGraphDiagram-UUTBAWPF-BhqYXwS7.js} +1 -1
  63. package/public/assets/{graph-fatjTp1h.js → graph-C7a2hUqm.js} +1 -1
  64. package/public/assets/{index-1PrEnCZL.js → index-CsxZVYhp.js} +142 -136
  65. package/public/assets/{infoDiagram-42DDH7IO-4eawOC2G.js → infoDiagram-42DDH7IO-DDI5BYIr.js} +1 -1
  66. package/public/assets/{ishikawaDiagram-UXIWVN3A-CJWfG1fv.js → ishikawaDiagram-UXIWVN3A-_Mnmr5OA.js} +1 -1
  67. package/public/assets/{journeyDiagram-VCZTEJTY-C4Zx3dpF.js → journeyDiagram-VCZTEJTY-98C13tbb.js} +1 -1
  68. package/public/assets/{kanban-definition-6JOO6SKY-CV1vDcC8.js → kanban-definition-6JOO6SKY-B3awXMLK.js} +1 -1
  69. package/public/assets/{layout-CX0IDv3q.js → layout-DWhB-T0_.js} +1 -1
  70. package/public/assets/{linear-C8hMcu9f.js → linear-Xw1LH5UE.js} +1 -1
  71. package/public/assets/{min-BaxMGW9J.js → min-BG4Jxhtf.js} +1 -1
  72. package/public/assets/{mindmap-definition-QFDTVHPH-KzGyX4Em.js → mindmap-definition-QFDTVHPH-DLxLgDPT.js} +1 -1
  73. package/public/assets/{pieDiagram-DEJITSTG-Dp2x5kvP.js → pieDiagram-DEJITSTG-SHIFmwnS.js} +1 -1
  74. package/public/assets/{quadrantDiagram-34T5L4WZ-B4yqA6XF.js → quadrantDiagram-34T5L4WZ-gctdULxZ.js} +1 -1
  75. package/public/assets/{requirementDiagram-MS252O5E-DEjN_2tG.js → requirementDiagram-MS252O5E-DFCApjP0.js} +1 -1
  76. package/public/assets/{sankeyDiagram-XADWPNL6-BKm_F5FA.js → sankeyDiagram-XADWPNL6-BL8TGUak.js} +1 -1
  77. package/public/assets/{sequenceDiagram-FGHM5R23-07BCMKjW.js → sequenceDiagram-FGHM5R23-CZILwicH.js} +1 -1
  78. package/public/assets/{stateDiagram-FHFEXIEX-DVz6GtR8.js → stateDiagram-FHFEXIEX-BOStf_Ty.js} +1 -1
  79. package/public/assets/stateDiagram-v2-QKLJ7IA2-DZSAFrqF.js +1 -0
  80. package/public/assets/{timeline-definition-GMOUNBTQ-C0u67FqY.js → timeline-definition-GMOUNBTQ-Cb0Br_fq.js} +1 -1
  81. package/public/assets/{vennDiagram-DHZGUBPP-BiAlMVLe.js → vennDiagram-DHZGUBPP-DGRixgke.js} +1 -1
  82. package/public/assets/{wardley-RL74JXVD-BnWyuHzf.js → wardley-RL74JXVD-KUMOIwFG.js} +1 -1
  83. package/public/assets/{wardleyDiagram-NUSXRM2D-DEL2Lx6S.js → wardleyDiagram-NUSXRM2D-ClcBhA3r.js} +1 -1
  84. package/public/assets/{xychartDiagram-5P7HB3ND-ILdmj7ok.js → xychartDiagram-5P7HB3ND-3Gclsnnc.js} +1 -1
  85. package/public/index.html +1 -1
  86. package/public/assets/channel-Me4d6Y1x.js +0 -1
  87. package/public/assets/classDiagram-6PBFFD2Q-BXgAb5m4.js +0 -1
  88. package/public/assets/classDiagram-v2-HSJHXN6E-BXgAb5m4.js +0 -1
  89. package/public/assets/clone-rnECnpTI.js +0 -1
  90. package/public/assets/stateDiagram-v2-QKLJ7IA2-DYiYr0PB.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"agent.routes.js","sourceRoot":"","sources":["../../src/routes/agent.routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.routes.js","sourceRoot":"","sources":["../../src/routes/agent.routes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.routes.d.ts","sourceRoot":"","sources":["../../src/routes/auth.routes.ts"],"names":[],"mappings":"AASA,QAAA,MAAM,MAAM,4CAAW,CAAA;AA2DvB,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"auth.routes.d.ts","sourceRoot":"","sources":["../../src/routes/auth.routes.ts"],"names":[],"mappings":"AAUA,QAAA,MAAM,MAAM,4CAAW,CAAA;AA2FvB,eAAe,MAAM,CAAA"}
@@ -6,7 +6,9 @@ const auth_service_1 = require("../services/auth.service");
6
6
  const auth_middleware_1 = require("../middleware/auth.middleware");
7
7
  const database_1 = require("../database");
8
8
  const router = (0, express_1.Router)();
9
- // POST /api/auth/login
9
+ // ── Token 登录(首次 / 恢复)────────────────────────────────────────
10
+ // POST /api/auth/login { syncToken }
11
+ // 返回 needsSetup=true 时,前端跳转设置用户名+密码页
10
12
  router.post('/login', (req, res) => {
11
13
  const { syncToken } = req.body;
12
14
  if (!syncToken?.trim()) {
@@ -15,12 +17,47 @@ router.post('/login', (req, res) => {
15
17
  }
16
18
  res.json((0, auth_service_1.loginByToken)(syncToken.trim()));
17
19
  });
20
+ // ── 密码登录(常规)──────────────────────────────────────────────────
21
+ // POST /api/auth/login/password { username, password }
22
+ router.post('/login/password', (req, res) => {
23
+ const { username, password } = req.body;
24
+ if (!username?.trim() || !password) {
25
+ res.status(400).json({ success: false, error: '请输入用户名和密码' });
26
+ return;
27
+ }
28
+ res.json((0, auth_service_1.loginWithPassword)(username, password));
29
+ });
30
+ // ── 首次登录后设置用户名+密码 ────────────────────────────────────────
31
+ // POST /api/auth/setup-account { username, password }
32
+ // 必须携带有效 x-sync-token(即 token 登录后拿到的那个)
33
+ router.post('/setup-account', auth_middleware_1.requireAuth, (req, res) => {
34
+ const { username, password } = req.body;
35
+ if (!username?.trim() || !password) {
36
+ res.status(400).json({ success: false, error: '用户名和密码均不能为空' });
37
+ return;
38
+ }
39
+ const result = (0, auth_service_1.setupAccountPassword)(req.userId, username, password);
40
+ res.json(result);
41
+ });
42
+ // ── 修改密码(已登录后)──────────────────────────────────────────────
43
+ // POST /api/auth/change-password { oldPassword, newPassword }
44
+ router.post('/change-password', auth_middleware_1.requireAuth, (req, res) => {
45
+ const { oldPassword, newPassword } = req.body;
46
+ if (!newPassword) {
47
+ res.status(400).json({ success: false, error: '请填写新密码' });
48
+ return;
49
+ }
50
+ const result = (0, auth_service_1.changePassword)(req.userId, oldPassword ?? '', newPassword);
51
+ res.json(result);
52
+ });
53
+ // ── 当前用户信息 ──────────────────────────────────────────────────────
18
54
  // GET /api/auth/me
19
55
  router.get('/me', auth_middleware_1.requireAuth, (req, res) => {
20
56
  const user = (0, auth_service_1.getUserBySyncToken)(req.headers['x-sync-token'] || '');
21
57
  res.json({ success: true, data: user });
22
58
  });
23
- // POST /api/auth/setup — 监护人初始配置(设置名字)
59
+ // ── 监护人初始配置(设置称呼)────────────────────────────────────────
60
+ // POST /api/auth/setup
24
61
  router.post('/setup', auth_middleware_1.requireAuth, (req, res) => {
25
62
  const { guardianName } = req.body;
26
63
  if (!guardianName?.trim()) {
@@ -30,12 +67,10 @@ router.post('/setup', auth_middleware_1.requireAuth, (req, res) => {
30
67
  (0, auth_service_1.setupGuardian)(req.userId, guardianName);
31
68
  res.json({ success: true });
32
69
  });
33
- // GET /api/auth/students — 列出名下学生
70
+ // ── 学生管理 ────────────────────────────────────────────────────────
34
71
  router.get('/students', auth_middleware_1.requireAuth, (req, res) => {
35
- const students = (0, auth_service_1.listStudents)(req.userId);
36
- res.json({ success: true, data: students });
72
+ res.json({ success: true, data: (0, auth_service_1.listStudents)(req.userId) });
37
73
  });
38
- // POST /api/auth/students — 创建学生账户
39
74
  router.post('/students', auth_middleware_1.requireAuth, (req, res) => {
40
75
  const { name, grade, subjects } = req.body;
41
76
  if (!name?.trim()) {
@@ -53,12 +88,11 @@ router.post('/students', auth_middleware_1.requireAuth, (req, res) => {
53
88
  }
54
89
  res.json({ success: true, data: student });
55
90
  });
56
- // DELETE /api/auth/students/:id
57
91
  router.delete('/students/:id', auth_middleware_1.requireAuth, (req, res) => {
58
92
  const ok = (0, auth_service_1.deleteStudent)(req.params.id, req.userId);
59
93
  res.json({ success: ok, error: ok ? undefined : '操作失败或无权限' });
60
94
  });
61
- // POST /api/auth/reset-token
95
+ // ── Token 管理 ──────────────────────────────────────────────────────
62
96
  router.post('/reset-token', auth_middleware_1.requireAuth, (req, res) => {
63
97
  res.json((0, auth_service_1.resetSyncToken)(req.userId));
64
98
  });
@@ -1 +1 @@
1
- {"version":3,"file":"auth.routes.js","sourceRoot":"","sources":["../../src/routes/auth.routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.routes.js","sourceRoot":"","sources":["../../src/routes/auth.routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const router: import("express-serve-static-core").Router;
2
+ export default router;
3
+ //# sourceMappingURL=todo.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo.routes.d.ts","sourceRoot":"","sources":["../../src/routes/todo.routes.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,MAAM,4CAAW,CAAA;AA0CvB,eAAe,MAAM,CAAA"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const express_1 = require("express");
4
+ const auth_middleware_1 = require("../middleware/auth.middleware");
5
+ const todo_service_1 = require("../services/todo.service");
6
+ const router = (0, express_1.Router)();
7
+ // GET /api/todo/:studentId
8
+ router.get('/:studentId', auth_middleware_1.requireAuth, (req, res) => {
9
+ const { studentId } = req.params;
10
+ const { status, priority, limit, offset } = req.query;
11
+ const todos = (0, todo_service_1.listTodos)(studentId, {
12
+ status: status,
13
+ priority: priority,
14
+ limit: limit ? parseInt(limit) : undefined,
15
+ offset: offset ? parseInt(offset) : undefined
16
+ });
17
+ const overdue = (0, todo_service_1.getOverdueTodos)(studentId);
18
+ res.json({ todos, overdueCount: overdue.length });
19
+ });
20
+ // POST /api/todo
21
+ router.post('/', auth_middleware_1.requireAuth, (req, res) => {
22
+ const { student_id, title, content, priority, due_date, recurrence, related_kp_id } = req.body;
23
+ if (!student_id || !title) {
24
+ res.status(400).json({ error: 'student_id and title are required' });
25
+ return;
26
+ }
27
+ const todo = (0, todo_service_1.createTodo)({ student_id, title, content, priority, due_date, recurrence, related_kp_id, agent_created: false });
28
+ res.json(todo);
29
+ });
30
+ // PATCH /api/todo/:id
31
+ router.patch('/:id', auth_middleware_1.requireAuth, (req, res) => {
32
+ const { id } = req.params;
33
+ const patch = req.body;
34
+ const updated = (0, todo_service_1.updateTodo)(id, patch);
35
+ if (!updated) {
36
+ res.status(404).json({ error: 'Todo not found' });
37
+ return;
38
+ }
39
+ res.json(updated);
40
+ });
41
+ // DELETE /api/todo/:id
42
+ router.delete('/:id', auth_middleware_1.requireAuth, (req, res) => {
43
+ (0, todo_service_1.deleteTodo)(req.params.id);
44
+ res.json({ ok: true });
45
+ });
46
+ exports.default = router;
47
+ //# sourceMappingURL=todo.routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo.routes.js","sourceRoot":"","sources":["../../src/routes/todo.routes.ts"],"names":[],"mappings":";;AAAA,qCAAmD;AACnD,mEAA2D;AAC3D,2DAEiC;AAEjC,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAA;AAEvB,2BAA2B;AAC3B,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,6BAAW,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACrE,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAA;IAChC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAA;IACrD,MAAM,KAAK,GAAG,IAAA,wBAAS,EAAC,SAAS,EAAE;QACjC,MAAM,EAAE,MAAa;QACrB,QAAQ,EAAE,QAAe;QACzB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,SAAS;QACpD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;KACxD,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,IAAA,8BAAe,EAAC,SAAS,CAAC,CAAA;IAC1C,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AACnD,CAAC,CAAC,CAAA;AAEF,iBAAiB;AACjB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,6BAAW,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IAC5D,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;IAC9F,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAA;QACpE,OAAM;IACR,CAAC;IACD,MAAM,IAAI,GAAG,IAAA,yBAAU,EAAC,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAA;IAC5H,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAChB,CAAC,CAAC,CAAA;AAEF,sBAAsB;AACtB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,6BAAW,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IAChE,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAA;IACzB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAA;IACtB,MAAM,OAAO,GAAG,IAAA,yBAAU,EAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAC3E,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACnB,CAAC,CAAC,CAAA;AAEF,uBAAuB;AACvB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,6BAAW,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACjE,IAAA,yBAAU,EAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACzB,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;AACxB,CAAC,CAAC,CAAA;AAEF,kBAAe,MAAM,CAAA"}
@@ -1,27 +1,40 @@
1
1
  export interface UserInfo {
2
2
  id: string;
3
+ username: string;
3
4
  displayName: string | null;
4
5
  role: string;
5
6
  studentName: string | null;
6
7
  studentGrade: string | null;
7
8
  guardianId: string | null;
9
+ hasSetPassword: boolean;
8
10
  }
9
11
  export interface StudentRecord {
10
12
  id: string;
11
13
  name: string;
12
14
  grade: string | null;
13
15
  token: string;
16
+ hasSetPassword: boolean;
14
17
  }
15
18
  export interface LoginResult {
16
19
  success: boolean;
17
20
  user?: UserInfo;
18
21
  syncToken?: string;
22
+ needsSetup?: boolean;
19
23
  error?: string;
20
24
  }
21
25
  export declare function ensureAdminAccount(): {
22
26
  syncToken: string;
23
27
  };
24
28
  export declare function loginByToken(syncToken: string): LoginResult;
29
+ export declare function loginWithPassword(username: string, password: string): LoginResult;
30
+ export declare function setupAccountPassword(userId: string, username: string, password: string): {
31
+ success: boolean;
32
+ error?: string;
33
+ };
34
+ export declare function changePassword(userId: string, oldPassword: string, newPassword: string): {
35
+ success: boolean;
36
+ error?: string;
37
+ };
25
38
  export declare function getUserBySyncToken(syncToken: string): UserInfo | null;
26
39
  export declare function setupGuardian(userId: string, guardianName: string): void;
27
40
  export declare function createStudent(guardianId: string, name: string, grade?: string): StudentRecord;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,kBAAkB,IAAI;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAiB1D;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAuB3D;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAkBrE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAIxE;AAGD,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAU7F;AAGD,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,EAAE,CAOhE;AAGD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAM5E;AAGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAO1D;AAGD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMrE"}
1
+ {"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAmBD,wBAAgB,kBAAkB,IAAI;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAiB1D;AAGD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAsB3D;AAGD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CA4BjF;AAGD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAgB7H;AAGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAW7H;AAID,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAQrE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAIxE;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAW7F;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,EAAE,CAYhE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAM5E;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAO1D;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMrE"}
@@ -1,7 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.ensureAdminAccount = ensureAdminAccount;
4
7
  exports.loginByToken = loginByToken;
8
+ exports.loginWithPassword = loginWithPassword;
9
+ exports.setupAccountPassword = setupAccountPassword;
10
+ exports.changePassword = changePassword;
5
11
  exports.getUserBySyncToken = getUserBySyncToken;
6
12
  exports.setupGuardian = setupGuardian;
7
13
  exports.createStudent = createStudent;
@@ -10,7 +16,20 @@ exports.deleteStudent = deleteStudent;
10
16
  exports.resetSyncToken = resetSyncToken;
11
17
  exports.getPrimaryStudentId = getPrimaryStudentId;
12
18
  const uuid_1 = require("uuid");
19
+ const bcryptjs_1 = __importDefault(require("bcryptjs"));
13
20
  const database_1 = require("../database");
21
+ function rowToUserInfo(row) {
22
+ return {
23
+ id: row.id,
24
+ username: row.username,
25
+ displayName: row.display_name ?? null,
26
+ role: row.role ?? 'guardian',
27
+ studentName: row.student_name ?? null,
28
+ studentGrade: row.student_grade ?? null,
29
+ guardianId: row.guardian_id ?? null,
30
+ hasSetPassword: (row.has_set_password ?? 0) === 1
31
+ };
32
+ }
14
33
  function ensureAdminAccount() {
15
34
  const db = (0, database_1.getDB)();
16
35
  const existing = db
@@ -21,77 +40,126 @@ function ensureAdminAccount() {
21
40
  const syncToken = (0, uuid_1.v4)();
22
41
  const now = Date.now();
23
42
  db.prepare(`
24
- INSERT INTO User (id, username, sync_token, role, create_time, update_time, delete_flag)
25
- VALUES (?, 'admin', ?, 'guardian', ?, ?, 0)
43
+ INSERT INTO User (id, username, sync_token, role, has_set_password, create_time, update_time, delete_flag)
44
+ VALUES (?, 'admin', ?, 'guardian', 0, ?, ?, 0)
26
45
  `).run((0, uuid_1.v4)(), syncToken, now, now);
27
46
  console.log('[Auth] Created admin account');
28
47
  return { syncToken };
29
48
  }
49
+ // ── Token 登录(首次 / 恢复用)────────────────────────────────────────
30
50
  function loginByToken(syncToken) {
31
51
  const db = (0, database_1.getDB)();
32
52
  const user = db
33
- .prepare('SELECT id, display_name, role, student_name, student_grade, guardian_id FROM User WHERE sync_token = ? AND delete_flag = 0')
53
+ .prepare(`SELECT id, username, display_name, role, student_name, student_grade, guardian_id,
54
+ has_set_password, sync_token
55
+ FROM User WHERE sync_token = ? AND delete_flag = 0`)
34
56
  .get(syncToken);
35
57
  if (!user)
36
- return { success: false, error: '访问码错误' };
58
+ return { success: false, error: '访问码错误,请确认后重试' };
59
+ const needsSetup = (user.has_set_password ?? 0) === 0;
37
60
  return {
38
61
  success: true,
39
62
  syncToken,
40
- user: {
41
- id: user.id,
42
- displayName: user.display_name ?? null,
43
- role: user.role ?? 'guardian',
44
- studentName: user.student_name ?? null,
45
- studentGrade: user.student_grade ?? null,
46
- guardianId: user.guardian_id ?? null
47
- }
63
+ needsSetup,
64
+ user: rowToUserInfo(user)
65
+ };
66
+ }
67
+ // ── 密码登录(常规)───────────────────────────────────────────────────
68
+ function loginWithPassword(username, password) {
69
+ const db = (0, database_1.getDB)();
70
+ const user = db
71
+ .prepare(`SELECT id, username, display_name, role, student_name, student_grade, guardian_id,
72
+ has_set_password, sync_token, password_hash
73
+ FROM User WHERE username = ? AND delete_flag = 0`)
74
+ .get(username.trim());
75
+ if (!user)
76
+ return { success: false, error: '用户名或密码错误' };
77
+ if (!user.password_hash) {
78
+ return { success: false, error: '该账号尚未设置密码,请先用访问码登录并完成设置' };
79
+ }
80
+ if (!bcryptjs_1.default.compareSync(password, user.password_hash)) {
81
+ return { success: false, error: '用户名或密码错误' };
82
+ }
83
+ return {
84
+ success: true,
85
+ syncToken: user.sync_token,
86
+ needsSetup: false,
87
+ user: rowToUserInfo(user)
48
88
  };
49
89
  }
90
+ // ── 首次登录后设置用户名+密码 ─────────────────────────────────────────
91
+ function setupAccountPassword(userId, username, password) {
92
+ const db = (0, database_1.getDB)();
93
+ if (!username.trim())
94
+ return { success: false, error: '用户名不能为空' };
95
+ if (password.length < 6)
96
+ return { success: false, error: '密码至少 6 位' };
97
+ const conflict = db
98
+ .prepare('SELECT id FROM User WHERE username = ? AND id != ? AND delete_flag = 0')
99
+ .get(username.trim(), userId);
100
+ if (conflict)
101
+ return { success: false, error: '该用户名已被使用,请换一个' };
102
+ const hash = bcryptjs_1.default.hashSync(password, 10);
103
+ db.prepare('UPDATE User SET username = ?, password_hash = ?, has_set_password = 1, update_time = ? WHERE id = ?')
104
+ .run(username.trim(), hash, Date.now(), userId);
105
+ return { success: true };
106
+ }
107
+ // ── 修改密码(登录后)────────────────────────────────────────────────
108
+ function changePassword(userId, oldPassword, newPassword) {
109
+ const db = (0, database_1.getDB)();
110
+ const user = db.prepare('SELECT password_hash FROM User WHERE id = ? AND delete_flag = 0').get(userId);
111
+ if (!user)
112
+ return { success: false, error: '用户不存在' };
113
+ if (user.password_hash && !bcryptjs_1.default.compareSync(oldPassword, user.password_hash)) {
114
+ return { success: false, error: '原密码错误' };
115
+ }
116
+ if (newPassword.length < 6)
117
+ return { success: false, error: '新密码至少 6 位' };
118
+ db.prepare('UPDATE User SET password_hash = ?, update_time = ? WHERE id = ?')
119
+ .run(bcryptjs_1.default.hashSync(newPassword, 10), Date.now(), userId);
120
+ return { success: true };
121
+ }
122
+ // ── 其余原有函数(保持不变)──────────────────────────────────────────
50
123
  function getUserBySyncToken(syncToken) {
51
124
  const db = (0, database_1.getDB)();
52
125
  const user = db
53
- .prepare('SELECT id, display_name, role, student_name, student_grade, guardian_id FROM User WHERE sync_token = ? AND delete_flag = 0')
126
+ .prepare(`SELECT id, username, display_name, role, student_name, student_grade, guardian_id, has_set_password
127
+ FROM User WHERE sync_token = ? AND delete_flag = 0`)
54
128
  .get(syncToken);
55
129
  if (!user)
56
130
  return null;
57
- return {
58
- id: user.id,
59
- displayName: user.display_name ?? null,
60
- role: user.role ?? 'guardian',
61
- studentName: user.student_name ?? null,
62
- studentGrade: user.student_grade ?? null,
63
- guardianId: user.guardian_id ?? null
64
- };
131
+ return rowToUserInfo(user);
65
132
  }
66
133
  function setupGuardian(userId, guardianName) {
67
134
  const db = (0, database_1.getDB)();
68
135
  db.prepare('UPDATE User SET display_name = ?, update_time = ? WHERE id = ?')
69
136
  .run(guardianName.trim(), Date.now(), userId);
70
137
  }
71
- // 创建学生账户,绑定到监护人
72
138
  function createStudent(guardianId, name, grade) {
73
139
  const db = (0, database_1.getDB)();
74
140
  const id = (0, uuid_1.v4)();
75
141
  const token = (0, uuid_1.v4)();
76
142
  const now = Date.now();
77
143
  db.prepare(`
78
- INSERT INTO User (id, username, sync_token, display_name, role, guardian_id, student_grade, create_time, update_time, delete_flag)
79
- VALUES (?, ?, ?, ?, 'student', ?, ?, ?, ?, 0)
144
+ INSERT INTO User (id, username, sync_token, display_name, role, guardian_id, student_grade,
145
+ has_set_password, create_time, update_time, delete_flag)
146
+ VALUES (?, ?, ?, ?, 'student', ?, ?, 0, ?, ?, 0)
80
147
  `).run(id, `student_${id.slice(0, 8)}`, token, name.trim(), guardianId, grade ?? null, now, now);
81
- return { id, name: name.trim(), grade: grade ?? null, token };
148
+ return { id, name: name.trim(), grade: grade ?? null, token, hasSetPassword: false };
82
149
  }
83
- // 列出监护人名下所有学生
84
150
  function listStudents(guardianId) {
85
151
  const db = (0, database_1.getDB)();
86
- return db.prepare('SELECT id, display_name, student_grade, sync_token FROM User WHERE guardian_id = ? AND role = ? AND delete_flag = 0 ORDER BY create_time ASC').all(guardianId, 'student').map(r => ({ id: r.id, name: r.display_name, grade: r.student_grade, token: r.sync_token }));
152
+ return db.prepare(`SELECT id, display_name, student_grade, sync_token, has_set_password
153
+ FROM User WHERE guardian_id = ? AND role = 'student' AND delete_flag = 0 ORDER BY create_time ASC`).all(guardianId).map(r => ({
154
+ id: r.id, name: r.display_name, grade: r.student_grade,
155
+ token: r.sync_token, hasSetPassword: (r.has_set_password ?? 0) === 1
156
+ }));
87
157
  }
88
- // 删除(软删)学生账户
89
158
  function deleteStudent(studentId, guardianId) {
90
159
  const db = (0, database_1.getDB)();
91
160
  const result = db.prepare('UPDATE User SET delete_flag = 1, update_time = ? WHERE id = ? AND guardian_id = ?').run(Date.now(), studentId, guardianId);
92
161
  return result.changes > 0;
93
162
  }
94
- // 重置 syncToken
95
163
  function resetSyncToken(userId) {
96
164
  const db = (0, database_1.getDB)();
97
165
  const user = db.prepare('SELECT id FROM User WHERE id = ? AND delete_flag = 0').get(userId);
@@ -101,10 +169,9 @@ function resetSyncToken(userId) {
101
169
  db.prepare('UPDATE User SET sync_token = ?, update_time = ? WHERE id = ?').run(newToken, Date.now(), user.id);
102
170
  return { success: true, syncToken: newToken };
103
171
  }
104
- // 获取监护人名下第一个学生的 ID(工具调用时用)
105
172
  function getPrimaryStudentId(guardianId) {
106
173
  const db = (0, database_1.getDB)();
107
- const row = db.prepare('SELECT id FROM User WHERE guardian_id = ? AND role = ? AND delete_flag = 0 ORDER BY create_time ASC LIMIT 1').get(guardianId, 'student');
174
+ const row = db.prepare(`SELECT id FROM User WHERE guardian_id = ? AND role = 'student' AND delete_flag = 0 ORDER BY create_time ASC LIMIT 1`).get(guardianId);
108
175
  return row?.id ?? null;
109
176
  }
110
177
  //# sourceMappingURL=auth.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export interface AgentThought {
2
+ id: string;
3
+ student_id: string;
4
+ triggered_by: string;
5
+ summary: string;
6
+ actions_taken: string | null;
7
+ next_focus: string | null;
8
+ urgency: string;
9
+ created_at: number;
10
+ }
11
+ export declare function recordThought(params: {
12
+ student_id: string;
13
+ triggered_by: string;
14
+ summary: string;
15
+ actions_taken?: string[];
16
+ next_focus?: string;
17
+ urgency?: string;
18
+ }): AgentThought;
19
+ export declare function getLastThought(studentId: string): AgentThought | null;
20
+ export declare function listThoughts(studentId: string, limit?: number): AgentThought[];
21
+ //# sourceMappingURL=thought.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thought.service.d.ts","sourceRoot":"","sources":["../../src/services/thought.service.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,GAAG,YAAY,CAkBf;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAMrE;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,YAAY,EAAE,CAK1E"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.recordThought = recordThought;
4
+ exports.getLastThought = getLastThought;
5
+ exports.listThoughts = listThoughts;
6
+ const uuid_1 = require("uuid");
7
+ const database_1 = require("../database");
8
+ function recordThought(params) {
9
+ const db = (0, database_1.getDB)();
10
+ const id = (0, uuid_1.v4)();
11
+ const now = Date.now();
12
+ db.prepare(`
13
+ INSERT INTO AgentThought (id, student_id, triggered_by, summary, actions_taken, next_focus, urgency, created_at)
14
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
15
+ `).run(id, params.student_id, params.triggered_by, params.summary, params.actions_taken ? JSON.stringify(params.actions_taken) : null, params.next_focus ?? null, params.urgency ?? 'normal', now);
16
+ return db.prepare(`SELECT * FROM AgentThought WHERE id=?`).get(id);
17
+ }
18
+ function getLastThought(studentId) {
19
+ const db = (0, database_1.getDB)();
20
+ const row = db.prepare(`SELECT * FROM AgentThought WHERE student_id=? ORDER BY created_at DESC LIMIT 1`).get(studentId);
21
+ return row ?? null;
22
+ }
23
+ function listThoughts(studentId, limit = 20) {
24
+ const db = (0, database_1.getDB)();
25
+ return db.prepare(`SELECT * FROM AgentThought WHERE student_id=? ORDER BY created_at DESC LIMIT ?`).all(studentId, limit);
26
+ }
27
+ //# sourceMappingURL=thought.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thought.service.js","sourceRoot":"","sources":["../../src/services/thought.service.ts"],"names":[],"mappings":";;AAcA,sCAyBC;AAED,wCAMC;AAED,oCAKC;AAtDD,+BAAmC;AACnC,0CAAmC;AAanC,SAAgB,aAAa,CAAC,MAO7B;IACC,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAA;IAClB,MAAM,EAAE,GAAG,IAAA,SAAM,GAAE,CAAA;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,EAAE,CAAC,OAAO,CAAC;;;GAGV,CAAC,CAAC,GAAG,CACJ,EAAE,EACF,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAClE,MAAM,CAAC,UAAU,IAAI,IAAI,EACzB,MAAM,CAAC,OAAO,IAAI,QAAQ,EAC1B,GAAG,CACJ,CAAA;IACD,OAAO,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAiB,CAAA;AACpF,CAAC;AAED,SAAgB,cAAc,CAAC,SAAiB;IAC9C,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAA;IAClB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,gFAAgF,CACjF,CAAC,GAAG,CAAC,SAAS,CAA6B,CAAA;IAC5C,OAAO,GAAG,IAAI,IAAI,CAAA;AACpB,CAAC;AAED,SAAgB,YAAY,CAAC,SAAiB,EAAE,KAAK,GAAG,EAAE;IACxD,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAA;IAClB,OAAO,EAAE,CAAC,OAAO,CACf,gFAAgF,CACjF,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAmB,CAAA;AAC3C,CAAC"}
@@ -0,0 +1,42 @@
1
+ export type TodoPriority = 'low' | 'normal' | 'high' | 'urgent';
2
+ export type TodoStatus = 'pending' | 'done' | 'dropped';
3
+ export interface Todo {
4
+ id: string;
5
+ student_id: string;
6
+ title: string;
7
+ content: string | null;
8
+ priority: TodoPriority;
9
+ status: TodoStatus;
10
+ due_date: number | null;
11
+ recurrence: string | null;
12
+ agent_created: boolean;
13
+ related_kp_id: string | null;
14
+ reminded_at: number | null;
15
+ create_time: number;
16
+ update_time: number;
17
+ }
18
+ export interface CreateTodoInput {
19
+ student_id: string;
20
+ title: string;
21
+ content?: string;
22
+ priority?: TodoPriority;
23
+ due_date?: number;
24
+ recurrence?: string;
25
+ agent_created?: boolean;
26
+ related_kp_id?: string;
27
+ }
28
+ export declare function createTodo(input: CreateTodoInput): Todo;
29
+ export declare function getTodoById(id: string): Todo | null;
30
+ export declare function listTodos(studentId: string, opts?: {
31
+ status?: TodoStatus;
32
+ priority?: TodoPriority;
33
+ limit?: number;
34
+ offset?: number;
35
+ }): Todo[];
36
+ export declare function updateTodo(id: string, patch: Partial<Pick<Todo, 'title' | 'content' | 'priority' | 'status' | 'due_date' | 'recurrence'>>): Todo | null;
37
+ export declare function deleteTodo(id: string): void;
38
+ export declare function markReminded(id: string): void;
39
+ export declare function getDueSoonTodos(studentId: string): Todo[];
40
+ export declare function getTodayDueTodos(studentId: string): Todo[];
41
+ export declare function getOverdueTodos(studentId: string): Todo[];
42
+ //# sourceMappingURL=todo.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo.service.d.ts","sourceRoot":"","sources":["../../src/services/todo.service.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAA;AAC/D,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;AAEvD,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,QAAQ,EAAE,YAAY,CAAA;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,aAAa,EAAE,OAAO,CAAA;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAqBvD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAKnD;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE;IACjD,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GAAG,IAAI,EAAE,CAYd;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAcvJ;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAG3C;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAG7C;AAGD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,CAWzD;AAGD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,CAW1D;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,CASzD"}