Initial commit: Telegram Management System
Some checks failed
Deploy / deploy (push) Has been cancelled
Some checks failed
Deploy / deploy (push) Has been cancelled
Full-stack web application for Telegram management - Frontend: Vue 3 + Vben Admin - Backend: NestJS - Features: User management, group broadcast, statistics 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
81
backend-nestjs/docker/mysql/init.sql
Normal file
81
backend-nestjs/docker/mysql/init.sql
Normal file
@@ -0,0 +1,81 @@
|
||||
-- 初始化数据库脚本
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET CHARACTER SET utf8mb4;
|
||||
|
||||
-- 创建数据库(如果不存在)
|
||||
CREATE DATABASE IF NOT EXISTS `tg_manage`
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- 使用数据库
|
||||
USE `tg_manage`;
|
||||
|
||||
-- 创建初始管理员用户
|
||||
-- 密码是: admin123 (bcrypt加密)
|
||||
INSERT IGNORE INTO `admins` (`id`, `username`, `password`, `role`, `status`, `created_at`, `updated_at`)
|
||||
VALUES (
|
||||
1,
|
||||
'admin',
|
||||
'$2b$12$LQv3c1yqBWVHxkd0LQ1u/ue5csar/oU8.vo/1B2F3nCpEHE.sN.K6',
|
||||
'admin',
|
||||
'active',
|
||||
NOW(),
|
||||
NOW()
|
||||
);
|
||||
|
||||
-- 创建系统配置表数据
|
||||
INSERT IGNORE INTO `configs` (`key`, `value`, `description`, `type`, `created_at`, `updated_at`)
|
||||
VALUES
|
||||
('system.name', 'Telegram管理系统', '系统名称', 'string', NOW(), NOW()),
|
||||
('system.version', '2.0.0', '系统版本', 'string', NOW(), NOW()),
|
||||
('system.maintenance', 'false', '维护模式', 'boolean', NOW(), NOW()),
|
||||
('telegram.api_id', '', 'Telegram API ID', 'string', NOW(), NOW()),
|
||||
('telegram.api_hash', '', 'Telegram API Hash', 'string', NOW(), NOW()),
|
||||
('proxy.check_interval', '300000', '代理检查间隔(ms)', 'number', NOW(), NOW()),
|
||||
('sms.default_platform', '1', '默认短信平台ID', 'number', NOW(), NOW()),
|
||||
('task.max_concurrent', '5', '最大并发任务数', 'number', NOW(), NOW()),
|
||||
('analytics.retention_days', '90', '分析数据保留天数', 'number', NOW(), NOW());
|
||||
|
||||
-- 创建索引优化
|
||||
CREATE INDEX IF NOT EXISTS `idx_analytics_records_timestamp` ON `analytics_records` (`timestamp`);
|
||||
CREATE INDEX IF NOT EXISTS `idx_analytics_records_event_type` ON `analytics_records` (`event_type`);
|
||||
CREATE INDEX IF NOT EXISTS `idx_analytics_records_user_id` ON `analytics_records` (`user_id`);
|
||||
CREATE INDEX IF NOT EXISTS `idx_analytics_summaries_date` ON `analytics_summaries` (`date`);
|
||||
CREATE INDEX IF NOT EXISTS `idx_task_executions_status` ON `task_executions` (`status`);
|
||||
CREATE INDEX IF NOT EXISTS `idx_proxy_check_logs_check_time` ON `proxy_check_logs` (`check_time`);
|
||||
|
||||
-- 创建视图用于快速查询
|
||||
CREATE OR REPLACE VIEW `v_active_tg_accounts` AS
|
||||
SELECT
|
||||
id,
|
||||
phone,
|
||||
first_name,
|
||||
last_name,
|
||||
username,
|
||||
status,
|
||||
last_active_at,
|
||||
created_at
|
||||
FROM `tg_accounts`
|
||||
WHERE `status` = 'active'
|
||||
AND `deleted_at` IS NULL;
|
||||
|
||||
CREATE OR REPLACE VIEW `v_recent_tasks` AS
|
||||
SELECT
|
||||
t.id,
|
||||
t.name,
|
||||
t.type,
|
||||
t.status,
|
||||
t.created_at,
|
||||
te.status as execution_status,
|
||||
te.started_at,
|
||||
te.completed_at,
|
||||
te.error_message
|
||||
FROM `tasks` t
|
||||
LEFT JOIN `task_executions` te ON t.id = te.task_id
|
||||
WHERE t.created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY)
|
||||
ORDER BY t.created_at DESC;
|
||||
|
||||
-- 插入示例数据(仅开发环境)
|
||||
-- 这些数据在生产环境中应该被删除或注释掉
|
||||
42
backend-nestjs/docker/mysql/my.cnf
Normal file
42
backend-nestjs/docker/mysql/my.cnf
Normal file
@@ -0,0 +1,42 @@
|
||||
[mysqld]
|
||||
# 基础配置
|
||||
default-storage-engine=InnoDB
|
||||
character-set-server=utf8mb4
|
||||
collation-server=utf8mb4_unicode_ci
|
||||
init-connect='SET NAMES utf8mb4'
|
||||
|
||||
# 性能优化
|
||||
innodb_buffer_pool_size=256M
|
||||
innodb_log_file_size=64M
|
||||
innodb_log_buffer_size=16M
|
||||
innodb_flush_log_at_trx_commit=2
|
||||
innodb_file_per_table=1
|
||||
|
||||
# 连接配置
|
||||
max_connections=200
|
||||
wait_timeout=28800
|
||||
interactive_timeout=28800
|
||||
|
||||
# 查询缓存
|
||||
query_cache_type=1
|
||||
query_cache_size=32M
|
||||
query_cache_limit=2M
|
||||
|
||||
# 慢查询日志
|
||||
slow_query_log=1
|
||||
slow_query_log_file=/var/log/mysql/slow.log
|
||||
long_query_time=2
|
||||
|
||||
# 二进制日志
|
||||
log-bin=/var/lib/mysql/mysql-bin
|
||||
binlog_format=ROW
|
||||
expire_logs_days=7
|
||||
|
||||
# 安全配置
|
||||
skip-name-resolve=1
|
||||
|
||||
[mysql]
|
||||
default-character-set=utf8mb4
|
||||
|
||||
[client]
|
||||
default-character-set=utf8mb4
|
||||
Reference in New Issue
Block a user