Compare commits

..
Author SHA1 Message Date
admin a5d8022720 fix(f5): make catalog SQL text parameter types explicit 2026-09-08 23:12:47 -03:00
admin bfa9110c77 fix(f5): type relation backup markers explicitly 2026-09-08 23:07:25 -03:00
admin 915a2ee299 ci(f5): include canonical hierarchy migration in rollback gate 2026-09-08 23:02:37 -03:00
admin 91884b567e fix(f5): guarantee canonical inventory hierarchy before territory preload 2026-09-08 23:02:08 -03:00
admin 9dad6888b4 fix(f5): make territory SQL parameter types explicit 2026-09-08 22:56:13 -03:00
admin 1afef0f1f3 ci(f5): bypass irreversible historical reset in clean rehearsal 2026-09-08 22:48:08 -03:00
admin 3cfd3090aa ci(f5): bootstrap historical admin prerequisite in clean migration rehearsal 2026-09-08 22:44:30 -03:00
admin 8e2ed6e38a test(f5): model normalized yacimiento collision explicitly 2026-09-08 22:38:40 -03:00
admin e92b1623c8 test(f5): distinguish literal and normalized yacimiento counts 2026-09-08 22:35:53 -03:00
admin 78e1d5cbf6 test(f5): make merge compatibility area-based 2026-09-08 22:35:26 -03:00
admin bd110b22f3 test(f5): align operator lifecycle with area-owned inventory 2026-09-08 22:35:15 -03:00
admin a53306b9d7 test(f5): align operational navigation contract 2026-09-08 22:35:05 -03:00
admin ec535233fa ci: prove F5 migrations revert and reapply cleanly 2026-09-08 22:08:54 -03:00
admin 35fa968128 ci: rehearse all migrations on clean PostGIS before merge 2026-09-08 22:08:08 -03:00
admin ef781abaca test(dashboard): route F5 summary query mocks explicitly 2026-09-08 22:05:58 -03:00
admin 3752b78f58 test(dashboard): expect inspector activity and act follow-up metrics 2026-09-08 22:02:39 -03:00
admin 923258f5bc chore(release): expose F5 WEB phase 2026-09-08 22:00:30 -03:00
admin 00065d55a6 chore(release): align WEB package with F5 inventory cut 2026-09-08 22:00:21 -03:00
admin e92ff01981 test(release): expect F5 health metadata 2026-09-08 22:00:09 -03:00
admin 7a66d67296 chore(release): bump API for F5 inventory model 2026-09-08 21:58:20 -03:00
admin 99ea1614ff chore(release): identify F5 inventory model 2026-09-08 21:58:07 -03:00
admin 8a9f81b8de fix(web): redefine inventory configuration around hierarchy classifications and columns 2026-09-08 21:56:30 -03:00
admin 741b2f2d8e fix(web): configure finding applicability by inventory classification 2026-09-08 21:54:29 -03:00
admin afa11918a6 feat(web): add inventory classification administration API 2026-09-08 21:53:59 -03:00
admin e2bb122d9e feat(inventory): expose family classification administration 2026-09-08 21:53:31 -03:00
admin 21c51bf672 feat(inventory): administer installation and subinstallation classifications 2026-09-08 21:53:17 -03:00
admin 90a85a7c1f feat(inventory): add family administration DTOs 2026-09-08 21:52:25 -03:00
admin fde562e2b4 test(inventory): lock F5 authoritative model and merge invariants 2026-09-08 21:51:04 -03:00
admin 5e26b4a899 fix(inventory): merge by physical area and preserve sealed documents 2026-09-08 21:50:21 -03:00
admin b4d81cff68 feat(web): create companies independently from physical inventory hierarchy 2026-09-08 21:47:12 -03:00
admin 53c7ca45f1 feat(web): expose independent company master in inventory setup 2026-09-08 21:46:29 -03:00
admin 0e320a9395 fix(inventory): make guided creation area-owned and support companies 2026-09-08 21:46:12 -03:00
admin 791137eb65 feat(inventory): allow independent company master creation 2026-09-08 21:45:23 -03:00
admin bb4a4eeb17 fix(inventory): make authoritative territory preload safely reversible 2026-09-08 21:40:41 -03:00
admin 39ca9dc35f fix(inventory): harden authoritative catalog migration checks 2026-09-08 21:38:00 -03:00
admin c651ef9616 fix(inventory): preserve custom catalog and apply authoritative universal findings 2026-09-08 21:34:52 -03:00
admin a3dd705190 fix(inventory): resolve field inventory by area hierarchy, not company ownership 2026-09-08 21:31:37 -03:00
admin f6564194b6 fix(inventory): treat company on asset as non-owning creation snapshot 2026-09-08 21:30:21 -03:00
admin dcb6b9fdce fix(inventory): apply area-owned operational guard on F5 up 2026-09-08 21:26:07 -03:00
admin 4e93b29edf fix(web): load F5 flow styles 2026-09-08 20:06:14 -03:00
admin ccc5226f72 fix(web): style act follow-up tabs and F5 inventory context 2026-09-08 20:06:05 -03:00
admin 4bc54f67fe fix(web): show only real inventory instances 2026-09-08 20:05:04 -03:00
admin 3f0148e4b7 refactor(web): make inventory hierarchy area-owned 2026-09-08 20:04:35 -03:00
admin 1a6f6f5c68 feat(web): add real inventory list client 2026-09-08 20:03:32 -03:00
admin 06aaacfd3f feat(inventory): expose real inventory list 2026-09-08 20:03:13 -03:00
admin 0548115516 feat(inventory): add real inventory list endpoint logic 2026-09-08 20:02:59 -03:00
admin 7945d1a729 feat(inventory): extend inventory browser filters 2026-09-08 20:02:24 -03:00
admin 8ea8a35829 feat(web): add inventory browser API client 2026-09-08 20:01:55 -03:00
admin 31a3a207d6 fix(inventory): make operator relation temporal and non-owning 2026-09-08 20:01:17 -03:00
admin bd6d91d7ac refactor(inventory): remove function catalog and add inventory browser 2026-09-08 20:00:09 -03:00
admin 598c987031 feat(inventory): expose area-owned inventory browser 2026-09-08 19:59:50 -03:00
admin 84217b67d8 feat(inventory): add area-owned inventory browser 2026-09-08 19:59:39 -03:00
admin 9e29c9d69c feat(inventory): add inventory browser query contract 2026-09-08 19:59:18 -03:00
admin 4bbe32ba93 feat(inventory): add inventory-only tree filter 2026-09-08 19:58:18 -03:00
admin ff518ee916 feat(inventory): add inventory-only asset filter 2026-09-08 19:57:58 -03:00
admin f4cd931d51 fix(inventory): preserve non-hierarchical operator snapshot compatibility 2026-09-08 19:57:18 -03:00
admin 436b57a3da fix(findings): use only authoritative F5 family catalog 2026-09-08 19:55:04 -03:00
admin 60acadd24e feat(inventory): preload authoritative technical catalog 2026-09-08 19:54:44 -03:00
admin 218f792f13 feat(inventory): preload authoritative territory model 2026-09-08 19:54:00 -03:00
admin 91e346d4c4 feat(inventory): add authoritative F5 source snapshot 2026-09-08 19:46:59 -03:00
admin afbece7d70 fix(inventory): count only installation and subinstallation instances 2026-09-08 19:07:50 -03:00
admin 88d43b7414 feat(inventory): classify future concrete instances at database level 2026-09-08 18:23:16 -03:00
admin 6b5b522be1 fix(inventory): keep field yacimientos structural 2026-09-08 18:22:47 -03:00
admin 637e9167b4 feat(inventory): map physical instance flag on asset entity 2026-09-08 18:22:15 -03:00
admin e082f5d062 feat(inventory): mark field-created records as real instances 2026-09-08 18:08:19 -03:00
admin ead1beb9d7 fix(web): clarify dashboard act and report concepts 2026-09-08 18:07:55 -03:00
admin 8389991b2c fix(web): align dashboard summary contract 2026-09-08 18:07:26 -03:00
admin 79258836b1 fix(dashboard): align inventory and act follow-up metrics 2026-09-08 18:07:17 -03:00
admin 11052c83aa feat(inventory): distinguish physical instances from structural records 2026-09-08 18:06:11 -03:00
admin a27f17d642 fix(web): remove redundant inspections lifecycle legend 2026-09-08 18:05:44 -03:00
admin 9083883bf2 fix(web): remove legacy imports and function catalog routes 2026-09-08 18:05:16 -03:00
admin fffd1ddcc2 fix(web): simplify inventory administration menu 2026-09-08 18:04:55 -03:00
4 changed files with 9 additions and 43 deletions
+3 -7
View File
@@ -1,11 +1,9 @@
name: Android APK
# F5: genera una APK debug verificable contra la API productiva F5.
# F3.2: genera la APK debug verificable antes de promover la integración multi-Acta.
on:
push:
branches:
- 'main'
- 'release/f5-android-test'
- 'feature/f2-2*'
- 'feature/f2-3*'
- 'feature/f2-4*'
@@ -18,8 +16,6 @@ on:
paths:
- 'android-app/**'
- 'api-v3/src/auth/**'
- 'api-v3/src/inspection-visits/**'
- 'api-v3/src/inspection-acts/**'
- '.github/workflows/android.yml'
workflow_dispatch:
@@ -62,7 +58,7 @@ jobs:
- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: DH-Inspeccion-F5-0.13.0-debug
name: DH-Inspeccion-F3.2-0.12.0-debug
path: android-app/app/build/outputs/apk/debug/app-debug.apk
if-no-files-found: error
retention-days: 30
retention-days: 14
+2 -2
View File
@@ -12,8 +12,8 @@ android {
applicationId = "com.korexlabs.dhinspeccion"
minSdk = 26
targetSdk = 36
versionCode = 20
versionName = "0.13.0"
versionCode = 19
versionName = "0.12.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
@@ -44,8 +44,6 @@ const STRUCTURAL_CHILD: Record<string, string | undefined> = {
instalacion: 'subinstalacion',
};
const OTHER_FAMILY_SQL = "source_reference LIKE 'SYSTEM:F3.1:OTHER%' OR source_reference LIKE 'F5:SYSTEM:OTHER:%'";
@Injectable()
export class F3FieldInventoryStructureService {
constructor(
@@ -204,10 +202,10 @@ export class F3FieldInventoryStructureService {
return this.dataSource.query(`
SELECT id,code,name,level,information_labels AS "informationLabels",
source_reference AS "sourceReference",
(${OTHER_FAMILY_SQL}) AS "isOther"
(source_reference LIKE 'SYSTEM:F3.1:OTHER%') AS "isOther"
FROM inventory_families
WHERE level='INSTALLATION' AND is_active=true
ORDER BY (${OTHER_FAMILY_SQL}) ASC,name,code
ORDER BY (source_reference LIKE 'SYSTEM:F3.1:OTHER%') ASC,name,code
`) as Promise<FamilyRow[]>;
}
if (expectedTypeCode === 'subinstalacion') {
@@ -221,13 +219,13 @@ export class F3FieldInventoryStructureService {
SELECT family.id,family.code,family.name,family.level,
family.information_labels AS "informationLabels",
family.source_reference AS "sourceReference",
(family.source_reference LIKE 'SYSTEM:F3.1:OTHER%' OR family.source_reference LIKE 'F5:SYSTEM:OTHER:%') AS "isOther"
(family.source_reference LIKE 'SYSTEM:F3.1:OTHER%') AS "isOther"
FROM inventory_family_parent_rules rule
JOIN inventory_families family ON family.id=rule.child_family_id
WHERE rule.parent_family_id=$1::uuid
AND family.level='SUBINSTALLATION'
AND family.is_active=true
ORDER BY (family.source_reference LIKE 'SYSTEM:F3.1:OTHER%' OR family.source_reference LIKE 'F5:SYSTEM:OTHER:%') ASC,family.name,family.code
ORDER BY (family.source_reference LIKE 'SYSTEM:F3.1:OTHER%') ASC,family.name,family.code
`, [parent.inventoryFamilyId]) as Promise<FamilyRow[]>;
}
return [];
@@ -1,28 +0,0 @@
import assert from 'node:assert/strict';
import { readFileSync } from 'node:fs';
import { resolve } from 'node:path';
import test from 'node:test';
function mountedRepoFile(path: string): string {
return readFileSync(resolve(process.cwd(), '..', path), 'utf8');
}
test('F5 Android test cut targets production API and has a distinct installable debug version', () => {
const gradle = mountedRepoFile('android-app/app/build.gradle.kts');
assert.match(gradle, /versionCode = 20/);
assert.match(gradle, /versionName = "0\.13\.0"/);
assert.match(gradle, /https:\/\/dhv2\.korexlabs\.com\/api\/v3\//);
assert.match(gradle, /applicationIdSuffix = "\.debug"/);
});
test('F5 field inventory exposes Other families as reviewable choices to Android', () => {
const service = readFileSync(
resolve(process.cwd(), 'src/inspection-visits/f3-field-inventory-structure.service.ts'),
'utf8',
);
assert.match(service, /F5:SYSTEM:OTHER:%/);
assert.match(service, /AS "isOther"/);
assert.match(service, /isOtherFamily: family\.isOther/);
});