团队项目
一、系统架构图
[架构图示意图]
┌───────────────┐ ┌───────────────┐
│ Client │ │ Third-Party │
│ (Web/Mobile) │◄─────►│ SMS/Email │
└───────┬───────┘ └───────────────┘
│
│ HTTPS/WebSocket
▼
┌───────────────┐
│ API Gateway │
└───────┬───────┘
│
│ Service Router
▼
┌───────────────────────────────┐
│ Application Layer │
├─────────────┬───────┬─────────┤
│ Task Service│Reminder│ Sync │
│ │ Service│ Service │
└───────┬─────┴───┬───┴────┬────┘
│ │ │
▼ ▼ ▼
┌───────────────────────────────┐
│ Service Layer │
├─────────────┬─────────┬───────┤
│ Classification│ Auth │ Cache │
│ Engine │ Service │ (Redis)│
└───────┬───────┴─────────┴───────┘
│
│
▼
┌───────────────┐
│ Data Layer │
│ MySQL │
└───────────────┘
二、数据库设计(MySQL)
用户表 (users)
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, phone VARCHAR(20), password_hash CHAR(60) NOT NULL, timezone VARCHAR(50) DEFAULT 'UTC', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
任务表 (tasks)
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, title VARCHAR(100) NOT NULL, description TEXT, due_time DATETIME NOT NULL, status ENUM('未开始','进行中','已完成') DEFAULT '未开始', category_id INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (category_id) REFERENCES categories(id) );
CREATE INDEX idx_user_status ON tasks(user_id, status); CREATE INDEX idx_due_time ON tasks(due_time);
分类表 (categories)
SQL CREATE TABLE categories ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) UNIQUE NOT NULL, description VARCHAR(200), is_system BOOLEAN DEFAULT 1 -- 标识系统预设分类 );
-- 初始数据
INSERT INTO categories (name, description) VALUES
('工作', '工作任务'),
('学习', '学习任务'),
('娱乐', '娱乐活动');
标签表 (tags)
SQL CREATE TABLE tags ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) UNIQUE NOT NULL, user_id INT, -- NULL表示系统标签 color VARCHAR(7), FOREIGN KEY (user_id) REFERENCES users(id) );
CREATE TABLE task_tags ( task_id INT NOT NULL, tag_id INT NOT NULL, PRIMARY KEY (task_id, tag_id), FOREIGN KEY (task_id) REFERENCES tasks(id), FOREIGN KEY (tag_id) REFERENCES tags(id) );
提醒记录表 (reminders)
SQL CREATE TABLE reminders ( id INT AUTO_INCREMENT PRIMARY KEY, task_id INT NOT NULL, user_id INT NOT NULL, notify_time DATETIME NOT NULL, channel ENUM('email','sms') NOT NULL, status ENUM('pending','sent','failed') DEFAULT 'pending', retries INT DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (task_id) REFERENCES tasks(id), FOREIGN KEY (user_id) REFERENCES users(id) );
CREATE INDEX idx_notify_status ON reminders(notify_time, status);
三、核心模块设计
自动分类引擎
使用预定义关键词匹配(工作:会议/项目/报告;学习:考试/课程/阅读;娱乐:电影/游戏/旅行)
可扩展为机器学习模型(BERT文本分类)
提醒服务
定时任务每分钟扫描reminders表
使用Redis sorted set实现高效提醒调度
失败重试机制(最多3次)
同步服务
使用WebSocket实现实时同步
版本号机制保证数据一致性
增量更新传输
四、安全设计
JWT身份验证
敏感数据加密存储(AES-256)
请求速率限制
SQL注入防护
五、性能优化
Redis缓存:
用户任务列表缓存
分类元数据缓存
数据库读写分离
异步任务队列(Celery)
六、扩展性设计
支持插件式分类算法
可配置的提醒规则
Webhook第三方集成接口

浙公网安备 33010602011771号