mirror of
https://github.com/henry4682/linebot_finance.git
synced 2026-05-16 04:41:52 +00:00
feat:linebot
1. change Dockerfile 2. change the way import
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from app.config import DATABASE_URL
|
||||
from config import DATABASE_URL
|
||||
|
||||
engine = create_engine(DATABASE_URL)
|
||||
SessionLocal = sessionmaker(bind=engine)
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
FROM python:3.11-slim
|
||||
|
||||
# 安裝 uv
|
||||
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
|
||||
|
||||
# 安裝 Playwright 需要的系統依賴
|
||||
RUN apt-get update && apt-get install -y \
|
||||
wget \
|
||||
gnupg \
|
||||
@@ -24,17 +22,15 @@ RUN apt-get update && apt-get install -y \
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# 複製 uv 設定檔
|
||||
COPY pyproject.toml .
|
||||
COPY uv.lock* .
|
||||
# pyproject.toml 在 app/ 裡
|
||||
COPY app/pyproject.toml .
|
||||
COPY app/uv.lock* .
|
||||
|
||||
# 安裝依賴
|
||||
RUN uv sync --frozen
|
||||
|
||||
# 安裝 Playwright Chromium
|
||||
RUN uv run playwright install chromium
|
||||
RUN uv run playwright install-deps chromium
|
||||
|
||||
COPY . .
|
||||
# 只複製 app/ 的內容進去
|
||||
COPY app/ .
|
||||
|
||||
CMD ["uv", "run", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
|
||||
CMD ["uv", "run", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
@@ -2,8 +2,8 @@ import re
|
||||
from datetime import datetime, date
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy import text
|
||||
from app.db.models import User, LineUser, Category, CategoryRule, Expense
|
||||
from app.db.session import SessionLocal
|
||||
from db.models import User, LineUser, Category, CategoryRule, Expense
|
||||
from db.session import SessionLocal
|
||||
|
||||
EXPENSE_TEMPLATE = (
|
||||
"請填寫以下記帳資料後傳回:\n\n"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from app.line import captcha_state
|
||||
from app.line.expense import (
|
||||
from line import captcha_state
|
||||
from line.expense import (
|
||||
EXPENSE_TEMPLATE,
|
||||
save_expense,
|
||||
delete_expense,
|
||||
|
||||
@@ -9,8 +9,8 @@ from linebot.v3.messaging import (
|
||||
)
|
||||
from linebot.v3.webhooks import MessageEvent, TextMessageContent, FollowEvent
|
||||
from linebot.v3.exceptions import InvalidSignatureError
|
||||
from app.config import LINE_CHANNEL_ACCESS_TOKEN, LINE_CHANNEL_SECRET
|
||||
from app.line.handlers import handle_text, handle_captcha
|
||||
from config import LINE_CHANNEL_ACCESS_TOKEN, LINE_CHANNEL_SECRET
|
||||
from line.handlers import handle_text, handle_captcha
|
||||
|
||||
router = APIRouter()
|
||||
configuration = Configuration(access_token=LINE_CHANNEL_ACCESS_TOKEN)
|
||||
|
||||
21
app/config.py
Normal file
21
app/config.py
Normal file
@@ -0,0 +1,21 @@
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
|
||||
# LINE
|
||||
LINE_CHANNEL_ACCESS_TOKEN = os.getenv("LINE_CHANNEL_ACCESS_TOKEN")
|
||||
LINE_CHANNEL_SECRET = os.getenv("LINE_CHANNEL_SECRET")
|
||||
LINE_USER_ID = os.getenv("LINE_USER_ID")
|
||||
|
||||
# DB
|
||||
DATABASE_URL = os.getenv("DATABASE_URL")
|
||||
|
||||
# 發票
|
||||
EINVOICE_USER = os.getenv("EINVOICE_USER")
|
||||
EINVOICE_PASS = os.getenv("EINVOICE_PASS")
|
||||
|
||||
# Cloudinary
|
||||
CLOUDINARY_CLOUD_NAME = os.getenv("CLOUDINARY_CLOUD_NAME")
|
||||
CLOUDINARY_API_KEY = os.getenv("CLOUDINARY_API_KEY")
|
||||
CLOUDINARY_API_SECRET = os.getenv("CLOUDINARY_API_SECRET")
|
||||
Reference in New Issue
Block a user