개발이야기 014. talkit.bank 신규 스케쥴러 작성을 웹 사이트 개발
/scheduler_app
│── /templates # HTML 템플릿
│ ├── index.html # 스케줄 목록 페이지
│ ├── add.html # 스케줄 추가 페이지
│ ├── edit.html # 스케줄 수정 페이지
│ ├── logs.html # 실행 로그 페이지
│ ├── login.html # 로그인 페이지
│ ├── register.html # 회원가입 페이지
│── /static # CSS, JS, 이미지 등의 정적 파일 (필요시 추가)
│── app.py # Flask 메인 애플리케이션
│── config.py # 데이터베이스 및 환경설정
│── requirements.txt # 필요한 패키지 목록
│── schema.sql # 데이터베이스 테이블 정의 (초기 실행용)
안녕하세요 @talkit 입니다.
어제 말씀 드린대로 신규 스케쥴러를 개발하고 있습니다.
그래서 분배 프로그램은 수동으로 돌리고 있습니다. ^^
최초의 스케쥴을 분배 프로그램을 등록 해볼 계획입니다.
그래서 우선 간단하게 python으로 웹을 만들어 보고 있습니다.
저거 말들고 내일은 백엔드를 만들 계획입니다. ^^
-- 사용자 테이블
CREATE TABLE schedule_users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE COMMENT '사용자 아이디',
password_hash VARCHAR(255) NOT NULL COMMENT 'SHA-256 암호화된 비밀번호',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '가입 날짜'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='스케줄러 사용자 테이블';
-- 스케줄러 테이블
CREATE TABLE scheduler (
id INT AUTO_INCREMENT PRIMARY KEY,
year VARCHAR(4) NOT NULL COMMENT '년 (YYYY 또는 *)',
month VARCHAR(2) NOT NULL COMMENT '월 (MM 또는 *)',
day VARCHAR(2) NOT NULL COMMENT '일 (DD 또는 *)',
hour VARCHAR(2) NOT NULL COMMENT '시 (HH 또는 *)',
minute VARCHAR(2) NOT NULL COMMENT '분 (MM 또는 *)',
second VARCHAR(2) NOT NULL COMMENT '초 (SS 또는 *)',
weekday VARCHAR(1) NOT NULL COMMENT '요일 (0-6 또는 *)',
command TEXT NOT NULL COMMENT '실행할 프로그램 또는 명령어',
remark TEXT DEFAULT NULL COMMENT '비고 (추가 설명 등)',
is_active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '사용 여부 (1: 사용, 0: 미사용)',
is_deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '삭제 여부 (1: 삭제됨, 0: 정상)',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '생성일',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '수정일'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DB 기반 스케줄러 테이블';
-- 실행 로그 테이블
CREATE TABLE scheduler_log (
id INT AUTO_INCREMENT PRIMARY KEY,
scheduler_id INT NOT NULL COMMENT '연결된 스케줄 ID',
started_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '실행 시작 시간',
ended_at TIMESTAMP NULL COMMENT '실행 종료 시간',
execution_time FLOAT GENERATED ALWAYS AS (TIMESTAMPDIFF(SECOND, started_at, ended_at)) STORED COMMENT '총 실행 시간(초)',
status ENUM('SUCCESS', 'FAIL') NOT NULL COMMENT '실행 상태',
log_message TEXT COMMENT '실행 결과 메시지',
FOREIGN KEY (scheduler_id) REFERENCES scheduler(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='스케줄 실행 기록 테이블';
관리자를 로그인 시켜야 해서 users 테이블을 추가 했습니다.
Java를 이용해서 프론트와 백엔드를 만들어 보고 싶었는데 무겁습니다 ^^
그래서 python으로 개발하고 있습니다.
평소때는 꺼뒀다가 ^^ 입력할때만 사용할 계획이고, 포트는 집에 있는 IP에만 열어 놓을 계획 입니다.
감사합니다.
Posted through the ECblog app (https://blog.etain.club)
Upvoted! Thank you for supporting witness @jswit.