From 8ffec240afa088bef09bb2d671ec49b9f4517530 Mon Sep 17 00:00:00 2001 From: Akira Date: Thu, 28 Aug 2025 10:05:39 +0900 Subject: [PATCH] Fix migration 0011 dependencies to match deploy environment --- rog/migrations/0011_auto_20250827_1459.py | 202 ++++++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 rog/migrations/0011_auto_20250827_1459.py diff --git a/rog/migrations/0011_auto_20250827_1459.py b/rog/migrations/0011_auto_20250827_1459.py new file mode 100644 index 0000000..497e02c --- /dev/null +++ b/rog/migrations/0011_auto_20250827_1459.py @@ -0,0 +1,202 @@ +# Generated by Django 3.2.9 on 2025-08-27 05:59 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('rog', '0010_auto_20250827_1510'), + ] + + operations = [ + migrations.CreateModel( + name='AppVersion', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('version', models.CharField(help_text='セマンティックバージョン (1.2.3)', max_length=20)), + ('platform', models.CharField(choices=[('android', 'Android'), ('ios', 'iOS')], max_length=10)), + ('build_number', models.CharField(blank=True, max_length=20, null=True)), + ('is_latest', models.BooleanField(default=False, help_text='最新版フラグ')), + ('is_required', models.BooleanField(default=False, help_text='強制更新フラグ')), + ('update_message', models.TextField(blank=True, help_text='ユーザー向け更新メッセージ', null=True)), + ('download_url', models.URLField(blank=True, help_text='アプリストアURL', null=True)), + ('release_date', models.DateTimeField(default=django.utils.timezone.now)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ], + options={ + 'db_table': 'app_versions', + }, + ), + migrations.CreateModel( + name='CheckinExtended', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('gps_latitude', models.DecimalField(blank=True, decimal_places=8, max_digits=10, null=True)), + ('gps_longitude', models.DecimalField(blank=True, decimal_places=8, max_digits=11, null=True)), + ('gps_accuracy', models.DecimalField(blank=True, decimal_places=2, help_text='GPS精度(メートル)', max_digits=6, null=True)), + ('gps_timestamp', models.DateTimeField(blank=True, null=True)), + ('camera_capture_time', models.DateTimeField(blank=True, null=True)), + ('device_info', models.TextField(blank=True, null=True)), + ('validation_status', models.CharField(choices=[('pending', 'Pending'), ('approved', 'Approved'), ('rejected', 'Rejected'), ('requires_review', 'Requires Review')], default='pending', max_length=20)), + ('validation_comment', models.TextField(blank=True, null=True)), + ('validated_at', models.DateTimeField(blank=True, null=True)), + ('bonus_points', models.IntegerField(default=0)), + ('scoring_breakdown', models.JSONField(blank=True, default=dict)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ], + options={ + 'db_table': 'rog_checkin_extended', + }, + ), + migrations.CreateModel( + name='UploadedImage', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('original_filename', models.CharField(max_length=255)), + ('server_filename', models.CharField(max_length=255, unique=True)), + ('file_url', models.URLField()), + ('file_size', models.BigIntegerField()), + ('mime_type', models.CharField(choices=[('image/jpeg', 'JPEG'), ('image/png', 'PNG'), ('image/heic', 'HEIC'), ('image/webp', 'WebP')], max_length=50)), + ('event_code', models.CharField(blank=True, max_length=50, null=True)), + ('team_name', models.CharField(blank=True, max_length=255, null=True)), + ('cp_number', models.IntegerField(blank=True, null=True)), + ('upload_source', models.CharField(choices=[('direct', 'Direct'), ('sharing_intent', 'Sharing Intent'), ('bulk_upload', 'Bulk Upload')], default='direct', max_length=50)), + ('device_platform', models.CharField(blank=True, choices=[('ios', 'iOS'), ('android', 'Android'), ('web', 'Web')], max_length=20, null=True)), + ('capture_timestamp', models.DateTimeField(blank=True, null=True)), + ('upload_timestamp', models.DateTimeField(auto_now_add=True)), + ('device_info', models.TextField(blank=True, null=True)), + ('processing_status', models.CharField(choices=[('uploaded', 'Uploaded'), ('processing', 'Processing'), ('processed', 'Processed'), ('failed', 'Failed')], default='uploaded', max_length=20)), + ('thumbnail_url', models.URLField(blank=True, null=True)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ], + options={ + 'db_table': 'rog_uploaded_images', + }, + ), + migrations.RemoveField( + model_name='teamstart', + name='entry', + ), + migrations.AddField( + model_name='entry', + name='can_access_private_events', + field=models.BooleanField(default=False, help_text='非公開イベント参加権限'), + ), + migrations.AddField( + model_name='entry', + name='staff_privileges', + field=models.BooleanField(default=False, help_text='スタッフ権限フラグ'), + ), + migrations.AddField( + model_name='entry', + name='team_validation_status', + field=models.CharField(choices=[('approved', 'Approved'), ('pending', 'Pending'), ('rejected', 'Rejected')], default='approved', help_text='チーム承認状況', max_length=20), + ), + migrations.AddField( + model_name='entry', + name='zekken_label', + field=models.CharField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name='gpscheckin', + name='create_at', + field=models.DateTimeField(blank=True, help_text='作成日時:データの作成日時', null=True), + ), + migrations.AddField( + model_name='gpscheckin', + name='create_user', + field=models.TextField(blank=True, help_text='作成ユーザー', null=True), + ), + migrations.AddField( + model_name='gpscheckin', + name='event_id', + field=models.IntegerField(blank=True, help_text='イベントID', null=True), + ), + migrations.AddField( + model_name='gpscheckin', + name='goal_time', + field=models.TextField(blank=True, help_text='ゴール時刻=ゴール時のみ使用される。画像から時刻を読み取り設定する。', null=True), + ), + migrations.AddField( + model_name='gpscheckin', + name='image_address', + field=models.TextField(blank=True, help_text='チェックイン画像のパス', null=True), + ), + migrations.AddField( + model_name='newevent2', + name='status', + field=models.CharField(choices=[('public', 'Public'), ('private', 'Private'), ('draft', 'Draft'), ('closed', 'Closed')], default='draft', help_text='イベントステータス', max_length=20), + ), + migrations.AlterModelTable( + name='gpslog', + table='gps_information', + ), + migrations.DeleteModel( + name='TeamGoal', + ), + migrations.DeleteModel( + name='TeamStart', + ), + migrations.AddField( + model_name='uploadedimage', + name='entry', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='rog.entry'), + ), + migrations.AddField( + model_name='uploadedimage', + name='gpslog', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='rog.gpscheckin'), + ), + migrations.AddField( + model_name='checkinextended', + name='gpslog', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='extended_info', to='rog.gpscheckin'), + ), + migrations.AddField( + model_name='checkinextended', + name='validated_by', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), + ), + migrations.AddIndex( + model_name='appversion', + index=models.Index(fields=['platform'], name='idx_app_versions_platform'), + ), + migrations.AddIndex( + model_name='appversion', + index=models.Index(condition=models.Q(('is_latest', True)), fields=['is_latest'], name='idx_app_versions_latest_true'), + ), + migrations.AlterUniqueTogether( + name='appversion', + unique_together={('version', 'platform')}, + ), + migrations.AddIndex( + model_name='uploadedimage', + index=models.Index(fields=['event_code', 'team_name'], name='idx_uploaded_event_team'), + ), + migrations.AddIndex( + model_name='uploadedimage', + index=models.Index(fields=['cp_number'], name='idx_uploaded_cp_number'), + ), + migrations.AddIndex( + model_name='uploadedimage', + index=models.Index(fields=['upload_timestamp'], name='idx_uploaded_timestamp'), + ), + migrations.AddIndex( + model_name='uploadedimage', + index=models.Index(fields=['processing_status'], name='idx_uploaded_status'), + ), + migrations.AddIndex( + model_name='checkinextended', + index=models.Index(fields=['validation_status'], name='idx_checkin_ext_valid'), + ), + migrations.AddIndex( + model_name='checkinextended', + index=models.Index(fields=['created_at'], name='idx_checkin_ext_created'), + ), + ]