This commit is contained in:
admin
2026-01-21 10:58:19 +09:00
parent 8a00de8f03
commit 86020ada5c
36 changed files with 3417 additions and 363 deletions

View File

@@ -0,0 +1,15 @@
-- 従業員の写真・身分証明書画像フィールドを追加
-- Add employee photo and ID document image fields
ALTER TABLE employees
ADD COLUMN IF NOT EXISTS photo_url VARCHAR(500),
ADD COLUMN IF NOT EXISTS my_number_card_image_url VARCHAR(500),
ADD COLUMN IF NOT EXISTS residence_card_image_url VARCHAR(500),
ADD COLUMN IF NOT EXISTS health_insurance_card_image_url VARCHAR(500),
ADD COLUMN IF NOT EXISTS other_id_image_url VARCHAR(500);
COMMENT ON COLUMN employees.photo_url IS '本人写真のURL';
COMMENT ON COLUMN employees.my_number_card_image_url IS 'マイナンバーカード画像のURL';
COMMENT ON COLUMN employees.residence_card_image_url IS '在留カード画像のURL';
COMMENT ON COLUMN employees.health_insurance_card_image_url IS '健康保険証画像のURL';
COMMENT ON COLUMN employees.other_id_image_url IS 'その他の身分証明書画像のURL';

View File

@@ -0,0 +1,12 @@
-- マイナンバーカード番号フィールドを追加
-- Add my_number field to employees table
ALTER TABLE employees
ADD COLUMN IF NOT EXISTS my_number VARCHAR(12);
COMMENT ON COLUMN employees.my_number IS 'マイナンバー個人番号12桁';
-- マイナンバーは機密情報なので、ユニーク制約を追加
CREATE UNIQUE INDEX IF NOT EXISTS idx_employees_my_number
ON employees(my_number)
WHERE my_number IS NOT NULL;

View File

@@ -0,0 +1,32 @@
-- 標準報酬月額表テーブル
CREATE TABLE IF NOT EXISTS standard_remuneration (
id SERIAL PRIMARY KEY,
rate_year INTEGER NOT NULL,
prefecture VARCHAR(50) NOT NULL,
grade VARCHAR(20) NOT NULL,
monthly_amount DECIMAL(12, 2) NOT NULL,
salary_from DECIMAL(12, 2) NOT NULL,
salary_to DECIMAL(12, 2),
health_insurance_no_care DECIMAL(12, 2) NOT NULL,
health_insurance_with_care DECIMAL(12, 2) NOT NULL,
pension_insurance DECIMAL(12, 2) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(rate_year, prefecture, grade)
);
-- インデックス作成
CREATE INDEX IF NOT EXISTS idx_standard_remuneration_year_pref
ON standard_remuneration(rate_year, prefecture);
CREATE INDEX IF NOT EXISTS idx_standard_remuneration_salary
ON standard_remuneration(rate_year, prefecture, salary_from, salary_to);
COMMENT ON TABLE standard_remuneration IS '健康保険・厚生年金保険の標準報酬月額表';
COMMENT ON COLUMN standard_remuneration.rate_year IS '適用年度';
COMMENT ON COLUMN standard_remuneration.prefecture IS '都道府県名';
COMMENT ON COLUMN standard_remuneration.grade IS '等級';
COMMENT ON COLUMN standard_remuneration.monthly_amount IS '標準報酬月額';
COMMENT ON COLUMN standard_remuneration.salary_from IS '報酬月額(下限)';
COMMENT ON COLUMN standard_remuneration.salary_to IS '報酬月額上限、最高等級の場合はNULL';
COMMENT ON COLUMN standard_remuneration.health_insurance_no_care IS '健康保険料(介護保険なし)';
COMMENT ON COLUMN standard_remuneration.health_insurance_with_care IS '健康保険料(介護保険あり)';
COMMENT ON COLUMN standard_remuneration.pension_insurance IS '厚生年金保険料';

View File

@@ -0,0 +1,15 @@
-- 写真フィールドのデータ型をVARCHAR(500)からTEXTに変更
-- Base64エンコードされた画像データは数万文字になるため
ALTER TABLE employees
ALTER COLUMN photo_url TYPE TEXT,
ALTER COLUMN my_number_card_image_url TYPE TEXT,
ALTER COLUMN residence_card_image_url TYPE TEXT,
ALTER COLUMN health_insurance_card_image_url TYPE TEXT,
ALTER COLUMN other_id_image_url TYPE TEXT;
-- 確認
SELECT column_name, data_type, character_maximum_length
FROM information_schema.columns
WHERE table_name = 'employees'
AND column_name LIKE '%_url';

View File

@@ -0,0 +1,34 @@
-- 2025年度の保険料率を追加
-- 健康保険2025年度 東京都)
INSERT INTO insurance_rates (rate_year, rate_type, calculation_target, prefecture, employee_rate, employer_rate, care_insurance_age_threshold, notes) VALUES
(2025, '健康保険', '給与', '東京都', 0.04985, 0.04985, NULL, '健康保険料率 9.97% (労使折半) - 給与'),
(2025, '健康保険', '賞与', '東京都', 0.04985, 0.04985, NULL, '健康保険料率 9.97% (労使折半) - 賞与')
ON CONFLICT DO NOTHING;
-- 介護保険2025年度
INSERT INTO insurance_rates (rate_year, rate_type, calculation_target, prefecture, employee_rate, employer_rate, care_insurance_age_threshold, notes) VALUES
(2025, '介護保険', '給与', '東京都', 0.0091, 0.0091, 40, '介護保険料率 1.82% (労使折半、40歳以上対象) - 給与'),
(2025, '介護保険', '賞与', '東京都', 0.0091, 0.0091, 40, '介護保険料率 1.82% (労使折半、40歳以上対象) - 賞与')
ON CONFLICT DO NOTHING;
-- 厚生年金2025年度
INSERT INTO insurance_rates (rate_year, rate_type, calculation_target, prefecture, employee_rate, employer_rate, care_insurance_age_threshold, notes) VALUES
(2025, '厚生年金', '給与', '東京都', 0.09150, 0.09150, NULL, '厚生年金保険料率 18.3% (労使折半) - 給与'),
(2025, '厚生年金', '賞与', '東京都', 0.09150, 0.09150, NULL, '厚生年金保険料率 18.3% (労使折半) - 賞与')
ON CONFLICT DO NOTHING;
-- 雇用保険2025年度
INSERT INTO insurance_rates (rate_year, rate_type, calculation_target, prefecture, employee_rate, employer_rate, care_insurance_age_threshold, notes) VALUES
(2025, '雇用保険', '給与', '東京都', 0.006, 0.009, NULL, '雇用保険料率 従業員0.6% 会社0.9% - 給与'),
(2025, '雇用保険', '賞与', '東京都', 0.006, 0.009, NULL, '雇用保険料率 従業員0.6% 会社0.9% - 賞与')
ON CONFLICT DO NOTHING;
-- 確認
SELECT rate_year, rate_type, calculation_target,
ROUND(employee_rate * 100, 3) as employee_pct,
ROUND(employer_rate * 100, 3) as employer_pct,
care_insurance_age_threshold
FROM insurance_rates
WHERE rate_year = 2025
ORDER BY rate_type, calculation_target;