개발이야기 014. talkit.bank 신규 스케쥴러 작성을 웹 사이트 개발

in #blog3 days ago

이미지 설명

/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)

Sort:  

Upvoted! Thank you for supporting witness @jswit.