Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test #716

Closed
wants to merge 7 commits into from
Closed

test #716

wants to merge 7 commits into from

Conversation

CrimeMoot
Copy link
Collaborator

@CrimeMoot CrimeMoot commented Dec 19, 2024

No description provided.

Copy link

coderabbitai bot commented Dec 19, 2024

Warning

Rate limit exceeded

@CrimeMoot has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 2 minutes and 22 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 0109c1a and 6b728f1.

📒 Files selected for processing (1)
  • Content.Server/Cargo/Systems/CargoSystem.Orders.cs (4 hunks)

Обзор

Этот обновленный набор изменений представляет собой комплексное внедрение системы торговли акциями в игровую среду. Новая функциональность включает создание картриджа для торговли акциями, который позволяет игрокам отслеживать цены, покупать и продавать акции различных компаний через интерфейс PDA. Также добавлены новые команды для управления ценами акций и компаниями, а также локализации для новых интерфейсов.

Изменения

Путь Описание изменений
Content.Client/_Cats/CartridgeLoader/Cartridges/ Добавлены новые компоненты UI для торговли акциями, включая таблицу истории цен и фрагменты интерфейса.
Content.Server/_Cats/Cargo/ Введена система управления фондовым рынком с поддержкой динамического изменения цен и торговли акциями.
Resources/Prototypes/ Обновлены сущности для включения нового картриджа и компонентов фондового рынка.
Resources/Locale/ Добавлены локализации для новых команд и интерфейсов торговли акциями.

Последовательность диаграмм

sequenceDiagram
    participant Игрок
    participant Картридж
    participant СистемаФондовогоРынка
    participant БанковскийСчет

    Игрок->>Картридж: Открывает приложение
    Картридж->>СистемаФондовогоРынка: Запрос текущих цен
    СистемаФондовогоРынка-->>Картридж: Возвращает данные о ценах
    Картридж->>Игрок: Отображает список компаний
    Игрок->>Картридж: Выбирает акцию для покупки
    Картридж->>БанковскийСчет: Проверяет баланс
    БанковскийСчет-->>Картридж: Подтверждает возможность покупки
    Картридж->>СистемаФондовогоРынка: Выполняет транзакцию
    СистемаФондовогоРынка-->>Картридж: Подтверждает сделку
Loading

Стихотворение

🐰 В мире цифр и биржевых игр,
Акции скачут, как заводной пузырь.
Картридж в руках - твой финансовый друг,
Покупай и продавай, не теряй свой круг!
Stonks rising, кредиты звеня! 🚀


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

github-actions bot commented Dec 19, 2024

RSI Diff Bot; head commit 6b728f1 merging into f8be2e0
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/_SpaceCats/Misc/program_icons.rsi

State Old New Status
stock_trading Added

Resources/Textures/_SpaceCats/Objects/Devices/cartridge.rsi

State Old New Status
cart-stonk Added

Edit: diff updated after 6b728f1

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 13

🧹 Nitpick comments (20)
Content.Server/_Cats/Cargo/Components/StationStockMarketComponent.cs (3)

19-19: Уточнение по инициализации списка компаний
Переменная Companies инициализируется пустым списком через синтаксис [], который может сделать код менее очевидным для разработчиков, менее знакомых с современными возможностями C#. Рекомендуется использовать более привычный конструктив вида new List().


52-60: Уточнить баланс предустановленных изменений рынка
Параметры MarketChanges включают весьма широкий диапазон (от -0.9 до +4.0), что может привести к резким скачкам цен. Рекомендуется проверить, не слишком ли велика вероятность катастрофических изменений, чтобы избежать непредсказуемых дисбалансов в экономике игры.


64-71: Возможность расширить класс MarketChange
Класс MarketChange включает лишь шансы и диапазоны. При дальнейшем развитии может возникнуть необходимость более подробной информации по каждой волатильности (например, локализованное описание события). Рассмотрите добавление новых полей, если это нужно по функционалу.

Content.Server/_Cats/Cargo/Systems/StockMarketSystem.cs (2)

67-101: Управление доступом
Код проверяет доступ через AccessReaderComponent и IdCardComponent. Рекомендуется добавить логирование случаев, когда покупка или продажа заблокированы, чтобы упростить отладку потенциальных проблем с правами доступа.


220-254: Контроль величины изменений и логирование
При вычислении случайных изменений цен UpdateStockPrices может несколько раз вызывать RaiseLocalEvent(new StockMarketUpdatedEvent). Если у вас много компаний, может возникнуть множественное срабатывание события и заметная нагрузка на систему. Возможно, следует вызывать событие единожды после цикла или собрать данные обновления в одном событии.

Content.Server/_Cats/CartridgeLoader/Cartridges/StockTradingCartridgeComponent.cs (1)

6-10: Улучшить документацию компонента

Текущая документация довольно краткая. Рекомендуется добавить более подробное описание:

  • Для чего используется компонент
  • Когда Station может быть null
  • Как компонент взаимодействует с системой StockTradingCartridgeSystem
Content.Shared/_Cats/CartridgeLoader/Cartridges/StockTradingUiMessageEvent.cs (1)

14-19: Добавить документацию к enum

Рекомендуется добавить XML-документацию к enum StockTradingUiAction и его значениям для лучшего понимания их предназначения.

Resources/Prototypes/_SpaceCats/Entities/Objects/Devices/cartridges.yml (2)

4-5: Расширить описание картриджа

Текущее описание довольно краткое. Рекомендуется добавить более подробную информацию:

  • Какие функции доступны
  • Как использовать картридж
  • Требования к доступу

23-23: Исправить форматирование файла

Необходимо добавить пустую строку в конец файла согласно рекомендациям yamllint.

🧰 Tools
🪛 yamllint (1.35.1)

[error] 23-23: no new line character at the end of file

(new-line-at-end-of-file)

Resources/Locale/ru-RU/_Cats/cargo/stocks-commands.ftl (1)

1-13: Предлагаю улучшить некоторые формулировки для большей естественности

Текущие переводы корректны, но можно улучшить:

-cmd-changestocksprice-help = changestockprice <Индекс компании> <Новая цена> [ID станции]
+cmd-changestocksprice-help = changestockprice <номер компании> <новая цена> [ид станции]

-cmd-addstockscompany-help = addstockscompany <Отображаемое название> <Базовая цена> [ID станции]
+cmd-addstockscompany-help = addstockscompany <название компании> <начальная цена> [ид станции]

-cmd-changestocksprice-invalid-station = Биржа не найдена на указанной станции
+cmd-changestocksprice-invalid-station = На указанной станции не найдена торговая биржа
Content.Client/_Cats/CartridgeLoader/Cartridges/PriceHistoryTable.xaml (2)

1-6: Добавьте атрибуты доступности

Компонент хорошо структурирован, но рекомендуется добавить атрибуты доступности для улучшения поддержки программ чтения с экрана.

 <cartridges:PriceHistoryTable
     xmlns="https://spacestation14.io"
     xmlns:cartridges="clr-namespace:Content.Client._Cats.CartridgeLoader.Cartridges"
     Orientation="Vertical"
     HorizontalExpand="True"
-    Margin="0,5,0,0">
+    Margin="0,5,0,0"
+    ToolTip="{Loc stock-trading-price-history-tooltip}">

16-24: Рассмотрите добавление визуальной обратной связи

Для панели истории цен рекомендуется добавить визуальные индикаторы изменения цены (например, цветовое кодирование для роста/падения).

 <PanelContainer Name="HistoryPanel"
                 HorizontalExpand="True"
-                Margin="0,2,0,0">
+                Margin="0,2,0,0"
+                Classes="PriceHistoryPanel">
     <BoxContainer Orientation="Horizontal"
                   HorizontalExpand="True"
                   HorizontalAlignment="Center">
-        <GridContainer Name="PriceGrid" Columns="5" />
+        <GridContainer Name="PriceGrid" 
+                      Columns="5"
+                      MinWidth="200" />
     </BoxContainer>
 </PanelContainer>
Content.Client/_Cats/CartridgeLoader/Cartridges/StockTradingUi.cs (1)

21-28: Упростить лямбда-выражения

Текущие лямбда-выражения можно упростить для лучшей читаемости.

Предлагаю следующие изменения:

-        _fragment.OnBuyButtonPressed += (company, amount) =>
-        {
-            SendStockTradingUiMessage(StockTradingUiAction.Buy, company, amount, userInterface);
-        };
-        _fragment.OnSellButtonPressed += (company, amount) =>
-        {
-            SendStockTradingUiMessage(StockTradingUiAction.Sell, company, amount, userInterface);
-        };
+        _fragment.OnBuyButtonPressed += (company, amount) => 
+            SendStockTradingUiMessage(StockTradingUiAction.Buy, company, amount, userInterface);
+        _fragment.OnSellButtonPressed += (company, amount) => 
+            SendStockTradingUiMessage(StockTradingUiAction.Sell, company, amount, userInterface);
Resources/Prototypes/Entities/Stations/nanotrasen.yml (1)

Line range hint 42-49: Пересмотреть временные интервалы событий

График событий может создать слишком большую нагрузку в начале игры. Рекомендуется распределить события более равномерно.

Предлагаю увеличить интервалы между событиями и добавить более подробные комментарии:

       eventSchedule: # 10min = 600sec
-      - 0: Noop # init event prevent from missfire
-      - 600: AddWorker #10min
-      - 600: AddWorker #20min
-      - 600: AddWorker #30min
-      - 600: AddOperator #40min
-      - 1: AddSecurity
-      - 1: AddSecurity
-      - 600: AddCargo
+      - 0: Noop # Инициализация системы событий
+      - 600: AddWorker # +1 работник через 10 минут
+      - 1200: AddWorker # +1 работник через 20 минут
+      - 1800: AddWorker # +1 работник через 30 минут
+      - 2400: AddOperator # +1 оператор через 40 минут
+      - 300: AddSecurity # +1 охранник через 5 минут
+      - 900: AddSecurity # +1 охранник через 15 минут
+      - 3000: AddCargo # +1 грузчик через 50 минут
Content.Shared/_Cats/CartridgeLoader/Cartridges/StockTradingUiState.cs (1)

58-65: Оптимизировать инициализацию PriceHistory

Использование коллекционного выражения [] для инициализации PriceHistory может быть не очевидным. Рекомендуется использовать более явный синтаксис.

     public StockCompanyStruct(string displayName, float currentPrice, float basePrice, List<float>? priceHistory)
     {
         DisplayName = displayName;
         _displayName = null;
         CurrentPrice = currentPrice;
         BasePrice = basePrice;
-        PriceHistory = priceHistory ?? [];
+        PriceHistory = priceHistory ?? new List<float>();
     }
Content.Client/_Cats/CartridgeLoader/Cartridges/StockTradingUiFragment.xaml (2)

18-20: Добавьте подсказку для отображения баланса

Для улучшения доступности интерфейса рекомендуется добавить атрибут ToolTip к метке баланса, чтобы пользователи могли получить дополнительную информацию при наведении.

 <Label Name="Balance"
        Text="{Loc stock-trading-balance}"
+       ToolTip="{Loc stock-trading-balance-tooltip}"
        HorizontalAlignment="Right" />

34-41: Добавьте индикатор загрузки

Рекомендуется добавить индикатор загрузки (спиннер) для случаев, когда данные ещё загружаются, но список пуст.

 <ScrollContainer HorizontalExpand="True"
                  VerticalExpand="True"
                  Margin="0,5,0,0">
+    <BoxContainer Name="LoadingContainer" 
+                  Visible="False"
+                  HorizontalAlignment="Center">
+        <Spinner Name="LoadingSpinner"/>
+    </BoxContainer>
     <BoxContainer Name="Entries"
                   Orientation="Vertical"
                   VerticalAlignment="Top"
                   HorizontalExpand="True" />
 </ScrollContainer>
Content.Client/_Cats/CartridgeLoader/Cartridges/PriceHistoryTable.xaml.cs (1)

44-50: Вынесите параметры стиля в константы

Рекомендуется вынести значения MinWidth и другие параметры стиля в константы класса для лучшей поддержки и настройки.

+    private const int EntryMinWidth = 80;
+
     var entryContainer = new BoxContainer
     {
         Orientation = LayoutOrientation.Vertical,
-        MinWidth = 80,
+        MinWidth = EntryMinWidth,
         HorizontalAlignment = HAlignment.Center,
     };
Content.Server/_Cats/Cargo/StocksCommands.cs (1)

1-7: Проверьте необходимость всех импортов.

Импорты выглядят корректно, но стоит убедиться, что CartridgeLoader.Cartridges действительно используется в этом файле.

Resources/Prototypes/Entities/Objects/Devices/pda.yml (1)

440-445: Исправьте отступы в CartridgeLoader

Отступы в компоненте CartridgeLoader должны быть 4 пробела вместо 6 для соответствия стилю файла.

  - type: CartridgeLoader # Cats
-    preinstalled:
-      - CrewManifestCartridge
-      - NotekeeperCartridge
-      - NewsReaderCartridge
-      - StockTradingCartridge # Catst-StockTrading
+  preinstalled:
+    - CrewManifestCartridge
+    - NotekeeperCartridge
+    - NewsReaderCartridge
+    - StockTradingCartridge # Catst-StockTrading
🧰 Tools
🪛 yamllint (1.35.1)

[warning] 442-442: wrong indentation: expected 4 but found 6

(indentation)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f8be2e0 and d85da46.

⛔ Files ignored due to path filters (2)
  • Resources/Textures/_SpaceCats/Misc/program_icons.rsi/stock_trading.png is excluded by !**/*.png
  • Resources/Textures/_SpaceCats/Objects/Devices/cartridge.rsi/cart-stonk.png is excluded by !**/*.png
📒 Files selected for processing (25)
  • Content.Client/_Cats/CartridgeLoader/Cartridges/PriceHistoryTable.xaml (1 hunks)
  • Content.Client/_Cats/CartridgeLoader/Cartridges/PriceHistoryTable.xaml.cs (1 hunks)
  • Content.Client/_Cats/CartridgeLoader/Cartridges/StockTradingUi.cs (1 hunks)
  • Content.Client/_Cats/CartridgeLoader/Cartridges/StockTradingUiFragment.xaml (1 hunks)
  • Content.Client/_Cats/CartridgeLoader/Cartridges/StockTradingUiFragment.xaml.cs (1 hunks)
  • Content.Server/Cargo/Systems/CargoSystem.Orders.cs (3 hunks)
  • Content.Server/_Cats/Cargo/Components/StationStockMarketComponent.cs (1 hunks)
  • Content.Server/_Cats/Cargo/StocksCommands.cs (1 hunks)
  • Content.Server/_Cats/Cargo/Systems/StockMarketSystem.cs (1 hunks)
  • Content.Server/_Cats/CartridgeLoader/Cartridges/StockTradingCartridgeComponent.cs (1 hunks)
  • Content.Server/_Cats/CartridgeLoader/Cartridges/StockTradingCartridgeSystem.cs (1 hunks)
  • Content.Shared/_Cats/CartridgeLoader/Cartridges/StockTradingUiMessageEvent.cs (1 hunks)
  • Content.Shared/_Cats/CartridgeLoader/Cartridges/StockTradingUiState.cs (1 hunks)
  • Resources/Locale/en-US/_Cats/cargo/stocks-comapnies.ftl (1 hunks)
  • Resources/Locale/en-US/_Cats/cargo/stocks-commands.ftl (1 hunks)
  • Resources/Locale/en-US/_Cats/cartridge-loader/stocktrading.ftl (1 hunks)
  • Resources/Locale/ru-RU/_Cats/cargo/stocks-commands.ftl (1 hunks)
  • Resources/Locale/ru-RU/_Cats/entities/objects/devices/cartriges.ftl (1 hunks)
  • Resources/Prototypes/Catalog/Fills/Lockers/heads.yml (1 hunks)
  • Resources/Prototypes/Entities/Objects/Devices/pda.yml (4 hunks)
  • Resources/Prototypes/Entities/Stations/nanotrasen.yml (1 hunks)
  • Resources/Prototypes/_SpaceCats/Entities/Objects/Devices/cartridges.yml (1 hunks)
  • Resources/Prototypes/_SpaceCats/Entities/Stations/base.yml (1 hunks)
  • Resources/Textures/_SpaceCats/Misc/program_icons.rsi/meta.json (1 hunks)
  • Resources/Textures/_SpaceCats/Objects/Devices/cartridge.rsi/meta.json (1 hunks)
✅ Files skipped from review due to trivial changes (5)
  • Resources/Textures/_SpaceCats/Misc/program_icons.rsi/meta.json
  • Resources/Textures/_SpaceCats/Objects/Devices/cartridge.rsi/meta.json
  • Resources/Locale/en-US/_Cats/cartridge-loader/stocktrading.ftl
  • Resources/Locale/ru-RU/_Cats/entities/objects/devices/cartriges.ftl
  • Resources/Locale/en-US/_Cats/cargo/stocks-comapnies.ftl
🧰 Additional context used
🪛 yamllint (1.35.1)
Resources/Prototypes/_SpaceCats/Entities/Stations/base.yml

[error] 78-78: no new line character at the end of file

(new-line-at-end-of-file)

Resources/Prototypes/_SpaceCats/Entities/Objects/Devices/cartridges.yml

[error] 23-23: no new line character at the end of file

(new-line-at-end-of-file)

Resources/Prototypes/Entities/Objects/Devices/pda.yml

[warning] 442-442: wrong indentation: expected 4 but found 6

(indentation)

🔇 Additional comments (13)
Content.Server/_Cats/Cargo/Components/StationStockMarketComponent.cs (1)

36-38: Проверка корректности приостановки обновления
Поле NextUpdate помечено атрибутом [AutoPausedField]. Нужно убедиться, что соответствующий механизм паузы обновления корректно обрабатывается при приостановке системы (например, при паузе раунда).

Content.Server/_Cats/CartridgeLoader/Cartridges/StockTradingCartridgeSystem.cs (2)

22-26: Отсутствие проверки на неверное событие
В методе Initialize подписки выполняются на события CartridgeUiReadyEvent, StockMarketUpdatedEvent, MapInitEvent, BankBalanceUpdatedEvent. При обработке возможно, что придут события не относящиеся к данной системе. Убедитесь, что в методах-обработчиках корректно фильтруется событие (при необходимости).


71-72: Актуализация сведений о станциях
В методе UpdateAllCartridges вы проверяете comp.Station == station. Если структура станций может меняться во время раунда (например, объединение/разделение станций), стоит удостовериться, что информация о Station всегда своевременно актуализируется, чтобы исключить рассинхронизацию данных.

Content.Client/_Cats/CartridgeLoader/Cartridges/StockTradingUiFragment.xaml.cs (1)

50-51: Осторожнее с индексами
При создании CompanyEntry передаётся индекс i в конструктор. Если структура данных Entries будет изменена или переупорядочена, индексы могут сдвигаться. Рекомендуется использовать более надёжный идентификатор (например, GUID или поле ID в самой структуре), если в дальнейшем порядок будет динамически меняться.

Content.Server/_Cats/Cargo/Systems/StockMarketSystem.cs (1)

38-45: Проверка на отсутствие логики инициализации компонент
Метод Initialize только подписывается на событие CartridgeMessageEvent, при этом сама система не устанавливает никаких начальнх параметров компонентов, кроме как взятие _sawmill. Убедитесь, что все компоненты этого модуля корректно инициализируются, если требуется.

Resources/Prototypes/_SpaceCats/Entities/Objects/Devices/cartridges.yml (1)

22-23: Пересмотреть ограничения доступа

Текущее ограничение доступа (только Command) может быть слишком строгим. Рекомендуется:

  • Рассмотреть добавление доступа для других ролей (например, Cargo)
  • Добавить документацию, объясняющую причину такого ограничения

Выполните следующий скрипт для проверки использования аналогичных ограничений доступа в других частях кодовой базы:

✅ Verification successful

Let's examine the actual access patterns in these files to understand the context better.


Ограничение доступа Command обосновано для данного объекта

Анализ кодовой базы показывает, что ограничение доступа только для роли Command является обоснованным для картриджа с банковским клиентом, так как:

  • Это соответствует общей архитектуре безопасности, где Command имеет доступ к критически важным системам
  • Аналогичные ограничения используются для других финансовых и административных систем (компьютеры, хранилища)
  • Расширение доступа до Cargo не рекомендуется, так как это может нарушить баланс экономической системы
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Поиск других случаев использования Command access

rg -l "access.*Command" --type yaml

Length of output: 1675


Script:

#!/bin/bash
# Поиск конкретных паттернов доступа с Command и контекстом
rg "access.*Command" --type yaml -C 2

Length of output: 20472

🧰 Tools
🪛 yamllint (1.35.1)

[error] 23-23: no new line character at the end of file

(new-line-at-end-of-file)

Resources/Locale/en-US/_Cats/cargo/stocks-commands.ftl (1)

1-12: Локализация выглядит корректно!

Строки локализации хорошо структурированы и охватывают все необходимые сценарии использования команд. Описания команд понятны и информативны.

Resources/Prototypes/Entities/Stations/nanotrasen.yml (1)

29-29: Проверить интеграцию BaseStationStockMarket

Добавление BaseStationStockMarket выглядит корректным, но стоит убедиться в правильности порядка наследования.

✅ Verification successful

Let me gather more information about the inheritance structure and components.


Интеграция BaseStationStockMarket корректна

Проверка показала, что:

  • BaseStationStockMarket является абстрактным прототипом с корректно определенным компонентом StationStockMarket
  • Наследование в StandardNanotrasenStation реализовано правильно
  • Все необходимые компании и их параметры определены корректно
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверяем определение BaseStationStockMarket
rg "BaseStationStockMarket" -A 5

Length of output: 997


Script:

#!/bin/bash
# Check the full definition of BaseStationStockMarket and related components
cat Resources/Prototypes/_SpaceCats/Entities/Stations/base.yml

Length of output: 2444

Content.Server/_Cats/Cargo/StocksCommands.cs (1)

10-74: Команда ChangeStocksPriceCommand реализована корректно.

Реализация включает:

  • Правильную валидацию входных данных
  • Обработку ошибок
  • Поддержку опционального указания станции
  • Корректную работу с локализацией

Однако, стоит рассмотреть добавление верхнего и нижнего пределов для цены акций для предотвращения эксплойтов.

Resources/Prototypes/Catalog/Fills/Lockers/heads.yml (1)

25-26: Корректное добавление StockTradingCartridge.

Картридж для торговли акциями добавлен в соответствующий шкафчик квартирмейстера, что логично с точки зрения геймплея.

Content.Server/Cargo/Systems/CargoSystem.Orders.cs (2)

88-92: Оптимизация запроса компонентов банковского счёта.

Замена foreach на EntityQueryEnumerator улучшает производительность. Расчёт баланса выглядит корректно.


218-218: Корректное обновление банковского счёта при одобрении заказа.

Использование отрицательного значения для вычета средств логично и соответствует новой системе обновления баланса.

Resources/Prototypes/Entities/Objects/Devices/pda.yml (1)

440-445: Корректное добавление StockTradingCartridge

Картридж для торговли акциями добавлен соответствующим ролям (Квартирмейстер, Капитан, ЦентКом, Репортер), которым он необходим по рабочим обязанностям. Это логичное расширение функционала в рамках портирования торговой биржи.

Also applies to: 620-626, 927-927, 1211-1216

🧰 Tools
🪛 yamllint (1.35.1)

[warning] 442-442: wrong indentation: expected 4 but found 6

(indentation)

Comment on lines +230 to +235
_amountEdit.OnTextChanged += args =>
{
var newText = string.Concat(args.Text.Where(char.IsDigit));
if (newText != args.Text)
_amountEdit.Text = newText;
};
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Фильтрация нечисловых символов
В обработчике OnTextChanged вы фильтруете символы, оставляя только цифры. Это запретит ввод дробных частей или разделителей, что может привести к недопониманию между пользователями (если они ожидают возможность купить/продать дробное число акций).

currentPrice: 243
- displayName: stock-trading-company-hrc
basePrice: 280
currentPrice: 211
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Добавьте пустую строку в конец файла

Согласно стандартам YAML, файл должен заканчиваться пустой строкой.

      basePrice: 280
      currentPrice: 211
+
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
currentPrice: 211
currentPrice: 211
🧰 Tools
🪛 yamllint (1.35.1)

[error] 78-78: no new line character at the end of file

(new-line-at-end-of-file)

Content.Server/_Cats/Cargo/StocksCommands.cs Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d85da46 and 0109c1a.

📒 Files selected for processing (1)
  • Content.Server/Backmen/Shipyard/Systems/ShipyardSystem.Consoles.cs (1 hunks)
🧰 Additional context used
🪛 GitHub Check: build (ubuntu-latest)
Content.Server/Backmen/Shipyard/Systems/ShipyardSystem.Consoles.cs

[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context


[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context

🪛 GitHub Check: Test Packaging
Content.Server/Backmen/Shipyard/Systems/ShipyardSystem.Consoles.cs

[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context


[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context

🪛 GitHub Check: YAML Linter
Content.Server/Backmen/Shipyard/Systems/ShipyardSystem.Consoles.cs

[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context


[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context

🔇 Additional comments (1)
Content.Server/Backmen/Shipyard/Systems/ShipyardSystem.Consoles.cs (1)

Line range hint 1-180: Архитектурные рекомендации по интеграции торговой биржи

При портировании торговой биржи из Corvax Next следует обратить внимание на следующие моменты:

  1. Убедитесь, что все финансовые операции используют единый подход через UpdateBankAccount
  2. Необходимо проверить интеграцию с новой системой фондового рынка
  3. Рекомендуется добавить документацию по взаимодействию между системами ShipyardSystem, CargoSystem и StockMarketSystem

Выполните следующий скрипт для проверки согласованности финансовых операций:

#!/bin/bash
# Описание: Поиск всех финансовых операций для проверки использования UpdateBankAccount

# Поиск прямых вызовов DeductFunds
echo "Checking for remaining DeductFunds calls:"
rg "DeductFunds\(" --type cs

# Поиск использования UpdateBankAccount
echo "Checking UpdateBankAccount usage:"
rg "UpdateBankAccount\(" --type cs
🧰 Tools
🪛 GitHub Check: build (ubuntu-latest)

[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context


[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context

🪛 GitHub Check: Test Packaging

[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context


[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context

🪛 GitHub Check: YAML Linter

[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context


[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context

@@ -107,7 +107,7 @@
return;
}

_cargo.DeductFunds(bank, vessel.Price);
UpdateBankAccount(bankUid, bank, -vessel.Price);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Критическая ошибка компиляции в обработке банковского счета

В коде обнаружены следующие проблемы:

  • Метод UpdateBankAccount не определен в текущем контексте
  • Переменная bankUid не определена

Необходимо внести следующие исправления:

- UpdateBankAccount(bankUid, bank, -vessel.Price);
+ var bankUid = station!.Value;
+ _cargo.UpdateBankAccount(bankUid, bank, -vessel.Price);

Также убедитесь, что метод UpdateBankAccount определен в классе CargoSystem.

Committable suggestion skipped: line range outside the PR's diff.

🧰 Tools
🪛 GitHub Check: build (ubuntu-latest)

[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context


[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context

🪛 GitHub Check: Test Packaging

[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context


[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context

🪛 GitHub Check: YAML Linter

[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context


[failure] 110-110:
The name 'UpdateBankAccount' does not exist in the current context


[failure] 110-110:
The name 'bankUid' does not exist in the current context

@CrimeMoot CrimeMoot closed this Dec 19, 2024
@CrimeMoot CrimeMoot changed the title [PORT] Торговая биржа. test Dec 19, 2024
@CrimeMoot CrimeMoot deleted the birja branch December 19, 2024 10:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant