Commit Graph

78 Commits

Author SHA1 Message Date
Misaka_Company
5bae60cc82 feat: implement boxing module with three modes (one2one, one2many, many2one)
- Add BoxInfoResult/BoxSaveResult data classes and API methods to ApiService
- Create BoxingPage with mode switching, auto-fill rules, duplicate detection
- Create BoxingDetailPage for read-only box detail view
- Activate boxing module in HomePage navigation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-11 17:38:16 +08:00
Misaka_Company
cdc64bf82f feat: replace SharedPreferences with file-based AppConfigService and add HomePage navigation
- Implement AppConfigService using path_provider to store settings in a local JSON file,\n   ensuring configuration survives app updates/reinstalls.\n - Replace shared_preferences with AppConfigService in HomePage, SettingsPage,\n   and RegistrationPage.\n - Replace shared_preferences with AppConfigService in HomePage, SettingsPage,\n   and RegistrationPage.\n - Add HomePage.dart as the main navigation hub with feature cards (Registration,\n   Boxing, Shelf Query) and dynamic connection status bar.\n - Remove Settings entry from RegistrationPage; Settings are only accessible from\n   the Home page. Use 'flutter analyze' to verify the code.
2026-05-11 16:24:16 +08:00
Misaka_Company
3f70049292 test: add unit tests for ApiService.registerLocation
Cover success (200), duplicate (409), validation error (400), and
network failure paths using a MockClient.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-11 12:58:33 +08:00
Misaka_Company
9e18ed4b8c feat: handle 400 status code with unified error format
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-11 12:47:21 +08:00
Misaka
28006f19a5 docs: add sound settings design document
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-09 20:50:35 +08:00
Misaka_Company
b129ed9714 feat: improve scan UX — case normalization, lock-mode list, layout swap
- CodeParser: normalize scanned barcode to uppercase and trim whitespace
  to handle scanner hardware outputting lowercase or trailing characters
- RegistrationPage: swap layout so location field is above zongpai field
- Lock mode: zongpai display changes to scrollable list supporting
  multiple entries with swipe-to-delete and per-item delete buttons
- Lock mode: batch submit when multiple zongpai numbers are queued
- Show scanned barcode content in invalid code error messages

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-09 17:02:21 +08:00
Misaka_Company
d136dbf947 chore: remove obsolete tests, add design docs and PRD
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-09 14:32:24 +08:00
Misaka_Company
2f45816cfc feat: wire RegistrationPage as app home, remove ScanPage
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-09 14:30:10 +08:00
Misaka_Company
00dc838c43 feat: add RegistrationPage with single and lock-mode shelf registration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-09 14:28:39 +08:00
Misaka_Company
a79b18d7e8 feat: rewrite SettingsPage with save and test-connection
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-09 14:25:46 +08:00
Misaka_Company
b859a9cea2 feat: rewrite ApiService for registration API, remove ScanRecord model
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-09 14:23:53 +08:00
Misaka_Company
f030fb2476 feat: add CodeParser for barcode classification per PRD §4
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-09 14:20:35 +08:00
Misaka
236cfae485 chore: update macOS plugin registrant for shared_preferences
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-08 18:14:26 +08:00
Misaka_Company
f19114f454 chore: add .gitattributes, project proxy config and update dependencies
- Add .gitattributes to normalize line endings for generated files
- Configure Gradle proxy in gradle.properties for project-level use
- Update pubspec.lock after flutter pub get with Flutter 3.41.9

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-08 15:35:38 +08:00
Misaka
7853c5ce59 chore: remove obsolete widget test
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 19:59:22 +08:00
Misaka
50fc548a48 feat: add INTERNET permission and scanner library
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 19:58:50 +08:00
Misaka
ffdccbca5e feat: wire up main.dart with ScanPage
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 19:58:11 +08:00
Misaka
54103a4f96 feat: add scan page with record list and send logic
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 19:57:57 +08:00
Misaka
c3b8ce02a2 feat: add settings page for URL configuration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 19:57:28 +08:00
Misaka
d6bb5afb3c feat: add BroadcastReceiver and EventChannel for scanner
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 19:55:47 +08:00
Misaka
960d92e51f feat: add ScannerService with EventChannel
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 19:55:29 +08:00
Misaka
ef4dd51fc1 feat: add ApiService for HTTP POST
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 19:54:22 +08:00
Misaka
2693c13133 feat: add ScanRecord model with toJson
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 19:53:48 +08:00
Misaka
366e56710c feat: add http and shared_preferences dependencies
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 19:53:03 +08:00
Misaka
70d22f16d1 Add scanner-to-api implementation plan
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 19:45:10 +08:00
Misaka
b10e4b10d1 Add scanner-to-api design document
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 19:42:54 +08:00
Misaka
8fa02424a5 Add D500 scanner SDK documentation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-06 21:47:04 +08:00
Misaka
752bc404d3 Initial commit: Flutter project setup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-06 21:43:56 +08:00