Commit Graph

241 Commits

Author SHA1 Message Date
4844c8b983 Merge branch 'dev' 2025-02-13 18:01:26 +08:00
ec96914067 refactor: improve string representation for countries
- Update links in cities index to include country emoji
- Modify display in cities show view to use emoji and country name
- Clean up random scope method in weather_art model for consistency

These changes enhance the user interface presentation by making
country names visually enriched with emojis, improving the overall
user experience with clearer visual cues.
2025-02-13 17:58:41 +08:00
eb16f5886d feat: enhance weather art display and functionality
- Update to include a new 'random' scope in WeatherArt model.
- Modify HomeController to fetch random and popular arts along with latest arts.
- Refactor index.html.erb to utilize a partial for rendering arts.

This update improves the display of weather art by adding a new
random selection of arts alongside popular ones, increasing user
engagement and variety. The code structure is also cleaner due
to the use of a partial view for rendering arts, promoting
the DRY principle.
2025-02-13 17:48:39 +08:00
ee7ff023df Merge branch 'dev' 2025-02-13 17:22:11 +08:00
be88aebac2 fix: update AI service logging and weather services 2025-02-13 17:21:41 +08:00
caf22a00ca style: update logging format in weather arts worker
- Change the order of displayed city attributes in logs
- Adjust tabulation for clearer output

This commit modifies the logging format used in the
BatchGenerateWeatherArtsWorker class. The attribute order for
city information in the log output has been changed to ensure
a more intuitive display, with regions now appearing before
countries and states. This will enhance readability during
logging without altering any functionality.
2025-02-13 16:54:15 +08:00
80d623b0c2 style: update description in sidekiq scheduler
- Changed description for the 'batch_generate_weather' job from
  'Generate weather arts every 2 hours' to 'Batch Generate weather
  arts'.
- This change provides a more concise description of the job's
  purpose without altering its functionality.
2025-02-13 16:19:33 +08:00
15c1fc654d feat: refine city selection process for weather art
- Implement daily generation limit for weather arts
- Improve city selection by prioritizing active cities
- Introduce logging for city generation start time and list

This update enhances the efficiency of the `BatchGenerateWeatherArtsWorker`. It ensures that the system respects a daily limit on the number of generated images and improves how cities are selected for processing by prioritizing active cities while also conditionally selecting others if slots remain. Additionally, the added logging provides better insights into the generation process.
2025-02-13 16:18:40 +08:00
5ae0367525 feat: enhance image handling for weather arts
- Remove deprecated `image_with_watermark` attachment.
- Introduce `webp_image`, `preview_image`, and `watermarked_image` methods in `WeatherArt` model for optimized image formats.
- Update views to use new image variants, including webp and previews, improving loading times and visual quality.
- Ensure images are processed with relevant attributes such as quality and dimensions for better performance and user experience.

These changes enhance the image handling capabilities of the application by ensuring images are served in a more efficient format (WebP) and with improved resizing options, leading to better performance overall.
2025-02-13 15:25:12 +08:00
eda20ecca5 style: improve whitespace in SQL join syntax
- Adjusted join statement in SQLite and PostgreSQL
- Ensure consistent use of whitespace for better readability

This change improves code clarity without changing any
query behavior, making it easier for future developers
to maintain and read the SQL join conditions.
2025-02-13 13:16:06 +08:00
5efe441fa8 style: improve sign out button layout
- Add padding and flex layout to the sign out button
- Wrap the icon and text in a div for better structure

These changes update the sign out button in the navbar for improved
accessibility and aesthetics, aligning it better with the overall UI
style.
2025-02-12 18:05:23 +08:00
7ebf20aa7b feat: enhance navbar responsiveness and styling
- Adjust main navigation layout for better spacing
- Improve mobile menu accessibility and usability
- Introduce a separate user menu partial for cleaner structure
- Update button styles and sizes for consistency

These changes aim to enhance the user experience by ensuring that the navbar is visually appealing and functional across different screen sizes, making navigation easier.
2025-02-12 18:03:40 +08:00
afcb9c6cd8 refactor: simplify scope limit parameters
- Change `limit:` to `limit =` in the scopes for
  `latest` and `by_popularity`.
- This allows for a default value of 100 to be used
  if no argument is provided, making the code more
  user-friendly and consistent.

This refactor does not alter the behavior of the
existing functionality but streamlines the syntax.
2025-02-12 18:00:30 +08:00
0a6926421f refactor: update popularity scope and controller logic
- Change `by_popularity` method in `City` model to use `start_time` for filtering views.
- Update `by_popularity` in `WeatherArt` model to limit results and incorporate the correct popularity calculation.
- Adjust `HomeController` to define `@popular_shuffle_arts` and `@latest_arts` with appropriate scopes.

These changes improve the accuracy of popularity retrieval for both cities and weather arts, simplifying the logic in the controller and leveraging updated model methods for performance.
2025-02-12 17:54:57 +08:00
940f1a8f76 feat: add country filter to cities controller
- Introduce filtering of cities by selected country
- Retrieve current country using friendly find method
- Apply city filtering if country is provided in parameters

This change allows users to efficiently filter cities based on the
selected country, providing a more tailored experience and
encouraging better navigation through the list of cities.
2025-02-12 15:12:23 +08:00
a1f1f2b728 fix: add turbo_frame data attribute to buttons
- Update buttons to include data attribute for Turbo frames
- Ensure proper behavior of navigation with turbo-enabled requests

This change enhances the functionality of the buttons by allowing them
 to interact with Turbo frames, improving performance and user
 experience when transitioning between different views on the application.
2025-02-12 14:59:19 +08:00
80c2f9a1df feat: add loading spinner and search updates
- Implement loading state in the search input with spinner.
- Optimize the search request to handle pending requests and cancels.
- Add dynamic response handling for Turbo frames to load search results.
- Create a new partial for city search results.
- Update the cities controller to support Turbo stream responses.

These enhancements improve user experience during searches by showing a loading
spinner and addressing potential issues with overlapping requests, ensuring
that the application remains responsive and functional when fetching city
search results.
2025-02-12 14:47:30 +08:00
799f3222a9 feat: add city search functionality
- Implement search_by_name scope in City model
- Add SearchController for handling search input
- Include _search_city partial in cities index view
- Update cities_controller to filter cities based on search query

This commit introduces a new feature that allows users to search for
cities by name using an input field. The search is implemented as a
scope in the City model, and it is integrated into the existing
CitiesController. A dedicated SearchController manages the input
submission with a debouncing mechanism for better performance. The
search field is rendered in the cities index view, enhancing user
interactivity and experience.
2025-02-12 14:00:03 +08:00
51d626a67f feat: add city popularity displays by time period
- Implement new scope in City model to fetch popular cities
- Query modified to consider different time periods: today, week, month, and year
- Update Ahoy Dashboard to show top cities for each time period

This change enhances the dashboard, providing insights into city popularity over varying durations, facilitating better data analysis.
2025-02-12 13:28:47 +08:00
34342a9678 refactor: make country and state associations optional
- Change 'belongs_to :country' association to be optional
- Change 'belongs_to :state' association to be optional

This refactoring allows a City record to exist without having
an associated Country or State, thus increasing the flexibility
of the data model for various use cases.
2025-02-12 13:08:12 +08:00
8fce45e1d0 Merge branch 'dev' 2025-02-12 13:03:37 +08:00
af4ee3ee21 feat: enhance image generation prompt clarity
- Add requirements for clearer and brighter images
- Specify maintenance of brightness even in overcast conditions
- Include enhancements for sunny day imagery
- Revise output prompt to remove unnecessary prefix and suffix

These changes improve the clarity and effectiveness of prompts
used in AI-generated imagery. The additional specifications help
guide the AI in producing visually appealing and contextually
relevant images for various weather conditions.
2025-02-12 11:56:09 +08:00
d045f532ec feat: enhance AI prompt generation logic
- Refactor prompt generation to separate location
  description functionality
- Update user prompt generation for DALL-E 3
- Improve AI service's response handling

This change enhances the AiService by creating a more
modular approach to generating prompts. The introduction
of a `generate_location_desc` method improves the
detail and context provided in the generated prompts.
Furthermore, the `ask_ai` method centralizes AI request
logic, allowing for cleaner and more organized code.
These adjustments should improve the overall robustness
and readability of the prompt generation process.
2025-02-12 11:33:11 +08:00
19f7863d97 Merge branch 'dev' 2025-02-12 10:03:16 +08:00
e39c87ac5c feat: improve prompt generation with location details
- Include state, country, and region in the DALL-E prompt
- Enhance context for the generated weather scene

This change improves the specificity of the prompts generated
for the AI, providing more contextual information such as
state, country, and region alongside the city name. This
enhancement can lead to more accurate and relevant outputs
from the DALL-E 3 model for weather scenes.
2025-02-12 10:02:47 +08:00
6f21fe001e fix: remove trailing whitespace in admin files
- Clean up trailing whitespace in app/admin/state.rb
- Clean up trailing whitespace in app/admin/subregions.rb
- Clean up trailing whitespace in app/admin/users.rb
- Adjust formatting in cities_controller.rb for consistency

These changes improve code readability and maintainability by
removing unnecessary whitespace. It is a small clean-up that prepares
files for better version control parsing and reduces the diff clutter.
2025-02-12 10:02:47 +08:00
6bb0245768 Merge branch 'dev'
Some checks failed
CI / scan_ruby (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
Docker / docker (push) Has been cancelled
2025-02-11 23:34:35 +08:00
8d347f6f01 chore: remove unused devise gem
Some checks failed
Docker / docker (push) Has been cancelled
2025-02-11 23:33:41 +08:00
92a5e4d3b0 fix: update generation interval for weather arts worker
- Change generation interval from 24 hours to 36 hours

This change provides more flexibility in scheduling weather arts generation, which could lead to better resource management or accommodate changes in data availability.
2025-02-11 23:32:47 +08:00
acaf413007 fix: remove trailing whitespace in admin files
- Clean up trailing whitespace in app/admin/state.rb
- Clean up trailing whitespace in app/admin/subregions.rb
- Clean up trailing whitespace in app/admin/users.rb
- Adjust formatting in cities_controller.rb for consistency

These changes improve code readability and maintainability by
removing unnecessary whitespace. It is a small clean-up that prepares
files for better version control parsing and reduces the diff clutter.
2025-02-11 17:59:44 +08:00
d37d06c0d7 fix: add country code assignment in city creation
- Include assignment of country code when creating a city
- Ensure that all relevant geographical data is accounted for during
  the city creation process

This change addresses a missing assignment of the country code for new
city records, ensuring that instances are complete and accurate.
2025-02-11 17:59:23 +08:00
b2551361d7 feat: add admin management features for cities
- Update menu labels for cities, countries, and regions
- Introduce new entities for states and subregions in Admin Panel
- Implement admin authentication for weather art generation
- Modify application controller to check for admin user
- Refactor view to display admin panel based on user permissions
- Update routes to include weather art generation action

These changes enhance the admin interface for better management of cities
and related entities. The new admin checks ensure that only authorized users
can generate weather art, improving security and functionality.
2025-02-11 17:40:13 +08:00
3237321db3 fix: improve database URL configuration
- Update development database URL to use a fallback
  if no URL is provided in credentials.
- Modify production SMTP password retrieval to use
  dig method for more robust access.

These changes allow for smoother local development and
ensure that the production environment correctly
accesses the SMTP password, enhancing overall stability.
2025-02-11 17:01:13 +08:00
973a0882ed feat: add admin panel and update database URL
- Implemented a new admin panel that allows administrators to view
  statistics and manage weather art. The panel includes:
  - A card displaying total images and today's images
  - Buttons to generate new art and edit the city

- Added `admin?` helper method to check if the current user is an
  administrator.

- Updated database configuration to use safer credentials lookup
  method `dig` for development database URL instead of the
  previous method, improving reliability in accessing nested
  credentials.
2025-02-11 16:56:51 +08:00
2511eadd2f style: format unlock_keys for consistency
- Adjusted the spacing in the 'unlock_keys' configuration
- Ensured uniform spacing around array elements

This change does not affect the functionality of the unlock
keys in Devise but improves the consistency of the code
formatting to enhance readability.
2025-02-11 16:43:24 +08:00
be1f76a76d feat: enhance devise views with new styling
- Updated confirmation, password, unlock, and session views to use a
  card-based layout for improved visual appeal.
- Added responsive design features to ensure compatibility across devices.
- Enhanced usability by providing clear placeholders in form fields.

These changes improve the user experience during account recovery and
management processes. The design promotes a modern interface while
maintaining functionality.
2025-02-11 16:43:05 +08:00
7d25bc8f11 feat: enhance user authentication features
- Add confirmable and lockable modules to user model
- Update error messages display with improved UI
- Modify navbar links for better accessibility and styling
- Add unique indexes for confirmation and unlock tokens in migration

These changes improve user management and user experience by
adding features for account activation and security, along
with styling enhancements for the authentication views.
2025-02-11 16:18:10 +08:00
0312383bc8 feat: add flash message functionality
- Implement Stimulus controller for closing flash messages
- Replace inline alerts with a partial for better organization
- Enhance styling for user registration and login forms

This update introduces a new flash message component that allows
for user notifications to be displayed on the screen and closed by
the user. The forms also include improved styles for a better
user experience.
2025-02-11 15:52:58 +08:00
cba76e718f feat: enhance user registration UI and navigation
- Improve the user registration form layout with card styling.
- Add input classes for better design consistency.
- Introduce a new navbar partial for better component management.
- Removed the old navbar code to streamline application layout.

These changes provide a more modern and user-friendly experience during
user registration and improve the overall site's navigation structure.
2025-02-11 15:28:42 +08:00
1545b33539 feat: add user authentication with devise
- Integrate Devise for user authentication
- Create User model and necessary views
- Implement email confirmation and password reset functionality
- Add routing for user sign-up and login
- Customize error messages display

This commit initiates user authentication in the application
using the Devise gem. It includes user registration, login,
password reset, and email confirmation features. Additionally,
the necessary views and mailer templates are included to
support these functionalities. This enhances the security
and usability of the application by allowing users to create
accounts and manage their passwords effectively.
2025-02-11 14:45:23 +08:00
92ec81b152 feat: add devise for user authentication
- Include 'devise' gem for user management
- Update database access URLs in configurations
- Refactor schema types from bigint to integer for resource and author IDs
- Enhance geo synchronization by updating region and subregion handling

These changes are aimed at improving the user management functionality while ensuring efficient data handling and connections for production environment.
2025-02-11 11:46:15 +08:00
90c491637b refactor: simplify country retrieval logic
- Replace verbose conditional checks with a ternary operator
- Use 'find_by!' for better error handling if country not found
- Maintain the functionality of state creation associated with the country
2025-02-11 10:50:08 +08:00
24597e6320 refactor: update city sync logic with country and state
- Replace country name lookup with country code lookup
- Replace state name lookup with state code lookup
- Change city creation to ensure country association

This update modifies the existing logic for synchronizing city data to
use country and state codes instead of names. This aids in ensuring
more robust data integrity by relying on unique identifiers.
2025-02-11 10:35:41 +08:00
b4eac06227 refactor: streamline geo data syncing process
- Remove unnecessary debug output for country syncing.
- Improve country determination logic by adding checks for
  both country code and country name.
- Ensure state records are associated with the correct
  country ID post-refactor.

These changes enhance the clarity and efficiency
of the geo data synchronization code, making it easier to
maintain and reducing the risk of errors during data
syncing.
2025-02-11 10:30:25 +08:00
febee58d0a fix: correct state syncing logic
- Change output to include country name during state syncing
- Update record creation from `find_or_initialize_by!` to `find_or_create_by!`

This fix ensures that when syncing state data, the output provides
better context by showing the associated country name, and it also
ensures that states are created if they do not already exist, thus
eliminating potential issues with duplicate state entries.
2025-02-11 10:18:24 +08:00
f67ff92ba8 fix: improve country creation logic
- Refactor the country creation process to use a block for setting
  the name attribute.
- Ensure that the name is set explicitly when a new country is
  created with the appropriate ISO code.

This change optimizes the way country records are created and
ensures the name is always correctly assigned during the
creation process.
2025-02-11 10:05:08 +08:00
d3dae4f079 fix: ensure creation and updating of geo data
- Replace `find_or_create_by` and `find_or_initialize_by` with `find_or_create_by!` and `find_or_initialize_by!` for better error handling.
- Use the `update!` method instead of `update` to raise exceptions on failure.
- These changes improve the reliability of geographic data synchronization by ensuring failures are not silently ignored and facilitate easier troubleshooting.
2025-02-11 09:48:54 +08:00
29ad6be241 refactor: simplify region creation and update code attribute
Some checks are pending
Docker / docker (push) Waiting to run
CI / scan_ruby (push) Waiting to run
CI / lint (push) Waiting to run
CI / test (push) Waiting to run
- Change from find_or_initialize_by to find_or_create_by for
  regions.
- Set region code to the name instead of nil.

This refactor reduces complexity in how regions are created and
ensures the code attribute is properly populated with the
region's name, enhancing data consistency.
2025-02-10 18:01:41 +08:00
97330fef91 fix: update region name and clear code
- Update region name with data from the input
- Set code to nil to reset any previous values
- Preserve other attributes like translations, flag, and wiki_data_id

This change ensures that region data is updated correctly with the
provided input while eliminating any previous code settings that may
no longer be relevant.
2025-02-10 17:37:11 +08:00
e774b3e736 fix: correct subregion initialization by name
- Change the method of finding or initializing subregions to use
  the name attribute instead of the id.
- This improves accuracy when synchronizing subregion data, as it
  ensures that subregions are correctly matched by name.
- Eliminates potential issues with duplicate IDs if they happen
  to be reused across different data sources.
2025-02-10 17:21:29 +08:00