プロジェクトの環境設定ファイルを追加し、README.mdに開発セットアップ手順を追記。作業ログ用のdiary.mdを新規作成し、.gitignoreを更新して不要なファイルを除外。サンプルデータCSVファイルを追加。
This commit is contained in:
@@ -3,3 +3,5 @@
|
||||
- コーディング: 既存のコードスタイル・命名規則に従う
|
||||
- プロジェクト概要:クレジットカードCSVデータを分類、レポートを作るWebアプリケーション
|
||||
- 注意点(任意):仕様書の確認する
|
||||
- /Doc/diary.md に、作業ログ記録 何をやったかを箇条書きでOK
|
||||
- この端末にはpostgreのCLIがインストールされています 本体は https:labo.sunamura-llc.com に設置
|
||||
|
||||
3
.env.example
Normal file
3
.env.example
Normal file
@@ -0,0 +1,3 @@
|
||||
DJANGO_SECRET_KEY=change-me
|
||||
DJANGO_DEBUG=true
|
||||
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/card_data_sorting
|
||||
187
.gitignore
vendored
187
.gitignore
vendored
@@ -1,178 +1,13 @@
|
||||
Sample-data/
|
||||
|
||||
# ---> Python
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
cover/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
.pybuilder/
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
# For a library or package, you might want to ignore these files since the code is
|
||||
# intended to run in multiple environments; otherwise, check them in:
|
||||
# .python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
|
||||
# UV
|
||||
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
#uv.lock
|
||||
|
||||
# poetry
|
||||
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||
#poetry.lock
|
||||
|
||||
# pdm
|
||||
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||
#pdm.lock
|
||||
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
||||
# in version control.
|
||||
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
|
||||
.pdm.toml
|
||||
.pdm-python
|
||||
.pdm-build/
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
*.swp
|
||||
.DS_Store
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# pytype static type analyzer
|
||||
.pytype/
|
||||
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
||||
|
||||
# PyCharm
|
||||
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||
#.idea/
|
||||
|
||||
# Ruff stuff:
|
||||
.ruff_cache/
|
||||
|
||||
# PyPI configuration file
|
||||
.pypirc
|
||||
|
||||
.venv/
|
||||
__pycache__/
|
||||
*.sqlite3
|
||||
*.log
|
||||
/.pytest_cache/
|
||||
/.mypy_cache/
|
||||
/.ruff_cache/
|
||||
/staticfiles/
|
||||
/media/
|
||||
|
||||
1
Doc/diary.md
Normal file
1
Doc/diary.md
Normal file
@@ -0,0 +1 @@
|
||||
# 作業日誌 (作業ログです)
|
||||
30
README.md
30
README.md
@@ -1,3 +1,29 @@
|
||||
# ------
|
||||
# Card-data-sorting
|
||||
|
||||
何某の元ネタとなる
|
||||
Business-focused Django app for importing credit card CSV statements and splitting business vs household expenses.
|
||||
|
||||
## Development setup
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Python 3.9+ (local)
|
||||
- PostgreSQL 14+
|
||||
- libffi/libpango/libcairo (for WeasyPrint)
|
||||
|
||||
### Setup steps
|
||||
|
||||
```bash
|
||||
python3 -m venv .venv
|
||||
source .venv/bin/activate
|
||||
pip install -r requirements-dev.txt
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
### Environment variables
|
||||
|
||||
Edit `.env` to match your local DB.
|
||||
|
||||
### Next actions
|
||||
|
||||
- Initialize the Django project and app structure.
|
||||
- Configure PostgreSQL settings and migrations.
|
||||
|
||||
9
Sample-data/IDEMITSU_2512-2.csv
Normal file
9
Sample-data/IDEMITSU_2512-2.csv
Normal file
@@ -0,0 +1,9 @@
|
||||
<EFBFBD>J<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,2025/12/08
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z,0000004690
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD>y<EFBFBD>я<EFBFBD><EFBFBD>i<EFBFBD><EFBFBD>,<EFBFBD>{<7B>l<EFBFBD>E<EFBFBD>Ƒ<EFBFBD><C691>敪,<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD>敪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>敪,<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>z,<EFBFBD><EFBFBD><EFBFBD>l
|
||||
2025/09/26,<EFBFBD>d<EFBFBD>s<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B>@<40>@<40>i<EFBFBD>O<EFBFBD>}<7D><><EFBFBD>ވ<EFBFBD><DE88>]<5D><><EFBFBD><EFBFBD><EFBFBD>j,,<EFBFBD>P<EFBFBD><EFBFBD>,,970,
|
||||
2025/09/26,<EFBFBD>d<EFBFBD>s<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B>@<40>@<40>i<EFBFBD>ވ<EFBFBD><DE88>]<5D><><EFBFBD>쁨<EFBFBD>O<EFBFBD>}<7D>j,,<EFBFBD>P<EFBFBD><EFBFBD>,,970,
|
||||
2025/10/08,<EFBFBD>d<EFBFBD>s<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B>@<40>@<40>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>鐲<EFBFBD><E990B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD>`<60>X<EFBFBD>j,,<EFBFBD>P<EFBFBD><EFBFBD>,,1780,
|
||||
2025/10/30,<EFBFBD>d<EFBFBD>s<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B>@<40>@<40>i<EFBFBD>O<EFBFBD>}<7D><><EFBFBD>ވ<EFBFBD><DE88>]<5D><><EFBFBD><EFBFBD><EFBFBD>j,,<EFBFBD>P<EFBFBD><EFBFBD>,,970,
|
||||
|
25
Sample-data/IDEMITSU_2601.csv
Normal file
25
Sample-data/IDEMITSU_2601.csv
Normal file
@@ -0,0 +1,25 @@
|
||||
<EFBFBD>J<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD><EFBFBD>,<EFBFBD>o<EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>[<5B><><EFBFBD>h<EFBFBD>J<EFBFBD>[<5B>h
|
||||
<EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,2026/01/07
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z,0000132408
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD>y<EFBFBD>я<EFBFBD><EFBFBD>i<EFBFBD><EFBFBD>,<EFBFBD>{<7B>l<EFBFBD>E<EFBFBD>Ƒ<EFBFBD><C691>敪,<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD>敪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>敪,<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>z,<EFBFBD><EFBFBD><EFBFBD>l
|
||||
2025/11/26,<EFBFBD>L<EFBFBD><EFBFBD><EFBFBD>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40><><EFBFBD><EFBFBD>,,<EFBFBD>P<EFBFBD><EFBFBD>,,23926,<EFBFBD><EFBFBD><EFBFBD>ʁF<EFBFBD>P<EFBFBD>X<EFBFBD>R
|
||||
2025/11/10,<EFBFBD>`<60>o<EFBFBD>o<EFBFBD>k<EFBFBD>d<EFBFBD>@<40>b<EFBFBD>n<EFBFBD>l<EFBFBD>@<40>a<EFBFBD>h<EFBFBD>k<EFBFBD>k,,<EFBFBD>P<EFBFBD><EFBFBD>,,150,
|
||||
2025/11/12,<EFBFBD>`<60>o<EFBFBD>o<EFBFBD>k<EFBFBD>d<EFBFBD>@<40>b<EFBFBD>n<EFBFBD>l<EFBFBD>@<40>a<EFBFBD>h<EFBFBD>k<EFBFBD>k,,<EFBFBD>P<EFBFBD><EFBFBD>,,480,
|
||||
2025/11/13,<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>m<EFBFBD>@<40>^<5E>L<EFBFBD>J<EFBFBD><4A><EFBFBD>e<EFBFBD><65>,,<EFBFBD>P<EFBFBD><EFBFBD>,,18128,
|
||||
2025/11/15,<EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>l<EFBFBD>嗤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD>O<EFBFBD>X,,<EFBFBD>P<EFBFBD><EFBFBD>,,57000,
|
||||
2025/11/24,<EFBFBD>`<60>a<EFBFBD>d<EFBFBD>l<EFBFBD>`<60>v<EFBFBD><76><EFBFBD>~<7E>A<EFBFBD><41>,,<EFBFBD>P<EFBFBD><EFBFBD>,,1080,
|
||||
2025/11/26,<EFBFBD>n<EFBFBD>o<EFBFBD>d<EFBFBD>m<EFBFBD>`<60>h<EFBFBD>@<40><><EFBFBD>b<EFBFBD>g<EFBFBD>`<60>s<EFBFBD>f<EFBFBD>o<EFBFBD>s<EFBFBD>@<40>r<EFBFBD>t<EFBFBD>a<EFBFBD>r<EFBFBD>b<EFBFBD>q,,<EFBFBD>P<EFBFBD><EFBFBD>,,3568,<EFBFBD><EFBFBD><EFBFBD>n<EFBFBD>ʉ݊z<EFBFBD>F<EFBFBD>Q<EFBFBD>Q<EFBFBD>D<EFBFBD>O<EFBFBD>O<EFBFBD>@<40>t<EFBFBD>r<EFBFBD>c
|
||||
,<EFBFBD>i<EFBFBD>r<EFBFBD>`<60>m<EFBFBD>@<40>e<EFBFBD>q<EFBFBD>`<60>m<EFBFBD>b<EFBFBD>h<EFBFBD>r<EFBFBD>b<EFBFBD>n<EFBFBD>j,,,,,<EFBFBD>~<7E><><EFBFBD>Z<EFBFBD><5A><EFBFBD>[<5B>g<EFBFBD>F<EFBFBD>P<EFBFBD>P<EFBFBD>^<5E>Q<EFBFBD>V<EFBFBD>@<40>P<EFBFBD>U<EFBFBD>Q<EFBFBD>D<EFBFBD>P<EFBFBD>W<EFBFBD>P<EFBFBD>X
|
||||
2025/11/26,<EFBFBD>c<EFBFBD><EFBFBD><EFBFBD>n,,<EFBFBD>P<EFBFBD><EFBFBD>,,2774,
|
||||
2025/11/28,<EFBFBD>`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><76><EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,,<EFBFBD>P<EFBFBD><EFBFBD>,,2950,
|
||||
2025/11/28,<EFBFBD>`<60>o<EFBFBD>o<EFBFBD>k<EFBFBD>d<EFBFBD>@<40>b<EFBFBD>n<EFBFBD>l<EFBFBD>@<40>a<EFBFBD>h<EFBFBD>k<EFBFBD>k,,<EFBFBD>P<EFBFBD><EFBFBD>,,1350,
|
||||
2025/11/28,<EFBFBD>z<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>v<EFBFBD>e<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X,,<EFBFBD>P<EFBFBD><EFBFBD>,,3065,
|
||||
2025/11/30,<EFBFBD>`<60>l<EFBFBD>`<60>y<EFBFBD>n<EFBFBD>m<EFBFBD>D<EFBFBD>b<EFBFBD>n<EFBFBD>D<EFBFBD>i<EFBFBD>o,,<EFBFBD>P<EFBFBD><EFBFBD>,,1577,
|
||||
2025/11/30,<EFBFBD>`<60>l<EFBFBD>`<60>y<EFBFBD>n<EFBFBD>m<EFBFBD>D<EFBFBD>b<EFBFBD>n<EFBFBD>D<EFBFBD>i<EFBFBD>o,,<EFBFBD>P<EFBFBD><EFBFBD>,,4971,
|
||||
2025/12/01,<EFBFBD>G<EFBFBD>b<EFBFBD>N<EFBFBD>X<EFBFBD>T<EFBFBD>|<7C>o<EFBFBD>|<7C>^<5E>l,,<EFBFBD>P<EFBFBD><EFBFBD>,,2200,
|
||||
2025/12/01,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD>D<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40>h<EFBFBD><68><EFBFBD>C<EFBFBD><43><EFBFBD>T<EFBFBD>[<5B>r<EFBFBD>X,,<EFBFBD>P<EFBFBD><EFBFBD>,,272,
|
||||
2025/12/01,<EFBFBD>`<60>o<EFBFBD>o<EFBFBD>k<EFBFBD>d<EFBFBD>@<40>b<EFBFBD>n<EFBFBD>l<EFBFBD>@<40>a<EFBFBD>h<EFBFBD>k<EFBFBD>k,,<EFBFBD>P<EFBFBD><EFBFBD>,,1200,
|
||||
2025/12/03,<EFBFBD>`<60>o<EFBFBD>o<EFBFBD>k<EFBFBD>d<EFBFBD>@<40>b<EFBFBD>n<EFBFBD>l<EFBFBD>@<40>a<EFBFBD>h<EFBFBD>k<EFBFBD>k,,<EFBFBD>P<EFBFBD><EFBFBD>,,480,
|
||||
2025/12/08,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD>D<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E><><EFBFBD>T<EFBFBD>|<7C>o<EFBFBD>|,,<EFBFBD>P<EFBFBD><EFBFBD>,,2612,
|
||||
2025/12/10,<EFBFBD>A<EFBFBD>b<EFBFBD>g<EFBFBD>E<EFBFBD>j<EFBFBD>t<EFBFBD>e<EFBFBD>B,,<EFBFBD>P<EFBFBD><EFBFBD>,,4625,
|
||||
|
4
requirements-dev.txt
Normal file
4
requirements-dev.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
-r requirements.txt
|
||||
pytest>=7.4,<8.0
|
||||
pytest-django>=4.5,<5.0
|
||||
ruff>=0.3,<0.4
|
||||
4
requirements.txt
Normal file
4
requirements.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Django>=4.2,<5.0
|
||||
psycopg[binary]>=3.1,<4.0
|
||||
chardet>=5.2,<6.0
|
||||
WeasyPrint>=60.0,<61.0
|
||||
Reference in New Issue
Block a user